Áƒ*žEm@Âi§ãJŽS>c�€ @­ jPHx úÂmNoneEngineCoreSystemBPakBotpack BeginStateAnimEndBegin TakeDamageTickFireTimerDamagePickupMessage EndStateAltFirePostBeginPlayExplode ClientFire ProcessTouchUseAmmoClientAltFirespeedFlying MultiSkins AdjustAimFinishWeaponNewString AltFiringWeaponBaseTypeWeaponNewTypeBotIdle PlayIdleAnim TraceFire UnrealShare PlayLoadingProcessTraceHit GiveAmmo NormalFire ShakeView TWalk001 AmmoNameCollisionHeight SpawnSplashPickupAmmoCount PlayRecoil AmmoAmountUnrealI PlayFiring footstep PlayerPawnProjectileFireCollisionRadiusFiringRocketsMaxAmmo DrawScaleHealth ClientReloadResetClientInstantFlash MaxSpeedPlayAltFiring RateSelfCarcassProjectileClass PlayUnwind Projectile FireEffectSuperExplosion Explode3 TraceShotHitWall SpawnEffectBBioGelTrigger Repeater Explode2 ZoneChangeSetupLoading PlaySpinDown PlayRotatingClientAltFiring ClientFiringBlowUpProjShoot2 OnSurface TStom001 TBrea001 ParentAmmoBurnedAltProjectileClass FinishFireTournamentPlayer FireRockets DownWeaponGenerateBullet GroundSpeed ModifyPlayerPickupSetSwitchPriorityShootPlayReloadingRenderTexture ForceFireSuggestAttackStyleMass PlayWaitingRenderOverlays FastShootT2 ForceAltFireSwitchToBestWeaponThrustMomentumTransfer AdjustToss AttackingPlayFastReloadingSetHandExplo ThrowOtherMeleeDamageTarget ClientFinish ExplodingTFist TDeat001 SpawnEffectsMaxStepHeight TFigh001 ShootLoad AccelRateSetWall GiveWeapon boltloop spindownSelect TDeat002StationaryPawnPlayRepeatFiringWS setCharModeJZ FireBlast RotateRocketBShockProjAltPlayNormRepeatFiring Viewport SetTwoHandsstomped BShockProjTokkou_Pupae_A_TeamASAR WarnTargetInitfor ShootloopGS PlayDyingZooming PlayRFiringMutatorTakeDamageBroadcastLocalizedMessageClientPlaySoundWalkOut setBoomTimeDiedMover TDeat003 LavaDeathspinTChest SplashJumpjoltedJumpZ TShuffleSetRollSkin AltFireSoundEjectBShock Bminigun DestroyedSitting TweenDown BPulseGun ChargingSuggestDefenseStyleWalklungeStillShoot1PlayMeleeAttack NameArticleStab LungeDamage BiteDamage ComboMoveDownPlayThreateningSoundPlayRoamingSoundRangedProjectileGetUpDeadFatness ScaleGlow AddVelocityGiveTo WeaponSetMeshFell SetRespawn PlayTakeHit PlayRunningTweenToWalkingbCollideWorldSetDisplayProperties StopZoomPlayPostSelect JumpOffPawn ItemName PlayWalking SpecialFire BecomeItem PlayTurning ScoreKillStylePlayWaitingAmbushTweenToPatrolStopPlayThreateningPlayPatrolStopPlayVictoryDance GetString Decapitated PostRender RespawnTimeTweenToWaitingCheckReplacementTweenToRunningTweenToFighter shakemagFindInventoryType CheckTarget BBioAmmo BBioExploMSH BBioGlobNSBBioRIfleMutatorRegisterDamageMutator BBioGlobBPakWeaponMutator ClientFlash BBioSplashBBlade BBulletBox ToggleZoomBChunk BComboRingBDAmmo1BDAmmo2BDAmmo3BDAmmo4BDAmmo5 BEightballBEightballMutatorshake BEnforcer BFireBelch BFlakAmmoBFlakcannonMutator BFlakShell BFlameBelch BGalticAlt BGalticProj BGrenadeBHammerMutator BHealthPackBigFace BMiniammoBMinigunMutator BMiniWave BShockWaveBomberTentacle BPakMessageBPakSpecialTimerBPAmmoBPulseMutatorBRazor2 BRazor2AltBRingExBRipperMutator BRocketPack BSawMutator StartTime BShockCoreBShockMutatorBSeekingRocketBWaniHanabiProj GalticAmmoBSniperMutator Defenser SpawnDoubleBWarheadMutator MiniLordOMG PupaeWarriorChewTournamentAmmoPlayPickupMessageHealingAmount boltstartFear ThreatenFiringRoam SpawnRockSlapDamageTargetStomp TThro001 TSnif001T1TSit TPunc001 TSlap001 NeedToTurn StakeOutHuntingTitan ExplosionDead2BRocket bShieldbeltEndTimedoubleenforcerFire2 BSniperRifleBite FlakDeathBRipper SetUpSlave UT_BioGelProcessAltTraceHit PlayAltBurstboltendWingPlayFearSoundPickupViewMeshChargeBHammerFire1TournamentWeaponHit TranslocatorBSawAcquireshot2TGetUpTear ReloadCount BaseChangeAttitudeToCreature ScriptedPawn StartMovingUnwindLandPlayRangedAttackPlayChallenge RangedAttack TacticalMove bRapidFireDead3LandedBump ImpactHammerGalticLauncherSLASHSpawnExtraEffectsBBelchTouchPlayAcquisitionSoundDeathMatchPlusBEnforcerMutator bBioRiflePunchDamageTarget ut_biorifle BFlakCannon shredded UT_Eightball MFTexture bestDist bMuzzleFlashFlashYFlashO projStartbSetFlashTime ProjClass Misc2SoundSoundFireDir Misc3Sound SpawnSound ImpactSound AdjustedAim EyeHeightbFirebWarn Accuracy FireOffset CockingSoundDie Misc1SoundbChangeWeapon FireSoundPendingWeapon ViewRotationSwitchAltDamageTypeAutoSwitchPriority MyDamageTypeEbSteadyFlash3rdWWarheadLauncher ChainSawPAmmo enforcertemp MiscSoundbCenterClipYVictim SniperRifle PulseGun bMeleeWeapon ShockRifleUT_FlakCannonPlayerViewOffset DownSoundbForce FiringSpeedbRight RefireRate bHideWeapon bAltFirebOwnsCrosshair EndTrace NotifyActor bLockedOn SpriteAnim EAttitudeSkillTexUbAltWarnTarget bAnimLoopDamageScalingSoundDampeningSetPos bInstantHit bPointing AmmoType AnimFrameClipXReducedDamageType AmbientSound bWaterZoneCopyPitch PawnOwner Location bUseAltModeVictimsRoll PickupSoundSGOldFlashCount bWarnTarget FlashCount AirSpeed WaterSpeed aimerror shaketime DesiredSpeed bHeldItembUnlitChest bIsPlayerInv bDropDetail DesiredFOVtrail MeleeRange instigatedBy decorMass TimeSeconds Rotation HitSound Tentacle bSnipingOptionalObject PlayerOwner Eightball SetAlertnessNextDamageMutatorHit1Enum LocalMessage FunctionDAmmo2DAmmo3DAmmo4 WeaponLightFlameExplosion SmallSpark SpawnpointCreatureChunksDAmmo5 WaterRingWarLordPupae SoundPitchbIsPawn minigun2 enemyDist enemyDirtargripperIcons animspeedAngleThrownNDamage decisionTrackedbBotSpecialMoveSmokeLocationDVectorSmokeRotation NumPointsSmokeflak AltAccuracyrealLoc ChargeSizeRocketsLoaded RocketRad AIRating bTightWad LockedTarget FireLocation StartLocFireRot TempScaleAltRefireRate bPainZonesplashRandRot BioRifle bOnGroundGelaPlayer bHitWater SmokeRateSeeking MagnitudeVel InitialDirbRing bWaterStartNumExtraRockets SeekingDir MoveAmount NumPuffsStatePlayOwnedSoundThrowValueRandScaleDesiredRotationCountNewRot PunchDamage DrawIconYaw LightRadius LightTypePlayerSlapAttitudeToPlayerLodMesh AmbientGlowScriptedTexture FireTextureDispersionAmmoGasbag NextMutatorPawnActor AnimSequencebSuperRelevant SlapDamage bDeleteMe DefaultFOV bHurtEntry HitActordist PawnListNetMode PointRegioncarc DrawColorLevel GasBagBelch StompSoundChunk bEndFootStep EnemyRot punch1Ti sniff1Tiroam1TibStomp bLavaTitan realSpeed StompEvent StepEventStep PupaeBody PupaeHead ReturnValue ShotAccuracy bOutOfAmmo bFiredShotrndDamHit3Hit5 ChunkHit NumWallHitsbCanHitInstigatorBase WeaponClassColorYTransientSoundVolumeCTFMuzzleFlashVariations SoundRadiusFontRotatoriRInstFogPauserVectorZ InstFlashCanvasUT_ShieldBeltCStruct LoadAnim RotateAnim FireAnimName StrProperty InventoryStructProperty ScriptTextSwingjTournamentHealthAmmoPlayerReplicationInfo Decoration ZoneInfoUT_SpriteSmokePuffbExtraEffectsSpawned HealthPack HurtRadius GameInfoPhysicsIgnite LevelInfo bProjTarget TextBufferWeapon ShockProj RelatedPRI_1PBolt FlakAmmo Miniammo BulletBox hitdamageObjectTournamentPickup ShockCore RocketPack ExploSoundYawErr ShockExplo Razor2AltRazor2missileDoubleSwitchPriorityLightSmokeTrail UTSmokeTrailRange ImpactMark ChunkTrail BladeHopper WarHeadAmmoWarExplosion2 WallCrackUT_Superring2UT_RingExplosion5UT_RingExplosion3UT_RingExplosion4UT_HeavyWallHitEffectUT_LightWallHitEffect UT_GrenadeUT_RingExplosion UT_ComboRingBioAmmoUTChunkBigEnergyImpactUT_SpriteBallExplosionsupershockbeam ShockWave ReturnSoundShockrifleWave ShockBeamSawHit RocketTrail RocketMk2 RipperPulseMTracer TensionSoundCriticalEventPlus UTFlakShell DoubleName FireAdjustMiniShellCase UT_ShellCasebInstantRocketSoldierbNovice bQuickFire bNoviceModeVel2DCaptureSound3LastHit bFireLoad AffectorbCanClientFire bForceAlt ChainIdleSlaveEnforcer bIsSlave bFirstFire Minigun2m AmmocountAmmoCountJunkAmmoLed AmmoCountBar miniammoled FlakAmmoLEDLEDFont LEDFont2LastShellSpawnAimDir PulseGunR PlasmaBeamTapTimeshock RReticleOwnerLocation StillTime BioAltRepClientRocketsLoaded bClientDone bRotated bPendingLockbMultiRockets NumSplashNorm2D ShockSizeX2Y2OwnercntClassProperty NamePropertyObjectPropertyFloatProperty BoolProperty IntProperty BytePropertyMutatorWallAB LifeSpan DamageTypeFX DrawType SoundVolume nextPawnratingStartTargetPackageZonebestAim InstigatorRegion LastSeenTimeGameEnemy NewVelocity HeadRegion Velocity AccelerationbMeshEnviroMapWeaponPrioritybDamageTriggeredRate StartTraceEventInstigator HitNormalNewZoneClassRole HitLocation NewWeapon Momentum projSpeed damageScale BestTarget actualDamageKillerP RelatedPRI_2hand UDamageFXHitLocNum bForceFire TweenTimeOther DeltaTimebForceAltFireCarriedDirCalcDrawOffset RemoteRole RandSpinTexturebHighDetailModeBelt_fx shakevertAltProjectileSpeedProjectileSpeed DupRockets HandednessHealMaxDynamicLoadObjectRegeneZ2Other2WeaponReplaceType BPakDamageSPTimerSPCountSPFlag…ÊoV |ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1Æ üíÊ=$:e…žtÈÊ=$:e…žtȇX©'‡X©'‡X©'‡X©'‡X©'‡X©'…žtȇX©'•> £Y‡X©'…žtȇX©'…žtÈ…žtȇX©'‡X©'‡X©'‡X©'�Ѹ™B‡X©'�Ѹ™B…žtÈ…žtÈÊ=$:eƒœÔ�XƒœÔ�X–“©&Ì»ƒœÔ�X–“©&Ì»ƒœÔ�XƒœÔ�X–“©&Ì»–�Ѹ™BƒœÔ�X–“©&Ì»–�Ѹ™B”Ž�”ĩ٫†““]Botpack.TournamentWeaponJG�M€Š‡;€³H…âWs Lÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿ bçEâ„sBÆ´1ÚȨO„jÕý‘QOìqÎ\|˜“hä x]Þ yƒœÔ�XƒœÔ�X´1ÚÈ”Ž�”Õ!t"ÚÕ!t"Ú´1ÚÈ”Ž�””Ž�””Ž�”øë¨IÉ”Ž�””Ž�”å r°C†$€;E>$@œE $úCõh€ƒc虊>…V�hƒ¾khKÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿ�ɳ¾ æ°ý´1ÚÈ”Ž�”´1ÚÈÕ!t"ÚƒœÔ�X† $ÈBG ©Sc€…f€ƒŠ2€ƒ/€… LLjZ š:Ì:$#ÿÿÿÿÿÿÿÿÿÿo˜1 bçEƒœÔ�X”Ž�””Ž�””Ž�”øë¨IɆŠ^…z€ƒIƒ|P# j W€ƒD€ŠOÒi€…~Š�…vŠd€ƒe] €ƒD€Š€…g©MAŠTŠƒ€Š}•O€ƒ…b©IŠ]Šf…\€Š€…€…@mwŠŠ+Š©@€…i€ŠV€ŠE€ŠPŠYŠmŠS€Š……@Šóq~Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\|˜“hó€ Z”Ž�””Ž�”ƒœÔ�XƒœÔ�XƒœÔ�X”Ž�”†9$A…a€ƒDŠv€Šq Š€…v ƒQ€ŠŠe€Ša€Š€@{LrŠWŠ}–“YŠ}ÖlDÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿtcuÚ»Ö/�¹$†$@E $zCoŠWŠ`XŠb€ŠN€ŠoŠZÒŠz~ŠÈdFÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ@•< £YÃR@G¢•> £Y…žtÈ…žtÈ…žtÈ•> £YÃR@G¢•> £Y�‚t‡@�Ѹ™B…žtÈ…žtÈ�‚t‡@�‚t‡@�Ѹ™B…žtÈ�Ѹ™B…žtÈ�Ѹ™B…žtÈ�‚t‡@�Ѹ™B…žtÈ�Ѹ™B…žtÈ�Ѹ™B…žtÈñXu6è•> £Y•> £Y…žtÈñXu6è•> £Y•> £Y…žtÈ…žtÈ•> £Y™¯Ð“œ�‚t‡@…žtÈ�‚t‡@ƒœÔ�Xô}ÚöMô}ÚöMƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�X…žtÈ…žtȯýúL]ƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�X…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtÈ•> £Y•> £Y³x�³x�³x�³x�”Ž�”³x�³x�³x�³x�³x�³x�³x�³x�³x�•> £Y•> £Y³x�†+f." ]! You got the Avaricious AutoMag.¤L Xÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿPÓ·µÝ¤  ŸÂƒœÔ�XƒœÔ�XƒœÔ�X…žtÈ”Ž�”†$úD>$@œE $–CjŠhŠRŠAønŠE€Š[Y€|Še€^`ƒ€WS€ŠdŠ&€ÏQŠgŠ@€ƒTŠf€ŠbXŠQŠkrŠ€€…N €Š¨¨xЍe€ƒ…Á8Á6„�ž-Éž-éÆ$ ¨k€ŠŠ€Š©éqq ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2C¦±Þ.éplé†g]Start Special Time!!N]Stop Special Time.pŠG€ƒN€€ŠK€Š-Š@äV€ƒ€ŠK€ŠT€Š¨TŠDŠù 5ùa@@( J€Šü€ŠHŠÃ\ŠŠK€…¨?€…€…dŠeŠŠßYXÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2f§–·[ß52¨X†0"Ð8" \ß]('You picked up 2000 Avaricious bullets.SŠŠ�…u…_€ƒ wþrŠ`€ŠBŠG€…vŠzŠ]€Šx€ƒb€…ŠR€ŠJ€…ŠÐÔ¦|a åuž-ÉB¬®HC««®?«?,Ã? ?,Ùrž-éà $È$›B®š™>«Ã® ×£o‚$bš™™>-ù'añFOra!aq!Y Q€Š=ƒøl€Š]ƒc€Š€Šün€ƒŠXƒj–“U€ƒo€…€…J€ƒ€Š€Šf€Š5h\m€ŠHYÕ€ŠƒG€ŠÕ¨€–“¨€ŠsI þLO¨i€Š¨I€ŠnŠ{Š~€Š§Ez Mÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿp×ÐZø§ºoˆ¨O„jƒœÔ�X¨O„j¨O„j1†$€;F $HC6$ A,$ A²Fe vÿÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿÿÿÿ2gq £YƒœÔ�X�Ѹ™B¤  ŸÂƒœÔ�XƒœÔ�X…žtÈ…žtȃœÔ�X…žtÈ•> £Y”Ž�”ĩ٫”Ž�”à-¤%n…žtÈ…žtÈ�€Å_ƒœÔ�X…žtÈ…žtÈ�Ѹ™BƒœÔ�XƒœÔ�X�€Å_…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtÈ�Ѹ™B¯ýúL]…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ”Ž�”…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtȃœÔ�X…žtÈ…žtȃœÔ�XƒœÔ�XƒœÔ�XƒœÔ�X�€Å_�€Å_…žtÈ…žtȃœÔ�XƒœÔ�X…žtÈ…žtÈ…žtÈ�Ѹ™BƒœÔ�XƒœÔ�XƒœÔ�X…žtȃœÔ�X¯ýúL]…žtÈ…žtÈ…žtȆ+i.",^[]You got the Mega Shock.ãps Qÿÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿÿÿÿ2rÝ«ìwãžØé¶ä`XIqä`XIqƒœÔ�XƒœÔ�XƒœÔ�X…žtÈ…žtÈ�Ѹ™BƒœÔ�X¯ýúL]ƒœÔ�X…žtÈ�Ѹ™B…žtÈ…žtȆ+D."2]You got the I.S.2.R.®lB{ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2HsÉÑ„®ÄÏÁC�Ѹ™B…žtÈ…žtÈ…žtÈèjƒa…žtÈ…žtÈ…žtÈ”Ž�”¯ýúL]…žtȃœÔ�X•> £YñXu6è�Ѹ™B…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtȃœÔ�X�Ѹ™B…žtÈ…žtÈ�Ѹ™B…žtÈ…žtÈ…žtȃœÔ�X…žtȃœÔ�X…žtÈ…žtȃœÔ�X…žtÈ�Ѹ™BÏÓïü�Ѹ™B�Ѹ™B�Ѹ™B�Ѹ™BÏÓïü�Ѹ™B…žtÈ…žtÈ…žtÈ�Ѹ™B…žtȃœÔ�X¯ýúL]…žtÈ…žtÈ…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtȃœÔ�Xèjƒaèjƒaèjƒaèjƒaèjƒa”Ž�”èjƒaÏÓïüÏÓïü†+d."úBP^t]You got a KAMIKAZE.¼gE ^ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2+t‚¹Tò¼&ª]î…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtȃœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�X¯ýúL]¯ýúL]¯ýúL]…žtȃœÔ�X…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ”Ž�”…žtȃœÔ�X…žtȆ[$E_$ÈCZ$ÈCN$HCP$À²C]*)You got the Akai Suisei(Bouya Dakarasa).sÌ̕̕̕̕̕̕̕ÌqI vÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿuy+ªï�ɳ† $C§p @ Qÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿvbRr§ºoˆ¨O„jƒœÔ�X¨O„j¨O„j1† $HC6$ B,$@AÖOb cÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2&wíø5Ö)âÇä`XIqä`XIqƒœÔ�XƒœÔ�XƒœÔ�X…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtÈ…žtȃœÔ�XƒœÔ�XƒœÔ�X…žtȃœÔ�XƒœÔ�X…žtÈ…žtȃœÔ�X…žtÈ…žtȃœÔ�X…žtȃœÔ�X…žtÈ•> £YƒœÔ�XƒœÔ�XƒœÔ�X•> £Y•> £Y•> £Y•> £Y…žtȆ] You got the Vamplic Chain Saw.ds•••••••¢]wÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2NxIhO‘¢þanƒ…žtÈ�Ѹ™B…žtÈ�Ѹ™B�Ѹ™B…žtÈ…žtÈñXu6è…žtÈ�Ѹ™B…žtÈ…žtÈñXu6è•> £Y…žtÈ�Ѹ™B…žtÈ…žtÈ�Ѹ™B�Ѹ™B�Ѹ™B…žtÈ…žtÈ…žtÈ…žtÈ�Ѹ™B…žtÈ�Ѹ™B…žtÈ•> £Y•> £Y�Ѹ™B…žtÈ…žtÈ�Ѹ™B…žtÈ…žtȃœÔ�XƒœÔ�XƒœÔ�XƒœÔ�X…žtȃœÔ�X…žtȨO„j¨O„jƒœÔ�X…žtÈ…žtȃœÔ�X…žtÈ…žtÈ•> £Y�Ѹ™B”Ž�”ƒœÔ�X•> £YÏÓïüÏÓïü”Ž�””Ž�””Ž�””Ž�”…žtÈ”Ž�”ƒœÔ�Xô}ÚöM�Ѹ™B…žtÈ…žtÈ…žtȃœÔ�X…žtÈ…žtÈ�Ѹ™BÏÓïü†+f." ]! You got the Avaricious Minigun.¤J QRÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿyÚ»jí¤  ŸÂƒœÔ�XƒœÔ�XƒœÔ�X…žtȆWtW•IW•@W•MW•K$zE>$zE $€»DÓcF bÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ z^Ê]xÓ7ȃœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XüsXØUƒœÔ�XüsXØU”Ž�”†$ÀZE>$@œE $–Cu"qðc[ Tÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿ{;UxNð726ކ¬n kCÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ25|˜]J¬ª•†.ƒœÔ�X…žtÈ�Ѹ™B�Ѹ™B�Ѹ™B�Ѹ™B�Ѹ™B…žtÈ…žtÈ�Ѹ™B�Ѹ™BƒœÔ�X…žtȃœÔ�X…žtÈ�Ѹ™B�Ѹ™B…žtȃœÔ�X…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ�Ѹ™BƒœÔ�X…žtȃœÔ�X…žtÈ…žtÈÏÓïüÏÓïü�Ѹ™B…žtÈ…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtȇX©'�Ѹ™BÏÓïü¯ýúL]†+f."dBA^ r$C]You got the Flame Waver.ïg N Pÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿ}d—À“ffiÙi† $HCßy8AÜ H‚ž-É�ž-é8a O8À$a ì "@8a Ã8À$8a L8À$ °|n @ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2qÎQ°ây�O�€Å_…žtȃœÔ�XƒœÔ�X…žtÈ�Ѹ™B�Ѹ™B…žtÈ�€Å_�€Å_�€Å_ƒœÔ�X…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtÈ•> £Y†+K."XBN^u]You got the '!?'.¤`r Sÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿ @ 'u°¤  ŸÂƒœÔ�XƒœÔ�X…žtȨO„j¨O„j…žtÈ…žtȨO„j¨O„j”Ž�”†$–C>$–C $€»D9$À@6$�C,$�CYS‘K [ Iÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2.Aë[PZ‘hÁ”Æ�Ѹ™B…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtȃœÔ�X…žtÈo˜1o˜1o˜1 bçE bçE bçEo˜1o˜1o˜1 bçE bçE bçE�Ѹ™B…žtÈ…žtȃœÔ�X…žtÈ…žtÈ…žtÈ�Ѹ™B…žtÈ�Ѹ™BƒœÔ�X•> £Y•> £YñXu6è–â„sBÆ…žtÈ…žtȃœÔ�X…žtȃœÔ�X…žtÈ•> £Y†+g.",sÓBtÔ]! You got the Instant Remover II.Å~F *zá2„6Üç-ôš:žÝ:$ ™ž-É|„ž-é‚— % °Ã?a Ý „a ÖB¬CÙÖB®š™>«Ã® ×#$@œE $HC€ŠL €XÖV €Šd€Š|€…àIuÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2K°˜üxàYtsl†0"î8"Ü]%$You picked up some Big F**kin Ammo.6€€³b€…o€dŠk€Šb€ŠR€Š|€ÏF€´€ŠuŠ€´B€³€ƒt€ƒ€€ƒ\€ŠF€N€Ï€Ša€Šh€ŠgŠL€Š_€Šc¯ƒs€Š7€B€Š€ŠW€ŠHI€Ša€´_€–�€ƒ]€ŠSÖs€ŠW€I€Šv€–�oA ~ÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿyÍÙu�ɳƒœÔ�X†$D $ B6$ A,$@A€^€@€Š€BC{€ŠF~ÚA@ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2D×ÀÚš¦óx†0"]&%You picked up some Super Bullet Box.G€AV€Š€@J�M€ŠZ€Št€Šv€ŠH€Šr€ŠK€ŠH€@€ŠR€ŠW€´ÊFÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2U-s†+ʃýe°†0"î8"Ü]You picked up some R3 Blades.€ƒe€LvW ZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿX˜ÊÏLöú l”Ž�””Ž�””Ž�”†9$?F€Ô z~ »`x¬33S@®èÍÌL=^›:žÝ:$è¬ÿÿæC«è?,ÿÁx V€ŠU€Y€]€`ŠŠ€³Z{ÖÔn_ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2dSóƒ¬ÔÂ"W†0"è8"Ð\Ô] You picked up a KAMIKAZE Cell.,€ÛENÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2f·£ÏÛ‰¸í†0"ô8"è\Û]! You picked up 500 Flame Shells.ãUeÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2gøãž5Æb†0",8"î] You picked up 500 Remove Pack.AŠãEhÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2i©Ã9Æã_è†0"X8"°\ã]You picked up a Mega Core.FŠh€ŠÙdlÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2lèyÜ8ÙZ‰Gj†0"8"2\Ù]You picked up Galtic ammo.^] Galtic Ammo\ûSû}ŠmŠï`h xÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2o×§8ï!r’æ�Ѹ™B…žtȆ+lh."B@]You got the Galtic Launcher.m$ @ŠYY€ƒv€€I €€w€–�€~€ƒ€€|€Š^€–�€a €€€€€x€€€y €Õ\WLÙu':1q-Ûý$­qq!y!Lv!L À UOEÁ¤!„�U-ô-s -s'�›:žÝ:$Fa Õ "@FÁÍÌL>FÀ$a!@@@šÕš™?š Úr Vyç_(�-â'a!faaëo‚$ý€?ÎÔ9Çãa!*aaÚëq!wa&!CÍÌL=o‚$ bLÿÿ@ÿÿÿÿúÿÿxåW C&¦»¹‚r.ÙC*„š:ï:$ wC¦Ùáš¶±Ù?,È–š:Ì:$C4 D«¶?, ¦EÖÕ?ÈšÙ¶°Ã?a Ó €@ HCa ß| P>WÿÿÿÿÿÿÿÿÿÿËsr Bÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿO ^ôÞ'ËT”…@´1ÚÈÞRxÐÏÏyrÒ¯”Ž�”ƒœÔ�X”Ž�””Ž�”´1ÚÈÃ�qdlƒœÔ�X”Ž�”´1ÚÈ´1ÚȆ $ AüY S lK8UnáØ.…‰­ �‰ �M°n?èÍÌÌ>S ß` t>ÚÿÿÿÿÿÿÿÿÿÿÌ^gZ`^w.•^*K%^–K,TþK.•^ÈÂ!BÎ=K ¥K úW nB5™¬LÃnáØÍ ��T±n®®ÚÍÚ?,-Lmš:ï:$L€?ƒrÍ*L€?1°L?,aê$u!va!šÕ?ÂâØ×Í �ÕÍë#@?�)±n®®ÚÍÚ?,#¸6¥š«333?no‚$raø $a!DÈHB|:Ê#Èȉ�-q¡ØÐa Ñ !�¦ · YeN!²X$‚š:Ì:$ °Ã?b€?ta ¨ ×eÔL?, tÀ$ üs|"…uY.…svYaé  @X—Yج Y؈m¡YØÜU ÜQRIG„}‚w.ÏV*.ÏV-Éx›:žÝ:$V/ D«¶?, ¦�Õ?ÈâšÂa 4›:ï:$o‚$4‚‚�ž-é›:žÝ:$�6Üç-ô°Ã?Za à ×�ÔR?,PRZÀ$4a Ð �PRšÕÍÌL?×ÔÕÛšRR®ffæ¿«ÃÍÌL?ša+PšÙáš±Ù?,dbš™™>iÃǰiÃõ¨>a Î $š™? zDî°iÃõ(?a Ë $š™? zDa í$š™? zD ëkN_ H›:žÝ:$?�6Üç-ôka ÞaÍÌÌ='š:Ì:$NÇ¡6ñND¯«Ã?Ð?è¡6¿ND¯«Ã?Ð?è¡6üND¯«Ã?Ð?èšÔ9N®Ù¯«Ã?,È?,d6Üç-ôÝšff&?ë T JG.rX$‚š:Ì:$ °Ã?b€?va ¨ ×JÔM?, vÀ$ ê L py%C.F´p?,6º¡-ó'Aw * -ê' N-ó(ïÔï?,dØ´p?&—w * -ê( -Þ(6º¡6º¡å.ð×Botpack.PulseGunL ð,w * -ê( -Þ'6º¡«€¿6º¡å ã  Ãl Z#7ä'‰b.…‰ªå.…‰ ·hACT××׉ �ÐÕ6º¡AÕ6¥¡CP××TÔÕ«Z¯Ã?A?èÔÕ«Z¯Ã?C?è{‚‚-G w*f„‚Ù‰ Î#°á‰ š?,(*±Û≠šâ š33s?ßPÕ?'âØ �Të.…‰ $tITD«0@Ñ((ßPÕ?'9«*-G(].…‰HegPT&]eg9«AC úf A @ü+@r˜*Ày.…‰2ry*»úA  Òa @Ps¿ H@9ÇšÕÙ@F6ܦ ö-ô-y' Çy5½®(‰b.…‰ªå.…‰ ·Y|jU×××׉ �ÐÕ6Ü¡YÕ6º¡|Õ6¥¡j«.…‰ wUDÑ'-I UרUÔÕ»d|?,Õ¯«¼d?,áz,Aj¸dffæ?ay U« Þm B (ܘ a ×£= ÿÿÿÿÿþÿÿÿÿâG N3œ ®-ý(-ú(Kÿ÷!/a0 ƒN÷JN L¦10XžëŒwX*{XXXø_óýýaø$ Ów EF 7áañ$? ®?ÃÆ¶zCÂ?È�a ó �¦ ·D’, §, E%ß–EDa Ö �Püa É �Püa È �Püa Ê �Püa Ð �Pü¥El Ëlz Ë;.•‰‚w;*µ;Â;Ñ-Å'¬î?€Hô¯«?î«?,€¯«?ñ«?,€äž-Éî$õî$è Ø Hô®«?î«?,@®«?ñ«?,`6Ùí$6Îí=,ÿ6Æí$¬;Ñ;Â/aÑpppXSD.SD¯«?, ?�, D -Å( Ëb3fb`‚wb¦+„�ba/!D±bÚ?%XâØXb � éK GT1KI‚wG¦�Ga/!DJâØJG � î~t‹– ÿÿÿÿÿÿÿÿÿÿàU y Uiö$ÿÿÿÿÿÿÿÿÿÿÑl b añª* aìQ8> ÿÿÿÿÿÿÿÿÿÿODN!ª|$‚š:Ì:$ °Ã?b€?ka ¨ ×DÔQ?, Æ«¶?,CÂ`jGDkÀ$ äzwgc³wÃ`®ÍÌÌ>«š™?ÃB°w?a![`ÍÌÌ>±z°w333?aû$aû$a!Z`ÍÌÌ>±I¤°wfff?a!`ÍÌÌ>±a&!CÍÌÌ> Ë}!…­«‚w}¦+„�}a/!D±}Ú?%ha ¨ !�¦ ·hÁ«hÁ?,ÆúCúCÂ?�È,� ßVZ/6ÿÿÿÿÿÿÿÿÿÿÀH mHk"Ê-m-Ä-k-Å-Ä(-Å(‚‚-±w.•‰*—˜£%�„-m›:.…‰½%8 „-k›:.…‰¹%8 À ép H S(tJ‰'Éé$«ÍÌÌ=.…‰ªaH õ@@ÍÌL= çEo Vÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2m )2iç(óø…žtÈ…žtÈ…žtȆw"Ü]You picked up the X Helth +Ýz G X= G  ÎkU f+29ÿÿÿÿÿÿÿÿÿÿêG T%­P r‰* ‰ ÉÌ$.…‰ªaxÌ @@ÍÌL= Ëa3éb`‚wa¦+„�aa/!D±aÚ?%AâØAa � Çj V3vŽañ$? ®?ÃÆ¶zCÂ?È�k±¶?,<a ó ×VÔJ?,PJŒa ó ×VÔJ?,Pš ÿq \ :Öþ(‚r˜* wô*'.…‰ü˜&q!(-Ë'-±'\�„-í ±ê?%.…‰ /ê¤-ð#üU5àÊ-ýUå ÜUÃ!tUÁ@@ ød E €� kr˜*'.…‰i˜&q!-±'-Ë'.…‰ /êE  ß_b%–ÿÿÿÿÿÿÿÿÿÿÎ l D b/e‰a/!4.•‰)ëÀ?×þ.•‰=ÍÌ̾#€"DáC>Cwì*ìE»-×É âá$«€@.…‰ªâÉÝ$«€@.…‰ª�-ÁaD Ê ÍÌ\@ÍÌL= þmR ²ŠE’, §, R%ˆ–REa Ö �Püa É �Püa È �Püa Ê �Püa Ð �Pü¥R ÓG@TN®ÿÿÿÿÿÿÿÿÿÿáF Ä-ø8F ( Ë^±b`‚w^¦+„�^a/!D±^Ú?%QâØQ^ � øZ B f *a&![B  ÓKSF ·áañ$? ®?ÃÆ¶zCÂ?È�a ó �¦ ·`’, §, S%ß–S`a t �Püa I �Püa @ �Püa M �Püa K �Pü¥Sl ÆP Tj+…ZS˜£6–}Z,Zp0Z6Ù|=,ÿ6Î|$6Æ|$TaÚ@ AZ Æ|  ×@ C Xÿ{a&!*C  ð DH›§ •;ÿö!/a0 ƒHö:H L¦10-ý']žë„w]*{]]]øWaø$ÀA ÇB vpùð+)„ÿÃ!* �-æa&!*v ÑV kr6æBPka+B ÄC uqóO3-ú‚þÃ!* ±ÇÍÌÌ=a&!Cu ã@^pÜ_Ú-ú3ý^ÃF°^ÍÌL>a!Z€?ÍÌL>Øj°^ÍÌÌ>a!€?ÍÌL>Øް^ ×#?a!C€?ÍÌL>Øư^@?aÐ$aÐ$a!m€?ÍÌL>Øa!q€?ÍÌL> B K-09¦:K×}Õ?,üa  KPØK� J P<Æ6fPã\På`Põ^PÝWPù[ Ç Hri@î¸Dw.…Õ*Õ" è�Õ?š!W]¶¶‚w.èÕ*°6¥š?pþÿÿrõ.èÕÁ€?Õ" è�Õ?š!W "Ìygz`^w.•y*b%^–b,Tþb.•yÈÂ!EÎ=b ¥b Ôjj~�q!VåÇjFpT|:ÄÕ¸ˆG×F#€?aÀ$aÀ$ Ï w >›sD®?’,§,«Á?,w%––wsa u �Püa u �Püa u �Püa  �Püa  �Pü¥w#a O dO½ dã«\?,då«`?,dõ«^?,dÝ«W?,dù«[?, ÇO w+Ü`añ$? ®?ÃÆ¶zCÂ?È�a ó ×wÔI?,PIa Çu O*Ø‘añ$? ®?ÃÆ¶ŒBÂ?È�k±¶?,<a Þ ×OÔK?,PKŒa ò ×OÔK?,Pša æQ _&EO:r_*vÓya׉ �Ôy@FJa×××׉ �ÐÕ®6Ü¡?,yÕ6º¡bÕ6¥¡aa Ý ×aÔv?,Pv‚‚w_ w_‰ w_*_+ ˆ.…‰aÕ`jGy!oÆúC€B!o`jGa¢.…‰Ø,d á yw`<ÞxOÃ,°OÍÌÌ>a!@333?š™>bP°O333?a!K333?š™>ba!j333?š™>aé$aé$ { iz¡+Š}’,§,a%ˆ–a}a t iPüa I iPüa @ iPüa M iPüa K iPü¥a ìtjy¢ô*´j?,6º¡-ó' 2-ó(ïÔï?,d6º¡«j6º¡¶6ºïj§´j?&å.ð×Botpack.Minigun2L ðòå ßò´j?%6Üï«6Üï?,_6¥ï«6¥ï?,i û N `VK9UbÃ'°bÍÌÌ>a&!@`SF°b333?a&!K`Sa&!j` þY `j-� w˜*kS˜£A–}k,kp0k 6ÙN=,ÿ6ÎN$6ÆN$`aÚðA Ak ÆN  É L k™ñr˜*'.…‰å.…‰ ·DPdDâD.…‰%a ×.…‰ �#pAï˜&-±'-Ë'6׉ �Ðg.¯‰c.…‰c /ê‰b«@cª«c ó6DÑ'-ýå«ASTa ó !×6ÔA?,"6×××6Õ6Ü¡AÕ6º¡SÕ6¥¡Ta p !6«Lq!( ïo j¨ür˜*'.…‰}˜&.…‰ /ê-Ë'-±'‰b.…‰ªå.…‰ ·T[\7׉ �Ða ó !×7ÔT?,"7×××7Õ6Ü¡TÕ6º¡[Õ6¥¡\«.…‰ vó7DÑ'-Âa } 7«jq! õ^ 4 §t íå.…‰ ·SRh4‰ Ç6¿4“’6¿4§@ 6ñ4“’6ñ4§èôg×××׉ �ÐÕ6Ü¡SÕ6º¡RÕ6¥¡haö g4 É v TO&Ž—!„�T-ô-y -y'ƒ›:žÝ:$Wa î "@WÁ?WÀ$šÕš™?š Z@A µ`]¬š™™>®èÍÌL=^›:žÝ:$è¬ÿÿæC«è?,ÿÁ] Ïdao U- ÓäÏa Óä*  ÇQ 9D.åañ$? ®?ÃÆ¶zCÂ?È�a ó ×9Ô?,P{’,§, k%ã–k{a Ö 9Püa É 9Püa È 9Püa Ê 9Püa Ð 9Pü¥kp ú~ @ nÑa&![@  Ò^ i D¾¦ ÿÿÿÿÿÿÿÿÿÿÚH YoUH®S-áß$-Æ(@�ž-éï§, mPï§,m[ß$ò«ò¯q=Š?« ×#>ÃÈ„�‰a/!4´.•‰Ä?%û«û®?,«š™>Ãâû«û®?&«š™>à ÞäÚY Þä*¬‚‚‚-áž-ɱ¯žÖQ>zžÉQžÖå.…‰ ·Jng¹³6ºï?%F€?ÄF€¿¬ž-ÉBa æ‰!Ø××׉ �ÐÕ?,JÕ®«ÍÌÌ>6ºï @nÔg?,¬wB*B[uÔ××Õ®«Ãš™™>ÍÌÌ>JÕ«®«Ãš™™>ÍÌL>FnÕ®«Ãš™™>€?g?,   Ëa V#- =.…‰‰b=ªå= ·rYH{׉ �Õ=×H«= $tI{D«?,Ñ((r9«o×{Õ?'rE=Hmno{&EmnrYH ¤mY kÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿ^ œÉܤ  ŸÂƒœÔ�XƒœÔ�XƒœÔ�X…žtȆ$zE>$zE $€»DÔ kÍÌÌ> ìx [I#MË[V ëUP@€b'‚w˜*˜˜£%ÀC.…‰ž„„rC­*7°6¥C­ �¯6¥‰ �?,< °Ã?P&¥P%OwC­* ±6¥‰ �®6¥C­ �?,ŒP&®»€>OO±6¥C­ �®6¥‰ �?, ¯»)\�=®»«ÃÍÌL= x E<+�zEãEåCEõFEÝ~EùBEÉA ñH kF›�"ßPØk�6¿ßœ6¿ßÿÿjœ“6¿ßœ6¿Çÿÿÿÿ{„–j@ —j¿à(' Ë_ Fe*ˆËF)wO*GFO9GF}FØÜFú$€}wà*à eF Z M-9’Ó¦5M×MÕ?,ü‡w‰*+a N MPØM�+å Ü+Ã!t+ÁXÑ+a y MPØM�+å Ü+Ã!t Ä ~i¸Ri5öó-ÂiÁ®®€?«ÍÌL?«?,õ?§,X æe 3À,.…‰$r,*q!f «„š:,¹%U‚,a/! ?„r,­*)±¯žÖ.¯,ý?,,¹$ ¸fe9±f�Âu>ø‰a/!4.•‰=ê÷wì*ìE¹f�Âu>9�˜&¡.…‰Ø, ‡.…‰ú=&„™.…‰Øèš:.…‰ú,ÿ.…‰ú$€a Ñ !�¦ ·.…‰h*!T‰ �a Üh {cÉ(æ$Èaa!H ÿÿÿÿÿþÿÿÿÿÓv %g4 <ia ¨ ×%ÔD?,iÀ$\a Õ ×%ÔD?,\À$ha O ×%ÔD?,hÀ$Ya \ ×%ÔD?,YÀ$La ä ×%ÔD?,LÀ$@a Þ ×%ÔD?,@À$V%a ít cjž .OS˜£6–}O,Op0Oc`aÙðAÈB¬?�ù˜£˜£,Ä?˜£ A€?€? Ï (ß–˜£, 6Ù&=,ÿ6Î&$6Æ&$6Ù&$6Î&$6Æ&=,ÿcaÚ`B`AO Î &  Æ[ E@Çþ@r˜*Àj.…‰2rj*»ÆE òZ5¸Žg‰b.…‰ªå.…‰ ·lQjo×××׉ �ÐÕ6Ü¡lÕ6º¡QÕ6¥¡j«.…‰ ^oDÑ'-]X.•‰wX*X=ÍÌ̾#áC>C€"Da o«e‚žâa/!~.àžâ-Ð* èX A û i33s?(.…‰/r(*q! Z9( ·A( bibZ‰ �Ãw.…A*-Ë'.…A\(–CZa®€?«?,Ã( a®?«?,Ã( ‚š:(½%š:(¹%-Ë( Í QIj1&I %Q$ !&H$ ÿÿ  úfnOËj&C6‚n-åþnû!]q!kAún ìBF ˆ° ÿÿÿÿÿÿÿÿÿÿåj qy3Yüÿ¯C‰b.…‰ªå.…‰ ·nrrB×××׉ �ÐÕ6Ü¡nÕ6º¡rÕ6¥¡r«.…‰ $tIBDÑ((U׉ �Õÿ9«1.…‰HqUUBK„„r1* r1‰ r1 ~w.•‰*.•‰)ÃÀþ1+ ¸ .…‰qÕ@Æråú‚�1-ò�1a/!Aa Ü ×qUPU ço $&Êo²:r$*SÓEW׉ �ÔE@F~.•‰vw~*~=ÍÌ̾#áC>C€"DJW×××׉ �ÐÕ®6Ü¡?,EÕ6º¡PÕ6¥¡K w.¤$*˜,.¤$F.a ä ×WÔS?,PSa X ×WÔS?,PS°‚‚w$ w$‰ w$*$/ ’t,ú.…‰WÕ`jGEÔ Ò.§PN„-x w.¦š:Ì:$å‚‚.-ò7±¯6¥d6¥. �«R¸?.ë/„�¦a/! �.¯¦-Í.1 D«`@¶¦dÕ?Èâš!k.* D¶¦dÕ?Èâš!D<.-òaÓ$@Kañ$@a } aG/³|$‚š:Ì:$ °Ã?b€?Ra ¨ ×aÔS?, Æ«¶?,ðBÂ`jGaRÀ$ @3gZ¨d C% **.•3 e ×¶3ãÀ?¶3åÀ?¶3õÀ?¶3ÝÀ?¶3ùÀ?¶3ÉÀ? ñ[H#�— Ò‰b.…‰ªå.…‰ ·Wuo-××׉ �ÐÕ6º¡uÕ6¥¡o«.…‰ $tI-D«0@Ñ((v××-ÔÕ«H¯Ã?u?èÔÕ«H¯Ã?o?èr9«ßvÕ?'r_.…‰HNKv-¥o«šo,o%«±áØN-?,úa À ×-Õ?,`rPØv-&_NK9«uo öR 0@-p'˜˜£%À@r.…‰­*0%»TØ.…‰­ �‰ �!áTPö¯»«¯!?Âoƒ:ÍÌL>»â.…‰­a/!L0%®»š™™>^±!?„0%,±!?б!?¬ ÍÌL>¯»š™™>[°6¥T«¿!0&¯»š™™>Ô‚‚°!?î w.…‰­í*'.…‰­í-Á0%®»š™™>„°!?T±6¥T?,0%®»ÍÌL>0A°Ãff&?P óI W�ø -8„„„r* r‰ r r‰* u׉ �Ðx¬áØuz?,´ „rža/!izz+; D«?èx.…‰zÔÕ`êFHxÔ+‚�-ò�a/!Aa ø ×zÔN?,  ôF tjN^9ta/!I$74ta/!k$7$ CD wIP¡o‚$b€?-ù'añFw]M±Á?&:“D«?,Á&}×�Õ?,wÁôÁ@@˜—:%-˜—:%-q!Y Û J G&f= ›:rG*lÓG׉ �Ô@FJG××××G �ÐÕ®6Ü¡?,Õ6º¡SÕ6¥¡R Ùs }Ue-Ë'#r˜*'.…‰T˜,q!-±'}cq!-±' sfn=fa/!V ;„w.…f¦-ù8  h@ ÿÿÿÿÿÿÿÿÿÿh:} *Ùÿÿÿÿÿÿÿÿÿÿy ]V7íM -ë -ë'/a8 ƒ4C]:9wØ �]lõ€?áÖl6¥ôffæ>6¥I¯€?õ¬¯lÚ?,´m D«I¶¦Ø �Õ«?®ëÚÕ«I?ÈÂ10-ë(b€? sxš=xa/!K ;„w.…x¦-ù8  ùy &¥Oø.rža ñ ×fQPQnn‚‚w w‰ w*¡‚�-ò�a/!Aa ø ×fÔQ?, ¾a Ó €@ ÈB‚a/!  °ÃÍÌL>.…\.…‰úCi_’, §,.°ÃÍÌL>Ýi @7 ’_,d.…‰fÕ«?_úCiÔö›:.…‰¹%@a ¨ ×fÔQ?, @Á¬@Á?,Æ BðBÔ`jG×fÔQ?,  îuC Q…ÿÿÿÿÿÿÿÿÿÿâ | {\u´±Á?ô p.•Žrp*\„�-ý›:ï:$ /áØ� �‹±/?ô */áØ� �eõúC¯€»D/Ö±/?Ü p2)õ¯33³>¬/? Ne«�Âu<e*›:ï:$ Z×Õ¿ šÕ?,dü6¥Z¬€ŸÕJ«®«ÍÌÌ>/?^Áž-ý¶6¥Z @ PZ Â[ _ W^-ìq!bhw.¯‰*Rr.¯‰­*.¯‰½$h.¯‰½$.…‰–r*¸*q! ÅÅš:½%#2q!Q ¸ö«@?_¸í_±íÍÌL>í‰b€?\±ö?&‚�a/!4w­*>PØ­ � �6¿>œ6¿>ÿÿý‚±º?“6¿>œ6¿ Çÿÿ?@2°º?“6¿>œ6¿ Çÿÿ?¿à å>`Dx5å ·`DxQ×××× �ÐÕ6Ü¡`Õ6º¡DÕ6¥¡xÑ‚š:žÝ:$a/!4m×QÕ?,`èm×QÕ?,<`XabdmQ'\‚wX*š:XÒ:$&Xbd9«Dx2q!Q îL &qû ç8„„„r* r‰ r r‰* öôöÀ?„rža/!iöõö€?¼°áØ2‰ �?,Pa á ×2DPD<.…‰a è 2‰2 '.…‰2Õ«ĆÇörÔåwžZ‚-ò±áØ2‰ �?,Z ; D«?ˆö.…‰2Õ«è€GörÔå‚�-ò�a/!Aa ø ×2ÔD?,  Ìt [#J s‰b.…‰ªå.…‰ ·cQJ׉ �Õ.…‰×Q«.…‰ $tIJD«?,Ñ((c9«×JÕ?'c.…‰HL[Jh.…‰HL[JQ„„r* r‰ r ž‚�-ò�a/!Aa Ü ×L[P[ ßß‚a/!4—.…Ø%ë.• &‰ �[cQ) , .…‰LÕ?hÅÿÿcÔq–.…‰ØÜ¡.…‰Ø& ÕQ }XN5åÇVmgb€?£°ÃÍÌÌ>××�ÕÚVÕ«ÍÌÌ>ëga !zD�('¡w*o‚$ ××�ÕÚVÕ«ÍÌÌ>ëga P!zD�('w*o‚$ר×�ÕÚVÕ?,(mÕ«ÍÌÌ>ëga [!zD�''�w*o‚$3°Ã«ÍÌL>ê×××�ÕÚVÕ?,(mÕ«ÍÌÌ>ëga !zDÐ('3w*o‚$ é\R {gè\O.…‰a¸ØüC«?,ÿ.…‰ªa!Kfff? ÿÿÿÿÿÿÿÿÿÿLCY BI ¶¡o‚$b€?-ù'añFBZM±Á?&5“D«?,Á&M×�Õ?,BÁôÁ@@˜—5%-˜—5%-q!Y ôuƒ£Æ«¶?,C!S?Èu]×�Õ?, sa Í ]a è ]o’,§,M%ž–Moa A !]Pü¥Moa ßgj&šÿÿÿÿÿÿÿÿÿÿò] &>_§Ga ô !Ø××׉ �ÐÕ?,RÕ®«333@6º¡ @pÔ`?&ÞwG*GÁ@GTuÔ××Õ®«Ãš™™>ÍÌÌ>RÕ®«ÃÍÌL>ÍÌL>pÕ®«Ãš™™>€?`?,  r ža ð ×hePe¥¥‚‚w  w ‰ w *d -ò a Ó €@ ÈB-‚‚ -ò7±¯6¥h6¥  �«R¸? ëC„¦a/!4-‚¦a/! �.¯¦-Í ) ,È.…‰hÕ?¸ˆRå^ ( ,Z.…‰hÕ`êFRÔ¥‚� -ò� a/!Aa ø ×hÔe?,  öv !:Ùt-Ë(0˜˜£%.…‰sU›:.…‰½% v!" ÿÿÿÿÿÿÿÿÿÿd÷z YI˜.…‰Ø,d 7r˜*'.…‰G˜&q!(-±'-Ë' ‰a/! »‚.¯‰-ú °Ãff&?ѬÑöì€?A °á؉ �Ð ?,ѬÑö«?ì€?@@ ì.…‰ /ê#ÑÑz —WgrÿÿÿÿÿÿÿÿBœøÿÿÿÿÿÿÿÿÿÿ6S žbš —Ö¯Óñ…žtÈ…žtÈ´1ÚÈ´1ÚȃœÔ�X�€Å_�€Å_�€Å_�€Å_ƒœÔ�X”Ž�”…žtȃœÔ�X”Ž�”…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ•> £Y…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtȃœÔ�XèG©™ÀƒœÔ�X1$†d$%D:"�_9$@6$\C,$fCP koZ’ »¹rÛ*k.…‰uaîkuaì þÛ.OuV»ÍÌÌ>ÛUr.…‰íÛZýÿ-Á -Æ V íSS YÿÿÿÿÿÿÿÿBœøÿÿÿÿÿÿÿÿÿÿ6U »î8híVÙÞ�ƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�XƒœÔ�X…žtÈõ]´H•õ]´H•õ]´H•õ]´H•õ]´H•õ]´H•õ]´H•õ]´H•õ]´H•õ]´H•1$†RDtgdy|zd$HDE$@œFp$ÈDB$HB:"XnC] the m$zFÚ ` zc_û a^z¢|Ø^z&_wÊ*Ê$cz|J|@{ È qO`ðòaé$«`@ö7°Ã33³>a!M333?ÍÌÌ=ð°Ã? a ü ×�Õë#ÍÌL?a<Ç"¸ @w * å í ]  š×šÕášü6¥  šõ6¥  š6¥ša!K333?ÍÌÌ=ð a ü ×�Õë#ÍÌL?a<Ç"¸ @Þw * å ã ]  š×šÕášü6¥  šõ6¥  š6¥ša!t333?ÍÌÌ= ùZ '@SÆ p˜˜£%À.…‰-H„r.¯‰*.¯‰-Íur­*'%h©­a/!L'&®»ÍÌÌ>h7‚�-Hh„„„a!Ha!Ga!q&±¯žÖýÍÌL?'&®»š™™>hn‚�-HÙ Î#'&hÿ‚�-H2±áØ­ � �?°'%®®»ÍÌL=ô«b¾¼8áØ­ � �š™™>hX±6¥­ �®6¥ �?,È'A°Ãš™?®»š™>h'A°ÃÍÌÌ>» sL=La/!K ;„w.…L¦-ù8  hlM 1?ÿÿÿÿÿÿÿÿÿÿÈ^J a˜q’,§,\%ˆ–\qa t �Püa I �Püa @ �Püa M �Püa K �Pü¥\V^a Ë\µb`‚w\¦+„�\a/!D±\Ú?%NâØN\ � óx5 Qà‰b.…‰ªå.…‰ ·uvzG×××׉ �ÐÕ6Ü¡uÕ6º¡vÕ6¥¡z«.…‰ vGDÑ'-Wax G« å Y ‰3 a ÿÿÿÿÿþÿÿÿÿî} o€ ‰f°õ€?¸Ï}f±Ï?¸õÏÏf‚r.•‰* °ÃÍÌL>q!D‡š:.…‰¹%q!D g G</ w sc* acžw*æ  Q-í ' g Ræ$àa/!4y.•Äðq!!íq!bþ *íž‚�a/!w�a/!b '˜£˜ã ìA I>‰R-x'añ$@a!l€?“‚w.ÏM*.ÏM-ÉŽš:Ì:$M* D¶¦�Õ?ÈâšÂa ¥~a(bš™™>º—~,a&š~&a Ð �P*š6¥*6¥â*â*&°Û*w¾¿â×Õš™?*6¥â&°Û*w¾¿¿š§&%×#ÍÌL=ÙØ#ÍÌL=ÿš§&%×#ÍÌL=Ø#ÍÌL=âàšÕ«?,Ûšrš ~ oJ~¿¡ØoI~D¬áC4–~& zP6üz§ÿÿca ä Izc ÓÖ?~cÔ“~& Þ P L@V˜˜£%ÀB.…‰z„rB­*+‚‰a/! .¯‰-òL%»®B­a/!LL%®»ÍÌÌ>æLA±?¼áØB­ �‰ �¶»ô.…‰ÉÀ?» Êpo ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5d )áÊ=$:e”Ž�”…žtÈ…žtÈ…žtÈ…žtÈ”Ž�”…žtÈ…žtÈ…žtÈ•> £Y…žtÈ”Ž�”…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ™¯Ð“œ…žtÈ…žtÈ�Ѹ™B�Ѹ™B�Ѹ™B�Ѹ™B�Ѹ™B�Ѹ™B�Ѹ™B™¯Ð“œ…žtÈ”Ž�”…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈÊ=$:e…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ•> £Y…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ…žtȆ[$E_$ÈCZ$ÈCN$HCP$À²Cw$ÈAæD f YKêÿÿÿÿÿÿÿÿÿÿÌ|{G¢{a/!K q!~ ×P>igwP¦Oš:Ì:$P) D¶¦UÕ`jFâš!]GU# Ï z ¼(‚r˜* wô*'.…‰º˜&q!(-Ë'-±'z�„-í ±ê?%.…‰ /ê¤-ð#º5 yÊ-ý ÏS @\Gˆ.…‰r* ^.•‰)“×&X–)%)%�r^*-ǰ«Ã?,êå ·wCpI×××׉ �ÐÕ6Ü¡wÕ6º¡CÕ6¥¡p--׫ ÊIDÑ'-ýY« vóIDÑ'-Âxw^*« ·b“×&‰bªêwÈ*l.…tç‚wÈ* wÈlÈ*-Ô(ñl*-û(-Ë'«J€@8„-Ç �-×Jà@-~—×&H—×%³-~@Ø×ØIÕ¯«»Jð@CÕ¯«¼J?,pÔÔw?,þ@I~-×u±?%‚°?, �-Ç6¿D¯?6¿««?Xu`‚±`@ �-Ç6¿D®?6¿««¯?,?Xu6¿6¿«õwÈ*#a  !@#eÈ# )ò±?%Ý# š®fff?«ÍÌL>Ã{"a !@" )O‚—×,-Ç"-f'{±?%Ý" š®fff?«ÍÌL>Ã2,±?%Í‚°?, �-Ç6¿D¯?6¿««?X,‚±`@ �-Ç6¿D®?6¿««¯?,?X,6¿6¿«¬wÈ*#a  !@#eÈ# )©±?%Ý# š®fff?«ÍÌL>Ã2"a !@" )‚—×,-Ç"-f'2±?%Ý" š®fff?«ÍÌL>øù1†?¦×G-Ç(~-Áv!-Õ'×&%À?%†-Õ( Ûd Y5¿r˜*'.…‰å.…‰ ·F_`FâF.…‰%a ×.…‰ �#pAà.…‰ šÕ?ÂF˜&q!-±'-Ë'.…‰ /êY5öó- Ìr[]G[a/!K q!~ ß tX   r‰* ê‰a/! }×׉ �ÐÕ6¥¡#€?Ëw.…‰­*Yanm×}Õ?,úâØ.…‰­ �}}(#@A@A@AÒYêwY*8 X ˜&q!-±'ʼna/! Å‚‚‚‚‰a!r$r‰Í.…‰­š:‰ï:$�.¯‰-Ͱ«Ã?,.…‰ê.…‰`.…‰ /ê-Ë'5öó-ÂX þTq ¡oqa ¨ !�¦ ·qÁ«qÁ?,ÆúCúCÂ?�È,� Ýp \Ô?¦u! "r˜*'.…‰�˜&-Ë'-±'tš™™>.…‰ /êüC«?,ÿ.…‰ª\q!¤q!! þG E-l—�-m¥H”šH[-m'žë”w*}„a/! a/!`gø=D¦HDšH%-m(žëDw*-„a/! a/!`d C& **.• e à <øÅžëÊw*³„a/! a/!`³—Ø% سw *œ‚‚w.� *š:½%š:¹%œ–.� £.� ã¡.� £D®«Ã?,?&œ—.� £.� ã.� £.� ã  ØµøXžëjw*S„a/! a/!`S‚—Ø%–ØÜ¡Ø,øÞ ÞE | ¿ª¦u! "r˜*'.…‰�˜&üC«?,ÿ.…‰ª.…‰ /ê-±'-Ë'tfff?|q!(¤q!! Ù sq5/Cé‰b.…‰ªå.…‰ ·cdet×××׉ �ÐÕ6Ü¡cÕ6º¡dÕ6¥¡e«.…‰& v_t%'„-F °ÃÍÌÌ>aq t« âV XOk NLX-ô)wk*kaa(ÿ, gÝšff&? M cJ]å¡[ØchlD¬á[C4–l& {P[6ü{§ÿÿfa ä h{f ÓÖ[?lfÔ“l& Ü CpO2 o�p-ô S�-ùaa Õ "@aÁÍÌÌ=-ù'šÕÍÌÌ=š ÊE w V] 4a?�# ÿÿÿÿÿÿÿÿÿÿ$ôc VVZÛ2Æ®¶?XúCÂ?ÈVb€? äg jLÜ$‚š:Ì:$ °Ã?b€?sa ¨ ×jÔi?, Æ«¶?,CÂ`jGjsÀ$a ÒTȃ�wT¦Pš:Ì:$T* D¶¦JÕ?ÈâšÂKa ü JKÀ$b€?a Îc Z*åBWa ü ×ZÔm?,WÀ$VZa ÊX { TÕ4aÍÌL>�# ÿÿÿÿÿÿÿÿÿÿ$ä| lJdn$‚š:Ì:$ °Ã?b€?da ¨ ×lÔI?, dÀ$a v !la ×w<igww¦Oš:Ì:$w) D¶¦eÕ`jFâš!]Ge# c{N!´|$‚š:Ì:$ °Ã?b€?ba ¨ ×{ÔR?, Æ«¶?, BÂ`jG{bÀ$ äB oLå$‚š:Ì:$ °Ã?b€?|a ¨ ×oÔ~?, Æ«¶?,ðBÂ`jGo|À$a âz Mo]”- üäâM üä*  Êw ~ Vf 4a@@�# ÿÿÿÿÿÿÿÿÿÿ$ØL yfo+t-â'o‚$ý€?ÎÔ9Çãa!*aa!*aq!wa&!*ÍÌL=o‚$ H~ÿÿ@ÿÿÿÿúÿÿ\×M>ˆigwM¦Oš:Ì:$M) D¶¦VÕ`jFâš!]GV# Ëe Se5',<S*wà*à eS ÚCzL†*:1R-Ûý$­Rq!f!~v!L g WG/ª|$‚š:Ì:$ °Ã?b€?_a ¨ ×WÔf?, Æ«¶?,CÂ`jGW_À$ èl s~æ ns9ÇšÕÙsÎÔs?,2a!ZÍÌL>l6Üç-ô-s'šÕš™?š àC Nc<­<bàNb Ý } g@: ˜˜£%À@r.…‰­*g%»YáØ.…‰­ �‰ �g&Ù±Y?°¢±Y?¤g%®«»ô.…‰ÉÀ?ô«·Ñ8Yš™™>¶»ô.…‰ÉÀ?» Üu GJê)¡pØGVWD¬ápC4–W& {Pp6ü{§ÿÿEa Ø V{E ìÖp?WEä“W& ó  _n¯Gº_ÃV®ÍÌL>«?Ã--ú3 ‚þÃ![ °_{.>ö�°_ÍÌÌ=a Í $a!AV��°_{.>a!V¸öš™™>a![V æh k Yb‘ÿÿÿÿÿÿÿÿÿÿô T ]JH‚š:žÝ:$ wåÅBþÃ!IÃ!!" €ŠM €ŠP JÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿO èOIÆ ü톑A]BPak.BEightball}// ==================================================================== // Class: BPak.BEightballMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BEightballMutator extends BPakWeaponMutator; Ì H \[öí ÝQ b Ý<.…‰¸* n€ÑX xëw * aÑ õ c 2nác‹ð¸àüC«.…‰ª?,ÿa!^®€?«?Ð-ý°ÃÍÌL> Z €ŠYƒ// ==================================================================== // Class: BPak.BEnforcer // Parent: Botpack.Enforcer // // // ==================================================================== class BEnforcer extends Enforcer; simulated function PostRender( canvas Canvas ) { local PlayerPawn P; local float Scale; Super.PostRender(Canvas); P = PlayerPawn(Owner); if ( (P != None) && (P.DesiredFOV != P.DefaultFOV) ) { bOwnsCrossHair = true; Scale = Canvas.ClipX/640; Canvas.SetPos(0.5 * Canvas.ClipX - 128 * Scale, 0.5 * Canvas.ClipY - 128 * Scale ); if ( Level.bHighDetailMode ) Canvas.Style = ERenderStyle.STY_Translucent; else Canvas.Style = ERenderStyle.STY_Normal; Canvas.DrawIcon(Texture'RReticle', Scale); Canvas.SetPos(0.5 * Canvas.ClipX + 64 * Scale, 0.5 * Canvas.ClipY + 96 * Scale); Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 0; Scale = P.DefaultFOV/P.DesiredFOV; Canvas.DrawText("X"$int(Scale)$"."$int(10 * Scale - 10 * int(Scale))); } else bOwnsCrossHair = false; } function TraceFire( float Accuracy ) { local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z; local actor Other; local Pawn PawnOwner; PawnOwner = Pawn(Owner); Owner.MakeNoise(PawnOwner.SoundDampening); GetAxes(PawnOwner.ViewRotation,X,Y,Z); StartTrace = Owner.Location + PawnOwner.Eyeheight * Z; AdjustedAim = PawnOwner.AdjustAim(1000000, StartTrace, 2*AimError, False, False); X = vector(AdjustedAim); EndTrace = StartTrace + 10000 * X; Other = PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); ProcessTraceHit(Other, HitLocation, HitNormal, X,Y,Z); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local UT_Shellcase s; s = Spawn(class'UT_ShellCase',, '', Owner.Location + CalcDrawOffset() + 30 * X + (2.8 * FireOffset.Y+5.0) * Y - Z * 1); if ( s != None ) { s.DrawScale = 2.0; s.Eject(((FRand()*0.3+0.4)*X + (FRand()*0.2+0.2)*Y + (FRand()*0.3+1.0) * Z)*160); } if (Other == Level) Spawn(class'UT_HeavyWallHitEffect',,, HitLocation+HitNormal, Rotator(HitNormal)); else if ( (Other != self) && (Other != Owner) && (Other != None) ) { if ( Other.bIsPawn ) Other.PlaySound(Sound 'ChunkHit',, 4.0,,100); if ( Other.bIsPawn && (HitLocation.Z - Other.Location.Z > 0.62 * Other.CollisionHeight) && (instigator.IsA('PlayerPawn') || (instigator.IsA('Bot') && !Bot(Instigator).bNovice)) ) Other.TakeDamage(200, Pawn(Owner), HitLocation, 35000 * X, AltDamageType); else Other.TakeDamage(90, Pawn(Owner), HitLocation, 30000.0*X, MyDamageType); if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9); } } function SpawnDouble() { local Pawn P; local Inventory Copy; if (SlaveEnforcer == None) { P = Pawn(Owner); // spawn a double Copy = Spawn(class, P); Copy.BecomeItem(); ItemName = DoubleName; SlaveEnforcer = BEnforcer(Copy); SetTwoHands(); AIRating = 0.4; SlaveEnforcer.SetUpSlave( Pawn(Owner).Weapon == self ); SlaveEnforcer.SetDisplayProperties(Style, Texture, bUnlit, bMeshEnviromap); SetTwoHands(); } } function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'doubleenforcer' ) { AutoSwitchPriority = i; DoubleSwitchPriority = i; return; } } } simulated function PlayFiring() { PlayOwnedSound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); bMuzzleFlash++; PlayAnim('Shoot', 3.2, 0.02); } simulated function PlayAltFiring() { PlayAnim('T1', 3.8, 0.05); bFirstFire = true; } simulated function PlayRepeatFiring() { if ( Affector != None ) Affector.FireEffect(); if ( PlayerPawn(Owner) != None ) { PlayerPawn(Owner).ClientInstantFlash( -0.2, vect(325, 225, 95)); PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); } bMuzzleFlash++; PlayOwnedSound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); PlayAnim('Shot2', 3.8 , 0.05); } simulated function PlayNormRepeatFiring() { if ( Affector != None ) Affector.FireEffect(); if ( PlayerPawn(Owner) != None ) { PlayerPawn(Owner).ClientInstantFlash( -0.2, vect(325, 225, 95)); PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); } bMuzzleFlash++; PlayOwnedSound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); PlayAnim('Shoot', 3.2 , 0.05); } //////////////////////////////////////////////////////// state NormalFire { ignores Fire, AltFire, AnimEnd; function Timer() { if ( SlaveEnforcer != none ) SlaveEnforcer.Fire(0); } function EndState() { Super.EndState(); OldFlashCount = FlashCount; } Begin: if ( SlaveEnforcer != none ) SetTimer(0.20, false); Repeater: if (AmmoType.UseAmmo(1)) { FlashCount++; TraceFire(0.2); PlayNormRepeatFiring(); FinishAnim(); } if ( bIsSlave ) { if ( (Pawn(Owner).bFire!=0) && AmmoType.AmmoAmount>0 ) Goto('Repeater'); } else if ( bChangeWeapon ) GotoState('DownWeapon'); else if ( (Pawn(Owner).bFire!=0) && AmmoType.AmmoAmount>0 ) { if ( PlayerPawn(Owner) == None ) Pawn(Owner).bFire = int( FRand() < ReFireRate ); Goto('Repeater'); } PlayAnim('Shoot', 2.8, 0.05); Finish(); } state AltFiring { ignores Fire, AltFire, AnimEnd; function Timer() { if ( Slaveenforcer != none ) Slaveenforcer.AltFire(0); } function EndState() { Super.EndState(); OldFlashCount = FlashCount; } Begin: if ( SlaveEnforcer != none ) SetTimer(0.20, false); FinishAnim(); Repeater: if (AmmoType.UseAmmo(1)) { FlashCount++; TraceFire(AltAccuracy); PlayRepeatFiring(); FinishAnim(); } if ( AltAccuracy < 3 ) AltAccuracy += 0.5; if ( bIsSlave ) { if ( (Pawn(Owner).bAltFire!=0) && AmmoType.AmmoAmount>0 ) Goto('Repeater'); } else if ( bChangeWeapon ) GotoState('DownWeapon'); else if ( (Pawn(Owner).bAltFire!=0) && AmmoType.AmmoAmount>0 ) { if ( PlayerPawn(Owner) == None ) Pawn(Owner).bAltFire = int( FRand() < AltReFireRate ); Goto('Repeater'); } PlayAnim('T2', 3.8, 0.05); Finish(); } state ClientAltFiring { simulated function bool ClientFire(float Value) { if ( bIsSlave ) Global.ClientFire(Value); return false; } simulated function Timer() { if ( (SlaveEnforcer != none) && SlaveEnforcer.ClientAltFire(0) ) return; SetTimer(0.5, false); } simulated function AnimEnd() { if ( Pawn(Owner) == None ) GotoState(''); else if ( Ammotype.AmmoAmount <= 0 ) { PlayAnim('T2', 3.8, 0.05); GotoState(''); } else if ( !bIsSlave && !bCanClientFire ) GotoState(''); else if ( bFirstFire || (Pawn(Owner).bAltFire != 0) ) { PlayRepeatFiring(); bFirstFire = false; } else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else { PlayAnim('T2', 3.8, 0.05); GotoState(''); } } simulated function BeginState() { Super.BeginState(); if ( SlaveEnforcer != None ) SetTimer(0.2, false); else SetTimer(0.5, false); } simulated function EndState() { Super.EndState(); if ( SlaveEnforcer != None ) SlaveEnforcer.GotoState(''); } } simulated function bool ClientAltFire( float Value ) { GotoState('Zooming'); return true; } function AltFire( float Value ) { ClientAltFire(Value); } /////////////////////////////////////////////////////// state Zooming { simulated function Tick(float DeltaTime) { if ( Pawn(Owner).bAltFire == 0 ) { if ( (PlayerPawn(Owner) != None) && PlayerPawn(Owner).Player.IsA('ViewPort') ) PlayerPawn(Owner).StopZoom(); SetTimer(0.0,False); GoToState('Idle'); } } simulated function BeginState() { if ( Owner.IsA('PlayerPawn') ) { if ( PlayerPawn(Owner).Player.IsA('ViewPort') ) PlayerPawn(Owner).ToggleZoom(); SetTimer(0.2,True); } else { Pawn(Owner).bFire = 1; Pawn(Owner).bAltFire = 0; Global.Fire(0); } } } \ OÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿX ¯eÁÆ ü톬|]BPak.BFlakCannonü b x }¹š™™¾ u€ŠË o › y// ==================================================================== // Class: BPak.BFlakcannonMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BFlakcannonMutator extends BPakWeaponMutator; !€B€ÒA g U ;ÿÿÿÿÿÿÿÿÿÿü P îäC:‚w.…‰*›:.…‰½%¸àA¸* y€û i çö)M>‚�-Õ—˜£%%À?%×&-Õ' È* Z// ==================================================================== // Class: BPak.BDAmmo5 // Parent: UnrealShare.DAmmo5 // // // ==================================================================== class BDAmmo5 extends DAmmo5; ö U ?w¿ c‹ð¸ÝüC«.…‰ª?,ÿa!^®€?«?Ð-ý°ÃÍÌL> ù f rGŸ -Å' ø a kBe -Ä' | // ==================================================================== // Class: BPak.BFlakShell // Parent: Botpack.UTFlakShell // // // ==================================================================== class BFlakShell extends UTFlakShell; function Explode(vector HitLocation, vector HitNormal) { local vector start; local int i, j; HurtRadius(damage*2, 150, 'FlakDeath', MomentumTransfer, HitLocation); start = Location + 10 * HitNormal; Spawn( class'FlameExplosion',,,Start); Spawn( class'WarExplosion2',,,Start); j = 8 + Rand(8); for (i = 0; i < j; i++) Spawn( class 'BBelch',, '', Start, Rotator(VRand())); //Spawn( class 'UTChunk3',, '', Start); //Spawn( class 'UTChunk4',, '', Start); //Spawn( class 'UTChunk1',, '', Start); Destroy(); } Û_ m T)Xÿÿÿÿÿÿÿÿÿÿý S 2˜‘Ba! ð@Éà$«.…‰ª€@‹ß {mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿk ÄcÊøÆ üí†�OMBPak.BEnforcerÌM m 5˜-Ô( ÿÿÿÿÿÿÿÿÿÿ ÿr .%(ÿ×&-×(&�-ÁR l{//============================================================================= // BFlakCannon. //============================================================================= class BFlakCannon expands UT_FlakCannon; // return delta to combat style function float SuggestAttackStyle() { local bot B; B = Bot(Owner); if ( (B != None) && B.bNovice ) return 0.2; return 0.4; } function float SuggestDefenseStyle() { return -0.3; } simulated event RenderTexture(ScriptedTexture Tex) { local Color C; local string Temp; if ( AmmoType != None ) Temp = String(AmmoType.AmmoAmount); while(Len(Temp) < 3) Temp = "0"$Temp; C.R = 255; C.G = 0; C.B = 0; Tex.DrawColoredText( 30, 10, Temp, Font'LEDFont2', C ); } function float RateSelf( out int bUseAltMode ) { local float EnemyDist, rating; local vector EnemyDir; if ( AmmoType.AmmoAmount <=0 ) return -2; if ( Pawn(Owner).Enemy == None ) { bUseAltMode = 0; return AIRating; } EnemyDir = Pawn(Owner).Enemy.Location - Owner.Location; EnemyDist = VSize(EnemyDir); rating = FClamp(AIRating - (EnemyDist - 450) * 0.001, 0.2, AIRating); if ( Pawn(Owner).Enemy.IsA('StationaryPawn') ) { bUseAltMode = 0; return AIRating + 0.3; } if ( EnemyDist > 900 ) { bUseAltMode = 0; if ( EnemyDist > 2000 ) { if ( EnemyDist > 3500 ) return 0.2; return (AIRating - 0.3); } if ( EnemyDir.Z < -0.5 * EnemyDist ) { bUseAltMode = 1; return (AIRating - 0.3); } } else if ( (EnemyDist < 750) && (Pawn(Owner).Enemy.Weapon != None) && Pawn(Owner).Enemy.Weapon.bMeleeWeapon ) { bUseAltMode = 0; return (AIRating + 0.3); } else if ( (EnemyDist < 340) || (EnemyDir.Z > 30) ) { bUseAltMode = 0; return (AIRating + 0.2); } else bUseAltMode = int( FRand() < 0.65 ); return rating; } simulated event RenderOverlays( canvas Canvas ) { Texture'FlakAmmoled'.NotifyActor = Self; Super.RenderOverlays(Canvas); Texture'FlakAmmoled'.NotifyActor = None; } // Fire chunks function Fire( float Value ) { local Vector Start, X,Y,Z; local Vector X2,Y2,Z2; local Bot B; local Pawn P; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } GetAxes(pawn(Owner).ViewRotation,x2,y2,z2); x2=normal(x2); pawn(Owner).SetLocation(pawn(Owner).Location+vect(0,0,15)); if (AmmoType.UseAmmo(1)) { bCanClientFire = true; bPointing=True; Start = Owner.Location + CalcDrawOffset(); B = Bot(Owner); P = Pawn(Owner); P.PlayRecoil(FiringSpeed); Owner.MakeNoise(2.0 * P.SoundDampening); AdjustedAim = P.AdjustAim(AltProjectileSpeed, Start, AimError, True, bWarnTarget); GetAxes(AdjustedAim,X,Y,Z); Spawn(class'WeaponLight',,'',Start+X*20,rot(0,0,0)); Start = Start + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; Spawn( Class'BFireBelch',, '', Start, AdjustedAim); // Spawn( Class'BBelch',, '', Start - Z, AdjustedAim); // Spawn( Class'BBelch',, '', Start + 2 * Y + Z, AdjustedAim); // Spawn( Class'BBelch',, '', Start - Y, AdjustedAim); // Spawn( Class'BBelch',, '', Start + 2 * Y - Z, AdjustedAim); // Spawn( Class'BBelch',, '', Start, AdjustedAim); // lower skill bots fire less flak chunks /* if ( (B == None) || !B.bNovice || ((B.Enemy != None) && (B.Enemy.Weapon != None) && B.Enemy.Weapon.bMeleeWeapon) ) { Spawn( Class'BBelch',, '', Start + Y - Z, AdjustedAim); Spawn( Class'BBelch',, '', Start + 2 * Y + Z, AdjustedAim); } else if ( B.Skill > 1 ) Spawn( Class'BBelch',, '', Start + Y - Z, AdjustedAim); */ ClientFire(Value); GoToState('NormalFire'); } } simulated function PlayFiring() { PlayAnim( 'Fire', 7.5, 0.0); PlayOwnedSound(FireSound, SLOT_Misc,Pawn(Owner).SoundDampening*4.0); bMuzzleFlash++; } simulated function PlayAltFiring() { PlayOwnedSound(AltFireSound, SLOT_Misc,Pawn(Owner).SoundDampening*4.0); PlayAnim('AltFire', 2.5, 0.05); bMuzzleFlash++; } function AltFire( float Value ) { local Vector Start, X,Y,Z; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if (AmmoType.UseAmmo(1)) { Pawn(Owner).PlayRecoil(FiringSpeed); bPointing=True; bCanClientFire = true; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset(); Spawn(class'WeaponLight',,'',Start+X*20,rot(0,0,0)); Start = Start + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustToss(AltProjectileSpeed, Start, AimError, True, bAltWarnTarget); Spawn(class'BFlakShell',,, Start,AdjustedAim); ClientAltFire(Value); GoToState('AltFiring'); } } //////////////////////////////////////////////////////////// state AltFiring { function EndState() { Super.EndState(); OldFlashCount = FlashCount; } function AnimEnd() { if ( (AnimSequence != 'Loading') && (AmmoType.AmmoAmount > 0) ) PlayReloading(); else Finish(); } Begin: FlashCount++; } ///////////////////////////////////////////////////////////// simulated function PlayReloading() { PlayAnim('Loading',4.0, 0.05); Owner.PlayOwnedSound(CockingSound, SLOT_None,0.5*Pawn(Owner).SoundDampening); } simulated function PlayFastReloading() { PlayAnim('Loading',7.5, 0.05); Owner.PlayOwnedSound(CockingSound, SLOT_None,0.5*Pawn(Owner).SoundDampening); } state ClientReload { simulated function bool ClientFire(float Value) { bForceFire = bForceFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ); return bForceFire; } simulated function bool ClientAltFire(float Value) { bForceAltFire = bForceAltFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ); return bForceAltFire; } simulated function AnimEnd() { if ( bCanClientFire && (PlayerPawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ) { if ( bForceFire || (Pawn(Owner).bFire != 0) ) { Global.ClientFire(0); return; } else if ( bForceAltFire || (Pawn(Owner).bAltFire != 0) ) { Global.ClientAltFire(0); return; } } GotoState(''); Global.AnimEnd(); } simulated function EndState() { bForceFire = false; bForceAltFire = false; } simulated function BeginState() { bForceFire = false; bForceAltFire = false; } } state ClientFiring { simulated function AnimEnd() { if ( (Pawn(Owner) == None) || (Ammotype.AmmoAmount <= 0) ) { PlayIdleAnim(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else { PlayFastReloading(); GotoState('ClientReload'); } } } state ClientAltFiring { simulated function AnimEnd() { if ( (Pawn(Owner) == None) || (Ammotype.AmmoAmount <= 0) ) { PlayIdleAnim(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else { PlayReloading(); GotoState('ClientReload'); } } } state NormalFire { function EndState() { Super.EndState(); OldFlashCount = FlashCount; } function AnimEnd() { if ( (AnimSequence != 'Loading') && (AmmoType.AmmoAmount > 0) ) PlayFastReloading(); else Finish(); } Begin: FlashCount++; } /////////////////////////////////////////////////////////// simulated function TweenDown() { if ( IsAnimating() && (AnimSequence != '') && (GetAnimGroup(AnimSequence) == 'Select') ) TweenAnim( AnimSequence, AnimFrame * 0.4 ); else if ( AmmoType.AmmoAmount < 1 ) TweenAnim('Select', 0.5); else PlayAnim('Down',1.0, 0.05); } simulated function PlayIdleAnim() { } simulated function PlayPostSelect() { PlayAnim('Loading', 1.3, 0.05); Owner.PlayOwnedSound(Misc2Sound, SLOT_None,1.3*Pawn(Owner).SoundDampening); } €d&// ==================================================================== // Class: BPak.BFlameBelch // Parent: UnrealI.GasbagBelch // // // ==================================================================== class BFlameBelch extends GasbagBelch; simulated function PostBeginPlay() { SetUp(); Texture = SpriteAnim[0]; i=1; SetTimer(0.01,True); Super.PostBeginPlay(); } simulated function Timer() { Texture = SpriteAnim[i]; i++; if (i>=6) i=0; Explode2(Location, Vect(0,0,0)); } simulated function Explode2(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); HurtRadius(Damage*2,40.0, MyDamageType, 60000, HitLocation); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; } simulated function Explode3(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); HurtRadius(Damage*2,120.0, MyDamageType, 60000, HitLocation); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; } auto state Flying { simulated function ProcessTouch (Actor Other, Vector HitLocation) { if (Other != instigator) { if ( Role == ROLE_Authority ) Other.TakeDamage(Damage, instigator,HitLocation, 15000.0 * Normal(velocity), 'burned'); Explode3(HitLocation, Vect(0,0,0)); } } simulated function Explode(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); HurtRadius(Damage*3,120.0, MyDamageType, 60000, HitLocation); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; Destroy(); } Begin: Sleep(3); Explode(Location, Vect(0,0,0)); } y€è C î2‚-Õ ˜×,-Õ(%ÍÌŒ?×ìR„-Á ™×,q!a ¥×˜&¸‚r.•‰*%„±Ã?r.…‰­*.…‰¹$-Ë'‰b«š™?.…‰ªR âM]; MÿÿÿÿÿÿÿÿÿÿÆ Pu ê€I-Å„-Å/‚‚-±w.…‰*—˜£%-Å v €€Ç t ð0§˜‚‚-±w.•‰*—˜£%f„-Ä›:.…‰½%8 ˜˜„-Å›:.…‰¹%8 q!8 €U€�Ðs { U{ÿÿÿÿÿÿÿÿÿÿË ŽZ6„r.…‰*˜˜£%"q!XK�-±q!Xxq!; þz eT3ªÿÿÿÿÿÿÿÿÿÿ÷ ] ~ Ètr‰*q!f €Ï} ÎÄÏdæ$È Ò i"VF ú ^ Rãç`^‚wåÅ w‰*a!I€?‰'Éc$«€?.…‰ª Î Õ(R¸*æ$ÃðÎ ç D O<:„„š:.…‰¹% —×,-Áq!a €å R 2;ÉÝ$«š™Ù?.…‰ªa!|€@ÍÌL= [ä"©Õ Q I >Z!j!°¯žÖ@ÍÌL>(-Å„-Å/‚‚-±w.…‰*—˜£%-Å a€r// ==================================================================== // Class: BPak.BGalticAlt // Parent: Botpack.ShockProj // // // ==================================================================== class BGalticAlt extends ShockProj; var int cnt; var class Proj[5]; simulated function PostBeginPlay() { super.PostBeginPlay(); SetTimer(0.005,true); } simulated function Timer() { if (cnt > 4) cnt = 0; Spawn(Proj[cnt],,, Location, Rotator(VRand())); Spawn(Proj[cnt],,, Location, Rotator(VRand())); Spawn(Proj[cnt],,, Location, Rotator(VRand())); cnt++; } function SuperExplosion() { local int i, j; PlaySound(ImpactSound, SLOT_Misc, 0.5,,, 0.5+FRand()); HurtRadius(Damage, 250, MyDamageType, MomentumTransfer, Location ); Spawn(class'ut_ComboRing',,, Location, Instigator.ViewRotation); j = 32 + Rand(32); for (i = 0; i < j; i++) { Spawn(class'BDAmmo1',,, Location, Rotator(VRand())); Spawn(class'BDAmmo2',,, Location, Rotator(VRand())); Spawn(class'BDAmmo3',,, Location, Rotator(VRand())); Spawn(class'BDAmmo4',,, Location, Rotator(VRand())); Spawn(class'BDAmmo5',,, Location, Rotator(VRand())); } //Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); } 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) { if (cnt > 4) cnt = 0; Spawn(Proj[cnt],,, Location, Rotator(VRand())); cnt++; } s®// ==================================================================== // Class: BPak.BEightball // Parent: Botpack.UT_Eightball // // // ==================================================================== class BEightball extends UT_Eightball; function SetSwitchPriority(pawn Other) { local int i; local name temp, carried; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'UT_Eightball' ) { // set to the same priority as the UT_Eightball AutoSwitchPriority = i; return; } } } simulated function PlayLoading(float rate, int num) { if( Owner == None ) return; Owner.PlayOwnedSound(CockingSound, SLOT_None, Pawn(Owner).SoundDampening); PlayAnim(LoadAnim[num],3.0, 0.05); } simulated function PlayRotating(int num) { Owner.PlayOwnedSound(Misc3Sound, SLOT_None, 0.1*Pawn(Owner).SoundDampening); PlayAnim(RotateAnim[num],3.0, 0.05); } simulated function PlayRFiring(int num) { if ( Owner.IsA('PlayerPawn') ) { PlayerPawn(Owner).shakeview(ShakeTime, ShakeMag*RocketsLoaded, ShakeVert); //shake player view PlayerPawn(Owner).ClientInstantFlash( -0.4, vect(650, 450, 190)); } if ( Affector != None ) Affector.FireEffect(); if ( bFireLoad ) PlayOwnedSound(class'RocketMk2'.Default.SpawnSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening); else PlayOwnedSound(AltFireSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening); if (!bInstantRocket) PlayAnim(FireAnim[num], 3.45, 0.05); } state NormalFire { function AnimEnd() { if ( bRotated ) { bRotated = false; PlayLoading(1.1, RocketsLoaded); } else { //if ( bInstantRocket || (RocketsLoaded >= 6) ) //{ GotoState('FireRockets'); return; //} /* RocketsLoaded++; AmmoType.UseAmmo(1); if (pawn(Owner).bAltFire!=0) bTightWad=True; NewTarget = CheckTarget(); if ( Pawn(NewTarget) != None ) Pawn(NewTarget).WarnTarget(Pawn(Owner), ProjectileSpeed, vector(Pawn(Owner).ViewRotation)); if ( LockedTarget != None ) { If ( NewTarget != LockedTarget ) { LockedTarget = None; Owner.PlaySound(Misc2Sound, SLOT_None, Pawn(Owner).SoundDampening); bLockedOn=False; } else if (LockedTarget != None) Owner.PlaySound(Misc1Sound, SLOT_None, Pawn(Owner).SoundDampening); } bPointing = true; Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening); RotateRocket(); */ } } } state ClientFiring { simulated function Tick(float DeltaTime) { if ( (Pawn(Owner).bFire == 0) || (Ammotype.AmmoAmount <= 0) ) FiringRockets(); } simulated function AnimEnd() { if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else if ( ( bRotated ) && ( ClientRocketsLoaded < 6 ) ) { PlayLoading(1.1, ClientRocketsLoaded); bRotated = false; ClientRocketsLoaded++; } else { if ( bInstantRocket || (ClientRocketsLoaded >= 6) ) { FiringRockets(); return; } Enable('Tick'); PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function BeginState() { bFireLoad = true; if ( bInstantRocket ) { Disable('AnimEnd'); ClientRocketsLoaded = 1; FiringRockets(); if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else { FiringRockets(); return; } } else { ClientRocketsLoaded = 1; PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function EndState() { ClientRocketsLoaded = 0; bClientDone = false; bRotated = false; } } state ClientAltFiring { simulated function Tick(float DeltaTime) { if ( (Pawn(Owner).bAltFire == 0) || (Ammotype.AmmoAmount <= 0) ) FiringRockets(); } simulated function AnimEnd() { if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else if ( ( bRotated ) && ( ClientRocketsLoaded < 6 ) ) { PlayLoading(1.1, ClientRocketsLoaded); bRotated = false; ClientRocketsLoaded++; } else { if ( bInstantRocket || (ClientRocketsLoaded >= 6) ) { FiringRockets(); return; } Enable('Tick'); PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function BeginState() { bFireLoad = false; if ( bInstantRocket ) { Disable('AnimEnd'); ClientRocketsLoaded = 1; FiringRockets(); if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else { FiringRockets(); return; } } else { ClientRocketsLoaded = 1; PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function EndState() { ClientRocketsLoaded = 0; bClientDone = false; bRotated = false; } } ////////////////////////////////////////////////////// state AltFiring { function Tick( float DeltaTime ) { if( (pawn(Owner).bAltFire==0) || (RocketsLoaded > 5) || bInstantRocket ) // If if Fire button down, load up another GoToState('FireRockets'); } function AnimEnd() { if ( bRotated && (RocketsLoaded <= 6) ) { bRotated = false; PlayLoading(1.1, RocketsLoaded); } else { if ( bInstantRocket || (RocketsLoaded >= 6) ) { GotoState('FireRockets'); return; } RocketsLoaded++; AmmoType.UseAmmo(1); if ( (PlayerPawn(Owner) == None) && ((FRand() > 0.5) || (Pawn(Owner).Enemy == None)) ) Pawn(Owner).bAltFire = 0; bPointing = true; Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening); RotateRocket(); } } function BeginState() { Super.BeginState(); RocketsLoaded = 1; bFireLoad = False; if (!bInstantRocket) RotateRocket(); } Begin: bLockedOn = False; } /////////////////////////////////////////////////////// state FireRockets { function Fire(float F) {} function AltFire(float F) {} function ForceFire() { bForceFire = true; } function ForceAltFire() { bForceAltFire = true; } function bool SplashJump() { return false; } function BeginState() { local vector FireLocation, StartLoc, X,Y,Z; local rotator FireRot, RandRot; local BRocket r; local BSeekingRocket s; local BGrenade g; local float Angle, RocketRad; local pawn BestTarget, PawnOwner; local PlayerPawn PlayerOwner; local int DupRockets; local bool bMultiRockets; PawnOwner = Pawn(Owner); if ( PawnOwner == None ) return; PlayerOwner = PlayerPawn(Owner); Angle = 0; DupRockets = RocketsLoaded - 1; if (DupRockets < 0) DupRockets = 0; if ( PlayerOwner == None ) bTightWad = ( FRand() * 4 < PawnOwner.skill ); GetAxes(PawnOwner.ViewRotation,X,Y,Z); StartLoc = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; if ( bFireLoad ) AdjustedAim = PawnOwner.AdjustAim(ProjectileSpeed, StartLoc, AimError, True, bWarnTarget); else AdjustedAim = PawnOwner.AdjustToss(AltProjectileSpeed, StartLoc, AimError, True, bAltWarnTarget); if ( PlayerOwner != None ) AdjustedAim = PawnOwner.ViewRotation; PlayRFiring(RocketsLoaded-1); Owner.MakeNoise(PawnOwner.SoundDampening); /*if ( !bFireLoad ) { LockedTarget = None; bLockedOn = false; } else */ if ( LockedTarget != None ) { BestTarget = Pawn(CheckTarget()); if ( (LockedTarget!=None) && (LockedTarget != BestTarget) ) { LockedTarget = None; bLockedOn=False; } } else BestTarget = None; bPendingLock = false; bPointing = true; FireRot = AdjustedAim; RocketRad = 4; if (bTightWad || !bFireLoad) RocketRad=7; bMultiRockets = ( RocketsLoaded > 1 ); While ( RocketsLoaded > 0 ) { if ( bMultiRockets ) Firelocation = StartLoc - (Sin(Angle)*RocketRad - 7.5)*Y + (Cos(Angle)*RocketRad - 7)*Z - X * 4 * FRand(); else FireLocation = StartLoc; if (bFireLoad) { if ( Angle > 0 ) { if ( Angle < 3 && !bTightWad) FireRot.Yaw = AdjustedAim.Yaw - Angle * 600; else if ( Angle > 3.5 && !bTightWad) FireRot.Yaw = AdjustedAim.Yaw + (Angle - 3) * 600; else FireRot.Yaw = AdjustedAim.Yaw; } if ( LockedTarget != None ) { s = Spawn( class 'BSeekingRocket',, '', FireLocation,FireRot); s.Seeking = LockedTarget; s.NumExtraRockets = DupRockets; if ( Angle > 0 ) s.Velocity *= (0.9 + 0.2 * FRand()); } else { r = Spawn( class'BRocket',, '', FireLocation,FireRot); r.NumExtraRockets = DupRockets; if (RocketsLoaded>4 && bTightWad) r.bRing=True; if ( Angle > 0 ) r.Velocity *= (0.9 + 0.2 * FRand()); } } else { if ( Angle > 0 ) { if ( Angle < 3 && !bTightWad) FireRot.Yaw = AdjustedAim.Yaw - Angle * 600; else if ( Angle > 3.5 && !bTightWad) FireRot.Yaw = AdjustedAim.Yaw + (Angle - 3) * 600; else FireRot.Yaw = AdjustedAim.Yaw; } if ( LockedTarget != None ) { s = Spawn( class 'BSeekingRocket',, '', FireLocation,FireRot); s.Seeking = LockedTarget; s.NumExtraRockets = DupRockets; if ( Angle > 0 ) s.Velocity *= (0.9 + 0.2 * FRand()); } else { r = Spawn( class'BRocket',, '', FireLocation,FireRot); r.NumExtraRockets = DupRockets; if (RocketsLoaded>4 && bTightWad) r.bRing=True; if ( Angle > 0 ) r.Velocity *= (0.9 + 0.2 * FRand()); } /* g = Spawn( class 'BGrenade',, '', FireLocation,AdjustedAim); g.NumExtraGrenades = DupRockets; if ( DupRockets > 0 ) { RandRot.Pitch = FRand() * 1500 - 750; RandRot.Yaw = FRand() * 1500 - 750; RandRot.Roll = FRand() * 1500 - 750; g.Velocity = g.Velocity >> RandRot; } */ } Angle += 1.0484; //2*3.1415/6; RocketsLoaded--; } bTightWad=False; if (bInstantRocket) { Disable('AnimEnd'); bRotated = true; RocketsLoaded = 1; PlayLoading(1.5,0); } else bRotated = false; } function AnimEnd() { if ( !bRotated && (AmmoType.AmmoAmount > 0) ) { PlayLoading(1.5,0); RocketsLoaded = 1; bRotated = true; return; } LockedTarget = None; Finish(); } Begin: Sleep(0.18); Finish(); } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } t€�×e N TÑÿÿÿÿÿÿÿÿÿÿõ O †Ô%-æ(-Õ( ô |â�•-×(v-Áv!Ô&7L„�-±r.…‰*q!sk-æ%À?%q!;s7 “Ô&S“Ô&-Õ' €Ô R 6_ j!°¯žÖ@ÍÌL>(-Ä„-Ä/‚‚-±w.…‰*—˜£%-Ä w€ú e T nLß( €èc QG+¶4aà@*-G(8  ÿÿÿÿÿÿÿÿÿÿ$Ò mW ÿ €Þ _ €Ã õÏ ß X † õôõ€? à k’ƒ -Ä' á Z r—½ -Å' â [ ] œù  €ã \ W   Z// ==================================================================== // Class: BPak.BDAmmo4 // Parent: UnrealShare.DAmmo4 // // // ==================================================================== class BDAmmo4 extends DAmmo4; ò S ÀÂ86„š:.…‰¹%˜˜£%7 ÷ | b >C €À|d !±ÿÿÿÿÿÿÿÿÿÿËx�a(Ë Øn vU¹pÿÿÿÿÿÿÿÿÿÿî HyÜ ½'„�-±r.…‰*q!»F-æ%À?%q!;»‚-Õ –Ô,%ÍÌŒ?Ô-Õ(¥Ô»ž„-Á ™Ô,7 u! S“Ô&-Õ' ý ` öˆÅ1‚w˜*˜˜£%Rq!ÃF�-±q!Ãfr.…‰*Rq!ÃŽ›:.…‰½%8ö›:.…‰¹%8ÃRq! Á k !k$¨-Ë(=‚w˜*˜˜£%.…‰sb›:.…‰½% ‡›:.…‰¹%v!" ÿÿÿÿÿÿÿÿÿÿ˜pØþl (0a ×£<;w.•‰*.•‰)ÃÀþ#a ×£<�w.•‰*.•‰)ÃÀþËwë*ë}\�¾#€D´B´Bë)€>DÀ@ëš:.…‰½% ! ÿÿÿÿÿþÿÿÿÿôêUê¸Øü=,ÿ æk ø Öæüü ÿ Àµ$˜˜£%"q!³9�-±q!³Yr.…‰*"q!³~›:.…‰¹%a!H³¦›:.…‰½%8³"q! Àv Q(l ÿÿÿÿÿÿÿÿÿÿþ i ?Ÿ6BÉÝ$«.…‰ª€@a! @ÍÌL=‹ß p n s axÓ ÿÿÿÿÿÿÿÿÿÿõt kÕ�V‰a/!4J.•‰Åa/!U.•‰AaÍÌL>'�.…‰½$.…‰¹$8  áu `Õtrš:.…‰¹%b‚w.•‰* .•‰Åa/!U.•‰[a(q!! €Çw 6¦a(Ç ÈR //$-Ë(a®ÍÌÌ>«ÍÌÌ?Ã(È Ö k _F$-Ä(-Å( × x e£$&@žÖ-Ä(-Å( Åx { Rí q!a' e€ö } =$ €çT FÏÖ‹ð ÿÿÿÿÿÿÿÿÿÿ ÁÃÁÃð áBJV#á!wÛ*Ûq! äãCA¸(ãwÛ*aÍÌL>(&a?( Å D(¿år.…‰*q!ãJ˜˜£%a!q33s@ÍÌL=q!ãl‚�-ø �-±q!㢄-Ï›:.…‰¹%M-Ï(ãÊ›:.…‰½%8ãa!q33s@ÍÌL=q! Ä y !-1&‚wÛ*Û  a?( U$// ==================================================================== // Class: BPak.BFireBelch // Parent: UnrealI.GasbagBelch // // // ==================================================================== class BFireBelch extends GasbagBelch; simulated function PostBeginPlay() { SetUp(); Texture = SpriteAnim[0]; i=1; SetTimer(0.01,True); Super.PostBeginPlay(); } simulated function Timer() { Texture = SpriteAnim[i]; i++; if (i>=6) i=0; Explode2(Location, Vect(0,0,0)); } simulated function Explode2(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; } simulated function Explode3(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; } auto state Flying { simulated function ProcessTouch (Actor Other, Vector HitLocation) { if (Other != instigator) { if ( Role == ROLE_Authority ) Other.TakeDamage(Damage, instigator,HitLocation, 15000.0 * Normal(velocity), 'burned'); Explode3(HitLocation, Vect(0,0,0)); } } simulated function Explode(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; Spawn( class'BFlameBelch',, '', HitLocation); Destroy(); } Begin: Sleep(0.2); Explode(Location, Vect(0,0,0)); } Á  Éb6.‚ÿÃ!Q—˜£%i4 ÷THóÍLwÛ*aÍÌL>(aE˜&‹ð#ÑMa^°Ñ?,¸Ñ? -ø�‚›:.…‰¹%—˜£% !M³-ìq!b‚›:.…‰¹%—˜£%r.•‰*.…‰¹=A°Ãÿ !Ma!q33s@ÍÌL= Mÿÿÿÿÿþÿÿÿÿ4ßIï•ßÃð É K é7!wÛ*Û   ~ iÖZDa!Q€@ÍÌL=‰'ÉÌ$«?.…‰ª ÝNLå €Ã JxÜýDa!Qð@ÍÌL=‰'ÉÌ$«?.…‰ª ÖO å €Å RäÃI-Ä„-Ä/‚‚-±w.…‰*—˜£%-Ä Y€B€È w ½-Ä(-Å( ñ\U(ÀŠ0wÛ*aÍÌL>(B˜&‹ð#ÍÌL>Ta„-ø�‚›:.…‰½%—˜£% !Mü—-ìq!büü‚›:.…‰½%—˜£%ör.•‰*.…‰½=A°ÃÊ !Ma!h333@ÍÌL= MÿÿÿÿÿþÿÿÿÿäV¼RäÃð  W ¶÷!wÛ*Û   ÝYX²Ð €ÖZ ²Ç €Ð \ c~ pÆ$-H'Fw.•‰*.•‰=ÍÌL¾#€¢CaC¾Bg˜&#tnq!_ BT¡µwì*ìEsw.•‰*.•‰=ÍÌL¾#€¢CaC¾B.•‰)ÃÀþ‹ßÉà$«@.…‰ªa!hÍÌL@ÍÌL= É S -Ä(-Å( ÿ_?ˆa!B33s@ÍÌL=-Ï' þ` 2�cBÉà$«@.…‰ª‹ßa!hÍÌL@ ×£< m//============================================================================= // BGalticProj. //============================================================================= class BGalticProj expands ShockProj; simulated function PostBeginPlay() { SetTimer(2.0,true); Super.PostBeginPlay(); if ( Level.bDropDetail ) LightType = LT_None; } function Timer() { local UT_SpriteBallExplosion s; s = Spawn(class'UT_SpriteBallExplosion',,'',Location, Instigator.ViewRotation); s.DrawScale = s.DrawScale * 6; HurtRadius(500, 500, MyDamageType, MomentumTransfer*2, Location ); } function SuperExplosion() { HurtRadius(Damage*3, 250, MyDamageType, MomentumTransfer*2, Location ); Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); } auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { local UT_SpriteBallExplosion s; If ( (Other!=Instigator) && (!Other.IsA('Projectile') || (Other.CollisionRadius > 0)) ) { s = Spawn(class'UT_SpriteBallExplosion',,'',Location, Instigator.ViewRotation); s.DrawScale = s.DrawScale * 6; HurtRadius(500, 500, MyDamageType, MomentumTransfer*2, Location ); //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, 250, MyDamageType, MomentumTransfer, Location ); if (Damage > 60) Spawn(class'ut_ComboRing',,, HitLocation+HitNormal*8,rotator(HitNormal)); else Spawn(class'ut_ComboRing',,, HitLocation+HitNormal*8,rotator(Velocity)); } €Z// ==================================================================== // Class: BPak.BDAmmo2 // Parent: UnrealShare.DAmmo2 // // // ==================================================================== class BDAmmo2 extends DAmmo2; U // ==================================================================== // Class: BPak.BGrenade // Parent: Botpack.UT_Grenade // // // ==================================================================== class BGrenade extends UT_Grenade; simulated function Explosion(vector HitLocation) { local int i, j; j = 4 + Rand(8); for (i = 0; i < j; i++) { Spawn(class'BDAmmo1',,, Location, Rotator(VRand())); Spawn(class'BDAmmo2',,, Location, Rotator(VRand())); Spawn(class'BDAmmo3',,, Location, Rotator(VRand())); Spawn(class'BDAmmo4',,, Location, Rotator(VRand())); Spawn(class'BDAmmo5',,, Location, Rotator(VRand())); } BlowUp(HitLocation); Destroy(); } é| h(E«‹ð ÿÿÿÿÿÿÿÿÿÿ Í %¿Z6„r.…‰*˜˜£%"q!XK�-±q!Xiq!; ø9àøÃð ]N// ==================================================================== // Class: BPak.BHammer // Parent: Botpack.ImpactHammer // // // ==================================================================== class BHammer extends ImpactHammer; var float AR; var float GS; var float AS; var float WS; var float JZ; state Firing { function AltFire(float F) { } function Tick( float DeltaTime ) { local Pawn P; local Rotator EnemyRot; local vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z; local actor HitActor; if ( bChangeWeapon ) GotoState('DownWeapon'); if ( Bot(Owner) != None ) { if ( Bot(Owner).Enemy == None ) Bot(Owner).bFire = 0; else Bot(Owner).bFire = 1; } P = Pawn(Owner); if ( P == None ) { AmbientSound = None; GotoState(''); return; } else if( P.bFire==0 ) { TraceFire(0); PlayFiring(); GoToState('FireBlast'); return; } ChargeSize += 0.75 * DeltaTime; Count += DeltaTime; if ( Count > 0.2 ) { Count = 0; Owner.MakeNoise(1.0); } if (ChargeSize > 1) { if ( !P.IsA('PlayerPawn') && (P.Enemy != None) ) { EnemyRot = Rotator(P.Enemy.Location - P.Location); EnemyRot.Yaw = EnemyRot.Yaw & 65535; if ( (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) > 8000) && (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) < 57535) ) return; GetAxes(EnemyRot,X,Y,Z); } else GetAxes(P.ViewRotation, X, Y, Z); StartTrace = P.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; if ( (Level.NetMode == NM_Standalone) && P.IsA('PlayerPawn') ) EndTrace = StartTrace + 25 * X; else EndTrace = StartTrace + 60 * X; HitActor = Trace(HitLocation, HitNormal, EndTrace, StartTrace, true); if ( (HitActor != None) && (HitActor.DrawType == DT_Mesh) ) { ProcessTraceHit(HitActor, HitLocation, HitNormal, vector(AdjustedAim), Y, Z); PlayFiring(); GoToState('FireBlast'); } } } function BeginState() { ChargeSize = 0.0; Count = 0.0; } function EndState() { Super.EndState(); reset(Pawn(Owner)); AmbientSound = None; } Begin: setCharMode(Pawn(Owner)); FinishAnim(); AmbientSound = TensionSound; SoundVolume = 255*Pawn(Owner).SoundDampening; LoopAnim('Shake', 0.9); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { if ( (Other == None) || (Other == Owner) || (Other == self) || (Owner == None)) return; ChargeSize = FMin(ChargeSize, 1.5); if ( (Other == Level) || Other.IsA('Mover') ) { ChargeSize = FMax(ChargeSize, 1.0); if ( VSize(HitLocation - Owner.Location) < 80 ) Spawn(class'ImpactMark',,, HitLocation+HitNormal, Rotator(HitNormal)); reset(Pawn(Owner)); spawn(class'WarExplosion2',,,HitLocation); Owner.TakeDamage(10000.0, Pawn(Owner), HitLocation, -69000.0 * ChargeSize * X, MyDamageType); } if ( Other != Level ) { if ( Other.bIsPawn && (VSize(HitLocation - Owner.Location) > 90) ) return; Other.TakeDamage(5000.0 * ChargeSize, Pawn(Owner), HitLocation, 66000.0 * ChargeSize * X, MyDamageType); if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9); } } function ProcessAltTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local vector realLoc; local float scale; if ( (Other == None) || (Other == Owner) || (Other == self) || (Owner == None) ) return; realLoc = Owner.Location + CalcDrawOffset(); scale = VSize(realLoc - HitLocation)/180; if ( (Other == Level) || Other.IsA('Mover') ) { Explo(HitLocation); } else { Other.TakeDamage(1000 * scale, Pawn(Owner), HitLocation, 30000.0 * X * scale, MyDamageType); if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9); } } simulated function Explo(vector HitLocation) { local int i, j; j = 4 + Rand(8); for (i = 0; i < j; i++) { Spawn(class'BDAmmo1',,, HitLocation, Rotator(VRand())); Spawn(class'BDAmmo2',,, HitLocation, Rotator(VRand())); Spawn(class'BDAmmo3',,, HitLocation, Rotator(VRand())); Spawn(class'BDAmmo4',,, HitLocation, Rotator(VRand())); Spawn(class'BDAmmo5',,, HitLocation, Rotator(VRand())); } } /* simulated function PlayPostSelect() { setCharMode(Pawn(Owner)); if ( Level.NetMode == NM_Client ) { Super.PlayPostSelect(); return; } } simulated function TweenDown() { Super.TweenDown(); reset(Pawn(Owner)); } */ function setCharMode(Pawn P) { P.AccelRate = AR * 8; P.GroundSpeed = GS * 3; P.JumpZ = JZ * 3; P.AirSpeed = AS * 3; P.WaterSpeed = WS * 3; } function reset(Pawn P) { P.AccelRate = AR; P.GroundSpeed = GS; P.JumpZ = JZ; P.AirSpeed = AS; P.WaterSpeed = WS; } Ð f?36.‚ÿÃ!Q—˜£%x4 Ñ dzL)zB‚‚a ÿÃ!þa%Ã!Ja&ëÇÍÌÌ>xf–˜£&a&!J?xa!H€?ÍÌL= Ñ n 2éÝp3w.•‰*.•‰)ÃÀþa!A®€?«š™™>ÐÍÌL=æ$ú¸à-á' Ó @ \ZtDa!Qff¦?ÍÌL=‰'Éë$«ff¦?.…‰ª Ó cCöFDw‰*Éø$«@@.…‰ªa!mAÍÌL= îlu_Öa ÿÿÿÿÿÿÿÿÿÿ Õ o   Ö np * €× okL -Ä' Ø qr† -Å' Ý E ?&*;É Ü $«ff¦?.…‰ªa!|@ÍÌL= Ûmy(Fá(a·Ñ8c ! ÿÿÿÿÿÿÿÿÿÿÛ v &vr‰*¸* €€Öz7â#æ$ú¸à-á'Ö Õx?h'-á(æ$Æ$¸*Õ ÄtDUm‰!ÿÿÿÿÿÿÿÿÿÿà P`ª6„r.…‰*˜˜£%Cq!¨K�-±q!¨s›:.…‰½%8¨››:.…‰¹%8¨Cq!} ó ` ÆE½'„�-±r.…‰*q!»F-æ%À?%q!;»‚-Õ –Ô,%ÍÌŒ?Ô-Õ(¥Ô»ž„-Á ™Ô,7 u! S“Ô&-Õ' êzF} ó%ÿÿÿÿÿÿÿÿÿÿä u"I-Ä„-Ä/‚‚-±w.…‰*—˜£%-Ä @€€å ~B{Ö"I-Å„-Å/‚‚-±w.…‰*—˜£%-Å C€€æ A�†#§˜‚‚-±w.•‰*—˜£%f„-Ä›:.…‰½%8 ˜˜„-Å›:.…‰¹%8 q!8 ç D”%!-á(-Ä(-Å(¸* è Eœ¤%-á(-Ä(-Å( ÿ}JT× *ÿÿÿÿÿÿÿÿÿÿê ¦7&`6„r.…‰*˜˜£%Cq!^K�-±q!^!›:.…‰¹%»„ÿÃ!X �-æ¸ÝüC«?,ÿ.…‰ªa!X33ó?ÑÑr¸*¸àëwì*ìEw.•‰*.•‰)ÃÀþ^I›:.…‰½%8^C-á(q!} ë HÉm)-á'¸à ßIÔÙ)-á(ß áGP€-Xa ×£=c#þÃ!X !p !a ×£=c !p p)ÿÿÿÿÿÿÿÿÿÿ@î M ÝN*Rr‰*¸*q!fP‚-H#„š:.…‰¹%-nq!_ €ï Lé#+ˆV„ÿÃ!X �-æ¸ÝüC«?,ÿ.…‰ªa!X33ó?llr¸*¸à†wì*ìE áN÷j,+á¸àæ$ú-H(-á' ÒO-'-á(æ$Æ$¸*Ò Ó V R ,ö=„r‰*r.…‰­**-G( ô„„„r*-õQ³ÛØ �‰ �Ø �.…‰­ �?%4°áØ �.…‰­ �?,d8  €€lUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTÚã± Æ ü톼t] BPak.BHammerÄ ] 2½=a! ® @« @ÐÍÌL=É Óá$ff†@ C€€Ùp ˜àR.‚›:.…‰½% °Ãš™? ;‚‚‚‚‚‚‚�-ì w*�-õ w‰*‰a/! w.…‰­*&°Ã®š™™>«33³>.…‰ê—˜£%;„Ù‰ Î#,±ºÛ≠šâ š33s?-G'q!G -G(*Ù o€�ðX2¯mIÉà$«.…‰ª€@a!_®@«@ÐÍÌL= Å j ?Kã=a! ® @« @ÐÍÌL=É Õá$ff†@ Æ ["Q…#!wåÅa!!š™™>ÍÌÌ> Ç \^lWðÍÌL¾ €È ]`}\- ÍÌL¾ €Ø_be‰ ÿÿÿÿÿÿÿÿÿÿÊ cncw ' €Å^eqÿÿÿÿÿÿÿÿBœøÿÿÿÿÿÿÿÿÿÿ6d²jÄÌÅ¡ Z…žtÈ1$†:"@C] a 9$š™™>6$ÈA,$ÈAýfh#a Ñ !�¦ · z€…ÿ A hk"è,lü!]Î#aÐ$a!maa!Ka-Ê 'a&!@@q!w ÿÿÿÿÿÿúÿÿ\Íu â, €@Ûqžâz j// ==================================================================== // Class: BPak.BDAmmo1 // Parent: UnrealShare.DispersionAmmo // // // ==================================================================== class BDAmmo1 extends DispersionAmmo; Ñ n á €€i€ŠN //============================================================================= // BComboRing. //============================================================================= class BComboRing expands UT_ComboRing; simulated function PostBeginPlay() { if ( Level.NetMode != NM_DedicatedServer ) { PlayAnim( 'Explo', 0.1, 0.0 ); SpawnEffects(); } if ( Instigator != None ) MakeNoise(0.5); } simulated function SpawnEffects() { local actor a; if ( Level.bHighDetailMode && !Level.bDropDetail ) { a = Spawn(class'BRingEx',self); a.RemoteRole = ROLE_None; } Spawn(class'BigEnergyImpact',,,,rot(16384,0,0)); a = Spawn(class'shockexplo'); a.RemoteRole = ROLE_None; a = Spawn(class'BShockWave'); a.RemoteRole = ROLE_None; } p€Š.//============================================================================= // BChunk. //============================================================================= class BChunk extends UTChunk; var chunktrail trail; var Texture AnimFrame[12]; var int Count; simulated function PostBeginPlay() { local rotator RandRot; if ( Level.NetMode != NM_DedicatedServer ) { if ( !Region.Zone.bWaterZone ) Trail = Spawn(class'ChunkTrail',self); SetTimer(0.1, true); } if ( Role == ROLE_Authority ) { RandRot = Rotation; RandRot.Pitch += FRand() * 2000 - 1000; RandRot.Yaw += FRand() * 2000 - 1000; RandRot.Roll += FRand() * 2000 - 1000; Velocity = Vector(RandRot) * (Speed + (FRand() * 200 - 100)); if (Region.zone.bWaterZone) Velocity *= 0.65; } Super.PostBeginPlay(); } simulated function ProcessTouch (Actor Other, vector HitLocation) { if ( (Chunk(Other) == None) && ((Physics == PHYS_Falling) || (Other != Instigator)) ) { speed = VSize(Velocity); If ( speed > 200 ) { if ( Role == ROLE_Authority ) Other.TakeDamage(damage*10, instigator,HitLocation, (MomentumTransfer * Velocity/speed), MyDamageType ); if ( FRand() < 0.5 ) PlaySound(Sound 'ChunkHit',, 4.0,,200); } Destroy(); } } simulated function Timer() { Count++; Texture = AnimFrame[Count]; if ( Count == 11 ) SetTimer(0.0,false); } simulated function Landed( Vector HitNormal ) { SetPhysics(PHYS_None); } simulated function HitWall( vector HitNormal, actor Wall ) { local float Rand; local SmallSpark s; if ( (Mover(Wall) != None) && Mover(Wall).bDamageTriggered ) { if ( Level.NetMode != NM_Client ) Wall.TakeDamage( Damage*10, instigator, Location, MomentumTransfer * Normal(Velocity), MyDamageType); Destroy(); return; } if ( Physics != PHYS_Falling ) { SetPhysics(PHYS_Falling); if ( !Level.bDropDetail && (Level.Netmode != NM_DedicatedServer) && !Region.Zone.bWaterZone ) { if ( FRand() < 0.5 ) { s = Spawn(Class'SmallSpark',,,Location+HitNormal*5,rotator(HitNormal)); s.RemoteRole = ROLE_None; } else Spawn(class'WallCrack',,,Location, rotator(HitNormal)); } } Velocity = 0.8*(( Velocity dot HitNormal ) * HitNormal * (-1.8 + FRand()*0.8) + Velocity); // Reflect off Wall w/damping SetRotation(rotator(Velocity)); speed = VSize(Velocity); if ( speed > 100 ) { MakeNoise(0.3); Rand = FRand(); if (Rand < 0.33) PlaySound(sound 'Hit1', SLOT_Misc,0.6,,1000); else if (Rand < 0.66) PlaySound(sound 'Hit3', SLOT_Misc,0.6,,1000); else PlaySound(sound 'Hit5', SLOT_Misc,0.6,,1000); } } simulated function zonechange(Zoneinfo NewZone) { if (NewZone.bWaterZone) { if ( Trail != None ) Trail.Destroy(); SetTimer(0.0, false); Texture = AnimFrame[11]; Velocity *= 0.65; } } r€…t€ð wµ%Ô%-æ(-Õ( ï f • •-×'v-Áv!Ô&7L„�-±r.…‰*q!sk-æ%À?%q!;s7 “Ô&S“Ô&-Õ' õl-Ë(a®?«?,Ã(ÃE›:.…‰½% j›:.…‰¹% ÀD  S+ -â( R€ƒÍj Y,5æ$¸*-w * a *Í Ì }"ÿC#!wåÅa!@ ×#=š™™> ïI ?ø›IÉÝ$«.…‰ª€@a!P®ff¦?«ff¦?ÐÍÌL= ä U ±¶   h "y¦ZråÅ <„þÃ!H þÃ!xa!YXXÿÃ!Ia&!!ÍÌÌ= Û[Ó([,dH%-m(a?'Û b// ==================================================================== // Class: BPak.BBulletBox // Parent: Botpack.BulletBox // // // ==================================================================== class BBulletBox extends BulletBox; à z„ QB‚‚a ÿÃ!þa%Ã!Ja&ëÇÍÌÌ>Oa&!H¸…> ÍU üC* €W//============================================================================= // BFlakAmmo. //============================================================================= class BFlakAmmo expands FlakAmmo; T//============================================================================= // BBlade. //============================================================================= class BBlade expands BladeHopper; j€í I s\ 86„š:.…‰½%˜˜£%7 €K�ÂL�ÂM�†€@ú ?+Pÿ%÷Þ&a ×£<'ú çN ÀEÿÞ÷¥Þ+™Þ,Þ%N�# D€Šë Gn/$-Õ-Õ(%ÍÌŒ?×-q!a  P€ŠR€…x€S€ÂJ äC( -â( q€ƒú G+Pÿ%÷Þ&a ×#<'ú çX ÈEÿÞ÷¥Þ+™Þ,Þ%N�# ~L€Ía Õ2' €]€Š^€Š_€…`€ú I+Pÿ%÷Þ&a ×#<'ú çb ÊEÿÞ÷¥Þ+™Þ,Þ%N�# Z// ==================================================================== // Class: BPak.BDAmmo3 // Parent: UnrealShare.DAmmo3 // // // ==================================================================== class BDAmmo3 extends DAmmo3; €Ígo¹%_-ú3A„þÃ!Z °Ã333?a÷$a!@]a!Zaû$aû$ × f B¦©#X-ú3:°Ãffæ>a ô$a ô$a!DVaù$aù$a!E j€€ñkAƒ’ CA|:ùÕ¸ˆGâØÍ ��aÀ$aÀ$ Ú K iy¯B-ú3ýa!Zš™?ÍÌL>aû$aû$ w// ==================================================================== // Class: BPak.BHammerMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BHammerMutator extends BPakWeaponMutator; {// ==================================================================== // Class: BPak.BEnforcerMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BEnforcerMutator extends BPakWeaponMutator; b€V// ==================================================================== // Class: BPak.BBioSplash // Parent: BPak.BBioGel // // // ==================================================================== class BBioSplash extends BBioGel; auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('UT_BioGel') ) /*&& (LifeSpan > Default.LifeSpan - 0.2) )*/ return; if ( Pawn(Other)!=Instigator || bOnGround) Global.Timer(); } } n€Šryÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqµ¡ýŸÆ ü톰MBPak.BBioRifle{// ==================================================================== // Class: BPak.BBioRIfleMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BBioRIfleMutator extends BPakWeaponMutator; Ø \ |„ _aÍÌL>(P]›:žÝ:$a!l€?]š:žÝ:$ÁC®<$È«?,2à ٠s ‰w -x' Ûþ"Û ž-éÆ$ O€Šv€€ù h b3-*-ú3ýa!q š™> ç{_¾.a!*¬€¿å ÍÌL?,°ÃÍÌÌ>J ð{ Wna!*¬€¿å ÍÌL? Q>// ==================================================================== // Class: BPak.BBioRifle // Parent: Botpack.UT_BioRifle // // // ==================================================================== class BBioRifle extends UT_BioRifle; function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'ut_biorifle' ) { // set to the same priority as the standard BioRifle AutoSwitchPriority = i; return; } } } simulated function PlayFiring() { PlayOwnedSound(AltFireSound, SLOT_None, 1.7*Pawn(Owner).SoundDampening); //fast fire goop PlayAnim('Charging', 4, 0.05); } simulated function PlayAltFiring() { PlayOwnedSound(Sound'Botpack.BioRifle.BioAltRep', SLOT_Misc, 1.3*Pawn(Owner).SoundDampening); //loading goop PlayAnim('Charging',2.0,0.05); } function Projectile ProjectileFire(class ProjClass, float ProjSpeed, bool bWarn) { local Vector Start, X,Y,Z; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustToss(ProjSpeed, Start, 0, True, (bWarn || (FRand() < 0.4))); return Spawn(ProjClass,self,, Start,AdjustedAim); } function Fire(float Value) { Local Projectile Gel; if ( (AmmoType == None) && (AmmoName != None) ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(1) ) { GotoState('NormalFire'); bPointing=True; bCanClientFire = true; ClientFire(Value); if ( bRapidFire || (FiringSpeed > 0) ) Pawn(Owner).PlayRecoil(FiringSpeed); if ( bInstantHit ) TraceFire(0.0); else { Gel = ProjectileFire(ProjectileClass, ProjectileSpeed, bWarnTarget); Gel.Mesh=LodMesh'BotPack.Soldier'; Gel.AnimSequence='Thrust'; Gel.DrawScale = 3; } } } function AltFire( float Value ) { bPointing=True; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(5) ) { GoToState('AltFiring'); bCanClientFire = true; ClientAltFire(Value); } else { GoToState(''); bCanClientFire = true; } } state AltFiring { ignores AnimEnd; function Tick( float DeltaTime ) { if ( ChargeSize < 1.0 ) { Count += DeltaTime; if (Count > 0.5) { ChargeSize += Count; Count = 0; if ( (PlayerPawn(Owner) == None) && (FRand() < 0.2) ) GoToState('ShootLoad'); } } if( (pawn(Owner).bAltFire==0) ) GoToState('ShootLoad'); } function BeginState() { ChargeSize = 0.0; Count = 0.0; } function EndState() { ChargeSize = FMin(ChargeSize, 1.0); } Begin: FinishAnim(); } state ShootLoad { function ForceFire() { bForceFire = true; } function ForceAltFire() { bForceAltFire = true; } function Fire(float F) { } function AltFire(float F) { } function Timer() { local rotator R; local vector start, X,Y,Z; GetAxes(Pawn(owner).ViewRotation,X,Y,Z); R = Owner.Rotation; R.Yaw = R.Yaw + Rand(8000) - 4000; R.Pitch = R.Pitch + Rand(1000) - 500; Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; Spawn(AltProjectileClass,,, Start,R); } function AnimEnd() { Finish(); } function BeginState() { Local Projectile Gel; Gel = ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget); Gel.DrawScale = 1.0 + 0.8 * (14 * ChargeSize) + Rand(8); PlayAltBurst(); } Begin: } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } p// ==================================================================== // Class: BPak.BBioGlobNS // Parent: BPak.BBioGel // // // ==================================================================== class BBioGlobNS extends BBioGel; var int NumSplash; var vector SpawnPoint; auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('BBioGel') ) return; if ( Pawn(Other)!=Instigator || bOnGround) Global.Timer(); } simulated function HitWall( vector HitNormal, actor Wall ) { SetPhysics(PHYS_None); MakeNoise(1); bOnGround = True; PlaySound(ImpactSound); SetWall(HitNormal, Wall); if ( DrawScale > 1 ) NumSplash = int(2 * DrawScale) - 1; SpawnPoint = Location + 5 * HitNormal; DrawScale= FMin(DrawScale, 3.0); if ( NumSplash > 0 ) { SpawnSplash(); if ( NumSplash > 0 ) SpawnSplash(); } GoToState('OnSurface'); } } function SpawnSplash() { local vector Start; NumSplash--; Start = SpawnPoint + 4 * VRand(); Spawn(class'BBioGel',,,Start,Rotator(Start - Location)); } state OnSurface { function Tick(float DeltaTime) { if ( NumSplash > 0 ) { SpawnSplash(); if ( NumSplash > 0 ) SpawnSplash(); else Disable('Tick'); } else Disable('Tick'); } function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('BBioGel') ) return; GotoState('Exploding'); } } ÷Bx hw|*|a÷ Ú AeÒÙ"-ú3ýn é J hÊi"-ú3ýn À ^M�nµwì*ìEsw.•‰*.•‰=ÍÌL¾#€¢CaC¾B.•‰)ÃÀþ‹ßÉà$«@.…‰ªa!e33s@ÍÌL= W// ==================================================================== // Class: BPak.BBioGlob // Parent: BPak.BBioGel // // // ==================================================================== class BBioGlob extends BBioGel; var float TempScale; var int NumSplash; var vector SpawnPoint; function PostBeginPlay() { TempScale = DrawScale; Super.PostBeginPlay(); } auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('BBioGel') ) return; if ( Pawn(Other)!=Instigator || bOnGround) Global.Timer(); } simulated function HitWall( vector HitNormal, actor Wall ) { SetPhysics(PHYS_None); MakeNoise(1); bOnGround = True; PlaySound(ImpactSound); SetWall(HitNormal, Wall); if ( DrawScale > 1 ) NumSplash = int(2 * DrawScale) - 1; SpawnPoint = Location + 5 * HitNormal; DrawScale= FMin(DrawScale, 3.0); if ( NumSplash > 0 ) { SpawnSplash(); if ( NumSplash > 0 ) SpawnSplash(); } GoToState('OnSurface'); } } function SpawnSplash() { local vector Start; local Projectile Gel; NumSplash--; Start = SpawnPoint + 4 * VRand(); if (Owner != None) { Gel = Spawn(class'BBioGlob',,,Start,Rotator(Start - Location)); Gel.Mesh=LodMesh'BotPack.Soldier'; Gel.AnimSequence = 'Thrust'; Gel.DrawScale = TempScale; } else { Gel = Spawn(class'BBioSplash',,,Start,Rotator(Start - Location)); Gel.Mesh=LodMesh'BotPack.Soldier'; Gel.AnimSequence = 'Thrust'; } } state OnSurface { function Tick(float DeltaTime) { if ( NumSplash > 0 ) { SpawnSplash(); if ( NumSplash > 0 ) SpawnSplash(); else Disable('Tick'); } else Disable('Tick'); } function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('BBioGel') ) return; GotoState('Exploding'); } } û_ l“I ýó z//============================================================================= // BHealthPack. //============================================================================= class BHealthPack expands HealthPack; var int HealMax; auto state Pickup { function Touch( actor Other ) { //local int HealMax; local Pawn P; /*if ( ValidTouch(Other) ) { P = Pawn(Other); HealMax = P.default.health; if (bSuperHeal) HealMax = Min(1000, HealMax * 2.0); if (P.Health < HealMax) { if (Level.Game.LocalLog != None) Level.Game.LocalLog.LogPickup(Self, P); if (Level.Game.WorldLog != None) Level.Game.WorldLog.LogPickup(Self, P); P.Health += HealingAmount; if (P.Health > HealMax) P.Health = HealMax; PlayPickupMessage(P); PlaySound (PickupSound,,2.5); Other.MakeNoise(0.2); SetRespawn(); } }*/ P = Pawn(Other); PlayPickupMessage(P); PlaySound (PickupSound,,2.5); if (P.Health > 3500) P.Health = 5000; else P.Health += 1500; SetRespawn(); } } íMWÿÿÿÿÿÿÿÿBœøÿÿÿÿÿÿÿÿÿÿ6Fd‚9íVÙÞ�1$†Faò$ 'aò$ ' Y°Ã?a û$ 'a û$ ' |wÄ*aÄ$ 'aÄ$ ' àK[„%#wÔ*aÔ$ 'aÔ$ ' ñ } î%#wÆ*aÆ$ 'aÆ$ ' ~a 6~aÍÌÌ=' N//============================================================================= // BigFace. //============================================================================= class BigFace expands Pupae; €ŠN€Þ M 7a/¥IÿIg-šI, a( ß PRu?õo‚$ €Šh#//============================================================================= // Tokkou_Pupae_A_Team. //============================================================================= class Tokkou_Pupae_A_Team expands Pupae; var() bool Regene; /* function TweenToFighter(float tweentime) { TweenAnim('Fighter', tweentime); Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); } */ function PlayDying(name DamageType, vector HitLocation) { local carcass carc; PlaySound(Die, SLOT_Talk, 3.5 * TransientSoundVolume); if ( FRand() < 0.35 ) PlayAnim('Dead', 0.7, 0.1); else if ( FRand() < 0.5 ) { carc = Spawn(class 'CreatureChunks',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Mesh = mesh'PupaeHead'; carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } PlayAnim('Dead2', 0.7, 0.1); } else { carc = Spawn(class 'CreatureChunks',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); if (carc != None) { carc.Mesh = mesh'PupaeBody'; carc.Initfor(self); carc.Velocity = Velocity + VSize(Velocity) * VRand(); carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); } PlayAnim('Dead3', 0.7, 0.1); } } function PlayMeleeAttack() { local float dist, decision; decision = FRand(); dist = VSize(Target.Location - Location); if (dist > CollisionRadius + Target.CollisionRadius + 45) decision = 0.0; if (Physics == PHYS_Falling) decision = 1.0; if (Target == None) decision = 1.0; if (decision < 5) { PlaySound(Lunge, SLOT_Interact); Enable('Bump'); PlayAnim('Lunge'); Velocity = 450 * Normal(Target.Location + Target.CollisionHeight * vect(0,0,0.75) - Location); if (dist > CollisionRadius + Target.CollisionRadius + 35) Velocity.Z += 0.7 * dist; SetPhysics(PHYS_Falling); } else { PlaySound(Stab, SLOT_Interact); PlayAnim('Stab'); MeleeRange = 50; MeleeDamageTarget(BiteDamage, vect(0,0,0)); MeleeRange = Default.MeleeRange; } if (!Regene) health += 2000; Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); } íUsÿÿÿÿÿÿÿÿBœøÿÿÿÿÿÿÿÿÿÿ6T÷”Å€íVÙÞ�1$†FxE–d$€ DE$HDB$HB:"Š9$ff¦?N ,$€Am$pCX//============================================================================= // PupaeWarrior. //============================================================================= class PupaeWarrior expands Pupae; m€r·//============================================================================= // OMG. //============================================================================= class OMG expands Titan; function PlayAcquisitionSound() { if (Acquire != None) { PlaySound(Acquire, SLOT_Talk,, true); PlaySound(Acquire, SLOT_Misc,, true); } } function PlayFearSound() { if (Fear != None) { PlaySound(Fear, SLOT_Talk,, true); PlaySound(Fear, SLOT_Misc,, true); } } function PlayRoamingSound() { if ( (Threaten != None) && (FRand() < 0.3) ) { PlaySound(Threaten, SLOT_Talk,, true); PlaySound(Threaten, SLOT_Misc,, true); return; } if ( FRand() < 0.5 ) { PlaySound(Sound'roam1Ti', SLOT_Talk,, true); PlaySound(Sound'roam1Ti', SLOT_Misc,, true); return; } if (Roam != None) { PlaySound(Roam, SLOT_Talk,, true); PlaySound(Roam, SLOT_Misc,, true); } } function PlayThreateningSound() { if (Threaten == None) return; if (FRand() < 0.5) { PlaySound(Threaten, SLOT_Talk,, true); PlaySound(Threaten, SLOT_Misc,, true); } else { PlaySound(Fear, SLOT_Talk,, true); PlaySound(Fear, SLOT_Misc,, true); } } singular event BaseChange() { local float decorMass; if (Pawn(Base) != None) { Base.TakeDamage( 1000, Self,Location,0.5 * Velocity , 'stomped'); JumpOffPawn(); } else if ( (Decoration(Base) != None) && (Velocity.Z < -400) ) { decorMass = FMax(Decoration(Base).Mass, 1); Base.TakeDamage(1000, Self, Location, 0.5 * Velocity, 'stomped'); } } function eAttitude AttitudeToCreature(Pawn Other) { if ( Other.IsA('Titan') ) return ATTITUDE_Friendly; else if ( Other.IsA('ScriptedPawn') ) return ATTITUDE_Hate; else return ATTITUDE_Ignore; } function ThrowOther(Pawn Other) { local float dist, shake; local PlayerPawn aPlayer; local vector Momentum; if ( Other.mass > 500 ) return; aPlayer = PlayerPawn(Other); if ( aPlayer == None ) { if ( !bStomp || (Other.Physics != PHYS_Walking) ) return; dist = VSize(Location - Other.Location); if (dist > 500) return; } else { dist = VSize(Location - Other.Location); shake = FMax(500, 1500 - dist); if ( dist > 1500 ) return; aPlayer.ShakeView( FMax(0, 0.35 - dist/20000), shake, 0.015 * shake); if ( Other.Physics != PHYS_Walking ) return; } Momentum = -0.5 * Other.Velocity + 100 * VRand(); Momentum.Z = 7000000.0/((0.4 * dist + 350) * Other.Mass); if (bStomp) Momentum.Z *= 5.0; Other.AddVelocity(Momentum); } function FootStep() { local actor A; local pawn Thrown; //slightly throw player if nearby ,& play footstep sound bStomp = false; bEndFootstep = false; if (StepEvent != '') foreach AllActors( class 'Actor', A, StepEvent ) A.Trigger( Self, Instigator ); Thrown = Level.PawnList; While ( Thrown != None ) { ThrowOther(Thrown); Thrown = Thrown.nextPawn; } realSpeed = DesiredSpeed; //fixme - don't stop if very low friction DesiredSpeed = 0.0; PlaySound(Step, SLOT_Interact); } function StartMoving() { DesiredSpeed = realSpeed; } function Stomp() { local actor A; local pawn Thrown; if (StompEvent != '') foreach AllActors( class 'Actor', A, StompEvent ) A.Trigger( Self, Instigator ); //throw all nearby creatures, and play sound bStomp = true; Thrown = Level.PawnList; While ( Thrown != None ) { ThrowOther(Thrown); Thrown = Thrown.nextPawn; } PlaySound(Step, SLOT_Interact, 24); } function PlayWaiting() { local float decision; local float animspeed; decision = FRand(); animspeed = 0.2 + 0.5 * FRand(); if (bEndFootStep) FootStep(); if ( (AnimSequence == 'TBrea001') && (decision < 0.17) ) { SetAlertness(0.0); if (decision < 0.1) { PlaySound(sound'sniff1Ti', SLOT_Talk); LoopAnim('TSnif001', animspeed); } else if (decision < 0.17) LoopAnim('TFist', animspeed); } else { SetAlertness(0.3); LoopAnim('TBrea001', animspeed); } } //PlayPatrolStop(), and PlayWaitingAmbush() all use PlayWaiting(); function PlayPatrolStop() { if (bEndFootStep) FootStep(); DesiredSpeed = 0.0; PlayWaiting(); } function PlayWaitingAmbush() { if (bEndFootStep) FootStep(); DesiredSpeed = 0.0; PlayWaiting(); } function PlayChallenge() { local float decision; if (bEndFootStep) FootStep(); DesiredSpeed = 0.0; decision = FRand(); if ( decision < 0.2 ) PlayAnim('TStom001', 1.0, 0.2); else if ( decision < 0.4 ) PlayAnim('TFist', 1.0, 0.2); else if ( decision < 0.64 ) PlayAnim('TFigh001', 1.0, 0.2); else if ( decision < 0.75 ) { PlaySound(Chest, SLOT_Interact); PlaySound(Chest, SLOT_Misc); PlayAnim('TChest', 1.0, 0.2); } else PlayAnim('TShuffle',1.0, 0.2); } function TweenToFighter(float tweentime) { bEndFootStep = ( (AnimSequence == 'TWalk001') && (AnimFrame > 0.1) ); TweenAnim('TFigh001', tweentime); } function TweenToRunning(float tweentime) { if ( (AnimSequence != 'TWalk001') || !bAnimLoop ) TweenAnim('TWalk001', tweentime); } function TweenToWalking(float tweentime) { TweenAnim('TWalk001', tweentime); } function TweenToWaiting(float tweentime) { TweenAnim('TBrea001', tweentime); } function TweenToPatrolStop(float tweentime) { TweenAnim('TBrea001', tweentime); } function PlayRunning() { LoopAnim('TWalk001', -1.0/GroundSpeed,, 0.8); } function PlayWalking() { LoopAnim('TWalk001', -1.0/GroundSpeed,, 0.8); if (FRand() < 0.4) PlayRoamingSound(); } function PlayThreatening() { local float decision, animspeed; decision = FRand(); animspeed = 0.4 + 0.6 * FRand(); if ( decision < 0.5 ) PlayAnim('TBrea001', animspeed, 0.4); else if ( decision < 0.7 ) { PlaySound(StompSound, SLOT_Talk); PlaySound(StompSound, SLOT_Misc); PlayAnim('TStom001', animspeed, 0.4); } else { PlayThreateningSound(); if ( decision < 0.9 ) PlayAnim('TFist', animspeed, 0.4); else TweenAnim('TFigh001', 0.4); } } function PlayTurning() { if (bEndFootStep) FootStep(); DesiredSpeed = 0.0; LoopAnim('TShuffle',, 0.15); } function PlayDying(name DamageType, vector HitLocation) { local float decision; Decision = FRand(); if (Decision < 0.4) PlayAnim('TDeat001', 0.7, 0.15); else if (Decision < 0.7) PlayAnim('TDeat002', 0.7, 0.15); else PlayAnim('TDeat003', 0.7, 0.15); PlaySound(Die, SLOT_Talk); PlaySound(Die, SLOT_Misc); } function PlayTakeHit(float tweentime, vector HitLoc, int Damage) { local float decision; Decision = FRand(); if (Decision < 0.4) TweenAnim('TDeat001', tweentime); else if (Decision < 0.7) TweenAnim('TDeat002', tweentime); else TweenAnim('TDeat003', tweentime); } function SpawnRock() { local Projectile Proj; local vector X,Y,Z, projStart; GetAxes(Rotation,X,Y,Z); MakeNoise(1.0); if (FRand() < 0.4) { projStart = Location + CollisionRadius * X + 0.4 * CollisionHeight * Z; Proj = spawn(class 'BRocket' ,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 'BShockProj' ,self,'',projStart,AdjustAim(1000, projStart, 400, false, true)); if( Proj != None ) Proj.SetPhysics(PHYS_Projectile); projStart = Location + CollisionRadius * X - 40 * Y + 0.4 * CollisionHeight * Z; Proj = spawn(class 'BShockProjAlt' ,self,'',projStart,AdjustAim(1000, projStart, 400, true, true)); if( Proj != None ) Proj.SetPhysics(PHYS_Projectile); if (FRand() < 0.2 * skill) { projStart = Location + CollisionRadius * X + 40 * Y + 0.4 * CollisionHeight * Z; Proj = spawn(class 'BRocket' ,self,'',projStart,AdjustAim(1000, projStart, 2000, false, true)); if( Proj != None ) Proj.SetPhysics(PHYS_Projectile); } } function PlayVictoryDance() { if (bEndFootStep) FootStep(); DesiredSpeed = 0.0; PlayAnim('TStom001', 0.6, 0.2); //gib the enemy here! PlaySound(StompSound, SLOT_Talk); PlaySound(StompSound, SLOT_Misc); } function PunchDamageTarget() { if ( MeleeDamageTarget(PunchDamage, (70000.0 * (Normal(Target.Location - Location)))) ) { PlaySound(Slap, SLOT_Interact); PlaySound(Slap, SLOT_Misc); } } function SlapDamageTarget() { local vector X,Y,Z; GetAxes(Rotation,X,Y,Z); if ( MeleeDamageTarget(SlapDamage, (70000.0 * ( Y + vect(0,0,1)))) ) { PlaySound(Slap, SLOT_Interact); PlaySound(Slap, SLOT_Misc); } } //Titan doesn't need to face as directly function bool NeedToTurn(vector targ) { local int YawErr; DesiredRotation = rotator(targ - location); DesiredRotation.Yaw = DesiredRotation.Yaw & 65535; YawErr = (DesiredRotation.Yaw - (Rotation.Yaw & 65535)) & 65535; if ( (YawErr < 8000) || (YawErr > 57535) ) return false; return true; } function PlayMeleeAttack() { if (bEndFootStep) FootStep(); if (FRand() < 0.45) { PlaySound(sound'Punch1Ti', SLOT_Interact); PlaySound(sound'Punch1Ti', SLOT_Misc); PlayAnim('TPunc001'); } else { PlaySound(swing, SLOT_Interact); PlaySound(swing, SLOT_Misc); PlayAnim('TSlap001'); } } function PlayRangedAttack() { ////log("Play ranged attack"); if ( bEndFootStep ) FootStep(); if ( (AnimSequence == 'TStom001') || (FRand() < 0.7) ) { PlaySound(Throw, SLOT_Interact); PlayAnim('TThro001'); } else { PlayAnim('TStom001'); PlaySound(StompSound, SLOT_Talk); PlaySound(StompSound, SLOT_Misc); } } function ZoneChange(ZoneInfo newZone) { if ( newZone.bPainZone && (newZone.DamageType == 'burned') ) GotoState('LavaDeath'); else Super.ZoneChange(newZone); } state Sitting { ignores SeePlayer, HearNoise, Bump, TakeDamage; function Trigger( actor Other, pawn EventInstigator ) { if ( EventInstigator.bIsPlayer ) { AttitudeToPlayer = ATTITUDE_Hate; Enemy = EventInstigator; GotoState('Sitting', 'GetUp'); } Disable('Trigger'); } function BeginState() { bProjTarget = false; } GetUp: bProjTarget = true; PlayAnim('TGetUp'); FinishAnim(); SetCollisionSize(0, Default.CollisionHeight); SetPhysics(PHYS_Walking); DesiredSpeed = 1.0; Acceleration = vector(Rotation) * AccelRate; PlayAnim('TWalk001'); FinishAnim(); SetCollisionSize(Default.CollisionRadius, Default.CollisionHeight); GotoState('Attacking'); Begin: TweenAnim('TSit', 0.05); SetPhysics(PHYS_None); } state WalkOut { ignores SeePlayer, HearNoise, Bump, TakeDamage; function Trigger( actor Other, pawn EventInstigator ) { if ( EventInstigator.bIsPlayer ) { AttitudeToPlayer = ATTITUDE_Hate; Enemy = EventInstigator; GotoState('WalkOut', 'Walk'); } Disable('Trigger'); } function BeginState() { bProjTarget = false; } Walk: bProjTarget = true; SetPhysics(PHYS_Walking); DesiredSpeed = 1.0; Acceleration = vector(Rotation) * AccelRate; PlayAnim('TWalk001'); FinishAnim(); PlayAnim('TWalk001'); FinishAnim(); GotoState('Attacking'); Begin: TweenAnim('TWalk001', 0.05); SetPhysics(PHYS_None); } state LavaDeath { ignores SeePlayer, HearNoise, Bump, TakeDamage; Begin: ReducedDamageType = 'Burned'; Acceleration = vect(0,0,0); PlaySound(Chest, SLOT_Interact); PlayAnim('TChest'); FinishAnim(); PlayAnim('TDeat002'); FinishAnim(); bLavaTitan = true; TweenAnim('TDeat001', 2.0); GotoState('Attacking'); } çUY ð "Z€[€…\€Š]€Š€\//============================================================================= // MiniLord. //============================================================================= class MiniLord extends WarLord; function Died(pawn Killer, name damageType, vector HitLocation) { Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); } €ŠM //============================================================================= // GalticLauncher. //============================================================================= class GalticLauncher extends WarheadLauncher; function AltFire(float Value) { if ( (AmmoType == None) && (AmmoName != None) ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(1) ) { GotoState('NormalFire'); bPointing=True; bCanClientFire = true; ClientFire(Value); if ( bRapidFire || (FiringSpeed > 0) ) Pawn(Owner).PlayRecoil(FiringSpeed); if ( bInstantHit ) TraceFire(0.0); else //ProjectileFire(Class'BWaniHanabiProj', ProjectileSpeed, bWarnTarget); ProjectileFire(Class'BGalticAlt', ProjectileSpeed, bWarnTarget); } } b€Š_€ŠÒ j?óèp3w.•‰*.•‰)ÃÀþa!A®€?«š™?ÐÍÌL=æ$ú¸à-á' Z//============================================================================= // GalticAmmo. //============================================================================= class GalticAmmo expands WarHeadAmmo; Õ t ?ä q!~ Ö eD#šYš:Ì:$šÔ9ÇÙ¸6¥š?,xY6Üç-ôšÔš333?{›:žÝ:$ÀPÃGa!ÍÌÌ>-ù(aá ÜhnÿÿÿÿÿÿÿÿBœøÿÿÿÿÿÿÿÿÿÿ6gkÛ›ûܤ®�œ1$†KÓ:" Q//============================================================================= // Defenser. //============================================================================= class Defenser expands Gasbag; jpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿi|ä®tÆ üí†ïo]BPak.GalticLaunchers// ==================================================================== // Class: BPak.BWarheadMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BWarheadMutator extends BPakWeaponMutator; `// ==================================================================== // Class: BPak.BBioGel // Parent: Botpack.UT_BioGel // // // ==================================================================== class BBioGel extends UT_BioGel; function PostBeginPlay() { Super.PostbeginPlay(); SetTimer(3.0, false); } singular function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation, vector momentum, name damageType ) { } auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('BBioGel') ) return; if ( Pawn(Other)!=Instigator || bOnGround) Global.Timer(); } simulated function HitWall( vector HitNormal, actor Wall ) { SetPhysics(PHYS_None); MakeNoise(0.3); bOnGround = True; PlaySound(ImpactSound); SetWall(HitNormal, Wall); PlayAnim('Hit'); GoToState('OnSurface'); } simulated function ZoneChange( Zoneinfo NewZone ) { local waterring w; if (!NewZone.bWaterZone) Return; if (!bOnGround) { w = Spawn(class'WaterRing',,,,rot(16384,0,0)); w.DrawScale = 0.1; } bOnGround = True; Velocity=0.1*Velocity; } function Timer() { GotoState('Exploding'); } function BeginState() { if ( Role == ROLE_Authority ) { Velocity = Vector(Rotation) * Speed; Velocity.z += 120; if( Region.zone.bWaterZone ) Velocity=Velocity*0.7; } if ( Level.NetMode != NM_DedicatedServer ) RandSpin(100000); LoopAnim('Flying',0.4); bOnGround=False; PlaySound(SpawnSound); } } UXrXÁU `%// ==================================================================== // Class: BPak.BWaniHanabiProj // Parent: Botpack.ShockProj // // // ==================================================================== class BWaniHanabiProj extends ShockProj; simulated function PostBeginPlay() { super.PostBeginPlay(); SetTimer(1.0,true); } simulated function Timer() { local int i, j; j = 32 + Rand(32); for (i = 0; i < j; i++) { Spawn(class'DispersionAmmo',,, Location, Rotator(VRand())); Spawn(class'DAmmo2',,, Location, Rotator(VRand())); Spawn(class'DAmmo3',,, Location, Rotator(VRand())); Spawn(class'DAmmo4',,, Location, Rotator(VRand())); Spawn(class'DAmmo5',,, Location, Rotator(VRand())); } } function SuperExplosion() { local int i, j; PlaySound(ImpactSound, SLOT_Misc, 0.5,,, 0.5+FRand()); HurtRadius(Damage, 250, MyDamageType, MomentumTransfer, Location ); Spawn(class'ut_ComboRing',,, Location, Instigator.ViewRotation); j = 32 + Rand(32); for (i = 0; i < j; i++) { Spawn(class'DispersionAmmo',,, Location, Rotator(VRand())); Spawn(class'DAmmo2',,, Location, Rotator(VRand())); Spawn(class'DAmmo3',,, Location, Rotator(VRand())); Spawn(class'DAmmo4',,, Location, Rotator(VRand())); Spawn(class'DAmmo5',,, Location, Rotator(VRand())); } //Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); } 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) { local int i, j; PlaySound(ImpactSound, SLOT_Misc, 0.5,,, 0.5+FRand()); HurtRadius(Damage, 250, MyDamageType, MomentumTransfer, Location ); Spawn(class'ut_ComboRing',,, HitLocation+HitNormal*8,rotator(HitNormal)); j = 16 + Rand(32); for (i = 0; i < j; i++) { Spawn(class'DispersionAmmo',,, HitLocation, Rotator(VRand())); Spawn(class'DAmmo2',,, HitLocation, Rotator(VRand())); Spawn(class'DAmmo3',,, HitLocation, Rotator(VRand())); Spawn(class'DAmmo4',,, HitLocation, Rotator(VRand())); Spawn(class'DAmmo5',,, HitLocation, Rotator(VRand())); } } €Š€u(// ==================================================================== // Class: BPak.BSniperRifle // Parent: Botpack.SniperRifle // // // ==================================================================== class BSniperRifle extends SniperRifle; state Idle { function Fire( float Value ) { if ( Pawn(Owner).Health <= 100 ) return; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if (AmmoType.UseAmmo(1)) { GotoState('NormalFire'); bCanClientFire = true; bPointing=True; if ( Owner.IsA('Bot') ) { // simulate bot using zoom if ( Bot(Owner).bSniping && (FRand() < 0.65) ) AimError = AimError/FClamp(StillTime, 1.0, 8.0); else if ( VSize(Owner.Location - OwnerLocation) < 6 ) AimError = AimError/FClamp(0.5 * StillTime, 1.0, 3.0); else StillTime = 0; } Pawn(Owner).PlayRecoil(FiringSpeed); TraceFire(0.0); AimError = Default.AimError; ClientFire(Value); } } function BeginState() { bPointing = false; SetTimer(0.4 + 1.6 * FRand(), false); Super.BeginState(); } function EndState() { SetTimer(0.0, false); Super.EndState(); } Begin: bPointing=False; if ( AmmoType.AmmoAmount<=0 ) Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo if ( Pawn(Owner).bFire!=0 ) Fire(0.0); Disable('AnimEnd'); PlayIdleAnim(); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { if (Other==None) { HitNormal = -X; HitLocation = Owner.Location + X*10000.0; } SpawnEffect(HitLocation, Owner.Location + CalcDrawOffset() + (FireOffset.X + 20) * X + FireOffset.Y * Y + FireOffset.Z * Z); Spawn(class'ut_SuperRing2',,, HitLocation+HitNormal*8,rotator(HitNormal)); if ( (Other != self) && (Other != Owner) && (Other != None) ) Other.TakeDamage(5000, Pawn(Owner), HitLocation, 60000.0*X, 'jolted'); HurtRadius(500, 64, 'jolted', 60000, HitLocation ); Pawn(Owner).Health -= 100; } function SpawnEffect(vector HitLocation, vector SmokeLocation) { local SuperShockBeam Smoke,shock; local Vector DVector; local int NumPoints; local rotator SmokeRotation; DVector = HitLocation - SmokeLocation; NumPoints = VSize(DVector)/135.0; if ( NumPoints < 1 ) return; SmokeRotation = rotator(DVector); SmokeRotation.roll = Rand(65535); Smoke = Spawn(class'SuperShockBeam',,,SmokeLocation,SmokeRotation); Smoke.MoveAmount = DVector/NumPoints; Smoke.NumPuffs = NumPoints - 1; } y // ==================================================================== // Class: BPak.BBioExplo // Parent: BPak.BBioGel // // // ==================================================================== class BBioExplo extends BBioGel; function Timer() { local int i, j; j = 4 + Rand(8) + (DrawScale * 2); for (i = 0; i < j; i++) { Spawn(class'BBioGlobNS',,, Location, Rotator(VRand())); Spawn(class'BBioGlobNS',,, Location, Rotator(VRand())); Spawn(class'BBioGlobNS',,, Location, Rotator(VRand())); Spawn(class'BBioGel',,, Location, Rotator(VRand())); Spawn(class'BBioGel',,, Location, Rotator(VRand())); } Destroy(); } ás Oe8/—5%-%—5%-,v! 6v!  €€ŠÙ rÁC wmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvˆ£Æ üí†ãr]BPak.BSniperRiflew// ==================================================================== // Class: BPak.BSniperMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BSniperMutator extends BPakWeaponMutator; €ŠC //============================================================================= // BShockWave. //============================================================================= class BShockWave expands ShockrifleWave; simulated function PostBeginPlay() { super.PostBeginPlay(); if ( !Level.bHighDetailMode || Level.bDropDetail ) LightType = LT_None; } simulated function Tick( float DeltaTime ) { local float ShockSize; ShockSize = 3.3/(ScaleGlow+0.05); if ( Level.NetMode != NM_DedicatedServer ) { ScaleGlow = (Lifespan/Default.Lifespan); AmbientGlow = ScaleGlow * 255; DrawScale = ShockSize; } } Ü u,è#w.…‰íq!¦a‚›:.…‰½%—˜£%8 ¦Ÿ‚›:.…‰¹%—˜£%8¦q!_ {//============================================================================= // BShockProjAlt. //============================================================================= class BShockProjAlt expands ShockProj; var() Sound ExploSound; simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( Level.bDropDetail ) LightType = LT_None; } function SuperExplosion() { HurtRadius(Damage*3, 250, MyDamageType, MomentumTransfer*2, Location ); Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); PlaySound(ExploSound,,20.0,,2000,0.6); 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, 250, MyDamageType, MomentumTransfer, Location ); Spawn(class'ut_ComboRing',,, HitLocation+HitNormal*8,rotator(HitNormal)); Destroy(); } á} 9À8/—:%-%—:%-,v! 6v!  €€Šj//============================================================================= // BShockProj. //============================================================================= class BShockProj expands ShockProj; var() Sound ExploSound; simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( Level.bDropDetail ) LightType = LT_None; } function SuperExplosion() { HurtRadius(Damage*3, 250, MyDamageType, MomentumTransfer*2, Location ); Spawn(Class'ut_ComboRing',,'',Location, Instigator.ViewRotation); PlaySound(ExploSound,,20.0,,2000,0.6); 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, 70, MyDamageType, MomentumTransfer, Location ); if (Damage > 60) Spawn(class'ut_RingExplosion3',,, HitLocation+HitNormal*8,rotator(HitNormal)); else Spawn(class'ut_RingExplosion',,, HitLocation+HitNormal*8,rotator(Velocity)); Destroy(); } €Šá {dô ¸à-á' CiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿB—Æ ü톲q] BPak.BShocko// ==================================================================== // Class: BPak.BShockMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BShockMutator extends BPakWeaponMutator; ÙAjV!-á(Ù Z//============================================================================= // BShockCore. //============================================================================= class BShockCore expands ShockCore; ~“//============================================================================= // BShock. //============================================================================= class BShock expands ShockRifle; var() int HitDamage; var Projectile Tracked; var bool bBotSpecialMove; var float TapTime; function AltFire( float Value ) { local actor HitActor; local vector HitLocation, HitNormal, Start; if ( Owner == None ) return; if ( Owner.IsA('Bot') ) //make sure won't blow self up { Start = Owner.Location + CalcDrawOffset() + FireOffset.Z * vect(0,0,1); if ( Pawn(Owner).Enemy != None ) HitActor = Trace(HitLocation, HitNormal, Start + 250 * Normal(Pawn(Owner).Enemy.Location - Start), Start, false, vect(12,12,12)); else HitActor = self; if ( HitActor != None ) { Global.Fire(Value); return; } } if ( AmmoType.UseAmmo(1) ) { GotoState('AltFiring'); bCanClientFire = true; if ( Owner.IsA('Bot') ) { if ( Owner.IsInState('TacticalMove') && (Owner.Target == Pawn(Owner).Enemy) && (Owner.Physics == PHYS_Walking) && !Bot(Owner).bNovice && (FRand() * 6 < Pawn(Owner).Skill) ) Pawn(Owner).SpecialFire(); } Pawn(Owner).PlayRecoil(FiringSpeed); bPointing=True; ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget); ClientAltFire(value); } } function TraceFire( float Accuracy ) { local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z; local actor Other; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); StartTrace = Owner.Location + CalcDrawOffset() + FireOffset.Y * Y + FireOffset.Z * Z; EndTrace = StartTrace + Accuracy * (FRand() - 0.5 )* Y * 1000 + Accuracy * (FRand() - 0.5 ) * Z * 1000 ; if ( bBotSpecialMove && (Tracked != None) && (((Owner.Acceleration == vect(0,0,0)) && (VSize(Owner.Velocity) < 40)) || (Normal(Owner.Velocity) Dot Normal(Tracked.Velocity) > 0.95)) ) EndTrace += 10000 * Normal(Tracked.Location - StartTrace); else { AdjustedAim = pawn(owner).AdjustAim(1000000, StartTrace, 2.75*AimError, False, False); EndTrace += (10000 * vector(AdjustedAim)); } Tracked = None; bBotSpecialMove = false; Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); ProcessTraceHit(Other, HitLocation, HitNormal, vector(AdjustedAim),Y,Z); } function float RateSelf( out int bUseAltMode ) { local Pawn P; local bool bNovice; if ( AmmoType.AmmoAmount <=0 ) return -2; P = Pawn(Owner); bNovice = ( (Bot(Owner) == None) || Bot(Owner).bNovice ); if ( P.Enemy == None ) bUseAltMode = 0; else if ( P.Enemy.IsA('StationaryPawn') ) { bUseAltMode = 1; return (AIRating + 0.4); } else if ( !bNovice && (P.IsInState('Hunting') || P.IsInState('StakeOut') || P.IsInState('RangedAttack') || (Level.TimeSeconds - P.LastSeenTime > 0.8)) ) { bUseAltMode = 1; return (AIRating + 0.3); } else if ( !bNovice && (P.Acceleration == vect(0,0,0)) ) bUseAltMode = 1; else if ( !bNovice && (VSize(P.Enemy.Location - P.Location) > 1200) ) { bUseAltMode = 0; return (AIRating + 0.05 + FMin(0.00009 * VSize(P.Enemy.Location - P.Location), 0.3)); } else if ( P.Enemy.Location.Z > P.Location.Z + 200 ) { bUseAltMode = int( FRand() < 0.6 ); return (AIRating + 0.15); } else bUseAltMode = int( FRand() < 0.4 ); return AIRating; } function Timer() { local actor targ; local float bestAim, bestDist; local vector FireDir; local Pawn P; bestAim = 0.95; P = Pawn(Owner); if ( P == None ) { GotoState(''); return; } FireDir = vector(P.ViewRotation); targ = P.PickTarget(bestAim, bestDist, FireDir, Owner.Location); if ( Pawn(targ) != None ) { bPointing = true; Pawn(targ).WarnTarget(P, 300, FireDir); SetTimer(1 + 4 * FRand(), false); } else { SetTimer(0.5 + 2 * FRand(), false); if ( (P.bFire == 0) && (P.bAltFire == 0) ) bPointing = false; } } function Finish() { if ( (Pawn(Owner).bFire!=0) && (FRand() < 0.6) ) Timer(); if ( !bChangeWeapon && (Tracked != None) && !Tracked.bDeleteMe && (Owner != None) && (Owner.IsA('Bot')) && (Pawn(Owner).Enemy != None) && (FRand() < 0.3 + 0.35 * Pawn(Owner).skill) && (AmmoType.AmmoAmount > 0) ) { if ( (Owner.Acceleration == vect(0,0,0)) || (Abs(Normal(Owner.Velocity) dot Normal(Tracked.Velocity)) > 0.95) ) { bBotSpecialMove = true; GotoState('ComboMove'); return; } } bBotSpecialMove = false; Tracked = None; Super.Finish(); } /////////////////////////////////////////////////////// simulated function PlayFiring() { PlayOwnedSound(FireSound, SLOT_None, Pawn(Owner).SoundDampening*4.0); LoopAnim('Fire1', 2.00 + 2.00 * FireAdjust,0.05); } function Projectile ProjectileFire(class ProjClass, float ProjSpeed, bool bWarn) { local Vector Start, X,Y,Z; local PlayerPawn PlayerOwner; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(ProjSpeed, Start, AimError, True, bWarn); PlayerOwner = PlayerPawn(Owner); if ( PlayerOwner != None ) PlayerOwner.ClientInstantFlash( -0.4, vect(450, 190, 650)); Tracked = Spawn(ProjClass,,, Start,AdjustedAim); if ( Level.Game.IsA('DeathMatchPlus') && DeathmatchPlus(Level.Game).bNoviceMode ) Tracked = None; //no combo move } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local int i; local PlayerPawn PlayerOwner; if (Other==None) { HitNormal = -X; HitLocation = Owner.Location + X*10000.0; } PlayerOwner = PlayerPawn(Owner); if ( PlayerOwner != None ) PlayerOwner.ClientInstantFlash( -0.4, vect(450, 190, 650)); SpawnEffect(HitLocation, Owner.Location + CalcDrawOffset() + (FireOffset.X + 20) * X + FireOffset.Y * Y + FireOffset.Z * Z); if ( ShockProj(Other)!=None ) { AmmoType.UseAmmo(2); ShockProj(Other).SuperExplosion(); } else Spawn(class'ut_RingExplosion5',,, HitLocation+HitNormal*8,rotator(HitNormal)); Spawn(class'BMiniWave',,, HitLocation+HitNormal*8,rotator(HitNormal)); if ( (Other != self) && (Other != Owner) && (Other != None) ) Other.TakeDamage(HitDamage+250, Pawn(Owner), HitLocation, 60000.0*X, MyDamageType); } function SpawnEffect(vector HitLocation, vector SmokeLocation) { local ShockBeam Smoke,shock; local Vector DVector; local int NumPoints; local rotator SmokeRotation; DVector = HitLocation - SmokeLocation; NumPoints = VSize(DVector)/135.0; if ( NumPoints < 1 ) return; SmokeRotation = rotator(DVector); SmokeRotation.roll = Rand(65535); Smoke = Spawn(class'ShockBeam',,,SmokeLocation,SmokeRotation); Smoke.MoveAmount = DVector/NumPoints; Smoke.NumPuffs = NumPoints - 1; } simulated function PlayAltFiring() { PlayOwnedSound(AltFireSound, SLOT_None,Pawn(Owner).SoundDampening*4.0); LoopAnim('Fire2',1.3 + 1.3 * FireAdjust,0.05); } simulated function PlayIdleAnim() { if ( Mesh != PickupViewMesh ) LoopAnim('Still',0.04,0.3); } state Idle { function BeginState() { bPointing = false; SetTimer(0.5 + 2 * FRand(), false); Super.BeginState(); if (Pawn(Owner).bFire!=0) Fire(0.0); if (Pawn(Owner).bAltFire!=0) AltFire(0.0); } function EndState() { SetTimer(0.0, false); Super.EndState(); } } state ComboMove { function Fire(float F); function AltFire(float F); function Tick(float DeltaTime) { if ( (Owner == None) || (Pawn(Owner).Enemy == None) ) { Tracked = None; bBotSpecialMove = false; Finish(); return; } if ( (Tracked == None) || Tracked.bDeleteMe || (((Tracked.Location - Owner.Location) dot (Tracked.Location - Pawn(Owner).Enemy.Location)) >= 0) || (VSize(Tracked.Location - Pawn(Owner).Enemy.Location) < 100) ) Global.Fire(0); } Begin: Sleep(7.0); Tracked = None; bBotSpecialMove = false; Global.Fire(0); } state ClientFiring { simulated function bool ClientFire(float Value) { if ( Level.TimeSeconds - TapTime < 0.2 ) return false; bForceFire = bForceFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ); return bForceFire; } simulated function bool ClientAltFire(float Value) { if ( Level.TimeSeconds - TapTime < 0.2 ) return false; bForceAltFire = bForceAltFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ); return bForceAltFire; } simulated function AnimEnd() { local bool bForce, bForceAlt; bForce = bForceFire; bForceAlt = bForceAltFire; bForceFire = false; bForceAltFire = false; if ( bCanClientFire && (PlayerPawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ) { if ( bForce || (Pawn(Owner).bFire != 0) ) { Global.ClientFire(0); return; } else if ( bForceAlt || (Pawn(Owner).bAltFire != 0) ) { Global.ClientAltFire(0); return; } } Super.AnimEnd(); } simulated function EndState() { bForceFire = false; bForceAltFire = false; } simulated function BeginState() { TapTime = Level.TimeSeconds; bForceFire = false; bForceAltFire = false; } } âHMÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2Gð5…*â©ÓÉ•†]"ôd//============================================================================= // BShieldBelt. //============================================================================= class BShieldBelt expands UT_ShieldBelt; Z// ==================================================================== // Class: BPak.BBioAmmo // Parent: Botpack.BioAmmo // // // ==================================================================== class BBioAmmo extends BioAmmo; ûsûa ×£;' þJ Èd—,%aS �PüaS �PüaS �Pü¥ |// ==================================================================== // Class: BPak.BSeekingRocket // Parent: BPak.BRocket // // // ==================================================================== class BSeekingRocket extends BRocket; var Actor Seeking; var vector InitialDir; replication { // Relationships. reliable if( Role==ROLE_Authority ) Seeking, InitialDir; } simulated function Timer() { local ut_SpriteSmokePuff b; local vector SeekingDir; local float MagnitudeVel; if ( InitialDir == vect(0,0,0) ) InitialDir = Normal(Velocity); if ( (Seeking != None) && (Seeking != Instigator) ) { SeekingDir = Normal(Seeking.Location - Location); if ( (SeekingDir Dot InitialDir) > 0 ) { MagnitudeVel = VSize(Velocity); SeekingDir = Normal(SeekingDir * 0.5 * MagnitudeVel + Velocity); Velocity = MagnitudeVel * SeekingDir; Acceleration = 25 * SeekingDir; SetRotation(rotator(Velocity)); } } if ( bHitWater || (Level.NetMode == NM_DedicatedServer) ) Return; if ( (Level.bHighDetailMode && !Level.bDropDetail) || (FRand() < 0.5) ) { b = Spawn(class'ut_SpriteSmokePuff'); b.RemoteRole = ROLE_None; } } simulated function PostBeginPlay() { Super.PostBeginPlay(); SetTimer(0.1, true); } NfÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMÓ.¸Æ üí†Öw] BPak.BSawq// ==================================================================== // Class: BPak.BSawMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BSawMutator extends BPakWeaponMutator; O@// ==================================================================== // Class: BPak.BSaw // Parent: Botpack.ChainSaw // // // ==================================================================== class BSaw extends ChainSaw; state NormalFire { ignores AnimEnd; function BeginState() { Super.BeginState(); AmbientSound = HitSound; SoundVolume = 255; } function EndState() { AmbientSound = Sound'Botpack.ChainIdle'; Super.EndState(); SoundVolume = Default.SoundVolume; } Begin: Sleep(0.02); if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); TraceFire(0.0); Sleep(0.02); if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); if ( LastHit != None ) { LastHit.ClientFlash( -0.38, vect(530, 90, 90)); LastHit.ShakeView(0.25, 600, 6); } if ( Pawn(Owner).bFire == 0 ) Finish(); Goto('Begin'); } function Slash() { local vector HitLocation, HitNormal, EndTrace, X, Y, Z, Start; local actor Other; Range = 350; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation, X, Y, Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(1000000, Start, AimError, False, False); EndTrace = Owner.Location + (Range * vector(AdjustedAim)); Other = Pawn(Owner).TraceShot(HitLocation, HitNormal, EndTrace, Start); if ( (Other == None) || (Other == Owner) || (Other == self) ) return; if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); Other.TakeDamage(3000, Pawn(Owner), HitLocation, -10000.0 * Y, AltDamageType); if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'SawHit',,,HitLocation+HitNormal, rotator(HitNormal)); } function TraceFire(float accuracy) { local vector HitLocation, HitNormal, EndTrace, X, Y, Z, Start; local actor Other, Other2; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation, X, Y, Z); Start = Owner.Location + Pawn(Owner).Eyeheight * Z; AdjustedAim = Pawn(Owner).AdjustAim(1000000, Start, 2*AimError, False, False); X = vector(AdjustedAim); EndTrace = Start + 10000 * X; Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,Start); Other2 = Pawn(Owner).TraceShot(HitLocation,HitNormal,Start,EndTrace); if ( (Other == None) || (Other == Owner) || (Other == self) ) return; if ( !Other.bIsPawn && !Other.IsA('Carcass') ) { spawn(class'SawHit',,,HitLocation+HitNormal, Rotator(HitNormal)); return; } else if ( Other.IsA('PlayerPawn') && (Pawn(Other).Health > 0) ) { LastHit = PlayerPawn(Other); return; } ProcessTraceHit(Other, Owner.Location, HitNormal, X,Y,Z); Other.TakeDamage(10.0, Pawn(Owner), HitLocation, -15000 * X, MyDamageType); if (Pawn(Owner).Health < 1500) Pawn(Owner).Health += 1; } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { if (Other==None) { HitNormal = -X; HitLocation = Owner.Location + X*10000.0; } SpawnEffect(HitLocation, Other.Location + CalcDrawOffset() + (FireOffset.X + 20) * X + FireOffset.Y * Y + FireOffset.Z * Z); /* if ( (Other != self) && (Other != Owner) && (Other != None) ) Other.TakeDamage(5000, Pawn(Owner), HitLocation, 60000.0*X, 'jolted'); HurtRadius(500, 64, 'jolted', 60000, HitLocation ); Pawn(Owner).Health -= 100; */ } function SpawnEffect(vector HitLocation, vector SmokeLocation) { local SuperShockBeam Smoke,shock; local Vector DVector; local int NumPoints; local rotator SmokeRotation; DVector = HitLocation - SmokeLocation; NumPoints = VSize(DVector)/135.0; if ( NumPoints < 1 ) return; SmokeRotation = rotator(DVector); SmokeRotation.roll = Rand(65535); Smoke = Spawn(class'SuperShockBeam',,,SmokeLocation,SmokeRotation); Smoke.MoveAmount = DVector/NumPoints; Smoke.NumPuffs = NumPoints - 1; } Úb ;*šÔ9ÇÙ ÇN RB—4—,%aS �Pü¥ S€Š€Šû+a@'û)ž-éÆ$ b// ==================================================================== // Class: BPak.BRocketPack // Parent: Botpack.RocketPack // // // ==================================================================== class BRocketPack extends RocketPack; Óm F|LÆ«¶?,zCÂ?�È,�a Ñ !�¦ · x2//============================================================================= // BRocket. //============================================================================= class BRocket expands RocketMk2; var float SmokeRate; var bool bRing,bHitWater,bWaterStart; var int NumExtraRockets; var rockettrail trail; simulated function Destroyed() { if ( Trail != None ) Trail.Destroy(); Super.Destroyed(); } simulated function PostBeginPlay() { Trail = Spawn(class'RocketTrail',self); if ( Level.bHighDetailMode ) { SmokeRate = (200 + (0.5 + 2 * FRand()) * NumExtraRockets * 24)/Speed; if ( Level.bDropDetail ) { SoundRadius = 6; LightRadius = 3; } } else { SmokeRate = 0.15 + FRand()*(0.02+NumExtraRockets); LightRadius = 3; } SetTimer(SmokeRate, true); } simulated function Timer() { local ut_SpriteSmokePuff b; if ( Region.Zone.bWaterZone || (Level.NetMode == NM_DedicatedServer) ) Return; if ( Level.bHighDetailMode ) { if ( Level.bDropDetail || ((NumExtraRockets > 0) && (FRand() < 0.5)) ) Spawn(class'LightSmokeTrail'); else Spawn(class'UTSmokeTrail'); SmokeRate = 152/Speed; } else { SmokeRate = 0.15 + FRand()*(0.01+NumExtraRockets); b = Spawn(class'ut_SpriteSmokePuff'); b.RemoteRole = ROLE_None; } SetTimer(SmokeRate, false); } auto state Flying { simulated function ZoneChange( Zoneinfo NewZone ) { local waterring w; if (!NewZone.bWaterZone || bHitWater) Return; bHitWater = True; if ( Level.NetMode != NM_DedicatedServer ) { w = Spawn(class'WaterRing',,,,rot(16384,0,0)); w.DrawScale = 0.2; w.RemoteRole = ROLE_None; PlayAnim( 'Still', 3.0 ); } Velocity=0.6*Velocity; } simulated function ProcessTouch (Actor Other, Vector HitLocation) { if ( (Other != instigator) && !Other.IsA('Projectile') ) Explode(HitLocation,Normal(HitLocation-Other.Location)); } function BlowUp(vector HitLocation) { HurtRadius(Damage+600,500.0, MyDamageType, MomentumTransfer, HitLocation ); MakeNoise(1.0); } simulated function Explode(vector HitLocation, vector HitNormal) { local UT_RingExplosion4 s; local BComboRing b; local BRingEx x; local UT_RingExplosion5 y; local UT_RingExplosion3 z; local UT_SpriteBallExplosion e; e = spawn(class'UT_SpriteBallExplosion',,,HitLocation + HitNormal*16); e.RemoteRole = ROLE_None; s = spawn(class'UT_RingExplosion4',,,HitLocation + HitNormal*16); s.RemoteRole = ROLE_None; x = spawn(class'BRingEx',,,HitLocation + HitNormal*16); x.RemoteRole = ROLE_None; b = spawn(class'BComboRing',,,HitLocation + HitNormal*16); b.RemoteRole = ROLE_None; y = spawn(class'UT_RingExplosion5',,,HitLocation + HitNormal*16); y.RemoteRole = ROLE_None; z = spawn(class'UT_RingExplosion3',,,HitLocation + HitNormal*16); z.RemoteRole = ROLE_None; BlowUp(HitLocation); Destroy(); } function BeginState() { local vector Dir; Dir = vector(Rotation); Velocity = speed * Dir; Acceleration = Dir * 50; PlayAnim( 'Wing', 0.2 ); if (Region.Zone.bWaterZone) { bHitWater = True; Velocity=0.6*Velocity; } } } h€ŠW//============================================================================= // BMiniammo. //============================================================================= class BMiniammo expands Miniammo; Úi , šÔ9ÇÙ \dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[œÐ—&Æ üí†çC] BPak.BRipperq// ==================================================================== // Class: BPak.BRipperMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BRipperMutator extends BPakWeaponMutator; ò K!‹.à;‚›:.…‰½%—˜£% v‚›:.…‰¹%—˜£%a!!ÍÌL>fff?-Ë(Å‚w˜*˜˜£%.…‰sv! ÿÿÿÿÿÿÿÿÿÿÐûG "û ž-éÆ$ Ó^F‹hÆ«¶?,zCÂ?�È,�a ó !�¦ ·aG  A úDš™?a Q&//============================================================================= // BRipper. //============================================================================= class BRipper expands ripper; function Projectile ProjectileFire(class ProjClass, float ProjSpeed, bool bWarn) { local Vector Start, X,Y,Z; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(ProjSpeed, Start, AimError, True, bWarn); return Spawn(ProjClass,,, Start,AdjustedAim); } simulated function PlayFiring() { LoopAnim( 'Fire', 2.5 + 2.5 * FireAdjust, 0.05 ); PlayOwnedSound(class'Razor2'.Default.SpawnSound, SLOT_None,4.2); } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( (AmmoType != None) && (AmmoType.AmmoAmount <=0) ) return -2; P = Pawn(Owner); if ( (P.Enemy == None ) || (P.Enemy.Location.Z < Owner.Location.Z - 60) || (FRand() < 0.5) ) bUseAltMode = 1; else bUseAltMode = 0; if ( P.Enemy != None ) { if ( Owner.Location.Z > P.Enemy.Location.Z + 140 ) { bUseAltMode = 1; return (AIRating + 0.25); } else if ( P.Enemy.Location.Z > Owner.Location.Z + 160 ) return (AIRating - 0.07); } return (AIRating + FRand() * 0.05); } function AltFire( float Value ) { local vector X,Y,Z; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } GetAxes(pawn(Owner).ViewRotation,x,y,z); x=normal(x); pawn(Owner).SetLocation(pawn(Owner).Location+vect(0,0,15)); pawn(Owner).Velocity-=(450*X); //simple little thingy..... if (AmmoType.UseAmmo(1)) { GotoState('AltFiring'); bCanClientFire = true; bPointing=True; Pawn(Owner).PlayRecoil(FiringSpeed); ClientAltFire(Value); ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget); } } simulated function PlayAltFiring() { LoopAnim('Fire', 2.5 + 2.5 * FireAdjust,0.05); PlayOwnedSound(class'Razor2Alt'.Default.SpawnSound, SLOT_None,4.2); } simulated function PlayIdleAnim() { if ( Mesh != PickupViewMesh ) LoopAnim('Idle', 0.3,0.4); } function float SuggestAttackStyle() { return -0.2; } function float SuggestDefenseStyle() { return -0.2; } state AltFiring { function bool SplashJump() { return true; } } p//============================================================================= // BRingEx. //============================================================================= class BRingEx expands BComboRing; simulated function SpawnExtraEffects() { bExtraEffectsSpawned = true; SetRotation(Owner.Rotation); } simulated function SpawnEffects() { } Úz #kšÔ9ÇÙ M//============================================================================= // BRazor2Alt. //============================================================================= class BRazor2Alt expands Razor2; simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( Level.bDropDetail ) LightType = LT_None; } auto state Flying { simulated function ProcessTouch (Actor Other, Vector HitLocation) { local RipperPulse s; if ( Other != Instigator ) { if ( Role == ROLE_Authority ) { Other.TakeDamage(damage, instigator,HitLocation, (MomentumTransfer * Normal(Velocity)), MyDamageType ); } s = spawn(class'RipperPulse',,,HitLocation); s.RemoteRole = ROLE_None; MakeNoise(1.0); Destroy(); } } simulated function HitWall (vector HitNormal, actor Wall) { Super(Projectile).HitWall( HitNormal, Wall ); } simulated function Explode(vector HitLocation, vector HitNormal) { local RipperPulse s; s = spawn(class'RipperPulse',,,HitLocation + HitNormal*16); s.RemoteRole = ROLE_None; BlowUp(HitLocation); Destroy(); } function BlowUp(vector HitLocation) { local actor Victims; local float damageScale, dist; local vector dir; if( bHurtEntry ) return; bHurtEntry = true; foreach VisibleCollidingActors( class 'Actor', Victims, 180, HitLocation ) { if( Victims != self ) { dir = Victims.Location - HitLocation; dist = FMax(1,VSize(dir)); dir = dir/dist; dir.Z = FMin(0.45, dir.Z); damageScale = 1 - FMax(0,(dist - Victims.CollisionRadius)/180); Victims.TakeDamage ( damageScale * Damage, Instigator, Victims.Location - 0.5 * (Victims.CollisionHeight + Victims.CollisionRadius) * dir, damageScale * MomentumTransfer * dir, MyDamageType ); } } bHurtEntry = false; MakeNoise(1.0); } } ^6//============================================================================= // BRazor2. //============================================================================= class BRazor2 expands Razor2; var int NumWallHits; var bool bCanHitInstigator, bHitWater; ///////////////////////////////////////////////////// auto state Flying { simulated function ProcessTouch (Actor Other, Vector HitLocation) { if ( bCanHitInstigator || (Other != Instigator) ) { if ( Role == ROLE_Authority ) { if ( Other.bIsPawn && (HitLocation.Z - Other.Location.Z > 0.62 * Other.CollisionHeight) && (!Instigator.IsA('Bot') || !Bot(Instigator).bNovice) ) Other.TakeDamage(3.5 * damage, instigator,HitLocation, (MomentumTransfer * Normal(Velocity)), 'decapitated' ); else Other.TakeDamage(damage, instigator,HitLocation, (MomentumTransfer * Normal(Velocity)), 'shredded' ); } if ( Other.bIsPawn ) PlaySound(MiscSound, SLOT_Misc, 2.0); else PlaySound(ImpactSound, SLOT_Misc, 2.0); destroy(); } } simulated function ZoneChange( Zoneinfo NewZone ) { local Splash w; if (!NewZone.bWaterZone || bHitWater) Return; bHitWater = True; if ( Level.NetMode != NM_DedicatedServer ) { w = Spawn(class'Splash',,,,rot(16384,0,0)); w.DrawScale = 0.5; w.RemoteRole = ROLE_None; } Velocity=0.6*Velocity; } simulated function SetRoll(vector NewVelocity) { local rotator newRot; newRot = rotator(NewVelocity); SetRotation(newRot); } simulated function HitWall (vector HitNormal, actor Wall) { local vector Vel2D, Norm2D; bCanHitInstigator = true; PlaySound(ImpactSound, SLOT_Misc, 2.0); LoopAnim('Spin',1.0); if ( (Mover(Wall) != None) && Mover(Wall).bDamageTriggered ) { if ( Role == ROLE_Authority ) Wall.TakeDamage( Damage, instigator, Location, MomentumTransfer * Normal(Velocity), MyDamageType); Destroy(); return; } NumWallHits++; SetTimer(0, False); MakeNoise(0.3); if ( NumWallHits > 20 ) Destroy(); if ( NumWallHits == 1 ) { Spawn(class'WallCrack',,,Location, rotator(HitNormal)); Vel2D = Velocity; Vel2D.Z = 0; Norm2D = HitNormal; Norm2D.Z = 0; Norm2D = Normal(Norm2D); Vel2D = Normal(Vel2D); if ( (Vel2D Dot Norm2D) < -0.999 ) { HitNormal = Normal(HitNormal + 0.6 * Vel2D); Norm2D = HitNormal; Norm2D.Z = 0; Norm2D = Normal(Norm2D); if ( (Vel2D Dot Norm2D) < -0.999 ) { if ( Rand(1) == 0 ) HitNormal = HitNormal + vect(0.05,0,0); else HitNormal = HitNormal - vect(0.05,0,0); if ( Rand(1) == 0 ) HitNormal = HitNormal + vect(0,0.05,0); else HitNormal = HitNormal - vect(0,0.05,0); HitNormal = Normal(HitNormal); } } } Velocity -= 2 * (Velocity dot HitNormal) * HitNormal; SetRoll(Velocity); } function SetUp() { local vector X; X = vector(Rotation); Velocity = Speed * X; // Impart ONLY forward vel if (Instigator.HeadRegion.Zone.bWaterZone) bHitWater = True; } simulated function BeginState() { SetTimer(0.2, false); SetUp(); if ( Level.NetMode != NM_DedicatedServer ) { LoopAnim('Spin',1.0); if ( Level.NetMode == NM_Standalone ) SoundPitch = 200 + 50 * FRand(); } } simulated function Timer() { bCanHitInstigator = true; } } G€�ût ""û ž-éÆ$ ÓfF“hÆ«¶?,zCÂ?�È,�a Ñ !�¦ ·at  A úDš™?a i`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhRé³çÆ ü톮sMBPak.BPulseGuno// ==================================================================== // Class: BPak.BPulseMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BPulseMutator extends BPakWeaponMutator; Ú\ $ošÔ9ÇÙ V�//============================================================================= // BPulseGun. //============================================================================= class BPulseGun expands PulseGun; var float Angle, Count; var PBolt PlasmaBeam; var() sound DownSound; simulated event RenderOverlays( canvas Canvas ) { Texture'Ammoled'.NotifyActor = Self; Super.RenderOverlays(Canvas); Texture'Ammoled'.NotifyActor = None; } simulated function Destroyed() { if ( PlasmaBeam != None ) PlasmaBeam.Destroy(); Super.Destroyed(); } simulated function AnimEnd() { if ( (Level.NetMode == NM_Client) && (Mesh != PickupViewMesh) ) { if ( AnimSequence == 'SpinDown' ) AnimSequence = 'Idle'; PlayIdleAnim(); } } // set which hand is holding weapon function setHand(float Hand) { if ( Hand == 2 ) { FireOffset.Y = 0; bHideWeapon = true; if ( PlasmaBeam != None ) PlasmaBeam.bCenter = true; return; } else bHideWeapon = false; PlayerViewOffset = Default.PlayerViewOffset * 100; if ( Hand == 1 ) { if ( PlasmaBeam != None ) { PlasmaBeam.bCenter = false; PlasmaBeam.bRight = false; } FireOffset.Y = Default.FireOffset.Y; Mesh = mesh(DynamicLoadObject("Botpack.PulseGunL", class'Mesh')); } else { if ( PlasmaBeam != None ) { PlasmaBeam.bCenter = false; PlasmaBeam.bRight = true; } FireOffset.Y = -1 * Default.FireOffset.Y; Mesh = mesh'PulseGunR'; } } // return delta to combat style function float SuggestAttackStyle() { local float EnemyDist; EnemyDist = VSize(Pawn(Owner).Enemy.Location - Owner.Location); if ( EnemyDist < 1000 ) return 0.4; else return 0; } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType.AmmoAmount <=0 ) return -2; P = Pawn(Owner); if ( (P.Enemy == None) || (Owner.IsA('Bot') && Bot(Owner).bQuickFire) ) { bUseAltMode = 0; return AIRating; } if ( P.Enemy.IsA('StationaryPawn') ) { bUseAltMode = 0; return (AIRating + 0.4); } else bUseAltMode = int( 700 > VSize(P.Enemy.Location - Owner.Location) ); AIRating *= FMin(Pawn(Owner).DamageScaling, 1.5); return AIRating; } simulated function PlayFiring() { FlashCount++; AmbientSound = FireSound; SoundVolume = Pawn(Owner).SoundDampening*255; LoopAnim( 'shootLOOP', 1 + 0.5 * FireAdjust, 0.0); bWarnTarget = (FRand() < 0.2); } simulated function PlayAltFiring() { FlashCount++; AmbientSound = AltFireSound; SoundVolume = Pawn(Owner).SoundDampening*255; LoopAnim( 'shootLOOP', 1 + 0.5 * FireAdjust, 0.0); bWarnTarget = (FRand() < 0.2); } function AltFire( float Value ) { if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if (AmmoType.UseAmmo(1)) { GotoState('AltFiring'); bCanClientFire = true; bPointing=True; Pawn(Owner).PlayRecoil(FiringSpeed); ClientAltFire(value); /* if ( PlasmaBeam == None ) { PlasmaBeam = PBolt(ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget)); if ( FireOffset.Y == 0 ) PlasmaBeam.bCenter = true; else if ( Mesh == mesh'PulseGunR' ) PlasmaBeam.bRight = false; } */ } } simulated event RenderTexture(ScriptedTexture Tex) { local Color C; local string Temp; Temp = String(AmmoType.AmmoAmount); while(Len(Temp) < 3) Temp = "0"$Temp; Tex.DrawTile( 30, 100, (Min(AmmoType.AmmoAmount,AmmoType.Default.AmmoAmount)*196)/AmmoType.Default.AmmoAmount, 10, 0, 0, 1, 1, Texture'AmmoCountBar', False ); if(AmmoType.AmmoAmount < 10) { C.R = 255; C.G = 0; C.B = 0; } else { C.R = 0; C.G = 0; C.B = 255; } Tex.DrawColoredText( 56, 14, Temp, Font'LEDFont', C ); } /////////////////////////////////////////////////////// state NormalFire { ignores AnimEnd; function Projectile ProjectileFire(class ProjClass, float ProjSpeed, bool bWarn) { local Vector Start, X,Y,Z; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(ProjSpeed, Start, AimError, True, bWarn); Start = Start - Sin(Angle)*Y*16 + (Cos(Angle)*16 - 10.78)*Z; Angle += 1.8; return Spawn(ProjClass,,, Start,AdjustedAim); } function Tick( float DeltaTime ) { if (Owner==None) GotoState('Pickup'); } function BeginState() { Super.BeginState(); Angle = 0; AmbientGlow = 200; } function EndState() { PlaySpinDown(); AmbientSound = None; AmbientGlow = 0; OldFlashCount = FlashCount; Super.EndState(); } Begin: Sleep(0.08); Finish(); } simulated function PlaySpinDown() { if ( (Mesh != PickupViewMesh) && (Owner != None) ) { PlayAnim('Spindown', 1.0, 0.0); Owner.PlayOwnedSound(DownSound, SLOT_None,1.0*Pawn(Owner).SoundDampening); } } state ClientFiring { simulated function Tick( float DeltaTime ) { if ( (Pawn(Owner) != None) && (Pawn(Owner).bFire != 0) ) AmbientSound = FireSound; else AmbientSound = None; } simulated function AnimEnd() { if ( (AmmoType != None) && (AmmoType.AmmoAmount <= 0) ) { PlaySpinDown(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else if ( Pawn(Owner) == None ) { PlaySpinDown(); GotoState(''); } else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else if ( Pawn(Owner).bAltFire != 0 ) Global.ClientAltFire(0); else { PlaySpinDown(); GotoState(''); } } } /////////////////////////////////////////////////////////////// state ClientAltFiring { simulated function AnimEnd() { if ( AmmoType.AmmoAmount <= 0 ) { PlayIdleAnim(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else if ( Pawn(Owner) == None ) { PlayIdleAnim(); GotoState(''); } else if ( Pawn(Owner).bAltFire != 0 ) LoopAnim('BoltLoop'); else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else { PlayIdleAnim(); GotoState(''); } } } state AltFiring { ignores AnimEnd; function Tick(float DeltaTime) { local Pawn P; P = Pawn(Owner); if ( P == None ) { GotoState('Pickup'); return; } if ( (P.bAltFire == 0) || (P.IsA('Bot') && ((P.Enemy == None) || (Level.TimeSeconds - Bot(P).LastSeenTime > 5))) ) { P.bAltFire = 0; Finish(); return; } Count += Deltatime; if ( Count > 0.24 ) { if ( Owner.IsA('PlayerPawn') ) PlayerPawn(Owner).ClientInstantFlash( InstFlash,InstFog); if ( Affector != None ) Affector.FireEffect(); Count -= 0.24; if ( !AmmoType.UseAmmo(1) ) Finish(); } Pawn(Owner).health += 10; Pawn(Owner).Fatness += 1; if (Pawn(Owner).health >= 1000 || Pawn(Owner).Fatness == 255) { Pawn(Owner).Fatness = 128; Spawn(Class'ShockWave',,'',Location, Instigator.ViewRotation); Pawn(Owner).Died(None, 'Fell', Owner.Location); Destroy(); } } function EndState() { AmbientGlow = 0; AmbientSound = None; if ( PlasmaBeam != None ) { PlasmaBeam.Destroy(); PlasmaBeam = None; } Super.EndState(); } Begin: AmbientGlow = 200; FinishAnim(); LoopAnim( 'boltloop'); } state Idle { Begin: bPointing=False; if ( (AmmoType != None) && (AmmoType.AmmoAmount<=0) ) Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo if ( Pawn(Owner).bFire!=0 ) Fire(0.0); if ( Pawn(Owner).bAltFire!=0 ) AltFire(0.0); Disable('AnimEnd'); PlayIdleAnim(); } /////////////////////////////////////////////////////////// simulated function PlayIdleAnim() { if ( Mesh == PickupViewMesh ) return; if ( (AnimSequence == 'BoltLoop') || (AnimSequence == 'BoltStart') ) PlayAnim('BoltEnd'); else if ( AnimSequence != 'SpinDown' ) TweenAnim('Idle', 0.1); } simulated function TweenDown() { if ( IsAnimating() && (AnimSequence != '') && (GetAnimGroup(AnimSequence) == 'Select') ) TweenAnim( AnimSequence, AnimFrame * 0.4 ); else TweenAnim('Down', 0.26); } û Mûa€?' N//============================================================================= // BPAmmo. //============================================================================= class BPAmmo expands PAmmo; g+// ==================================================================== // Class: BPak.BPakWeaponMutator // Parent: Engine.Mutator // // // ==================================================================== class BPakWeaponMutator extends Mutator Abstract; var class WeaponBaseType; var class WeaponNewType; var class WeaponReplaceType; var string WeaponNewString; simulated function PostBeginPlay() { Level.Game.RegisterDamageMutator(Self); } function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { bSuperRelevant = 0; if (Other.IsA('TournamentWeapon')) // remove old weapon if ( (Other.IsA(WeaponBaseType.Name)) && (!Other.IsA(WeaponNewType.Name)) ) return False; if ( (Other.IsA('TournamentAmmo')) && (WeaponBaseType != class'ImpactHammer') && (WeaponBaseType != class'Translocator') ) // remove old ammo if ( (Other.IsA(WeaponBaseType.Default.AmmoName.Name)) && (!Other.IsA(WeaponNewType.Default.AmmoName.Name)) ) return False; return True; } function ModifyPlayer(Pawn Other) { Super.ModifyPlayer(Other); if (WeaponReplaceType != None) GiveWeapon(Other, WeaponReplaceType); else GiveWeapon(Other, WeaponNewType); Other.Health = 1500; Other.Fatness = 128; if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); } //this was lifted from the DeathMatchPlus class function GiveWeapon(Pawn PlayerPawn, class WeaponClass ) { local Weapon NewWeapon; if( PlayerPawn.FindInventoryType(WeaponClass) != None ) return; newWeapon = Spawn(WeaponClass); if( newWeapon != None ) { newWeapon.RespawnTime = 0.0; newWeapon.GiveTo(PlayerPawn); newWeapon.bHeldItem = true; newWeapon.SetSwitchPriority(PlayerPawn); newWeapon.WeaponSet(PlayerPawn); newWeapon.AmbientGlow = 0; if ( PlayerPawn.IsA('PlayerPawn') ) newWeapon.SetHand(PlayerPawn(PlayerPawn).Handedness); else newWeapon.GotoState('Idle'); PlayerPawn.Weapon.GotoState('DownWeapon'); PlayerPawn.PendingWeapon = None; PlayerPawn.Weapon = newWeapon; if ( !newWeapon.IsA('ImpactHammer') && !newWeapon.IsA('Translocator') ) { newWeapon.GiveAmmo(PlayerPawn); newWeapon.AmmoType.AmmoAmount = newWeapon.AmmoType.MaxAmmo; } } } function MutatorTakeDamage ( out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local int BPakDamage; BPakDamage = ActualDamage; Victim.Health -= BPakDamage; ActualDamage = 1; if ( NextDamageMutator != None ) NextDamageMutator.MutatorTakeDamage( ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType ); } Y(// ==================================================================== // Class: BPak.BPakSpecialTimer // Parent: Engine.Mutator // // // ==================================================================== class BPakSpecialTimer extends Mutator; var int SPTimer; var int SPCount; var bool SPFlag; var float AR; var float GS; var float AS; var float WS; var float JZ; var float MSH; function PostBeginPlay() { SPTimer = 100; SPCount = 0; SPFlag = false; SetTimer(0.5,true); Super.PostBeginPlay(); } function setBoomTime(Pawn P) { BroadcastLocalizedMessage(class'BPakMessage',0,,None,None); PlayerPawn(P).ClientPlaySound(Sound'BotPack.CTF.CaptureSound3'); P.AccelRate *= 1.5; P.GroundSpeed *= 1.5; P.JumpZ *= 1.5; P.AirSpeed *= 1.5; P.WaterSpeed *= 1.5; P.MaxStepHeight *= 1.5; } function reset(Pawn P) { P.AccelRate = AR; P.GroundSpeed = GS; P.JumpZ = JZ; P.AirSpeed = AS; P.WaterSpeed = WS; P.MaxStepHeight = MSH; } function ModifyPlayer(Pawn Other) { reset(other); if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); } function ScoreKill(Pawn Killer, Pawn Other) { reset(Other); Super.ScoreKill(Killer, Other); } simulated function Timer() { local Inventory Inv; local Pawn p; if ( !SPFlag ) { SPCount++; if ( SPCount == SPTimer ) { SPFlag = true; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('Bot') || P.IsA('TournamentPlayer')) setBoomTime(P); } } else { SPCount--; if ( SPCount == 0 ) { SPFlag = false; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('Bot') || P.IsA('TournamentPlayer')) { BroadcastLocalizedMessage(class'BPakMessage',1,,None,None); PlayerPawn(P).ClientPlaySound(Sound'BotPack.CTF.ReturnSound'); reset(P); } } } for ( P=Level.PawnList; P!=None; P=P.NextPawn ) { if ( P.IsA('Bot') || P.IsA('TournamentPlayer')) { if (P.Health > 0) { // ammo for( Inv=P.Inventory; Inv!=None; Inv=Inv.Inventory ) { if ( (Ammo(Inv)!=None) && (P.bFire==0) && (P.bAltFire==0) ) { if (Ammo(Inv).AmmoAmount < Ammo(Inv).MaxAmmo) { Ammo(Inv).AmmoAmount += Frand() * 5 + 1; if (Ammo(Inv).AmmoAmount > Ammo(Inv).MaxAmmo) Ammo(Inv).AmmoAmount = Ammo(Inv).MaxAmmo; } } } } } } for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('Bot') || P.IsA('TournamentPlayer')) { if ( P.Health > 0 && P.Health < 1500 ) P.Health += 5; } } w // ==================================================================== // Class: BPak.BPakMessage // Parent: Botpack.CriticalEventPlus // // // ==================================================================== class BPakMessage extends CriticalEventPlus; var localized String StartTime; var localized String EndTime; static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { Switch(Switch) { case 0: return Default.StartTime; break; case 1: return Default.EndTime; break; } } õs\ÿÿÿÿÿÿÿÿBœøÿÿÿÿÿÿÿÿÿÿ6rÎ0"Dõ ?$ý$†K[:"˜:_//============================================================================= // BomberTentacle. //============================================================================= class BomberTentacle expands Tentacle; Úq ;­šÔ9ÇÙ €Š{ //============================================================================= // BMiniWave. //============================================================================= class BMiniWave expands BShockWave; simulated function PostBeginPlay() { super.PostBeginPlay(); if ( !Level.bHighDetailMode || Level.bDropDetail ) LightType = LT_None; } simulated function Tick( float DeltaTime ) { local float ShockSize; ShockSize = 0.3/(ScaleGlow+0.05); if ( Level.NetMode != NM_DedicatedServer ) { ScaleGlow = (Lifespan/Default.Lifespan); AmbientGlow = ScaleGlow * 255; DrawScale = ShockSize; } } xYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw3.‘ÆÆ ü톢x]BPak.BMiniguns// ==================================================================== // Class: BPak.BMinigunMutator // Parent: BPak.BPakWeaponMutator // // // ==================================================================== class BMinigunMutator extends BPakWeaponMutator; â D/›:žÝ:$a!zÍÌÌ=ABw¦*b? u€]&// ==================================================================== // Class: BPak.BBelch // Parent: UnrealI.GasbagBelch // // // ==================================================================== class BBelch extends GasbagBelch; simulated function PostBeginPlay() { SetUp(); Texture = SpriteAnim[0]; i=1; SetTimer(0.02,True); Super.PostBeginPlay(); } simulated function Timer() { Texture = SpriteAnim[i]; i++; if (i>=6) i=0; Explode2(Location, Vect(0,0,0)); } simulated function Explode2(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); HurtRadius(Damage*2,150.0, MyDamageType, 60000, HitLocation); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; } simulated function Explode3(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); HurtRadius(Damage*2,150.0, MyDamageType, 60000, HitLocation); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; } auto state Flying { simulated function ProcessTouch (Actor Other, Vector HitLocation) { if (Other != instigator) { if ( Role == ROLE_Authority ) Other.TakeDamage(Damage, instigator,HitLocation, 15000.0 * Normal(velocity), 'burned'); Explode3(HitLocation, Vect(0,0,0)); } } simulated function Explode(vector HitLocation, vector HitNormal) { //local SpriteBallExplosion s; local UT_SpriteBallExplosion u; if ( (Role == ROLE_Authority) && (FRand() < 0.5) ) MakeNoise(1.0); //FIXME - set appropriate loudness u = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); //s = Spawn(class'SpriteBallExplosion',,,HitLocation+HitNormal*9); HurtRadius(Damage*3,150.0, MyDamageType, 60000, HitLocation); //s.RemoteRole = ROLE_None; u.RemoteRole = ROLE_None; Destroy(); } Begin: Sleep(0.5); Explode(Location, Vect(0,0,0)); } Þz-ë'a+‰ Ç ~|Ah x€c¿//============================================================================= // Bminigun. //============================================================================= class Bminigun expands minigun2; var float ShotAccuracy, LastShellSpawn; var int Count; var bool bOutOfAmmo, bFiredShot; var() texture MuzzleFlashVariations[10]; // set which hand is holding weapon function setHand(float Hand) { if ( Hand == 2 ) { FireOffset.Y = 0; bHideWeapon = true; return; } else bHideWeapon = false; PlayerViewOffset = Default.PlayerViewOffset * 100; FireOffset.Y = Hand * Default.FireOffset.Y; PlayerViewOffset.Y *= Hand; if ( Hand == 1 ) Mesh = mesh(DynamicLoadObject("Botpack.Minigun2L", class'Mesh')); else { Mesh = mesh'Minigun2m'; if ( Hand == 0 ) { PlayerViewOffset.X = Default.PlayerViewOffset.X * 95; PlayerViewOffset.Z = Default.PlayerViewOffset.Z * 105; } } } simulated event RenderTexture(ScriptedTexture Tex) { local Color C; local string Temp; Temp = String(AmmoType.AmmoAmount); while(Len(Temp) < 3) Temp = "0"$Temp; C.R = 255; C.G = 0; C.B = 0; Tex.DrawColoredText( 2, 10, Temp, Font'LEDFont2', C ); } function float RateSelf( out int bUseAltMode ) { local float dist; if ( AmmoType.AmmoAmount <=0 ) return -2; if ( Pawn(Owner).Enemy == None ) { bUseAltMode = 0; return AIRating; } dist = VSize(Pawn(Owner).Enemy.Location - Owner.Location); bUseAltMode = 1; if ( dist > 1200 ) { if ( dist > 1700 ) bUseAltMode = 0; return (AIRating * FMin(Pawn(Owner).DamageScaling, 1.5) + FMin(0.0001 * dist, 0.3)); } AIRating *= FMin(Pawn(Owner).DamageScaling, 1.5); return AIRating; } simulated event RenderOverlays( canvas Canvas ) { local UT_Shellcase s; local vector X,Y,Z; local float dir; if ( bSteadyFlash3rd ) { bMuzzleFlash = 1; bSetFlashTime = false; if ( !Level.bDropDetail ) MFTexture = MuzzleFlashVariations[Rand(10)]; else MFTexture = MuzzleFlashVariations[Rand(5)]; } else bMuzzleFlash = 0; FlashY = Default.FlashY * (1.08 - 0.16 * FRand()); if ( !Owner.IsA('PlayerPawn') || (PlayerPawn(Owner).Handedness == 0) ) FlashO = Default.FlashO * (4 + 0.15 * FRand()); else FlashO = Default.FlashO * (1 + 0.15 * FRand()); Texture'MiniAmmoled'.NotifyActor = Self; Super.RenderOverlays(Canvas); Texture'MiniAmmoled'.NotifyActor = None; if ( bSteadyFlash3rd && Level.bHighDetailMode && (Level.TimeSeconds - LastShellSpawn > 0.125) && (Level.Pauser=="") ) { LastShellSpawn = Level.TimeSeconds; GetAxes(Pawn(Owner).ViewRotation,X,Y,Z); if ( PlayerViewOffset.Y >= 0 ) dir = 1; else dir = -1; if ( Level.bHighDetailMode ) { s = Spawn(class'MiniShellCase',Owner, '', Owner.Location + CalcDrawOffset() + 30 * X + (0.4 * PlayerViewOffset.Y+5.0) * Y - Z * 5); if ( s != None ) s.Eject(((FRand()*0.3+0.4)*X + (FRand()*0.3+0.2)*dir*Y + (FRand()*0.3+1.0) * Z)*160); } } } function GenerateBullet() { LightType = LT_Steady; bFiredShot = true; if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ClientInstantFlash( -0.2, vect(325, 225, 95)); if ( AmmoType.UseAmmo(1) ) TraceFire(ShotAccuracy); else GotoState('FinishFire'); } function TraceFire( float Accuracy ) { local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z, AimDir; local actor Other; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); StartTrace = Owner.Location + CalcDrawOffset() + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(1000000, StartTrace, 2.75*AimError, False, False); EndTrace = StartTrace + Accuracy * (FRand() - 0.5 )* Y * 1000 + Accuracy * (FRand() - 0.5 ) * Z * 1000; AimDir = vector(AdjustedAim); EndTrace += (10000 * AimDir); Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); Count++; if ( Count == 4 ) { Count = 0; if ( VSize(HitLocation - StartTrace) > 250 ) Spawn(class'MTracer',,, StartTrace + 96 * AimDir,rotator(EndTrace - StartTrace)); } ProcessTraceHit(Other, HitLocation, HitNormal, vector(AdjustedAim),Y,Z); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local int rndDam; local UT_SpriteBallExplosion s; if (Other == Level) Spawn(class'UT_LightWallHitEffect',,, HitLocation+HitNormal, Rotator(HitNormal)); else if ( (Other!=self) && (Other!=Owner) && (Other != None) ) { if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9); else Other.PlaySound(Sound 'ChunkHit',, 4.0,,100); if ( Other.IsA('Bot') && (FRand() < 0.2) ) Pawn(Other).WarnTarget(Pawn(Owner), 500, X); rndDam = 9 + Rand(6); if ( FRand() < 0.2 ) X *= 2.5; Other.TakeDamage(rndDam+100, Pawn(Owner), HitLocation, rndDam*500.0*X, MyDamageType); } if(Pawn(Owner).bAltFire != 0 ) { s = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); s.DrawScale = s.DrawScale / 3; HurtRadius(80,120.0, MyDamageType, 60000, HitLocation+HitNormal*9); } } function Fire( float Value ) { Enable('Tick'); if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(1) ) { SoundVolume = 255*Pawn(Owner).SoundDampening; Pawn(Owner).PlayRecoil(FiringSpeed); bCanClientFire = true; bPointing=True; ShotAccuracy = 0.9; ClientFire(value); GotoState('NormalFire'); } else GoToState('Idle'); } function AltFire( float Value ) { Enable('Tick'); if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(1) ) { bPointing=True; bCanClientFire = true; ShotAccuracy = 0.3; Pawn(Owner).PlayRecoil(FiringSpeed); SoundVolume = 255*Pawn(Owner).SoundDampening; ClientAltFire(value); GoToState('AltFiring'); } else GoToState('Idle'); } simulated function PlayFiring() { if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); PlayAnim('Shoot1',1 + 0.3 * FireAdjust, 0.05); AmbientGlow = 250; AmbientSound = FireSound; bSteadyFlash3rd = true; } simulated function PlayAltFiring() { if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); PlayAnim('Shoot1',1 + 0.6 * FireAdjust, 0.05); AmbientGlow = 250; AmbientSound = FireSound; bSteadyFlash3rd = true; } simulated function PlayUnwind() { if ( Owner != None ) { PlayOwnedSound(Misc1Sound, SLOT_Misc, 3.0*Pawn(Owner).SoundDampening); //Finish firing, power down PlayAnim('UnWind',8.0, 0.05); } } //////////////////////////////////////////////////////// state FinishFire { function Fire(float F) {} function AltFire(float F) {} function ForceFire() { bForceFire = true; } function ForceAltFire() { bForceAltFire = true; } function BeginState() { PlayUnwind(); } Begin: FinishAnim(); Finish(); } /////////////////////////////////////////////////////// state NormalFire { function Tick( float DeltaTime ) { if (Owner==None) AmbientSound = None; } function AnimEnd() { if (Pawn(Owner).Weapon != self) GotoState(''); else if (Pawn(Owner).bFire!=0 && AmmoType.AmmoAmount>0) Global.Fire(0); else if ( Pawn(Owner).bAltFire!=0 && AmmoType.AmmoAmount>0) Global.AltFire(0); else GotoState('FinishFire'); } function BeginState() { AmbientGlow = 250; AmbientSound = FireSound; bSteadyFlash3rd = true; Super.BeginState(); } function EndState() { bSteadyFlash3rd = false; AmbientGlow = 0; LightType = LT_None; AmbientSound = None; Super.EndState(); } Begin: Sleep(0.0001); GenerateBullet(); Goto('Begin'); } state ClientFiring { simulated function AnimEnd() { if ( (Pawn(Owner) == None) || (AmmoType.AmmoAmount <= 0) ) { PlayUnwind(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else if ( Pawn(Owner).bAltFire != 0 ) Global.ClientAltFire(0); else { PlayUnwind(); GotoState('ClientFinish'); } } simulated function BeginState() { AmbientSound = FireSound; bSteadyFlash3rd = true; } simulated function EndState() { bSteadyFlash3rd = false; Super.EndState(); } } //////////////////////////////////////////////////////// state ClientFinish { simulated function bool ClientFire(float Value) { bForceFire = bForceFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ); return bForceFire; } simulated function bool ClientAltFire(float Value) { bForceAltFire = bForceAltFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ); return bForceAltFire; } simulated function AnimEnd() { if ( bCanClientFire && (PlayerPawn(Owner) != None) && (AmmoType.AmmoAmount > 0) ) { if ( bForceFire || (Pawn(Owner).bFire != 0) ) { Global.ClientFire(0); return; } else if ( bForceAltFire || (Pawn(Owner).bAltFire != 0) ) { Global.ClientAltFire(0); return; } } GotoState(''); Global.AnimEnd(); } simulated function EndState() { bSteadyFlash3rd = false; bForceFire = false; bForceAltFire = false; AmbientSound = None; } simulated function BeginState() { bSteadyFlash3rd = false; bForceFire = false; bForceAltFire = false; } } state ClientAltFiring { simulated function AnimEnd() { if ( (Pawn(Owner) == None) || (AmmoType.AmmoAmount <= 0) ) { PlayUnwind(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else if ( Pawn(Owner).bAltFire != 0 ) { if ( (AnimSequence != 'Shoot2') || !bAnimLoop ) { AmbientSound = AltFireSound; SoundVolume = 255*Pawn(Owner).SoundDampening; LoopAnim('Shoot2',1.9); } else if ( AmbientSound == None ) AmbientSound = FireSound; if ( Affector != None ) Affector.FireEffect(); if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); } else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else { PlayUnwind(); bSteadyFlash3rd = false; GotoState('ClientFinish'); } } simulated function BeginState() { bSteadyFlash3rd = true; AmbientSound = FireSound; } simulated function EndState() { bSteadyFlash3rd = false; Super.EndState(); } } state AltFiring { function Tick( float DeltaTime ) { if (Owner==None) { AmbientSound = None; GotoState('Pickup'); } if ( bFiredShot && ((pawn(Owner).bAltFire==0) || bOutOfAmmo) ) GoToState('FinishFire'); } function AnimEnd() { if ( (AnimSequence != 'Shoot2') || !bAnimLoop ) { AmbientSound = AltFireSound; SoundVolume = 255*Pawn(Owner).SoundDampening; LoopAnim('Shoot2',1.9); } else if ( AmbientSound == None ) AmbientSound = FireSound; if ( Affector != None ) Affector.FireEffect(); } function BeginState() { Super.BeginState(); AmbientSound = FireSound; AmbientGlow = 250; bFiredShot = false; bSteadyFlash3rd = true; } function EndState() { bSteadyFlash3rd = false; AmbientGlow = 0; LightType = LT_None; AmbientSound = None; Super.EndState(); } Begin: Sleep(0.08); GenerateBullet(); if ( AnimSequence == 'Shoot2' ) Goto('FastShoot'); Goto('Begin'); FastShoot: Sleep(0.08); GenerateBullet(); Goto('FastShoot'); } /////////////////////////////////////////////////////////// state Idle { Begin: if (Pawn(Owner).bFire!=0 && AmmoType.AmmoAmount>0) Fire(0.0); if (Pawn(Owner).bAltFire!=0 && AmmoType.AmmoAmount>0) AltFire(0.0); LoopAnim('Idle',0.2,0.9); bPointing=False; if ( (AmmoType != None) && (AmmoType.AmmoAmount<=0) ) Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo Disable('AnimEnd'); } z8z6„�ž-Éž-éÆ$ ]€€m m A ÿÿÿÿX m A ÿÿÿÿW A þÿÿÿw A ÿÿÿÿo A þÿÿÿ~Z ýÿÿÿV U úÿÿÿO A þÿÿÿ\ A þÿÿÿZ \ ýÿÿÿWm 1A ÿÿÿÿDA ÿÿÿÿa A üÿÿÿEA þÿÿÿ[ A üÿÿÿ`A ÿÿÿÿl A ÿÿÿÿ4A þÿÿÿA A òÿÿÿIZ ùÿÿÿNA ÿÿÿÿ[ \ ýÿÿÿw m $A þÿÿÿn A üÿÿÿkZ ýÿÿÿf A þÿÿÿA þÿÿÿ] \ ùÿÿÿYA üÿÿÿM] ðÿÿÿ0A üÿÿÿp [ öÿÿÿP Z ýÿÿÿp A òÿÿÿg A üÿÿÿW U úÿÿÿJ [ ûÿÿÿJ\ ùÿÿÿTA üÿÿÿuZ ûÿÿÿt A üÿÿÿrA üÿÿÿ A üÿÿÿB\ íÿÿÿs A üÿÿÿtA ÿÿÿÿR A ÿÿÿÿd A þÿÿÿ\ [ ñÿÿÿ \ ûÿÿÿ`Z ýÿÿÿR^ ûÿÿÿ}[ öÿÿÿD [ ùÿÿÿeA üÿÿÿw^ ûÿÿÿVA üÿÿÿV] ×ÿÿÿJ ^ ýÿÿÿY [ ýÿÿÿ9Y ñÿÿÿdY ýÿÿÿY \ íÿÿÿQ \ íÿÿÿU ~ýÿÿÿh \ ýÿÿÿr] ñÿÿÿu~ýÿÿÿ@ A ÿÿÿÿ_ \ ùÿÿÿM^ ýÿÿÿB m üÿÿÿz A åÿÿÿkA ÿÿÿÿR ~çÿÿÿX [ ùÿÿÿcU úÿÿÿC A üÿÿÿ ] ïÿÿÿL \ ïÿÿÿN A üÿÿÿi] ïÿÿÿc] ûÿÿÿ:[ ñÿÿÿ[ ýÿÿÿ6Z ãÿÿÿv [ öÿÿÿf ^ ìÿÿÿb ] ÙÿÿÿK ÜÿÿÿZ ùÿÿÿ^\ çÿÿÿfA üÿÿÿ_ A üÿÿÿqA üÿÿÿX Z ýÿÿÿS^ ýÿÿÿQ A üÿÿÿQA üÿÿÿr \ ìÿÿÿk[ ùÿÿÿy[ ýÿÿÿ,Z íÿÿÿr A òÿÿÿJ­ÿÿÿ\ çÿÿÿv^ çÿÿÿ`Z ñÿÿÿS\ ýÿÿÿLA üÿÿÿS \ ÌÿÿÿSA ÿÿÿÿA[ ÄÿÿÿbA þÿÿÿY A üÿÿÿe \ Âÿÿÿq\ éÿÿÿj ~Üÿÿÿ^ ýÿÿÿh [ ûÿÿÿe[ ùÿÿÿ^ Z ýÿÿÿ[ [ ùÿÿÿr\ ïÿÿÿi S |ÿÿÿN [ ùÿÿÿdm åÿÿÿ] A þÿÿÿX ^ ýÿÿÿL \ ïÿÿÿfZ ïÿÿÿg\ ìÿÿÿ\ ÙÿÿÿA üÿÿÿU [ ³ÿÿÿ{ Z ýÿÿÿl \ ýÿÿÿx A ÿÿÿÿi[ íÿÿÿf ïÿÿÿaÐÿÿÿDãÿÿÿTY ùÿÿÿdA åÿÿÿH[ ìÿÿÿq\ ïÿÿÿq A üÿÿÿ\ U ýÿÿÿc A þÿÿÿZ Þÿÿÿ(Z gÿÿÿn Z ùÿÿÿtÒÿÿÿ(^ ùÿÿÿHÎÿÿÿUÞÿÿÿÔÿÿÿ;[ ûÿÿÿEZ ±ÿÿÿ@[ ûÿÿÿd\ ïÿÿÿM \ ýÿÿÿq [ ýÿÿÿOÄÿÿÿ{Þÿÿÿ}Z ìÿÿÿa žÿÿÿZ ûÿÿÿo Þÿÿÿ_^ ýÿÿÿj m òÿÿÿ_A üÿÿÿx Z ²ÿÿÿz[ ùÿÿÿ_ A üÿÿÿh [ Ðÿÿÿb�ÿÿÿ!Z ÙÿÿÿBZ ûÿÿÿi Âÿÿÿ~ÙÿÿÿZ éÿÿÿh A üÿÿÿ` \ ùÿÿÿ_ªÿÿÿ(ÞÿÿÿTÎÿÿÿ!A üÿÿÿ[ \ ùÿÿÿG^ çÿÿÿ^ÞÿÿÿUZ çÿÿÿ\^ ®ÿÿÿb ~ÜÿÿÿA åÿÿÿ@A åÿÿÿA åÿÿÿA~¡ÿÿÿïÿÿÿ\ Ñÿÿÿk ^ ®ÿÿÿ][ ÐÿÿÿF A åÿÿÿGA üÿÿÿY m òÿÿÿI~ÜÿÿÿFZ ²ÿÿÿyZ ýÿÿÿA A åÿÿÿT ïÿÿÿTïÿÿÿU^ ®ÿÿÿL ~¡ÿÿÿ~ýÿÿÿÒÿÿÿ[ ûÿÿÿaA üÿÿÿM \ ýÿÿÿE Z ¶ÿÿÿV Z ñÿÿÿR\ ýÿÿÿm ] ðÿÿÿ8A üÿÿÿL ÐÿÿÿÂÿÿÿYÔÿÿÿÎÿÿÿGÔÿÿÿ([ ûÿÿÿDZ ªÿÿÿp \ ùÿÿÿ][ ÄÿÿÿF A åÿÿÿnA üÿÿÿhA ÿÿÿÿSãÿÿÿ(Y úÿÿÿY \ ùÿÿÿ|X ùÿÿÿ+[ ûÿÿÿpX ùÿÿÿ^ãÿÿÿ\ ãÿÿÿw [ ûÿÿÿb^ ýÿÿÿN[ ùÿÿÿJ] ×ÿÿÿZ\ éÿÿÿo ~ýÿÿÿ [ ýÿÿÿc Z éÿÿÿN [ ýÿÿÿmY ëÿÿÿz A åÿÿÿDZ ²ÿÿÿ|A òÿÿÿIZ ²ÿÿÿd[ ýÿÿÿO[ ûÿÿÿn[ ûÿÿÿI[ ùÿÿÿ` ~¶ÿÿÿeZ ùÿÿÿZ~ûÿÿÿ ^ çÿÿÿc\ ãÿÿÿx Z éÿÿÿh[ ãÿÿÿ`ÒÿÿÿUOPÿÿÿ~ A üÿÿÿjA üÿÿÿN A ÿÿÿÿO~vÿÿÿéÿÿÿfA üÿÿÿH éÿÿÿyA üÿÿÿs P üÿÿÿj ~ãÿÿÿA üÿÿÿF A üÿÿÿt A üÿÿÿ~~ýÿÿÿ Z ìÿÿÿs A üÿÿÿy ~vÿÿÿA üÿÿÿ^ \ ýÿÿÿH~Ùÿÿÿ A ÿÿÿÿc Z ûÿÿÿ[\ ˜ÿÿÿn\ ýÿÿÿ^ [ �ÿÿÿJ \ Íÿÿÿe [ ÍÿÿÿPA üÿÿÿd A üÿÿÿQ ] ×ÿÿÿUA üÿÿÿR [ éÿÿÿq O.ÿÿÿl \ ýÿÿÿ\ Y éÿÿÿr Y éÿÿÿs Z éÿÿÿt Z éÿÿÿ^ ~éÿÿÿOO.ÿÿÿn R ³ÿÿÿ ^ ûÿÿÿO A ÿÿÿÿ[ [ ªÿÿÿD ~`ÿÿÿ~ÿÿÿ[ ëÿÿÿlA ÿÿÿÿM [ ëÿÿÿb Z ëÿÿÿM I ³ÿÿÿA ~Jÿÿÿ~Jÿÿÿ[ ûÿÿÿBZ ¶ÿÿÿz~@ÿÿÿ~ùÿÿÿg~$ÿÿÿ~bÿÿÿ~bÿÿÿA üÿÿÿJ ~Òÿÿÿx~_ÿÿÿ\ œÿÿÿ}] œÿÿÿ~~eÿÿÿ~eÿÿÿ[ ûÿÿÿUZ ýÿÿÿ[ ~<ÿÿÿA üÿÿÿu \ ûÿÿÿiA òÿÿÿU ~Wÿÿÿ\ ˜ÿÿÿz~ ÿÿÿ~¶ÿÿÿc~mÿÿÿA üÿÿÿS ~mÿÿÿ~ÿÿÿY ùÿÿÿb~BÿÿÿA üÿÿÿg A üÿÿÿI A üÿÿÿc ~Bÿÿÿ~uÿÿÿ~’ÿÿÿI\ ùÿÿÿs^ ÍÿÿÿdZ ùÿÿÿF\ ùÿÿÿL[ Íÿÿÿo[ ùÿÿÿIA åÿÿÿB~ÍÿÿÿKA åÿÿÿt~²ÿÿÿy~žÿÿÿx~ÿÿÿ~Âÿÿÿ~ïÿÿÿ@P üÿÿÿ@ A åÿÿÿF[ ûÿÿÿr ÔÿÿÿT~4ÿÿÿïÿÿÿ(~?ÿÿÿA ÿÿÿÿb ~@ÿÿÿA ÿÿÿÿi \ ùÿÿÿ~~Ðÿÿÿ@A üÿÿÿ` ^ ýÿÿÿK \ qÿÿÿ{ A üÿÿÿG ~ùÿÿÿl~ÿÿÿm üÿÿÿF yþÿÿf~ÒÿÿÿoÔÿÿÿU[ ëÿÿÿ] ~’ÿÿÿR ³ÿÿÿ| \ ùÿÿÿAA üÿÿÿ~ ~ãÿÿÿ ~úÿÿÿd ™ÿÿÿ~Îÿÿÿ~ÞÿÿÿoÒÿÿÿTA üÿÿÿ] A þÿÿÿ^ R ³ÿÿÿ~ ~AÿÿÿA üÿÿÿT ~_ÿÿÿ~ÔÿÿÿoA üÿÿÿz ] hÿÿÿ~~ªÿÿÿy~$ÿÿÿ ~Îÿÿÿ&~Îÿÿÿ Z ùÿÿÿQZ “ÿÿÿZ ùÿÿÿN\ hÿÿÿ}~Òÿÿÿj~Äÿÿÿ&~ÔÿÿÿA üÿÿÿO ~Þÿÿÿ#~ãÿÿÿ&~ÄÿÿÿW~Ñþÿÿ~úÿÿÿ~Ôÿÿÿ@Z éÿÿÿA Z ùÿÿÿ\~Þÿÿÿ&~éÿÿÿn\ ïÿÿÿO ~rþÿÿ|~ûþÿÿh~Ôÿÿÿj~íÿÿÿ ~ñÿÿÿZ \ ùÿÿÿs~Wÿÿÿ ~Îÿÿÿ#~éÿÿÿq~žÿÿÿ \ ùÿÿÿL~éÿÿÿp~ãÿÿÿgZ ìÿÿÿN ^ “ÿÿÿF~ñÿÿÿI~ªÿÿÿ#A åÿÿÿC~ñÿÿÿ~oÿÿÿ\ àþÿÿm m åÿÿÿx^ ýÿÿÿg Z ñÿÿÿmO/þÿÿk ~éÿÿÿ}A üÿÿÿC ~éÿÿÿXZ Äÿÿÿb A òÿÿÿi A ÿÿÿÿ}A üÿÿÿb~ÎÿÿÿJA üÿÿÿK ~Îþÿÿz~�ÿÿÿA~éÿÿÿ[A üÿÿÿE ~éÿÿÿ3~éÿÿÿp~éÿÿÿI~uÿÿÿ~�ÿÿÿ&~éÿÿÿ_~Tÿÿÿ~Tÿÿÿ[ íÿÿÿQ ~™ÿÿÿ@~ÞÿÿÿyOPÿÿÿ} X úÿÿÿA ~Ôÿÿÿl~éÿÿÿW~éÿÿÿA~Îÿÿÿ5~™ÿÿÿ5~éÿÿÿj~nÿÿÿ [ ýÿÿÿE \ íÿÿÿM ~éÿÿÿf~Îÿÿÿ@~“ÿÿÿB~éÿÿÿl~Òÿÿÿl] ãÿÿÿA Z ãÿÿÿe [ ùÿÿÿl~èþÿÿ^ ýÿÿÿK~æþÿÿA üÿÿÿ} ^ éÿÿÿ[ ~íÿÿÿ~Þÿÿÿj~bÿÿÿ5~ÐþÿÿJ~Ôÿÿÿ [ ùÿÿÿ{~ãÿÿÿ#m üÿÿÿi~éÿÿÿo~Gÿÿÿ~GÿÿÿI~žÿÿÿ~’ÿÿÿr~’ÿÿÿP~Tÿÿÿ~éÿÿÿ~~æþÿÿLOôýÿÿu Osþÿÿo Z ªÿÿÿs~Ðÿÿÿ~èþÿÿL~™ÿÿÿ~uÿÿÿI~Þÿÿÿ~Þÿÿÿ P üÿÿÿy X ùÿÿÿB~mÿÿÿ~uÿÿÿOP òÿÿÿu ~éÿÿÿg\ ÌÿÿÿmA üÿÿÿg ~Âÿÿÿ ~ÍÿÿÿI ~ïÿÿÿS~ïÿÿÿ%\ Îþÿÿf A üÿÿÿV P òÿÿÿv ~ÿÿÿ ~Îÿÿÿ?~Îÿÿÿ2~éÿÿÿF\ Ñÿÿÿl m üÿÿÿR~TÿÿÿVY ïÿÿÿW \ ûÿÿÿv ~Jÿÿÿ ~Òÿÿÿ^ éÿÿÿH \ ÑÿÿÿuY Ìÿÿÿd Y ûÿÿÿQ^ ýÿÿÿd~ãÿÿÿ2~ãÿÿÿ?~ãÿÿÿM\ ýÿÿÿg~ÿÿÿ ^ ýÿÿÿH ~mÿÿÿ ~mÿÿÿ\ ýÿÿÿy ~éÿÿÿi~“ÿÿÿ`~ ÿÿÿ \ éÿÿÿp ~Wÿÿÿ~WÿÿÿO.ÿÿÿm I ³ÿÿÿ@ [ ³ÿÿÿ} ~Þÿÿÿc~Þÿÿÿ2~Þÿÿÿ?~ÞÿÿÿC~¶ÿÿÿo~Rÿÿÿ ~Rÿÿÿ~Rÿÿÿk~Rÿÿÿr~Rÿÿÿ~¶ÿÿÿc~eÿÿÿ ~eÿÿÿ~Þÿÿÿ@~Òÿÿÿ@~Îÿÿÿ~<ÿÿÿ~<ÿÿÿ~éÿÿÿ{|ûÿÿÿC~Vÿÿÿ~Vÿÿÿ~Vÿÿÿ~Vÿÿÿ~VÿÿÿZ çÿÿÿ[~Aÿÿÿ~Aÿÿÿ~éÿÿÿJ\ çÿÿÿf~_ÿÿÿ ~_ÿÿÿ~éÿÿÿA üÿÿÿP Þÿÿÿ!~éÿÿÿn~Òÿÿÿ~Òÿÿÿ2~Òÿÿÿ?~bÿÿÿ Z “ÿÿÿD~éÿÿÿb~ÒÿÿÿR~éÿÿÿV~îþÿÿ ~îþÿÿZ ûÿÿÿ_~eþÿÿ~TÿÿÿOÒÿÿÿ!~Òÿÿÿ"~Òÿÿÿz~™ÿÿÿ2~™ÿÿÿ?~™ÿÿÿ"~™ÿÿÿl~™ÿÿÿ}~’ÿÿÿO~hþÿÿnOPÿÿÿ| ~Îÿÿÿ"~&þÿÿjOPÿÿÿ{~Âÿÿÿ \ �ÿÿÿI ~ÿÿÿ ~ÿÿÿ~ÿÿÿ ~`ÿÿÿ~`ÿÿÿ~`ÿÿÿ~`ÿÿÿ[ ÍýÿÿH ~Ðÿÿÿ5~éÿÿÿem üÿÿÿpOeýÿÿK ~Ðÿÿÿ?~ÿÿÿ~ÿÿÿ~nÿÿÿk~nÿÿÿr~nÿÿÿ ~nÿÿÿ~nÿÿÿ~Ðÿÿÿ2[ çÿÿÿm~4ÿÿÿ ~4ÿÿÿ~éÿÿÿh~Òÿÿÿy~€þÿÿZ çÿÿÿ^~(ÿÿÿ ~(ÿÿÿ~(ÿÿÿ~(ÿÿÿ~éÿÿÿ}~)ÿÿÿ ~)ÿÿÿ~)ÿÿÿ~)ÿÿÿ~oÿÿÿ ~oÿÿÿ~oÿÿÿk~oÿÿÿr~oÿÿÿn~oÿÿÿ~Ôÿÿÿ}~Ôÿÿÿ2~Ôÿÿÿ?éÿÿÿkA üÿÿÿa ~ÿÿÿ~Ôÿÿÿi~Ôÿÿÿx~nÿÿÿ~^ÿÿÿ~^ÿÿÿ~^ÿÿÿ~^ÿÿÿ~^ÿÿÿY ïÿÿÿX ~pþÿÿY ïÿÿÿV ~‚þÿÿ~ïÿÿÿb~ÿÿÿ~ÿÿÿ~Ôÿÿÿz~Ôÿÿÿ"~Ôÿÿÿ\~?ÿÿÿ ~Gÿÿÿ ~Gÿÿÿ~éÿÿÿB~’ÿÿÿ~’ÿÿÿ ~éÿÿÿi~ùÿÿÿ&~GÿÿÿOA üÿÿÿB ~uÿÿÿ ~uÿÿÿuOsþÿÿZ ~éÿÿÿ`~�ÿÿÿP üÿÿÿD ŒïK  NÓÊ|g[Ó’éT BÜŒ±XOÜ‹á ]ÜŒàD  kÜŒaR  xÜŒØK EÝâLsSÝŒ×d FâŒÐS T⌳E bâŒïj qâ‹ËK ~âŒÈK  KãŒËWXãŒÊS fã¾KMtã‹éjAæ ¹W  OæŒà4\æŒÅS jæ‹áR  xæ’aD  EçŒÉS  QçŒÇS  ^ç jPkç‹ÃW  {éŒéVHꌻS VêŒÃYdê  { rê’ºN êŒéL  LëŒé\Y댵S g달C uë‹­T Cì ØX R쌰K  _ì éa  lì‹án  y쌨r F팪K  S틹} `팶S ní’Ç`  |í ºX IS  Vî‹ÉC cK  qî‹•L ~î Q  Lï‹“k Yï‹”k ga  uï‹™C Bð õQ  PðŒaK  ]ðŒŸS jðŒ�V xð‹Èk Eñ  K  Sñ‹éh_ñ‹¡|mñ’ u {ñŒ¤K  Hò‹¬ UòŒ¥K  còŒ§S  pòµ±Y }ò äk  Jó‹éiWó‹Êk  eó RK  ró’SW ~ó‹¨k  Jô‹Wo WôÚ­l dôŒ…K  pô‹Å }ô‹V Kõ‹µ Yõ‹Z} gõ‹]k uõ‹Ëf Cö‹µC QöŒ_U _öŒUK  löÚ}l yö‹Ê E÷óCXS÷ŒU kù’ƒW xùŒ�S Dú‹Èf Rú‹�C `ú ‡K  nú‹Êf {úŒŠK  IûŒvVû‹ÅC fû‹ËP  tû‹ÐC Aü‹�C Oü’�M  ]üÚ’l iü ó] uüµäl  Bý’S`  Oý‹¹P \ý‹ [jýÅxý‹�f Gþµ t UþÖDgbþ‹¹D I€‹¹W€’hW e€‹ÈP r€‹�f @�‹»C N�‹�} \�‹}T j�‹ìk  y� â] F‚‹â[S‚ÈFga‚‹ZD H„ŒãK  V„‹ZP c„‹ÈD q„‹µf „‹êf M…ŒÐ\[…µØk  i…ÉEgu…’éd \‡ÐHgi‡‹ÊC P‰ÊGg^‰‹’T E‹\clT‹‹Z@�‹È} N�‹Ðf \�ŹWj�‹ºO x�Œsr EŽ’ S RŽ  ] ^ŽŒÈ_  kŽ’`  xŽ‹ÇE  D�‹ó[Q�ŒÜS _�‹Îk m�ŒzS {�’ W I�’hS V�ŒqS b�ŒbS p�Œ“K  ~�’³T K‘‹Ð X‘Œó^f‘ X u‘Ÿù,B’’VC  n’ ¦|  {’ ™K  G“’Ã`  T“‹È`“Œ²@  n“‹¯k {“‹éP  I”‹´C V”‹¹C d”ˆÎ¨Gr”‹ñk y•ŒÔT G–‹� T– ‰K  b–’»D  o–Œ¢b  {– ÖI  H—‹ \ U—‹]D b—Åp—Œµw —‹ÊL˜ŒÅ\ Z˜Œ°Pg˜‹´k  u˜ŒMS B™‹“T P™ `K  ^™ŒKgk™ŒcS y™µ¸z  Gš OF  Tš‹r  `š‹Œ  mšÁ[}zš ÎK  wœ‹¹C D�’ŽW R� ¤X ^�‹ÊP k� wK  y� |K  Fž‹”f Sž‹´ ažŒV` ožŒ–g}žŒ¯w KŸŒì_ XŸ‹°P fŸ¤SMsŸ ÛK  @¢’¡w M¢Œéw Y¢ Å{  f¢’‘R  s¢ �K  @£’‘W M£Œâ^Y£‹¶C  h£’ÇK u£’³F  B¤‹œP N¤Œi\ \¤‹Åf i¤‹]P  w¤ŒOmD¥ŒéH  S¥‹ËD `¥‹œD n¥ ¸F  |¥ŒÇsI¦Œí\ W¦‹´D d¦‹W  r¦’¸x  ¦xL§‹xK©‹éf Z©µÄ@  h©µÄt u©‹â\ Aª‹ó\ NªŒ m[ªŒiS iª Ä  wª‹¾f D«’±F  R«‹“f ^«Œœ\l«‹éD {«‹É I¬Œ ^W¬’œW  f¬‹Ýk r¬‹�P @­’ÃG  N­‹œf [­‹„k  i­ ãX v­Œá`  C®{xP®�LCH±¤XYK¿‹¯D dÁ‹•D rÁ‹•f @ÂŒ¡b N‹´]‹ ZkÂ’´Z yÂ’ìB  FË]f SÃ’ZX aÃ’´N nÃ’´[ {ÃŒZS  HÄ’´P UÄ’ÈT  aÄ’´_ mÄ‹·C zÄ‹ÈC HÅŒ­EVÅ‹È dÅ‹ZC rÅŒÀS @Æ‹Z NÆ‹óZ\Æ’°o  jÆ‹¯P wƵkt  EÇ‹¯f Qǵkx _Ç’PN lÇ‹�xÇ’YM  FÈŒJ~  RÈ‹Éf _ÈŒ÷F mÈŒTF zÈ‹»aGÉŒXF UÉŒüS bÉ’S  pÉŒ[K  |ɈÁÌDIÊ ™_  MËŒþF YË �_  f˵éP  rË‹™ ~Ë‹\f  LÌ‹qC  YÌ‹�G  fÌé]NsÌ `_  AÏ w_  MÏ‹ˆD YÏŒ¾S gÏ’¹X uÏ‹‹  BЋøC OЋ¹  ]ÐŒ¬D jÐŒS yЋÜC  GÑ‹ŒC TÑ’ºj  bÑ‹zC  oÑŒ·F |Ñ‹“D IÒ‹“P WÒˆù)eÒ‹rC NÓŒù\\Ó‹bC  jÓ‹�D wÓŒV\EÔ‹”D SÔ‹”P  aÔ’—S  nÔŒRS zÔŒF HÕ |_  UÕŒ S  aÕŒS  nÕ‹ñf {Õ‹ñD IÖ‹ñP  WÖßXWdÖ‹•k {Ø‹•P  IÙŒ©r VÙŒ®K  cÙŒÔK pÙŒ³S ~ÙŒ¸G LÚ‹´f [Ú Î_  iÚ‹ÐD uÚ Û_  CÛ‹´P OÛ ‰_  ]ÛŒ¼S iÛ‹Ýf wÛ‹ÝD EÜ‹½ SÜŒÄS aÜŒ‡S oÜ‹ÝP  }Ü‹ýC JÝŒÖpXÝ‹õE f݈Р_sÝ‹ÊD RàŒ¬P `à§{Poà‹Í âˆÏ¨IMMã‹gC ZäŒ�S  häŒÂb u䋾C CåŒa Qå‹âZ_å‹cC  måŒø\zåŒÙS Hæ‹E VæŒ_a cæÅh qæŒçS @ç’¸B  NçŒ~  [çŒS  hçŒøS uç‹çC  Cè‹C  Pè‹C ]è’k k茬b wè‹ùC Fé äj  T錬\aé‹ÃC  pé Öi  }錹S  Iê‹ÐP VêŒôgdêŒýF rêÅàB êŒûF Më‹üC  Zëµ y gëŒOOt댬f C쌬e Rì‹÷C _ìŒgF mì‹ûC zì‹�C Hí‹� Ví‹þC dí§MVrí²vWHðãQH_€®{L g„¼^G s�v`z™§QPZ›Öc$uj�¢w{ _¥¤RmZ²ÓbQGµðT\X¸¬C_ t¹ïPbSÈß\ARuİ@oGǤS\vË‘IcRψŠNu×çTyCÛÓaS|à‹MC  OåµñW \åŒ{ iå‹»f xå‹û FæŒÖoTæàuObæ’“B  qèŒÿR  }èŒJ JéÝŸZ Xé‹“U fé‹g té‹ý Bê‹· PêŒ}E^êŒK@ mê‹öC  {ꋹf HëŒò@  V댜R cëŒÍ`  qëŒëS ~ë’îB  L쌽`  Xì‹ÛC eì’ñF  s쌒E@í‹�P  Oí‹�D \í‹óC jí‹“f xí‹TC Fî‹ Tb bîŒÊg  pî‹÷ }î’”B  Kï‹�u W eï‹ù sﵸy  Að‹âC NðŒô@ \ðÅñMjðŒƒ`  yð‹Î FñŒÛ{ Tñ‹ÎC cñ’ÝF  qñ‹‹C ~ñÅÝMLò~{[ò’ÒB  Vô÷Öd  bô‹ÖC oô’¿B  }ô’äZ Iõ’ä[ Võ‹ÖE cõ’äw qõ’äN }õ’ä_ JöÚ@JWö ®X aø’äP nø‹ C {øÚCN Iù ±a Uù‹XC bù‹µP pù‹T ~ù‹X Lú‹» Zú‹ƒ hú‹µD vúÚCg Dû‹¾P  Qû‹¾D ^ûŒ–@ lûÊIzûŒ£`  CþµÝW PþLZ}]þ’êB  Z€ˆÔ Ì eg€‹£ L‚’sB  Z‚µ¯W g‚’¯F  t‚‹êD Aƒ‹êP  OƒŒ˜R  \ƒ’°G iƒŒ³wvƒÔ_OE„’ªT  T†ÛNP`†ãeJpˆ‹Zf zŠãhKH‹‹ˆf S�‹¦Pa�Ùlfo�‹ì U�‹ìC c�ïxiq�‹ˆP  Z“µÕe  g“’†p t“ŒUS @” ±v  N”’‚R  [”’€R  g”’]F  s” pP  @•Å]ML•’èB  [•ŒæS g•’ðB  u•’ßT  A–‹þ M–ůM[–’šR  j– [X v–’{R  C—’~R  O— vP  [—’tB  g—’yB  s—’nB  @˜ lP  L˜µ]W X˜ˆÕLLFe˜ˆÀ ³O_k™ŸÚÓy[JœˆåOkežŸß¹,P¡ËBZ|¡ˆü³l\V¥Ÿßž,r¦ˆÌ¿gb^§ˆúÕBd@©ˆ°Ned®ˆüo|vI°ˆÜOIs±ˆëOrr¸ˆ°Ged¼ˆê ³ysI¾ˆÃ±#`|ÁˆúÁ@I\ȈÒdPOeɈÇ^5^tÊŸÞ³(BRΈâÓ3XTψӞFBlшËlNnÔˆËNd|Úˆé³R`ÜŸîÄ,rÝŸà±U-^ÞŸÑÁaCK߈�N@NàˆäÓgrNâˆËjY@åŸßÀ,YçˆÀemEèˆéÁSSrêçV^EìˆÝ$cîŸÎmf-GïˆêÁ%UtïˆËQdIñˆÇÀHmòˆÿ¿ Juôˆø³]÷Ÿß,\ùˆÎ ÁbZHúˆþž CbýŸÓT-eÿˆáx,R€ˆËud~€ˆøÓf(b‚ˆÓ¹FBJƒˆÆ¸j@L†ˆ×ÓX'Lˆˆð ÓHsˆˆÇÓp<{ŠˆÑdr-w‹ˆÄÓqCdŒˆãÓpXg�ˆõ-C�ˆ´<cB’ˆÇ Óibe“ˆÌÁgbG–ˆÔÓ~ai—ˆÏ µ OJ™ˆ´O}Y›ˆÇÛfV�ˆÇK|žˆæ²&HG¡ˆá Ó`EO¥ˆ´zHT§ˆì¸yJ\©ˆû ÓV`f¬ˆþ¼jHF®ˆÉ¼ VN°ˆï¼Hdµˆõ› sl¹ˆÉ dOU_¼ˆZ et¾ˆÏ³o>YÀˆÇžFWÁˆúÓn(]ÄŸÒ¿D:EňڸonňË#NmΤkP{ÑˆÔ oOKÔˆÈgdZ׈B P~؈ï¼lKN݈ìÆI)YÞˆëÃ@YB߈ä<q[ãˆñÓF{LåˆËezGçˆ-iAéˆÄ ›[jëˆæ« zEíŸÜ³IòˆÓ³CHôˆí³jzKøˆÆ¿@IEüˆò±5GNýˆè± \U�ˆÍ Cj=q„ˆúÓOPn…Ÿì ,~†ˆå·yfj‡ˆç±&FP�ˆÒdGV’ˆ¶G@]–ˆägW]˜ˆñ¸#Wtšˆö¼@hK ˆó´Wus¦ˆôÓjNhªˆCÂITv«ˆÛ ·&EJ®ˆÙ¿\O°ˆsÁGk±Ÿhù+r²Ÿhõ+]³ˆÆVAH´ˆsÂGI¸ˆù¸&RP¹Ÿîº,b¿ˆâ Ó{cNÀˆÂÌ l qňî´&o]ψ̷#xLÕˆÕÓ}mDÜŸé´{hqâˆCÚITYäˆô½SmæŸßÛ,@éˆò&SléŸö²!vñˆ÷Ñ Guó—r@|÷ˆoZ|ýíYSV€ˆÚ c`i…ˆÈ Õ`GI‡ˆù±@dP�ˆsÚGt”Ÿh,{•ˆÈ»JMg–ˆËÏdt˜ˆóÃ5dXšŸå¿=|œˆîÞ Cy�ˆGt|ŸˆìdIp¤ˆ·JSo«ˆÞ ³@\B®Ê^Q ^±ŸæõY-oºˆÌå5\»ˆ×õgQ¼ˆÏ /Yx½ˆÏfaQÀˆÛÃCrÒˆÌ 5uÕˆß ±EjÖˆþÀ io܈ݸEXÞˆþä q ]àˆÞ¸ ENêˆÙ ¿5qSìˆâOO\DJS`ðˆÜ ¨OvsòŸÊ�Siôˆô³VD|õˆäõC@÷ˆÒÆyCùˆÎÆN|úŸÊ°SJüˆäút]ýˆ×úgQÿˆ¶N@x€ˆäCx‚ˆâ¼o>{„ŸÊ¶Sy…ŸØÓfCL‡ˆ×gO‰ˆËäeræ‹C pçŒo~ç’p|  Lè   YèˆÂL#fèŒJS Iéˆú°;Wéˆç° ORê µK  aë’ÊX nëˆÍL {ë÷d  Xì‹E dì‹C rìŒo@í   Níˆú¶;[íˆç¶ OV] 4eeïµzw  JôˆÍÓohVôˆ× ÓBc~õµ¦w  a÷’Øw  n÷ˆñÓAOz÷ˆÚ ÓiQIùœÔ] 4BZúœ+] 4F\ÿ ‘  b„œù] 4ao„‹‘O P�yq^�œ1] 4FO�ˆØ djU”ˆÙ d #•ˆÛº3b–‹ŽC U—÷Žd  c—µyw  p—ˆù Ób=|—ˆçÓ_Cy˜ˆðÓW3|™œ¿] 4\>ošµ z KÙœõ] 4{WÙˆ÷ x5RñˆÚ Óe5Gòˆé Óh5|òˆÀ M\qóœ] 4bMöˆûÓl%o”œm] 4ET•íW_Y¦Ý¼w x¨ˆäÓI`F©ˆì ÓJJfªˆàÓ[;p¬ˆñ Ó}:k­ˆ~*e®œF] 4YO¯‹×C  h²÷×d  u²ˆÞ O @B³ˆß Ou$B´‹Q  f´œÕ] 4s#s´ísVfØœT] 4c|Ú’�X _ÞœÓ] 4~·lÞˆç j– XV H—ŒXoU—‹XC c—‹XE q—÷Xd  —œä] 4gK˜‹³C  r�œ/] 4X �‹ÅD Wª‹ÅP eªˆÒ ¸?isªœ,] 4e\¬ˆÕ ¨ "A°ˆÖ ¨Lc°Üngo²œg] 4\V´pxr·œi] 4~j¹œ] 4kh¾ˆU(SØœž] 4k%{Ø‹ÙC  fþ’®e  sþœ²] 4@)þœµ] 4D §ˆá  AC³’rT  D´‹ëC  P´ˆÙ ­!]´mv~´œv] 4Bt¶‹ÄC  v»œÌ] 4N C¼ˆÜ ´RQÆœÛ] 4FcȈáå AiÛ’|T  jÜ‹æC  vÜœ] 4uCÝ‹ÀC  xñˆá º)Eòionòœ‚] 4z]ôˆÙº'Wùœ)] 4e~ùœ±] 4J”cýâMbm‘œ‡] 4oO“œË] 4e~–ˆû¹)c›ˆþ¹ ^Lœœ] 4Gj�fnq²œ�] 4|_´œ·] 4Z@[¹ˆÚN)uùˆÇ¹?^ú‹‘C ]û‹‘  kûˆûÀ