[Setup] Product=Bloodtrails Version=200 Archive=Bloodtrails.umod SrcPath=. MasterPath=.. Group=SetupGroup Group=BloodtrailsGroup [SetupGroup] Copy=(Src=System\Manifest.ini,Master=System\Manifest.ini,Size=321,Flags=3) Copy=(Src=System\Manifest.int,Master=System\Manifest.int,Size=291,Flags=3) [BloodtrailsGroup] File=(Src=System\Bloodtrails.u,Size=148518) File=(Src=System\Bloodtrails.int,Size=154) File=(Src=Help\bloodtrails.html,Size=7967) [Setup] LocalProduct=Bloodtrails ReadMe=Help\bloodtrails.html SetupWindowTitle=Bloodtrails AutoplayWindowTitle=Bloodtrails Options ProductURL=http://www.planetunreal.com/mutation VersionURL=http://www.planetunreal.com/mutation Developer=JbP DeveloperURL=mailto:jbp@planetunreal.com *Dh@2A0?jDEST2hNoneColor InternalTimeSplatsMipZeroLODSetUClampUBitsUSizeVSizebMasked MaxColorPaletteVClampVBits BloodtrailsEngineSystemCoreBotpackPostBeginPlayMutatorTakeDamage MakeSplatTimer RemoteRoleRotatorTexture bHighDetailBloodGeneratorBT_RightSplat ScoreKill DrawScale DrawType BT_Splat bImportantRegisterDamageMutatorMultiDecalLevelAttachToSurface AttachDecal interval ModifyPlayer splatRotVectorClass FunctionRoleObject TextBuffer LevelInfoStructPropertyPackageStructi ScriptText LocationPawnMutator DamageTypeOther GameInfoDecal Momentum HitLocationGameOwner NamePropertyActorNetMode Palette3 Palette1NextDamageMutatorVictimLastRenderedTime Rotation instigatedByObjectProperty Palette9OldLoc Palette11 Palette7 Palette5SplatFloatProperty BoolPropertyLevel bAttachedScorch bStartedLife IntProperty actualDamageKiller TimeSecondsLeft1Left2Left3Right1Right2Right3 bInitialisedJobsCountsRemaining bStationary bDropDetail ByteProperty)(!rr^vmRRRR +!"S$"S$33>  "1 ::$ d rr^rr^rr^rr^rr^rr^R '$33>):@    ," "" "*vv *"/@H@X@@@@\@ ]@(^@G^Z^j^&ܮprr^$ *' JGL 1pddddd1pRk@~~~~~~yy||}}~~~kkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~}~~~~}~~~[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrsststttuuuvvwwxxxyyyzyzz{{|||}}|}}}~~~~~~WWXXYYZZ[[\\]]^^__``aabbccddeeffgghhihiijjkkkllllmmmnnooppqqrrrsssstttuuuvvvwwwxxxyxyyzzz{{y{{||}}XXYYZZ[[\\]]^^__``aabbccddeefeffgghhiijjkkllmmnnooppqqrrssttutuuuvvvwwwzxxywyyzzz{{z{{||VVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghfhhiiijjjkkllmmnnooppqqrrsrssttutuuvvwwxx^^__aabbeefgggiijjmmooppqqrrttxxaaffoo % Y$"&B9 a @oq##{{{s))|||||t//v77v7$###########################################################################################kzzuvq:;###########################################################################################=]M|zzxxxtssؾh::###########################################################################################:QOPOM}|xxwwusrssqnpԸf==##########################################################################################:]SRQRQNMxvuuqnpq===##########################################################################################=fVTRSSSSQPONwxxsurnqq=:###########################################################################################=cWU(()SRQPNNM}}zxuussqqpq8==##########################################################################################=8aW-+,+*SSQOOMM}zzwvvtsrq8##########################################################################################:h]/Y---+TSRRQPQ}xzvttuq8#########################################################################################=810/.--+*SSQRQQ||zwvuvsr=###########################################################################################=8610//.-,+*))QQ|z|xvts=############################################################################################:844110/..--+*TTRO}}xtvv=##############################################################################################:644100/[[--VVURPz||xwut=:=#############################################################################################:864410]//YVWVUSS|}}k##############################################################################################88664a11//WV:###############################################################################################=:88664640]]Y[W=#################################################################################################86644a]]]YUTTk==###################################################################################################:::8666641[YXVTTfk#####################################################################################################=:::::8613]/[Wfhh#####################################################################################################===:88864a]\YchhD#####################################################################################################::::884ca^_afhh########################################################################################################=:865ccaaaƙhh########################################################################################################::86cc44cfhh########################################################################################################::886cbbffhjlD########################################################################################################9886ccffffik!"#########################################################################################################87fcfhkk#######################################################################################################8644a`afh:k:###################################################################################################866441]ah:k#################################################################################################66421\\]hk:#################################################################################################88641[[[Zh:=################################################################################################:8866411[YWVÜ:################################################################################################::88886644100YV=################################################################################################:8888886664410/WVf=##############################################################################################:86666888888886641110/-WUSf=A##############################################################################################=:6444466666666444100/.WUS=?##############################################################################################=8411414166444111100/WVVTR=##############################################################################################===840001114141441100/.VUUTP=%#############################################################################################==:4]Y...///00100//0..-VTS=D#############################################################################################=:8]WV+,----./Y./.---VUURQP}==#############################################################################################=:faWU*UUV-WYW.YYWWVUUUUQNM|==############################################################################################==:f]VUTTTTTUUUUVUUVURRRRPKz}=A%###########################################################################################==:VQQPQPPPRRSSRRRSQQMLOO}xv==############################################################################################==:VPNNMMMNOQQQPPRPPPOMKIzxw==###########################################################################################==:fLNLLLNPPOOPQQQQNLxv|z|=ED###########################################################################################=::xzKJIJJLLKLMLLLNzxvuh;?#############################################################################################::cwvvvGwxIHJz|GHzxxtr׷:=##############################################################################################:hĹگxwuvxxv||||}zxvwuj=###############################################################################################:8ٮwxuuz|wv|}wsuvx:>################################################################################################=8aˣstutwssvtsrrrھg=;#################################################################################################=cΥsussursqpprs׸::>#################################################################################################=:f֮stwtpq<#"#################################################################################################==8aҨqk=D##################################################################################################::6ˣݾf==####################################################################################################=:fխЩݹh=#&#######################################################################################################=:95h===A"######################################################################################################=:::6a߸6:=:########################################################################################################=:::88db]ef:===###########################################################################################################::========AB>################################################################################################################CC:=":=:#C& ####################################################################################################################A#A=###########################################################################################################################?########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################j@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################=ih=###########################################################:60/a8########################################################:4/--,.6######################################################=c[.-,,+.6#####################################################8[WV-+**)U4###################################################=cVU-,*)QQTa:#################################################8SSSSRQOL:#################################################fRRQPNMK|=BB############################################Bf}|wv׾m=B##############################################|}L|zwtsܚ:##############################################Bc|x{}|wutr:##############################################=zxwtsqkA#############################################=}zpט:##############################################]}μ=##############################################f|zu:#############################################cQ}|ztroh=#############################################hURSRPN}vtrpך=#############################################:]-,+SPO|wusך#############################################B60.-*SRzxur؝##############################################:610/Y,UR|vuڝ=###############################################861]/WVh################################################:864a[Yh=##################################################:8861ZVh=##################################################=:86a]f<####################################################:8ccah####################################################86ccgl"####################################################86ah:#################################################862]h:################################################864]Y:################################################:8886410W>###############################################8446666410/VS>###############################################=601144410/VUA##############################################B:]W-..//..VTQA##############################################=hYTTUVVWVTSRM|=##############################################=fPONPRQQQOM}w=##############################################=hKKKNMNNNzw>##############################################hxvwxz|zxvh################################################:Цuuwuxtt;################################################BcҨstqԸ:#################################################:΢fA##################################################:aۼh#####################################################::6:=######################################################<<===D###########################################################B############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################@@z@########################################################################################################################################################################################6c############################c.,.##########################:WV+)U:#########################]RQO}:B#######################}zu=######################Bzws=#######################c#######################|#######################aTRNws#######################:0-Uw########################61Y#########################:8aA##########################8ch"#########################8ah########################:84[h########################44440Vc#######################:WVWWUQ#######################kMOOO|#######################:vxw=########################֥c#########################=a۷f###########################"AB##################################################################################################################################################################### @############################################:##############6,.#############|B###########:###########a###########8/c#############8j############8:###########6[Y8###########|}:###########:Y#################################################@#############1######[#####6######:c#####8V######V:#############8##Y###8 #1#8:2 4%r, hw*r D? (?w*$    " "" "*~~ *"$@T@2040001-000000000+,,00000000000+000000aa_a,00+00+^[\)+++0)]a+++]Z)0+0)\WSQ]c+00)ZUQNLJGGGxw+0)]WSQNNJGHGywwa+0^YVSPONKJKHvxxy0+0^XUPOMKJJHGEwusttٱa0+ZSOOKIIHFCBBtrpp+0^XRPOMMKJHID@Bwvtrc 0^XTPNMMKJHGEE>turooc )XQMLJIIIGECDBtqp:ji^ 0^PLKHIIIHEDBsro>onnmllܻ++0004000|{xwwBA;mlknlmorqtstvwy|}}c0ronpnlokklmnlstuvvEEEEF|] 1/ropqnloplnnuw{}H|ECGIa,)wsqtsqorsrn{}|}HGJLc++ܣpqponmonpoowxyy||KJIJPZ+00գ=onmmmlknmuxx|IIIHJL]++00@??nnmnmnpprwxvywyyILMKMQ(0c0r>=p 0 ) { if ( Level.NetMode != NM_DedicatedServer && !bStationary ) MakeSplat(); bStationary = ( OldLoc == Owner.Location ); CountsRemaining--; OldLoc = Owner.Location; } } simulated function MakeSplat() { local BT_Splat Splat; if ( ( CountsRemaining % 2) == 0 ) Splat = Spawn( class'BT_Splat', Owner, , Owner.Location, splatRot ); else Splat = Spawn( class'BT_RightSplat', Owner, , Owner.Location, splatRot ); if ( Splat != None ) { if ( CountsRemaining < 10 ) Splat.Texture=Splat.Splats[2]; else if ( CountsRemaining < 20 ) Splat.Texture=Splat.Splats[1]; else Splat.Texture=Splat.Splats[0]; } } Ar v%d, Zw*r%   " "" "*vv *"/ r@̯@ܿ@@@@@ @L@k~@{{{{{{{{}~''~..66==FFMMUU\\eeelllslttt{{t{{{{''//66=6>>FFNNNUUNUU]]]eeelemmtmtt_class BT_RightSplat expands BT_Splat; #exec TEXTURE IMPORT NAME=Right1 FILE=TEXTURES\BloodyFoot2.PCX LODSET=2 FLAGS=2 #exec TEXTURE IMPORT NAME=Right2 FILE=TEXTURES\BloodyFoot4.PCX LODSET=2 FLAGS=2 #exec TEXTURE IMPORT NAME=Right3 FILE=TEXTURES\BloodyFoot6.PCX LODSET=2 FLAGS=2 # (M  %[, Qw*r  %, r*a  b -a f-$-'R-a@?,(daA?, ( - ,33>- L>aa?' ?&a@' a aclass BT_Splat expands Scorch; var Texture Splats[3]; #exec TEXTURE IMPORT NAME=Left1 FILE=TEXTURES\BloodyFoot1.PCX LODSET=2 FLAGS=2 #exec TEXTURE IMPORT NAME=Left2 FILE=TEXTURES\BloodyFoot3.PCX LODSET=2 FLAGS=2 #exec TEXTURE IMPORT NAME=Left3 FILE=TEXTURES\BloodyFoot5.PCX LODSET=2 FLAGS=2 simulated function AttachToSurface() { if( !AttachDecal(100, vector(Owner.Rotation) ) ) Destroy(); } simulated function Timer() { if ( !bAttached ) { Destroy(); return; } if ( !bStartedLife ) { RemoteRole = ROLE_None; bStartedLife = true; if ( Level.bDropDetail ) SetTimer(5.0 + 2 * FRand(), false); else SetTimer(18.0 + 10 * FRand(), false); return; } if ( Level.bDropDetail && (MultiDecalLevel < 6) ) { if ( (Level.TimeSeconds - LastRenderedTime > 0.35) || (!bImportant && (FRand() < 0.2)) ) Destroy(); else { SetTimer(1.0, true); return; } } else if ( Level.TimeSeconds - LastRenderedTime < 1 ) { SetTimer(5.0, true); return; } Destroy(); } d.//------------------------------------------------------------------------ // Bloodtrails. // // Notes regarding network replication issues: // - there are three main classes to bloodtrails: // 1) the mutator (this class) // 2) the bloodgenerator (expanding actor) // 3) the custom decal, BT_Splat (expanding Scorch) // // The mutator is server-side, and the decals are client-side. // Therefore, in order to get the decals to show up on clients, // it's necessary to use an intermediary class which is both // server and client side. That's the function of the blood- // generator class. It is sent updates by the (server-side) // mutator; these changes to CountsRemaining are replicated to // the client. The client's version of the generator (a simulated // proxy) then spawns the decals on the client. // // If you are having difficulty with network replication (as I // did with this mutator), pay attention to the RemoteRole of the // three classes, and the heavy (but careful) use of the 'simulated' // function specifier. There may be other ways to do this; this // way was the only one that was apparent to me. //------------------------------------------------------------------------ class Bloodtrails expands Mutator; var bool bInitialised; var BloodGenerator Jobs[32]; // This is an example of registering a mutator that makes use of the // MutatorTakeDamage() event. If a mutator which uses this function is // not correctly registered, it will never be sent the event. // PBP() is called twice on mutators. If you accidentally register // a damage mutator twice, be prepared for infinite recursion errors // at runtime... simulated function PostBeginPlay() { if (bInitialised) return; Level.Game.RegisterDamageMutator( Self ); bInitialised = True; } function MutatorTakeDamage( out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local int i; for ( i = 0; i < 32; i++ ) if ( Jobs[i] != None && Jobs[i].Owner == Victim ) Jobs[i].CountsRemaining += ActualDamage * 0.66; if ( NextDamageMutator != None ) NextDamageMutator.MutatorTakeDamage( ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType ); } // end any bleeding on the carcass. function ScoreKill( pawn Killer, pawn Other ) { local int i; for ( i = 0; i < 32; i++ ) if ( Jobs[i] != None && Jobs[i].Owner == Other ) Jobs[i].CountsRemaining = 0; Super.ScoreKill( Killer, Other ); } // spawn a bloodgenerator for a *new* player (not for respawning players). function ModifyPlayer( pawn Other ) { local int i; Super.ModifyPlayer( Other ); for ( i = 0; i < 32; i++ ) if ( Jobs[i] != None && Jobs[i].Owner == Other ) return; for ( i = 0; i < 32; i++ ) { if ( Jobs[i] == None ) { Jobs[i] = spawn( class'BloodGenerator', Other ); break; } } }  %" "" "*yy *"٪\@X@