Įƒ*žE‚@@J@O«=† ±^āL«/ŗ±Źŗē@‚None MegatitanSystemEngineCorePostBeginPlay LightRadiusBotpack AdjustAim DrawScaleExplodeCollisionHeightCollisionRadius LightHueDamageFlying UnrealShare MakeSound SpawnEffects ExploSound BeginStateTick BigFireballSuperExplosionLightSaturation ShockFlare2RedeemerDeathspeedTimer ProcessTouch Projectile TakeDamageUnrealITouch PlayerPawn GroundSpeedShockFlareWave2ShockFlareWave SlapDamage PunchDamage SpawnRock RefireRateMomentumTransfer SoundVolume LifeSpan LightEffect ShakeViewMassTranslocatorTarget AddVelocity SoundRadiusTransientSoundVolume AccelRate MeleeRangeShockFlareExpHealth WalkingSpeedSoundPawn AmbientGlow RemoteRoleActor HurtRadius LightTypePackage TextBufferRoleClassObjectEffectsbIsPawn DeltaTimeZ LevelInfo damageScale ScaleGlow Function HitNormal Velocity InstigatorStateLevelYVictimsNetMode PawnListdistVector RotationbHighDetailMode MyDamageType ViewRotation projStartDir ImpactSound EffectSound1SkillStructStructPropertyX NamePropertyObjectPropertyGeneralExpl03 SpecialExplTitanOtherP HitLocationProjFloatProperty BoolPropertyW ShockProj ShockExploWarExplosion2 WarExplosion UT_ComboRing ShockWaveShockrifleWave ShockSizeOldShockDistanceICountMoScale IntProperty ScriptText nextPawn bDropDetail ByteProperty Location5‚‘ ‰‘†‘‘€‚€‚€‘”6>$’’’’’’’’’’’’’’’’’’d1fž”`$š‡Ž”‡Ž”‡Ž”Œ ‘Š0(’’’’’’’’"’’’’’’’’’’&Ž4Š  ŸĀ†žtČ‚œŌX‚œŌX‚œŌX†žtȇŽ”Œµ$ĄŚD$ČB*"`® $š™™? $šA $ BČ€‚°€‘ €‘€‘š:-6’’’’’’’’’’’’’’’’’’bćŃ)šĪxb‡Ž”Œ $ @Š4’’’’’’’’"’’’’’’’’’’ ŅæŠ  ŸĀ†žtȆžtȆžtȆžtȆžtČ‚œŌX‚œŌX‚œŌX†žtȆžtȆžtȆžtȆžtȇŽ”Œµ$–D$C $Ą@ $ČB $ČB 2Č°€‘€‘¹& 0a „ !…‹ a  A śDš™?£§/DØ?¢…a  !…‹ a — !…‹ a  a  a  a  !…‹ a  !…‹ a ½/!/Ž" a/!0a ©< ’’’’’’’’B¼ų’’’’’’’’’’6!ķ#Bq©ÖÆÓń‚œŌX‚œŌX‰€Å_‰€Å_‰€Å_‰€Å_ Œ&X')$?8$ A5$/D#$śD4$śE7"ˆ $Ą@2č+@3$zD $śC $%D/$€–K±@sa  a Ŗ a „ !…‹ a  A śDš™?£§/DØ?¢…a œ"'%Ü’’’’’’’’’’ŗ ÷b`‚w ‹+„ a/!± ”?% āŲ  … ŗ #Zb`‚w ‹+„ a/!± ”?% āŲ  … œ).+?’’’’’’’’’’·$#±•Ō9¬Æ ¹# *¢aĪ$? ®?Ć£§ČCØ?¢…a  ×Ō ?,P a Ŗ ×Ō ?,P a „ !…‹ a ±*‹a „ !…‹ a  A śDš™?£§/DØ?¢…a  !…‹ a — !…‹ a  a  a  a  !…‹ a  !…‹ a ¤ "¤ ’-­«$ ĖGaĄ @A śD »+ š%›:’˜:$» Ķ,  ·%)•Ō9¬Æ Ź( #;å¬  b€?£°ĆĶĢL>××…Õ” Õ«ĶĢĢ> a !zD('”w*o‚$ ××…Õ” Õ«ĶĢĢ> a !zD('w*o‚$×Ų×…Õ” Õ?ōÕ«ĶĢĢ> a !zD'' w*o‚$9°Ć«ĶĢL>æ×××…Õ” Õ?ōÕ«ĶĢĢ> a !zDŠ('9w*o‚$ X//============================================================================= // BigFireball //============================================================================= class BigFireball extends ShockProj; var() Sound ExploSound; simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( Level.bDropDetail ) LightType = LT_None; } function SuperExplosion() { Spawn(class'WarExplosion',,,); Spawn(class'WarExplosion2',,,); Spawn(Class'ut_ComboRing',,'',Location, Instigator.ViewRotation); PlaySound(ExploSound,,20.0,,2000,0.6); HurtRadius(Damage, 700, MyDamageType, MomentumTransfer, Location ); Destroy(); } auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { If ( (Other!=Instigator) && (!Other.IsA('Projectile') || (Other.CollisionRadius > 0)) ) Explode(HitLocation,Normal(HitLocation-Other.Location)); } function BeginState() { Velocity = vector(Rotation) * speed; } } function Explode(vector HitLocation,vector HitNormal) { PlaySound(ImpactSound, SLOT_Misc, 0.5,,, 0.5+FRand()); HurtRadius(Damage, 400, MyDamageType, MomentumTransfer, Location ); Spawn(class'WarExplosion',,, HitLocation+HitNormal*8,rotator(HitNormal)); Spawn(class'WarExplosion2',,, HitLocation+HitNormal*8,rotator(HitNormal)); Spawn(Class'ut_ComboRing',,'',Location, Instigator.ViewRotation); Destroy(); } Ļ2 Nsq›:’˜:$®« AƏ¬?, ®¬ĶĢL= øC« ?,’³ €Ć1µ”®« AƏ¬?, ®¬ĶĢL=ņ›:’˜:$eš,a Ŗ …„ņš:’˜:$/a8 ‚«?,…ļīš:¼:$Ų ……õ€?į×Ö#š™™>ī„±²Ū •?%õÆ€‰D«ĶĢŒ? •× •Ō®?,_D‹Ų …Õ«?®”Õ?č!10 /a8 ‚«?,…Ų ……õ€?į×Ö#š™™>€„±°Ū •?%õÆ€‰D«ĶĢŒ?č-Ē.†1Ō®?, •× •Ō®?,_D‹Ų …Õ«?®”Õ?č!10«?, {//============================================================================= // ShockProj. //============================================================================= class ShockFlare2 extends ShockProj; var() Sound ExploSound; simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( Level.bDropDetail ) LightType = LT_None; } function SuperExplosion() { Spawn(Class'ut_ComboRing',,'',Location, Instigator.ViewRotation); PlaySound(ExploSound,,20.0,,2000,0.6); HurtRadius(Damage, 700, MyDamageType, MomentumTransfer, Location ); Spawn(Class'ShockFlareExp',,'',Location, Instigator.ViewRotation); Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); Spawn(class'WarExplosion',,,); Spawn(class'WarExplosion',,,); Spawn(class'WarExplosion',,,); Spawn(Class'ShockFlareWave2',,'',Location, Instigator.ViewRotation); Spawn(Class'ShockFlareWave2',,'',Location, Instigator.ViewRotation); Destroy(); } auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { If ( (Other!=Instigator) && (!Other.IsA('Projectile') || (Other.CollisionRadius > 0)) ) Explode(HitLocation,Normal(HitLocation-Other.Location)); } function BeginState() { Velocity = vector(Rotation) * speed; } } function Explode(vector HitLocation,vector HitNormal) { Spawn(Class'ut_ComboRing',,'',Location, Instigator.ViewRotation); PlaySound(ExploSound,,20.0,,2000,0.6); HurtRadius(Damage, 700, MyDamageType, MomentumTransfer, Location ); Spawn(Class'ShockFlareExp',,'',Location, Instigator.ViewRotation); Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); Spawn(class'WarExplosion',,,); Spawn(class'WarExplosion',,,); Spawn(class'WarExplosion',,,); Spawn(Class'ShockFlareWave2',,'',Location, Instigator.ViewRotation); Spawn(Class'ShockFlareWave2',,'',Location, Instigator.ViewRotation); Destroy(); } R //============================================================================= // Shock Flare Wave (Sphere) //============================================================================= class ShockFlareWave2 extends ShockrifleWave; simulated function PostBeginPlay() { super.PostBeginPlay(); if ( !Level.bHighDetailMode || Level.bDropDetail ) LightType = LT_None; } simulated function Tick( float DeltaTime ) { local float ShockSize; ShockSize = 0.7/(ScaleGlow+0.05); if ( Level.NetMode != NM_DedicatedServer ) { ScaleGlow = (Lifespan/Default.Lifespan); AmbientGlow = ScaleGlow * 255 * 5; DrawScale = 2.5; } } {0//============================================================================= // Shock Flare Wave. //============================================================================= class ShockFlareWave extends ShockWave; var float OldShockDistance, ShockSize; var int ICount; simulated function Tick( float DeltaTime ) { if ( Level.NetMode != NM_DedicatedServer ) { ShockSize = 20 * (Default.LifeSpan - LifeSpan) + 10/(LifeSpan/Default.LifeSpan+0.05); ScaleGlow = Lifespan; AmbientGlow = ScaleGlow * 255; DrawScale = ShockSize; } } simulated function Timer() { local actor Victims; local float damageScale, dist, MoScale; local vector dir; ShockSize = 20 * (Default.LifeSpan - LifeSpan) + 10/(LifeSpan/Default.LifeSpan+0.05); if ( Level.NetMode != NM_DedicatedServer ) { if (ICount==4) spawn(class'WarExplosion2',,,Location); ICount++; if ( Level.NetMode == NM_Client ) { foreach VisibleCollidingActors( class 'Actor', Victims, ShockSize*29, Location ) if ( Victims.Role == ROLE_Authority ) { dir = Victims.Location - Location; dist = FMax(1,VSize(dir)); dir = dir/dist +vect(0,0,0.3); if ( (dist> OldShockDistance) || (dir dot Victims.Velocity <= 0)) { MoScale = FMax(0, 1100 - 1.1 * Dist); Victims.Velocity = Victims.Velocity + dir * (MoScale + 20); Victims.TakeDamage ( MoScale, Instigator, Victims.Location - 0.5 * (Victims.CollisionHeight + Victims.CollisionRadius) * dir, (1000 * dir), 'RedeemerDeath' ); } } return; } } foreach VisibleCollidingActors( class 'Actor', Victims, ShockSize*29, Location ) { dir = Victims.Location - Location; dist = FMax(1,VSize(dir)); dir = dir/dist + vect(0,0,0.3); if (dist> OldShockDistance || (dir dot Victims.Velocity < 0)) { MoScale = FMax(0, 1100 - 1.1 * Dist); if ( Victims.bIsPawn ) Pawn(Victims).AddVelocity(dir * (MoScale + 20)); else Victims.Velocity = Victims.Velocity + dir * (MoScale + 20); Victims.TakeDamage ( MoScale, Instigator, Victims.Location - 0.5 * (Victims.CollisionHeight + Victims.CollisionRadius) * dir, (1000 * dir), 'RedeemerDeath' ); } } OldShockDistance = ShockSize*5; } simulated function PostBeginPlay() { local Pawn P; if ( Role == ROLE_Authority ) { for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('PlayerPawn') && (VSize(P.Location - Location) < 3000) ) PlayerPawn(P).ShakeView(0.5, 600000.0/VSize(P.Location - Location), 10); if ( Instigator != None ) MakeNoise(10.0); } SetTimer(0.1, True); if ( Level.NetMode != NM_DedicatedServer ) SpawnEffects(); } simulated function SpawnEffects() { local WarExplosion W; PlaySound(Sound'Expl03', SLOT_Interface, 16.0); PlaySound(Sound'Expl03', SLOT_None, 16.0); PlaySound(Sound'Expl03', SLOT_Misc, 16.0); PlaySound(Sound'Expl03', SLOT_Talk, 16.0); W = spawn(class'WarExplosion',,,Location); W.RemoteRole = ROLE_None; } —7;%’’’’’’’’’’’’’’’’’’!8#Zˆę—ylT©čøĄ‡Ž”†žtȆžtȆžtȶ’ķu[†žtȆžtȇŽ”‡Ž”‡Ž”‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX†žtČ‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‚œŌX‡Ž”Œ,$ĶĢL=- Ć(Į3Xg óĖš:¼:$’Éøw*”‚a/!" °įŲ ……?ø .¶..?¬|IįŲ …… AÄ"Ėw‹*b AaĶĢĢ='ń›:’˜:$ Rclass ShockFlareExp extends ShockExplo; function MakeSound() { PlaySound(EffectSound1,,12.0,,2000); } simulated function PostBeginPlay() { if ( Level.NetMode != NM_Client ) MakeSound(); Super.PostBeginPlay(); } simulated function Timer() { } Ę9l/ da ¦$€Aa ¦$€Aa ¦$€Aa ¦$€Aa  …Č$ E//============================================================================= // Titan. //============================================================================= class MegaTitan extends Titan; function SpawnRock() { local Projectile Proj; local vector X,Y,Z, projStart; GetAxes(Rotation,X,Y,Z); MakeNoise(1.0); if (FRand() < 0.2) { projStart = Location + CollisionRadius * X + 0.4 * CollisionHeight * Z; Proj = spawn(class 'ShockFlare2' ,self,'',projStart,AdjustAim(1000, projStart, 400, false, true)); if( Proj != None ) Proj.SetPhysics(PHYS_Projectile); return; } projStart = Location + CollisionRadius * X + 0.4 * CollisionHeight * Z; Proj = spawn(class 'BigFireball' ,self,'',projStart,AdjustAim(1000, projStart, 400, false, true)); if( Proj != None ) Proj.SetPhysics(PHYS_Projectile); projStart = Location + CollisionRadius * X - 500 * Y + 0.4 * CollisionHeight * Z; Proj = spawn(class 'BigFireball' ,self,'',projStart,AdjustAim(1000, projStart, 400, true, true)); if( Proj != None ) Proj.SetPhysics(PHYS_Projectile); if (FRand() < 0.2 * skill) { projStart = Location + CollisionRadius * X + 500 * Y + 0.4 * CollisionHeight * Z; Proj = spawn(class 'BigFireball' ,self,'',projStart,AdjustAim(1000, projStart, 2000, false, true)); if( Proj != None ) Proj.SetPhysics(PHYS_Projectile); } //Proj = Class'ShockFlare'; //p = Spawn(Proj,,, Start,AdjustedAim); } event Touch( Actor Other ) { if (Other.IsA('TranslocatorTarget')) { //HitWall(-1 * Normal(Velocity), Other); //Other.TakeDamage(10000,Self,location,vect(0,0,0),''); Other.Destroy(); } } “8“6„’-Ģ’-­«$ Å=?Īe¬333?® ĶĢL=c›:’˜:$ ¬øC«« ?,’?,³ @ €¤ "¤ ’-­«$ @C’’’’=@@bž’’’AC’’’’:C’’’’ICż’’’LC’’’’Cü’’’qež’’’OCż’’’Dbś’’’[Cż’’’bnž’’’,Cü’’’taō’’’Wež’’’QCż’’’enž’’’ bž’’’NCż’’’nCü’’’v@ł’’’TCż’’’ACü’’’rCż’’’CPö’’’nž’’’ @į’’’f@nž’’’KCü’’’w|÷’’’*Lž’’’>Lö’’’Cü’’’u9ā’’’gn÷’’’d÷’’’ZCŅ’’’iCü’’’s@ž’’’?bž’’’Xoł’’’@ n÷’’’C’’’’9Lö’’’Cż’’’Pnž’’’ Lß’’’9ā’’’hC’’’’"Lä’’’@ž’’’;Lö’’’ Lä’’’Lę’’’@ž’’’BLž’’’!C’’’’Enś’’’`eĀ’’’_Lé’’’Cż’’’|Lé’’’eś’’’~Lß’’’Lé’’’ož’’’F@ž’’’<eł’’’UL×’’’(Lę’’’oł’’’YLę’’’e÷’’’^Lé’’’“3S `Ž3] m“/m zŽ/\ G “9k T –3V a –3{ m –8x y Ž/c E!Ž/H R!“$j _!“%j l!Ž(M y!”$tF"Ž/R z#ŠyG$–8y @'Ā8z L'“ j X'“ e'Ž%l r'“;p 'Ž(l L(Ž$l Y(š6if(Š~O*“ M.–>x Z.Žl f.ŽM s.ˆ¹ t@/ˆ½!!2t1©[f2ˆ±fA6²œ)g7ˆŗ#ZP8ˆŗ&Zj9²œ)D;ˆ·#%m;ˆ¹ CR<ˆ±tU>ˆ¤/IAˆĖ.xAˆ»2fBˆĶXCˆ·&%tCˆŹ!(XYD™}4cqJˆĻ8fTa–1G zbˆĆ8} Fc™}4F Cm–3J I™}4] U™8}4F1r——%|xČˆĮ8JtĪ™}4]~ŃˆĘ8d[Ö™!}4P׈“@OóˆÅaOō–>G põˆ¤/|õ