*&@GV'zU.@ZG&NoneVectorCoreDSA_Wicked_XtremeEngine GameplayUVULVL MatCoordsSystem ReplaceWithDSADynamicObjectTicklocalizedNamehudIconCoordshudIconinventoryIcon infoStringhudRefireIconCoords StaticMeshhudRefireIconweapons animClass aimClassthirdPersonStaticMeshfirstPersonMeshfirstPersonOffsetroundsPerSecond animPrefixthirdPersonAltStaticMeshprojectileClassprojectileVelocityfirstPersonAltOffsethasAmmofirstPersonAltMeshprojectileInheritedVelFactorweaponUseEnergy Allocate coolDown damageAmt'setHasAmmoSkins DeathMessageuseAmmothirdPersonAttachmentOffsetplayEquippableAnimbuildControllableSkinssetControllableSkinsTriggerEffectEvent BeginState energyUsage ammoCountRotatorhudReticuleWidthlookAtInheritPitchhudReticuleCenterX ShieldPack hideOccupantoccupantAnimationoccupantConnectionmakeProjectileoccupantRelativeRotationoldOccupantWeaponhudReticuleCenterY occupantexitAnimationManifestXPositionenterAnimationbNotLabelledInManifestwantsToGetOutoccupiedAnimationfirstPersonCameraLocationoccupantRelativeLocationoccupantControllerStatefirstPersonWeaponLocationtoBePossessedthirdPersonCameraManifestYPositionunoccupiedAnimation hudReticuleMeshhudReticuleHeightType DrawScale3D RemoteRole DrawType NextVersion bNetNotify bWasDeployedradiusDamageMomentumConstruct_VoidthirdPersonMeshradiusDamageSizeremovePassiveEffectUnTriggerEffectEvent SpindownapplyPassiveEffectSpinupTimerAmmofinishActiveEffectrechargeTimeSeconds FireWeaponunifiedGetCOMPositionrechargeScalebIgnoreEncroachersradiusDamageAmtdialMaterialIndex#PrecacheDSADynamicObjectRenderDataIdle bNeedIdleFXdetachGrapple FirePressed DestroyedDiedPostBeginPlayRemove SpeedPackHealthRadiusstartActiveEffect weaponClassbReplicateAnimationsspeedRelativeCooldowndurationSeconds isInWaterupdateHeatGlowSpawnBurningAreascaleRefireRateresetRefireRateGetScalabilitySettingSpawnChildren rootBone SpawnChild StartFadeOutdispatchMessageequipmentHead&Construct_ActorNameVectorRotatorFloatGetChildSocketNamesendServerRequestDetachGrappleLoadSkinsFromMaterialsheatUp BurnTargetGetExplosionSocketNameaddSpeedPackScale bCanDropspawnFallbackWeaponsendServerRequestReleaseFireGetOverlayMaterialForOwner IgnitionremoveSpeedPackScaleRapidCooldownCreateAlphaStyle GravityScale SetAlphabNeedLifetimeEffectEvents KnockbackExploderampUpTimeSecondsSpread throwForcefirstPersonAltTraceExtent ActivatingbFirstPersonUseTraceammoSkinChangefirstPersonAltTraceLengthfirstPersonTraceExtenthandleReleaseFirefirstPersonBobMultiplier canUnequipTriggerequippedArmAnimnumberOfBullets playIdleAnimcatapultInfluenceaccumulationScaleverticalInfluenceattentionFXDurationconstruct_NameNameattentionFXSpacingattentionFXMaterialDroppedHeld dropVelocitydroppedElasticityTurret FuseTimerBounceVelocityModifierSpeedPackActiveDSAShockMineActivebUpdateSimulatedPositionPostTakeDamage HatchOpenStart HatchOpening HatchClosingDepTurretBaseLordsSpeedPackLordsShieldPackLordsRepairPack SniperAreaSniperProjectileWickedDSASniperRifle VulcanSMGOffsetUltrafusorProjectile Ultrafusor ShockLance RocketGun PlasmaGun LordsMortarLordsLauncherLordsLaserRifle LordsBlasterLazerProjectilehavokDataClass LazerBeambEnableHavokBackstepGrabber DSASpeedPackDSASniperRifleProjectile DSAShockMineDSAShieldPackDSARocketGunProjectilebActorShadowsDSARepairPackDSAMPBDSAMortarProjectile DSALoadoutDSAGrenadeLauncherProjectileDSAEnergyPackDSAEmergencyStationDSADeployedTurretSentryWeaponDSADeployedTurretDSADeployedRepairerDSADeployedCatapultDSAChaingunProjectile DSACatapultCutterProjectileCutter Buggy_StandlocalJammingSwitchjammingSwitch packClassequipDurationShadowscableMaterialIndex reelInDelayreelinLengthRatemaxRopeLengthropeNonCollisionLength ropeClass repairRate grenadeClasssocketFrontDown EnergyPack socketBackUpsocketBackDown ChaingunBucklerBurner RocketPodGrenadeLauncherBlaster Spinfusor SniperRiflejammingRadiusjammingPeriodSecondsnumProjectiles launchDelay Grappler spiralRate spreadRadiusMortar EnergyBlade spreadPeriodconvergeRadiusconvergePeriodpostSpreadVelocitypostSpreadAccelerationmaxAnglePerSecondrotationModifierheatMaterialIndexpassiveFractionDamageBlockedactiveFractionDamageBlockedspeedCooldownFactorcoolDownThreshold heatPeriod spinPeriod hitStayTime armingDelayproximityHeight maxSpread minSpreadproximityRadiusburnDamageRateReductionburnDamageRate burnTime Catapult fadeRatepostIgnitionVelocity RepairPackpostIgnitionColHeight CharacterpostIgnitionColRadiusignitionDelaybDrawDriverInTPplasmaMaterialIndex'maximumNumberInventoryStationPositions numberInventoryStationPositionsinventoryStationOffset ElasticityAngularDamping Explosion releaseFireAmountPeripheralVisioncheckingDamageheightGearcanFirecheckingDmgVelMultiplierBuggycheckingMultiplierrefireRateScalepassiveRefireRateScalelostReturnDelayprojSpawnDelaydeflectionAngle minCheckRatesocketFrontUp AirSpeedCollisionRadiuspassiveHealthPerPeriodProjectileHit FireReleasedcalcProjectileSpawnLocationactiveExtraSelfHealthPerPeriodCollisionHeightbCollideActors DrawScaleactiveHealthPerPeriodpassivePeriod RotationRate activePeriod handleFirefireRatePassedplayPostFireAnim ShouldHitrequestEquipmentDropselfRepairRate Unequipping ChassisMassplayEquipAnimplayUnequipAnimsocketFrontLeftbRotateToDesiredTickFirePressed EquippingsocketFrontRightunifiedAddTorqueClientDetectDeflectionunEquip profilesAwaitingPickupunifiedAddForceAtPositionunifiedAddForcesocketBackLeftBurningunifiedAddImpulseapplyPartialActiveEffectstartApplyPartialActiveEffectGetProjectileSpreadScalesocketBackRightShouldDeflectregisterClientMessageyawAxisbFlipYawDisplayManifestLayoutMaterial friction BlockingExplosionForceDrop FadeOutAlpha GrenadeInfoOnEffectStartedFadeOutLengthactiveLightSkinactiveLightSkinSlotrepairPackClass flipTriggers&updateGrapplerRopeEquippedFirstPersonboostImpulsePerSecond DamageType construct_SniperRifleProjectileknockbackAliveScaleHitWallUnTouchPostNetReceive PreBeginPlayfireAnimSubStringconsumableClassTribesPlayerDriving grenadesDeselectAttach SelectAttach CableIdleconsumableList ConstructTextureRange closeRadius LightingChaingunProjectileKarmaForceGrenadeLauncherProjectileMortarProjectile Collision LightColor motorClassdriveYawCoefficient bDeflectable accessClassDeployedCatapultDeployedRepairerDeployedTurret Movement Start_Empty ShockMineSpindown_IdleDeployedSensorTower TriggerEventPlayerVehicleTurreting returnTime HatchClosed InitializePeripheralVisionZAnglePostNetBeginPlayAI_LOD_LevelMPreactionDelayUpdatePrecacheRenderData respawnDelay positionsdamageTypeClass accessRadiussetNativeActorDataDS_FullDS_NoDynamics accessHeightShouldProjectileHit IdleAttach beginReelIn endReelInAlive fireState armingPeriodvehicleCameraTraceExtentsknockBackVelocitygunnerClientTurnRateMass onMessage weaponListunifiedAddImpulseAtPositionbVehicleCameraTrace pitchBonereleaseFireState turretBone turretClassgunnerMinimumPitchgunnerMaximumPitchgunnerCameraOffsetgunnerWeaponOffsetgunnerAITurnRatecollisionDamageMagnitudeScale ReplaceActorAddPrecacheStaticMeshStopThresholdMessagePreRender Projectile Equipment Modifier equipped SkeletalMeshInitVecPlayerCharacterCharacterEquippableAnimatorEquippableAnimator EquippableIRepairClientPawnAimArcWeaponsAimProjectileWeaponsDeployedTurretSentryWeapon TexPannerBuggyMountedTurretBuggyHavokData MaterialControllableTextureRotatorControllableTexturePannerEmergencyStationAccessSpinfusorProjectileSniperRifleProjectileSniperRifleBeamSentryProjectileRocketPodProjectileProjectileDamageType GrapplerRopeGrapplerProjectile BurningAreaActor ScriptTextELabelBurnerProjectileProcessedTextiABCXYZWPitchYawOriginXAxisYAxisZAxisAlphaGR Location Rotation Velocity ReturnValueQuatRotateVectorQuatFromAxisAndAngleLoadoutScaleCoords BuggyMotorMessageUserRoleTagMessageDestroyed TexRotatorShaderMutatorspeedPackScaleIEffectObserverEventOuterClassprojectileSpawnBonePackage LevelInfoColorModifier CombinerConstantColor Controller HealthKitPhysicsVolumeEmitter HavokActorHUDParticleEmitterLevel GetMaterialShallowCopyMaterialAnimBlendParamsGetBoneCoordsHavokImpartImpulseHavokActivate getSocketRook Position bWaterVolume NormalMap lifetime bProjTargetStylebHiddenEmergencyStation EmittersUOffsetPackVOffset Material2TargetMNext bClientOnlyKillerenergy VolatileLinearDamping LimitedLife Invulnerable TextBufferVstationLightShaderpacksWeapon SensorTowerburningAreaClassRepairStation Children StationarySkeletalMeshActorObjectEnumHeavyChaingunHeldHeavyGraplerHeld HeavyBlade HeavyBurnerHeavyGrappler HeavyBlasteractiveHitMaterialpassiveHitMaterialHeavyBlasterHeldHeavySpinfusorHeavyRocketPodHeavyGrenadeLauncherHeavyChaingunHeavySpinfusorHeldHeavyRocketPodHeld FunctionStateColorStructNameHeavyGrenadeLauncherHeldHeavyBurnerHeldHeavyBladeHeld GrapplerHeld BucklerHeld MortarHeldSniperRifleTracerBlasterProjectileBucklerProjectilespinfusorheld ChaingunHeld BladeHeldSniperRifleHeldScreenFindmeShaderFadeOut ColorScale regenerationRateHealthPerSecondenergyMaximumenergyRechargeScaleDisc StrProperty BaseObjectsBladeGrenadeRocketFXS_Actor Engine_resfireLocfireRotbIsFirstPerson rookOwnerInvButtonsEnergyStructPropertyArrayPropertyClassProperty NamePropertydeflectionNormalInvButtonSpeedbReelIn bAttachedprojshieldFractionDamageBlocked shieldActiveregenerationActivefallbackWeapon dialShaderbControllableSkinSet dialCombinerspreadInRotUnitsweHaveIgnition spinTime overheated heatTime heatShaderheatColorMaterial heatColorcharacterOwner actualSpreadheldBy localHeldByInvButtonBurnerInvButtonBucklerFreeze Explosions StyleCreated FadingOutNextVersionPendingNextVersionCalledEScalabilitySetting DynClassExplosionObject SocketNameSocketPositionSocketRotation SocketScale ChildNameoriginalEnergyRechargeScale fireOncebDisallowFire cableShadercableTexPannercableNormTexPannerflameDamageReductionPerSecondflameDamagePerSecondflameDamageType flameSourcenumProjectilesFiredangleIncreament fireAnim initialZAxisoffsetVecAngle currentIdle currentHitcurrentHitTime lastHealthbWarnedcurrentOverlaysecsUntilNextFiredialTexRotatorShieldPackDroppedEnergyPackDroppedRepairPackdroppedSpeedPackdroppedInvButtonGrapplerObjectPropertyInvButtonBladeInvButtonSniperRifleInvButtonShieldInvButtonRocketPodInvButtonRepairInvButtonMortarInvButtonGrenadeLauncherInvButtonBlasterFloatPropertyInvButtonChaingunInvButtonSpinfusor GUITribesChildCubeCppTextOwner PanDirectioninStartedEffectNetMode Instigator TouchingSkinsbClientHavokPhysicsSelfIlluminationDiffuseIndexOtherp!Construct_ActorNameVectorRotator NewScaleDelta DeltaSecondsImpulseEnabled FadeOutTime DeltaTimeEventInstigator HitNormal BoolPropertyTouchLocation TouchNormalDamage IntPropertyreticuleDirect reticuleLobTabsreticuleScatterRoverSchematicreticuleSniper ByteProperty Deployables HitLocationDepRepairStationPhysicsObjectsEquipmentClassesWeaponGrenadeLauncherWeaponChaingunWeaponSpinfusorWeaponHandGrenade Vehicles MomentumprojectileFactortorqueprojInstigatorG Li KUB$h0f i3333t8{SQb9SQt8{SQt8{b9h0h0h0h0h0h0h0h0h0Ph0U h0h0h0h0 U^V^A{ // official properties Health = 400 Mass = 50 Elasticity = 0.3 friction = 0.8 LinearDamping = 0 AngularDamping = 0.05 Invulnerable = false Blocking = true Stationary = false Enabled = false Shadows = true Volatile = false Freeze = false FadeOut = false Explosion = true ExplosionForce = 10000 LimitedLife = false LifeTime = 0 // fade properties FadingOut = false FadeOutAlpha = 255 FadeOutTime = 0 FadeOutLength = 0.5 // next version state NextVersionPending = false NextVersionCalled = false // actor properties bAcceptsProjectors=false // dont want this on the majority of little meshes (big CPU waster). artists can turn on for specific larger meshes bNoDelete = false bActorShadows = true RemoteRole = ROLE_None StaticMesh = StaticMesh'PhysicsObjects.Cube' bNeedLifetimeEffectEvents = true 1..\DSA_Wicked_Xtreme\Classes\DSADynamicObject.ucO$HBz$>~$L?{$L=x$Cx|@$@FB$CE$?c]XNi *The object is stationary and cannot move %N@ 5Child objects spawned when this object is destroyed Cxq$5@tGi:The amount of time it takes for the chaingun to overheat FThe amount of time it takes for the chaingun to spin up or spin down x>& _KBm"7;C9k $The amount of health in the object @WV|XB@ 9Explosion objects spawned when this object is destroyed }@fHZ[v(ous> T1.sqLw1*m ' FM11 ]The number of rockets to fire WyPmnc FObject will only appear in the world for this long before fading out o@vIThe amount of damage per second caused when burned by this burning area |AThe amount by which the burnDamageRate will decrease per second ^MJ6zeۏzhl l l UŢlU^V^{ /..\DSA_Wicked_Xtreme\Classes\DSASniperRifle.uc:^\~@@W`ahhM.~-Caa9Zp_Close &&MMa9Zp_Open & Se: kc:The angular deviation from ideal line of fire in degrees LqSAGI )S XUWFTCBV[#Amount of energy to use when shot Dl  >Force applied to child objects when this object is destroyed b :Launch child objects with initial explosion (true/false) p RIf true, object will only hang around for Lifetime amount of time after spawning d IFadeout object when destroyed (requires material to be setup correctly) e KChild objects all freeze immediately on spawning (useful for art testing) f HObject will explode immediately on collision or when hit with a weapon g 4Use projected shadows with this object (expensive) h %Start enabled in physics right away   /Blocks players and collide with other objects j /Object will be invulnerable to weapon attacks E#Amount of energy to use when shot #Amount of energy to use when shot #Amount of energy to use when shot q%Number of bullets to fire when shot :Max angular deviation from ideal line of fire in degrees ubWYde#Amount of energy to use when shot g=The number of seconds to wait in between each rocket firing n#Amount of energy to use when shot u7The number of seconds this burning area will burn for &Damage type for the burn area object 8AL&A delay before reeling in will occur FCHPvD*L-λ U^|IV^E{ damageAmt = 75 radiusDamageAmt = 80 radiusDamageSize = 300 radiusDamageMomentum = 105000 bNetTemporary = false StaticMesh = StaticMesh'Weapons.Disc' DrawScale3D = (X=0.75,Y=0.75,Z=0.75) deathMessage = '%s copped it off %s\'s Spinfusor' 5..\DSA_Wicked_Xtreme\Classes\UltrafusorProjectile.ucl$B^$C[$G,*)$BU:@?@?@?IHALNRQ@VT@\YDGOThe wearer's energy recharge rate will be passively multiplied by this amount wHHow much to scale the refire rate of all weapons when the pack is worn ZwJHow much to scale the refire rate of all weapons when the pack is active GIOThe wearer's energy recharge rate will be passively multiplied by this amount 3#Amount of energy to use when shot `X#/' Q#Amount of energy to use when shot b-*b. &u x_YaŦ; lU^V^X{ damageAmt = 120 // Use a teeny-weeny disc for now StaticMesh = StaticMesh'Weapons.Grenade' DrawScale3D = (X=0.85,Y=0.85,Z=0.85) deathMessage = '%s copped it off %s\'s Sniper' knockback = 60000 knockbackAliveScale = 0.25 // reduce knockback while alive because the sniper rifle is not meant to be a knockback weapon 9..\DSA_Wicked_Xtreme\Classes\DSASniperRifleProjectile.uc,*)$B^$`jGN$>U:Y?Y?Y?F+&E =The maximum angle the spread will increase to during heatup }bUd`@h PU^X V^C { bDeflectable = true bNetNotify = true bNetTemporary = false damageAmt = 50 radiusDamageAmt = 150 radiusDamageSize = 250 radiusDamageMomentum = 10000 spiralRate = 120.0 armed = false armingPeriod = 0.000001 spreadRadius = 75.0 spreadPeriod = 0.5 convergeRadius = 25.0 convergePeriod = 1.5 postSpreadVelocity = 2000 postSpreadAcceleration = 500 maxAnglePerSecond =180.0 rotationModifier = 1.0 StaticMesh = StaticMesh'Weapons.Rocket' DrawScale3D = (X=0.5,Y=0.5,Z=0.5) deathMessage = '%s copped it off %s\'s RocketPod' 7..\DSA_Wicked_Xtreme\Classes\DSARocketGunProjectile.ucR$BK$75S$BV$?W$AX$?Y$DZ$C[$4C\$?l$C^$zC[$@F,*)$HBiU:???Yf:HHOThe wearer's energy recharge rate will be passively multiplied by this amount ~Vd[2 g+dl l l l l l l  PU^X V^q { thirdPersonMesh = StaticMesh'Packs.RepairPack' StaticMesh = StaticMesh'Packs.RepairPackdropped' inventoryIcon = Texture'GUITribes.InvButtonRepair' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=307,V=162,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=307,V=114,UL=80,VL=40) LocalizedName = "LordsRepair" Infostring = "Passive effect slowly heals the user. Active effect quickly repairs allies and objects within range." rechargeTimeSeconds = 20 rechargeScale = 6 rampUpTimeSeconds = 0.2 durationSeconds = 30 activePeriod = 30 radius = 6000 activeHealthPerPeriod = 1000 activeExtraSelfHealthPerPeriod = 100 passivePeriod = 0.7 passiveHealthPerPeriod = 20 accumulationScale = 1 socketFrontUp = "CHILD02" socketFrontDown = "CHILD03" socketBackUp = "CHILD00" socketBackDown = "CHILD01" ...\DSA_Wicked_Xtreme\Classes\DSARepairPack.ucj$@[$AY$333?y$EX$zDT$BP$Aq$?M] CHILD02A] CHILD03C] CHILD00D] CHILD01g$A`$L>~$A]] LordsRepair]hfPassive effect slowly heals the user. Active effect quickly repairs allies and objects within range.Z $C$"C$B $ BZ $C$B$B $ BMkHThe fraction of the heatPeriod at which the gun can start firing again 6:ALength of time that the hit material is displayed for on damage ;Multiplier for the speed when calculating cooldown/heatup Af\lɢ4~ PU^V^h{ FuseTimer = 0.75 BounceVelocityModifier = 0.15 damageAmt = 200 radiusDamageAmt = 200 radiusDamageSize = 2000 radiusDamageMomentum = 250000 GravityScale = 0.8 bNetTemporary = false StaticMesh = StaticMesh'Weapons.Grenade' deathMessage = '%s copped it off %s\'s Mortar' 4..\DSA_Wicked_Xtreme\Classes\DSAMortarProjectile.uc|$@?}$>l$HC^$D[$$tH,*)$HC[$L?Dh_nLpyۜ U^V^O{ FuseTimer = 1 BounceVelocityModifier = 0.24 damageAmt = 50 radiusDamageAmt = 25 radiusDamageSize = 300 radiusDamageMomentum = 105000 GravityScale = 1.0 DrawScale3D = (X=0.5,Y=0.5,Z=0.5) bNetTemporary = false StaticMesh = StaticMesh'Weapons.Grenade' deathMessage = '%s copped it off %s\'s GrenadeLauncher' =..\DSA_Wicked_Xtreme\Classes\DSAGrenadeLauncherProjectile.uc|$?}$u>l$A^$C[$G,*)$HBU:???[$?Eib2oMmIYΈg U^V^B { inventoryIcon = Texture'GUITribes.InvButtonsEnergy' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=410,V=62,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=410,V=11,UL=80,VL=40) LocalizedName = "LordsEnergy" Infostring = "Passive effect increases the user's energy recharge rate. Active effect provides the user with a sudden boost of acceleration." boostImpulsePerSecond = 320000 rechargeScale = 6 rechargeTimeSeconds = 1 rampUpTimeSeconds = 0.25 durationSeconds = 0.50 thirdPersonMesh = StaticMesh'Packs.EnergyPack' StaticMesh = StaticMesh'Packs.EnergyPackdropped' ...\DSA_Wicked_Xtreme\Classes\DSAEnergyPack.ucK$@Hj$@g$?`$>~$?]] LordsEnergy]@Passive effect increases the user's energy recharge rate. Active effect provides the user with a sudden boost of acceleration.Z $C$xB$B $ BZ $C$0A$B $ BrOMq#Amount of energy to use when shot jo_yPR)9 U^<-R-L"a!dfq!d-L-R @wzAw 2! L`6`$69?%6`~w*~;j;6j; Af'k-'k `! Cv"E az' DF_% EHu*v-' vXclass DSASniperRifle extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local SniperRifleProjectile p; local SniperRifleBeam b; p = SniperRifleProjectile(Super.makeProjectile(fireRot, fireLoc)); if (p != None) b = new class'SniperRifleBeam'(p); return p; } simulated function Tick(float Delta) { local Character characterOwner; Super.Tick(Delta); characterOwner = Character(rookOwner); if (bIsFirstPerson) { if (!IsAnimating()) PlayAnim(Name(animPrefix $ "_Close"),,, 1); AnimBlendParams(1, characterOwner.energy / characterOwner.energyMaximum); PlayAnim(Name(animPrefix $ "_Open"),,, 1); } } simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } IMKV*369?%  Nf$!w*J Plz*;lle 1Qr_9'r-(rH J=bO=-'=JH==f j:;Overlay material to be used when shield has been impacted R:;Overlay material to be used when shield has been impacted ` class DSAShieldPack extends Gameplay.ShieldPack; var (ShieldPack) float passiveFractionDamageBlocked; var (ShieldPack) float activeFractionDamageBlocked; var (LordsShieldPack) float rechargeScale "The wearer's energy recharge rate will be passively multiplied by this amount"; var float originalEnergyRechargeScale; var (ShieldPack) Material passiveHitMaterial "Overlay material to be used when shield has been impacted"; var (ShieldPack) Material activeHitMaterial "Overlay material to be used when shield has been impacted"; var (ShieldPack) float hitStayTime "Length of time that the hit material is displayed for on damage"; var float currentHitTime; var float lastHealth; simulated function applyPassiveEffect(Character characterOwner) { characterOwner.shieldActive = true; characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; originalEnergyRechargeScale = characterOwner.energyRechargeScale; characterOwner.energyRechargeScale = rechargeScale; } simulated function removePassiveEffect(Character characterOwner) { characterOwner.shieldActive = false; characterOwner.energyRechargeScale = originalEnergyRechargeScale; } simulated function startActiveEffect(Character characterOwner) { lastHealth = characterOwner.health; characterOwner.shieldFractionDamageBlocked = activeFractionDamageBlocked; } simulated function finishActiveEffect() { if (heldBy != None) heldBy.shieldFractionDamageBlocked = passiveFractionDamageBlocked; } simulated event Material GetOverlayMaterialForOwner(int Index) { if (currentHitTime <= 0) { return currentIdle; } else { return currentHit; } } simulated function tick(float deltaSeconds) { super.tick(deltaSeconds); if (currentHitTime > 0) currentHitTime -= deltaSeconds; if (localHeldBy != None) { if (lastHealth != localHeldBy.health) { if (lastHealth > localHeldBy.health) { currentHitTime = hitStayTime; } lastHealth = localHeldBy.health; } } } Gclass DSARocketGunProjectile extends Gameplay.RocketPodProjectile; WT_y7TGT-(T% \+b >QG++\+-'+9D Vclass DSASniperRifleProjectile extends Gameplay.Projectile; a'class DSASpeedPack extends Gameplay.SpeedPack; var (SpeedPack) float refireRateScale "How much to scale the refire rate of all weapons when the pack is active"; var (SpeedPack) float passiveRefireRateScale "How much to scale the refire rate of all weapons when the pack is worn"; var Character user; var (LordsSpeedPack) float rechargeScale "The wearer's energy recharge rate will be passively multiplied by this amount"; var float originalEnergyRechargeScale; var bool bWarned; simulated function applyPassiveEffect(Character characterOwner) { user = characterOwner; scaleRefireRate(passiveRefireRateScale); originalEnergyRechargeScale = characterOwner.energyRechargeScale; characterOwner.energyRechargeScale = rechargeScale; } simulated function removePassiveEffect(Character characterOwner) { resetRefireRate(); characterOwner.energyRechargeScale = originalEnergyRechargeScale; } simulated function startActiveEffect(Character characterOwner) { scaleRefireRate(refireRateScale); user.TriggerEffectEvent('SpeedPackActive',,,,,,,self); } simulated function finishActiveEffect() { resetRefireRate(); applyPassiveEffect(user); user.UnTriggerEffectEvent('SpeedPackActive'); } simulated function scaleRefireRate(float scale) { local Equipment e; local Weapon w; e = user.equipmentHead(); while (e != None) { w = Weapon(e); if (w != None) w.addSpeedPackScale(scale); e = e.next; } if (user.fallbackWeapon == None) user.spawnFallbackWeapon(); if (user.fallbackWeapon != None) user.fallbackWeapon.addSpeedPackScale(scale); } simulated function resetRefireRate() { local Equipment e; local Weapon w; e = user.equipmentHead(); while (e != None) { w = Weapon(e); if (w != None) w.removeSpeedPackScale(); e = e.next; } if (user.fallbackWeapon == None) user.spawnFallbackWeapon(); if (user.fallbackWeapon != None) user.fallbackWeapon.removeSpeedPackScale(); } simulated event Material GetOverlayMaterialForOwner(int Index) { return currentOverlay; } simulated function OnEffectStarted(Actor inStartedEffect) { local Emitter e; local int i; e = Emitter(inStartedEffect); if (e != None) { for (i = 0; i < e.Emitters.Length; i++) { e.Emitters[i].SkeletalMeshActor = user; } } else super.OnEffectStarted(inStartedEffect); } g class DSARepairPack extends Gameplay.RepairPack implements IRepairClient; var (LordsRepairPack) float rechargeScale "The wearer's energy recharge rate will be passively multiplied by this amount"; var float originalEnergyRechargeScale; simulated function applyPassiveEffect(Character characterOwner) { originalEnergyRechargeScale = characterOwner.energyRechargeScale; characterOwner.energyRechargeScale = rechargeScale; characterOwner.regenerationActive = true; characterOwner.regenerationRateHealthPerSecond = passiveHealthPerPeriod; } simulated function removePassiveEffect(Character characterOwner) { characterOwner.energyRechargeScale = originalEnergyRechargeScale; characterOwner.regenerationActive = false; characterOwner.regenerationRateHealthPerSecond = 0; } ]class DSAMortarProjectile extends Gameplay.MortarProjectile; w class DSAMPB extends Gameplay.Buggy; Cclass DSALoadout extends Gameplay.Loadout; qclass DSAGrenadeLauncherProjectile extends Gameplay.GrenadeLauncherProjectile; [Eb 6@EBZDEEX aclass DSAEnergyPack extends Gameplay.EnergyPack; aU_@CUD V class DSAEmergencyStation extends Gameplay.EmergencyStation; cfz(B[2!~  ef#q'Cb `!~ g}B/8Jfw*>.Ow>*> R}r*Tw* R} jSQ' )S)T kPL' )P)Q mMwu' )M)N h'CH'Jaw'*B.'JwB*BX''r*Tw*X nN:' sJk&- J lpV]h  qo{Dex:.{kw:*9%h97:9:9"v{ tGpZ&- GH uEq%- E |BR[%- BC Dclass DeployedSensorTower extends Gameplay.SensorTower; tmclass Grabber extends Gameplay.Burner; var() class ropeClass; var() float ropeNonCollisionLength "The amount of rope at the end which won't collide, allowing you to swing around things"; var() float maxRopeLength "The maximum length of the rope"; var() float reelinLengthRate "The rate at which the rope will reel in when the trigger is held"; var() float reelInDelay "A delay before reeling in will occur"; var bool bDisallowFire; var Shader cableShader; var ControllableTexturePanner cableTexPanner; var ControllableTexturePanner cableNormTexPanner; var() int cableMaterialIndex; var bool bControllableSkinSet; var() float energyUsage "Amount of energy to use when shot"; replication { reliable if (Role < ROLE_Authority) sendServerRequestDetachGrapple; } simulated function PostNetBeginPlay() { super.PostNetBeginPlay(); registerClientMessage(class'MessagePreRender', Level.label); } simulated function buildControllableSkins() { cableShader = Shader(ShallowCopyMaterial(GetMaterial(cableMaterialIndex), self)); if (cableShader != None) { cableTexPanner = new class'ControllableTexturePanner'; cableTexPanner.PanDirection = Vector(TexPanner(cableShader.Diffuse).PanDirection); cableTexPanner.Material = TexPanner(cableShader.Diffuse).Material; cableNormTexPanner = new class'ControllableTexturePanner'; cableNormTexPanner.PanDirection = Vector(TexPanner(cableShader.NormalMap).PanDirection); cableNormTexPanner.Material = TexPanner(cableShader.NormalMap).Material; cableShader.Diffuse = cableTexPanner; cableShader.NormalMap = cableNormTexPanner; } if (cableTexPanner != None && cableNormTexPanner != None) setControllableSkins(); } simulated function Tick(float DeltaTime) { local Character c; local float newScale; Super.Tick(DeltaTime); if (bIsFirstPerson && equipped) { if (bControllableSkinSet) { c = Character(Owner); if (c != None && c.proj != None) { if (!c.bAttached) { newScale = cableTexPanner.Scale + DeltaTime * 3; if (newScale > 1.0) newScale = newScale - 1.0; cableTexPanner.Scale = newScale; cableNormTexPanner.Scale = newScale; } else if (c.bReelIn) { newScale = cableTexPanner.Scale - DeltaTime; if (newScale < 0.0) newScale = newScale + 1.0; cableTexPanner.Scale = newScale; cableNormTexPanner.Scale = newScale; } } } else buildControllableSkins(); } } simulated function setControllableSkins() { local int i; if (Skins.Length <= cableMaterialIndex) Skins.Length = cableMaterialIndex + 1; for (i = 0; i < cableMaterialIndex; ++i) { Skins[i] = None; } Skins[cableMaterialIndex] = cableShader; bControllableSkinSet = true; } simulated function ammoSkinChange() { if (bControllableSkinSet) setControllableSkins(); else buildControllableSkins(); } simulated function drop() { if (Level.NetMode == NM_Client && Character(Owner) != None) Character(Owner).detachGrapple(); super.drop(); } protected function requestEquipmentDrop() { if (Character(Owner) != None) Character(Owner).detachGrapple(); super.requestEquipmentDrop(); } function bool canUnequip() { local Character c; c = Character(rookOwner); return c.proj == None || c.bAttached; } simulated function onMessage(Message m) { local Character c; super.onMessage(m); if (equipped && bIsFirstPerson) { c = Character(Owner); if (c != None) c.updateGrapplerRopeEquippedFirstPerson(); } } protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { Character(rookOwner).proj = GrapplerProjectile(super.makeProjectile(fireRot, fireLoc)); return Character(rookOwner).proj; } simulated function playIdleAnim() { local Character c; c = Character(rookOwner); if (c.proj != None) { if (c.bAttached) animClass.static.playEquippableAnim(self, 'IdleAttach'); else animClass.static.playEquippableAnim(self, 'CableIdle'); } else super.playIdleAnim(); } simulated function playEquipAnim() { local Character c; c = Character(owner); if (c != None && c.proj != None && c.bAttached) animClass.static.playEquippableAnim(self, 'SelectAttach'); else Super.playEquipAnim(); } simulated function playUnequipAnim() { local Character c; c = Character(owner); if (c != None && c.proj != None && c.bAttached) animClass.static.playEquippableAnim(self, 'DeselectAttach'); else Super.playEquipAnim(); } simulated function Timer() { Character(rookOwner).bReelIn = true; } simulated state Held { simulated function BeginState() { local Character c; c = Character(rookOwner); if (c != None) c.bReelIn = false; super.BeginState(); } } simulated state FirePressed { simulated function BeginState() { local Character c; c = Character(rookOwner); if (c.proj == None) bDisallowFire = false; if (c.bAttached && !c.bReelIn) SetTimer(reelInDelay, false); super.BeginState(); } simulated function TickFirePressed() { local Character c; if (bDisallowFire) return; c = Character(rookOwner); if (c.proj == None && canFire() && fireRatePassed()) { bDisallowFire = true; FireWeapon(); c.bReelIn = true; } if (fireOnce) GotoState('Idle'); } } function beginReelIn() { local Character c; c = Character(rookOwner); if (c.bAttached) c.bReelIn = true; } function endReelIn() { Character(rookOwner).bReelIn = false; } event simulated bool releaseFire(optional bool bClientOnly) { local Character c; c = Character(rookOwner); if (Role != ROLE_Authority && !bClientOnly) { if (!c.bReelIn) sendServerRequestDetachGrapple(); else sendServerRequestReleaseFire(); } return handleReleaseFire(); } private function bool sendServerRequestDetachGrapple() { local Character c; c = Character(rookOwner); c.bReelIn = false; return sendServerRequestReleaseFire(); } simulated state FireReleased { simulated function BeginState() { local Character c; SetTimer(0.0, false); c = Character(rookOwner); if (c.bReelIn) c.bReelIn = false; else c.detachGrapple(); super.BeginState(); } } simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } yzXThe amount of rope at the end which won't collide, allowing you to swing around things { The maximum length of the rope BThe rate at which the rope will reel in when the trigger is held }@t$- @ ~}\t+$KI-58%I8768}8 @ ZX"7%N-5 % 7Hr *{-5  '*F\  6 9=,   $-5' ,CsA4W ,*&wb*,bA- v]L-k s-gXt,d]<9?%<s<9?%Xt,d] AIBE.} -  xyu#z 9W D0%Cb.$Bw* 'F\ 99. . 'F\ 99. .`w* w*1 E^?[^Y--S-_(.Pw(*w(*(-^9?,??PP(-^(?Y0 GQXt%awX*wX*I '#FtXI 'Ft F*1h g7$7$&*%L*$***&$-_' ZJfw -_10 LA] G?9:9:$w.*.q M` ,$w.*.q NPk 8S.rS*S- SSKD!s O`P5K`I--D.IwD*DJ TGr * LqR9:D9:$ -  Ppp9W_9Sqonm '*FK9ZPon6m 'FK9ZP--c- -fo$-c ii##?>?b$ i9?, V.E..%,.7 G.. R]>+?..]V. Wv (2!s_#-eH&a Z_T%7NQBgB@~\GaN @~GaN iGl* UHonH.fwH*NH- /!Fc /!Yl \XOE - C-7-'s*=7 %Ev Y4d!e4.]w4*w4*4- /!Xc eHZ-7' [2ee2.]w2*w2*2- /!Wc ]d.-' _axI3f4I.,wI*I-( ^`fr )3.e).,r)*-L(])-)-a( gbl<X dRh'v -L R.drR*C]-L'hR-'t-q!o iP}-[XP-7|PC?|^9?,\9CC`C9?%a-7-dpPp9?%v cJG5J.3J-J-' l|wnn hH.-( j|}$YI.P9:9:$ -|JI-MPUi  nKng1w *K_ &%&7  w&  *nK&  &8 !ITRM \--h-ja(((79:D9:$- 'H- o$T-i kpM5*A.A-(U AZY[@_ =FTUYFXWF osRM(03BVa(0.?0-0-(N0q r+Rk u-V. &o vx#[' Jclass LazerBeam extends Gameplay.SniperRifleBeam; Eclass LazerProjectile extends Gameplay.SentryProjectile; | class LordsBlaster extends Gameplay.Blaster; h class LordsLaserRifle extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local SniperRifleProjectile p; p = SniperRifleProjectile(Super.makeProjectile(fireRot, fireLoc)); if (p != None); return p; } _+ ~- . &_ A#/' @a>.Y.al&wY*Y < &Angular Damping [0,1] 0 = no damping YD %Linear Damping [0,1] 0 = no damping Cclass LordsLauncher extends Gameplay.Blaster; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } F The amount of friction [0,1] m+ I- . &m JL#-' ~class LordsMortar extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } H The elasticity [0,1] n+ O- . &n PR#*' ` class PlasmaGun extends Gameplay.Burner; var() int numberOfBullets "Number of bullets to fire when shot"; var() float spread "Max angular deviation from ideal line of fire in degrees"; protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local Rotator r; local float spreadInRotUnits; local int i; spreadInRotUnits = spread * 65536 / 360; for (i = 0; i < numberOfBullets; i++) { r.Yaw = spreadInRotUnits * (3.0f * FRand() - 1); r.Pitch = spreadInRotUnits * (3.0f * FRand() - 1); Super.makeProjectile( fireRot + r, fireLoc ); } } N The mass of the object (kg) a class DSADynamicObject extends Engine.HavokActor native placeable; var (DSADynamicObject) float Mass "The mass of the object (kg)"; var (DSADynamicObject) float Elasticity "The elasticity [0,1]"; var (DSADynamicObject) float friction "The amount of friction [0,1]"; var (DSADynamicObject) float LinearDamping "Linear Damping [0,1] 0 = no damping"; var (DSADynamicObject) float AngularDamping "Angular Damping [0,1] 0 = no damping"; var (DSADynamicObject) float Health "The amount of health in the object"; var (DSADynamicObject) bool Invulnerable "Object will be invulnerable to weapon attacks"; var (DSADynamicObject) bool Blocking "Blocks players and collide with other objects"; var (DSADynamicObject) bool Stationary "The object is stationary and cannot move"; var (DSADynamicObject) bool Enabled "Start enabled in physics right away"; var (DSADynamicObject) bool Shadows "Use projected shadows with this object (expensive)"; var (DSADynamicObject) bool Volatile "Object will explode immediately on collision or when hit with a weapon"; var (DSADynamicObject) bool Freeze "Child objects all freeze immediately on spawning (useful for art testing)"; var (DSADynamicObject) bool FadeOut "Fadeout object when destroyed (requires material to be setup correctly)"; var (DSADynamicObject) bool LimitedLife "If true, object will only hang around for Lifetime amount of time after spawning"; var (DSADynamicObject) float Lifetime "Object will only appear in the world for this long before fading out"; var (DSADynamicObject) bool Explosion "Launch child objects with initial explosion (true/false)"; var (DSADynamicObject) float ExplosionForce "Force applied to child objects when this object is destroyed"; var (DSADynamicObject) array< class > Children "Child objects spawned when this object is destroyed"; var (DSADynamicObject) array< class > Explosions "Explosion objects spawned when this object is destroyed"; var array Style; var bool StyleCreated; var bool FadingOut; var float FadeOutAlpha; var float FadeOutTime; var float FadeOutLength; var bool NextVersionPending; var bool NextVersionCalled; enum EScalabilitySetting { DS_NoDynamics, DS_Full, }; overloaded function Construct( actor Owner, optional optional name Tag, optional vector Location, optional rotator Rotation, optional float Scale) { Label = Tag; setNativeActorData(Scale); super.construct(Owner, Tag, Location, Rotation); Label = Tag; } native final function setNativeActorData(float Scale); event PreBeginPlay() { bActorShadows = Shadows; if (!Blocking) SetCollision(false, false, false); if (GetScalabilitySetting() == DS_NoDynamics) Stationary = true; if (Stationary) { SetPhysics(PHYS_None); } else { HavokActivate(Enabled); } Super.PreBeginPlay(); } static simulated function PrecacheDSADynamicObjectRenderData(LevelInfo Level, class DynClass) { local int i; if (DynClass.default.StaticMesh != None) { Level.AddPrecacheStaticMesh(DynClass.default.StaticMesh); } for (i=0; i0) { SpawnChildren(); } Remove(); } } function Explode() { local int i; local Explosion ExplosionObject; local String SocketName; local Vector SocketPosition; local Rotator SocketRotation; local Vector SocketScale; for (i=0; i damageType, vector HitLocation) { if(Killer != None && Killer.Pawn != None) dispatchMessage(new class'MessageDestroyed'(Killer.Pawn.label, label)); else dispatchMessage(new class'MessageDestroyed'(label, label)); } simulated event bool ShouldProjectileHit(Actor projInstigator) { return bProjTarget; } function PostTakeDamage(float Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { local Controller Killer; Killer = None; if (EventInstigator != None) Killer = EventInstigator.Controller; if (!Stationary) HavokImpartImpulse(Momentum, HitLocation); if (Invulnerable) return; if (Volatile) { NextVersion(); Died(Killer, damageType, HitLocation); } else if (Health>0) { Health -= Damage; if (Health<=0) { NextVersion(); Died(Killer, damageType, HitLocation); } } } function CreateAlphaStyle() { local int i; if (Skins.Length==0) LoadSkinsFromMaterials(); if (!StyleCreated) { for(i=0; i [q9?9?hZ%Zp6\9D[@@9?&6\9D[@@9?&a<r\uZ$ tS3%w*6 0t \zclass DSADeployedTurretSentryWeapon extends Gameplay.DeployedTurretSentryWeapon; simulated function Vector calcProjectileSpawnLocation(Rotator fireRot) { if (rookOwner != None) return rookOwner.GetBoneCoords(projectileSpawnBone).origin; return super.calcProjectileSpawnLocation(fireRot); } gclass DSADeployedTurret extends Gameplay.DeployedTurret; cclass DSADeployedRepairer extends Gameplay.DeployedRepairer; R!class RocketGun extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; var() int numProjectiles "The number of rockets to fire"; var int numProjectilesFired; var() float launchDelay "The number of seconds to wait in between each rocket firing"; var float angleIncreament; simulated function PostBeginPlay() { Super.PostBeginPlay(); angleIncreament = 2 * Pi / float(numProjectiles); } simulated function Timer() { if (equipped) FireWeapon(); } simulated protected function FireWeapon() { local Name fireAnim; if (numProjectilesFired < numProjectiles) { ++numProjectilesFired; Super.FireWeapon(); fireAnim = Name("Fire_0" $ numProjectilesFired); animClass.static.playEquippableAnim(self, fireAnim, speedPackScale); SetTimer(launchDelay / speedPackScale, false); } else numProjectilesFired = 0; } function bool canUnequip() { return numProjectilesFired == 0; } simulated function playIdleAnim() { if (numProjectilesFired == 0) Super.playIdleAnim(); } simulated protected function playPostFireAnim() { if (numProjectilesFired == 0) Super.playPostFireAnim(); } protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local RocketPodProjectile p; p = RocketPodProjectile(Super.makeProjectile(fireRot, fireLoc)); if (p != None) { GetAxes(fireRot, p.xAxis, p.yAxis, p.zAxis); p.offsetVecAngle = numProjectilesFired * angleIncreament; p.zAxis = QuatRotateVector(QuatFromAxisAndAngle(p.xAxis, p.offsetVecAngle), p.zAxis); p.initialZAxis.X = p.zAxis.X; p.initialZAxis.Y = p.zAxis.Y; p.initialZAxis.Z = p.zAxis.Z; } return p; } simulated state Dropped { simulated function BeginState() { numProjectilesFired = 0; super.BeginState(); } } simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } }class DSADeployedCatapult extends Gameplay.DeployedCatapult; jclass DSAChaingunProjectile extends Gameplay.SniperRifleProjectile; gclass DSACatapult extends Gameplay.Catapult; kclass CutterProjectile extends Gameplay.BucklerProjectile; wu i#g@I@9?e cd-h dhhGkbeh9ZpFire_09S/hax(i% lb#&' ehk, % go1% i^7i% jj>?6.jy.w*j   9?g   6 6 6 6 6 6  m- . &z z+ Fclass Cutter extends Gameplay.Buckler; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } kqwX63U% p+\w r-`. &w su#e' }class ShockLance extends Gameplay.EnergyBlade; tclass SniperArea extends Engine.Actor; var() float burnTime "The number of seconds this burning area will burn for"; var() float burnDamageRate "The amount of damage per second caused when burned by this burning area"; var() float burnDamageRateReduction "The amount by which the burnDamageRate will decrease per second"; var() class damageType "Damage type for the burn area object"; simulated function PostBeginPlay() { super.PostBeginPlay(); SetTimer(burnTime, false); } function Timer() { Destroy(); } simulated function Destroyed() { local int i; for (i = 0; i < Touching.Length; ++i) { if (Rook(Touching[i]) != None) Rook(Touching[i]).flameDamageReductionPerSecond = burnDamageRateReduction; } super.Destroyed(); } simulated function Tick(float Delta) { local Rook r; local int i; for (i = 0; i < Touching.Length; ++i) { if (!Touching[i].bProjTarget) continue; r = Rook(Touching[i]); if (r != None && r.flameDamagePerSecond < burnDamageRate && FastTrace(r.Location)) { if (r.flameDamagePerSecond == 0.0) r.TriggerEffectEvent('Burning'); r.flameSource = Instigator; r.flameDamageType = damageType; r.flameDamagePerSecond = burnDamageRate; r.flameDamageReductionPerSecond = 0.0; } } } simulated function UnTouch(Actor Other) { if (Rook(Other) != None) { Rook(Other).flameDamageReductionPerSecond = burnDamageRateReduction; } } tclass SniperArea extends Engine.Actor; var() float burnTime "The number of seconds this burning area will burn for"; var() float burnDamageRate "The amount of damage per second caused when burned by this burning area"; var() float burnDamageRateReduction "The amount by which the burnDamageRate will decrease per second"; var() class damageType "Damage type for the burn area object"; simulated function PostBeginPlay() { super.PostBeginPlay(); SetTimer(burnTime, false); } function Timer() { Destroy(); } simulated function Destroyed() { local int i; for (i = 0; i < Touching.Length; ++i) { if (Rook(Touching[i]) != None) Rook(Touching[i]).flameDamageReductionPerSecond = burnDamageRateReduction; } super.Destroyed(); } simulated function Tick(float Delta) { local Rook r; local int i; for (i = 0; i < Touching.Length; ++i) { if (!Touching[i].bProjTarget) continue; r = Rook(Touching[i]); if (r != None && r.flameDamagePerSecond < burnDamageRate && FastTrace(r.Location)) { if (r.flameDamagePerSecond == 0.0) r.TriggerEffectEvent('Burning'); r.flameSource = Instigator; r.flameDamageType = damageType; r.flameDamagePerSecond = burnDamageRate; r.flameDamageReductionPerSecond = 0.0; } } } simulated function UnTouch(Actor Other) { if (Rook(Other) != None) { Rook(Other).flameDamageReductionPerSecond = burnDamageRateReduction; } } xDJwA y, .U^nAV^j{ RemoteRole = ROLE_SimulatedProxy; DrawType = DT_None bCollideActors = true bNeedLifetimeEffectEvents = true CollisionRadius = 100 CollisionHeight = 100 burnTime = 3.0 burnDamageRate = 10.01 burnDamageRateReduction = 0.01 damageType = class'ProjectileDamageType' +..\DSA_Wicked_Xtreme\Classes\SniperArea.ucl$@@k$( Aj$ # burningAreaClass; simulated function PostBeginPlay() { super.PostBeginPlay(); SetTimer(ignitionDelay, false); } simulated event Destroyed() { UntriggerEffectEvent('Ignition'); super.Destroyed(); } simulated function Timer() { UnTriggerEffectEvent('Alive'); TriggerEffectEvent('Ignition'); SetCollisionSize(postIgnitionColRadius, postIgnitionColHeight); Velocity = Normal(Velocity) * postIgnitionVelocity; weHaveIgnition = true; } simulated function HitWall(Vector HitNormal, Actor HitWall) { SpawnBurningArea(); super.HitWall(HitNormal, HitWall); } function SpawnBurningArea() { if (!PhysicsVolume.bWaterVolume) Spawn(burningAreaClass,,, Location); } simulated function bool ShouldHit(Actor Other, vector TouchLocation) { if (weHaveIgnition) return super.ShouldHit(Other, TouchLocation); else return !ClientDetectDeflection(Other, TouchLocation) && super.ShouldHit(Other, TouchLocation); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { return !weHaveIgnition && super.ShouldDeflect(Other, TouchLocation, deflectionNormal); } simulated function ProjectileHit(Actor Other, vector TouchLocation, vector TouchNormal) { BurnTarget(Rook(Other)); SpawnBurningArea(); super.ProjectileHit(Other, TouchLocation, TouchNormal); } simulated function BurnTarget(Rook target) { if (target != None) { target.flameSource = Instigator; target.flameDamageType = damageTypeClass; target.flameDamagePerSecond = burningAreaClass.default.burnDamageRate; target.flameDamageReductionPerSecond = burningAreaClass.default.burnDamageRateReduction; } } zaKF {E;Òaa> U^"FV^S{ damageAmt = 120 burningAreaClass = class'SniperArea' bNetTemporary = false ignitionDelay = 2.4 postIgnitionColRadius = 200 postIgnitionColHeight = 200 postIgnitionVelocity = 3000 StaticMesh = StaticMesh'Weapons.Disc' DrawScale3D = (X=0.75,Y=0.75,Z=0.75) deathMessage = '%s copped it off %s\'s Spinfusor' knockback = 0 // burner projectile does not cause knockback 1..\DSA_Wicked_Xtreme\Classes\SniperProjectile.uct$@s$HCq$HCo$;E,*)$BU:@?@?@?{u a{( |da }s`^%V7Lw.*.v Xclass DSASniperRifle extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local SniperRifleProjectile p; local SniperRifleBeam b; p = SniperRifleProjectile(Super.makeProjectile(fireRot, fireLoc)); if (p != None) b = new class'SniperRifleBeam'(p); return p; } simulated function Tick(float Delta) { local Character characterOwner; Super.Tick(Delta); characterOwner = Character(rookOwner); if (bIsFirstPerson) { if (!IsAnimating()) PlayAnim(Name(animPrefix $ "_Close"),,, 1); AnimBlendParams(1, characterOwner.energy / characterOwner.energyMaximum); PlayAnim(Name(animPrefix $ "_Open"),,, 1); } } simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } ~A&g % 74- .w * ub$    2!s  | u   O.class Wicked extends Gameplay.Mutator; function Actor ReplaceActor(Actor Other) { if(Other.IsA('EnergyPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAEnergyPack"); } if(Other.IsA('ShieldPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAShieldPack"); } if(Other.IsA('RepairPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSARepairPack"); } if(Other.IsA('SpeedPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSASpeedPack"); } if(Other.IsA('MortarProjectile')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAMortarProjectile"); } if(Other.IsA('ChaingunProjectile')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAChaingunProjectile"); } if(Other.IsA('GrenadeLauncherProjectile')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAGrenadeLauncherProjectile"); } if(Other.IsA('EnergyBlade')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.ShockLance"); } if(Other.IsA('Spinfusor')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.Ultrafusor"); } if(Other.IsA('Burner')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.PlasmaGun"); } if(Other.IsA('RocketPod')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.RocketGun"); } if(Other.IsA('Chaingun')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.VulcanSMG"); } if(Other.IsA('SniperRifle')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsLaserRifle"); } if(Other.IsA('Mortar')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsMortar"); } if(Other.IsA('Blaster')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsBlaster"); } if(Other.IsA('GrenadeLauncher')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsLauncher"); } if(Other.IsA('Buckler')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.Cutter"); } if(Other.IsA('Grappler')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.Grabber"); } if(Other.IsA('DeployedTurret')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSADeployedTurret"); } if(Other.IsA('DeployedRepairer')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSADeployedRepairer"); } if(Other.IsA('ShockMine')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAShockMine"); } if(Other.IsA('DeployedCatapult')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSADeployedCatapult"); } if(Other.IsA('Catapult')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSACatapult"); } } BE LD 20Cd ne_fab 0.0) { heatTime = 0.0; TriggerEffectEvent('RapidCooldown'); } } else { heatTime = FMin(heatPeriod, heatTime + (Delta * speedPackScale) / speedRelativeCooldown()); } updateHeatGlow(); overheated = heatTime >= heatPeriod; } simulated function coolDown(float Delta) { if (isInWater()) { if (heatTime > 0.0) { heatTime = 0.0; TriggerEffectEvent('RapidCooldown'); } } else { heatTime = FMax(0.0, heatTime - Delta * speedRelativeCooldown()); } updateHeatGlow(); if (heatTime <= coolDownThreshold) overheated = false; } simulated State Idle { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Spinup { simulated function BeginState() { if (spinTime >= spinPeriod) spinTime = 0.0; if (spinTime == 0.0) { if (hasAmmo()) animClass.static.playEquippableAnim(self, 'Start'); else animClass.static.playEquippableAnim(self, 'Start_Empty'); } } simulated function Tick(float Delta) { Global.Tick(Delta); if (!IsInState('Spinup')) // State change is possible in Global.Tick return; coolDown(Delta); spinTime += Delta; if (spinTime >= spinPeriod) GotoState('FirePressed'); } simulated protected function bool handleReleaseFire() { spinTime = spinPeriod - spinTime; GotoState('Spindown'); return true; } } simulated state FirePressed { simulated function BeginState() { heatTime = FMin(heatPeriod, heatTime + (1 / roundsPerSecond) * 2.0); super.BeginState(); } simulated function Tick(float Delta) { heatUp(Delta); Super.Tick(Delta); } } simulated State Spindown { simulated function BeginState() { animClass.static.playEquippableAnim(self, 'Spindown_Idle'); if (spinTime >= spinPeriod) spinTime = 0.0; } simulated function Tick(float Delta) { Global.Tick(Delta); if (!IsInState('Spindown')) // State change is possible in Global.Tick return; coolDown(Delta); spinTime += Delta; if (spinTime >= spinPeriod) GotoState('Idle'); } simulated protected function bool handleFire() { spinTime = spinPeriod - spinTime; GotoState('Spinup'); return true; } } simulated State AwaitingPickup { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Held { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Dropped { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Equipping { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Unequipping { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } pclass SniperProjectile extends Gameplay.Projectile; var() float ignitionDelay; var() float postIgnitionColRadius; var() float postIgnitionColHeight; var() float postIgnitionVelocity; var bool weHaveIgnition; var() class burningAreaClass; simulated function PostBeginPlay() { super.PostBeginPlay(); SetTimer(ignitionDelay, false); } simulated event Destroyed() { UntriggerEffectEvent('Ignition'); super.Destroyed(); } simulated function Timer() { UnTriggerEffectEvent('Alive'); TriggerEffectEvent('Ignition'); SetCollisionSize(postIgnitionColRadius, postIgnitionColHeight); Velocity = Normal(Velocity) * postIgnitionVelocity; weHaveIgnition = true; } simulated function HitWall(Vector HitNormal, Actor HitWall) { SpawnBurningArea(); super.HitWall(HitNormal, HitWall); } function SpawnBurningArea() { if (!PhysicsVolume.bWaterVolume) Spawn(burningAreaClass,,, Location); } simulated function bool ShouldHit(Actor Other, vector TouchLocation) { if (weHaveIgnition) return super.ShouldHit(Other, TouchLocation); else return !ClientDetectDeflection(Other, TouchLocation) && super.ShouldHit(Other, TouchLocation); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { return !weHaveIgnition && super.ShouldDeflect(Other, TouchLocation, deflectionNormal); } simulated function ProjectileHit(Actor Other, vector TouchLocation, vector TouchNormal) { BurnTarget(Rook(Other)); SpawnBurningArea(); super.ProjectileHit(Other, TouchLocation, TouchNormal); } simulated function BurnTarget(Rook target) { if (target != None) { target.flameSource = Instigator; target.flameDamageType = damageTypeClass; target.flameDamagePerSecond = burningAreaClass.default.burnDamageRate; target.flameDamageReductionPerSecond = burningAreaClass.default.burnDamageRateReduction; } } zEB Nw6G m,zeۄl 777>>wwwwD]D]wwwwbU^RV^o{ heatMaterialIndex = 1 minSpread = 1 maxSpread = 4 spinPeriod = 0.25 heatPeriod = 1.0 coolDownThreshold = 1.7 speedCooldownFactor = 0.0589 firstPersonMesh = Mesh'Weapons.Chaingun' firstPersonOffset = (X=-23,Y=26,Z=-24) firstPersonAltMesh = SkeletalMesh'weapons.HeavyChaingun' firstPersonAltOffset = (X=-33,Y=22,Z=-15) thirdPersonStaticMesh = StaticMesh'weapons.ChaingunHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavyChaingunHeld' thirdPersonAttachmentOffset = (X=28,Y=-3,Z=2) roundsPerSecond = 10 ammoUsage = 0 energyUsage = 0.09 projectileClass = class'DSA_Wicked_Xtreme.DSAChaingunProjectile' projectileVelocity = 32000 projectileInheritedVelFactor = 1.0 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "Chaingun" fireState = Spinup releaseFireState = Spindown inventoryIcon = texture'GUITribes.InvButtonChaingun' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=205,V=472,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=205,V=421,UL=80,VL=40) localizedname = "Chaingun" infostring = "Rapid-fire projectile weapon. Overheats if fired for too long." bGenerateMissSpeechEvents = false *..\DSA_Wicked_Xtreme\Classes\VulcanSMG.uc4$Q=h$?g$@c$>b$?a$?`$ Aq=]"$ A y!$F%$?$.:A@@:A":Ap] ChaingunJcUa] Chaingun]B@Rapid-fire projectile weapon. Overheats if fired for too long.Z $MC$C$B $ BZ $MC$C$B $ B]class UltrafusorProjectile extends Gameplay.SpinfusorProjectile; Y'class Ultrafusor extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; var float secsUntilNextFire; var Shader dialShader; var ControllableTextureRotator dialTexRotator; var() int dialMaterialIndex; var bool bControllableSkinSet; simulated function buildControllableSkins() { local Combiner dialCombiner; // Build a controllable texture panner for the dial shader dialShader = Shader(ShallowCopyMaterial(GetMaterial(dialMaterialIndex), self)); if (dialShader != None) { dialCombiner = Combiner(ShallowCopyMaterial(dialShader.SelfIllumination, self)); if (dialCombiner != None) { dialTexRotator = new class'ControllableTextureRotator'; dialTexRotator.Rotation = TexRotator(dialCombiner.Material2).Rotation; dialTexRotator.UOffset = TexRotator(dialCombiner.Material2).UOffset; dialTexRotator.VOffset = TexRotator(dialCombiner.Material2).VOffset; dialTexRotator.Material = TexRotator(dialCombiner.Material2).Material; dialCombiner.Material2 = dialTexRotator; dialShader.SelfIllumination = dialCombiner; } } // If succeeded set the shader as the skins for the weapon if (dialTexRotator != None) setControllableSkins(); } simulated function ammoSkinChange() { if (bControllableSkinSet) setControllableSkins(); else buildControllableSkins(); } simulated function setControllableSkins() { local int i; if (Skins.Length <= dialMaterialIndex) Skins.Length = dialMaterialIndex + 1; for (i = 0; i < dialMaterialIndex; ++i) { Skins[i] = None; } Skins[dialMaterialIndex] = dialShader; bControllableSkinSet = true; } simulated protected function FireWeapon() { Super.FireWeapon(); secsUntilNextFire = 1 / roundsPerSecond; } simulated function Tick(float DeltaTime) { Super.Tick(DeltaTime); if (PlayerCharacter(Owner) != None) { if (bControllableSkinSet) { if (secsUntilNextFire > 0.0) { dialTexRotator.Scale = (secsUntilNextFire / (1 / roundsPerSecond)) - 0.016; secsUntilNextFire -= DeltaTime; } else dialTexRotator.Scale = -0.016; } else buildControllableSkins(); } } simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } ItQc6JL3mzhl yyD]yyO XoƢyO XoƢyO XoƢyO XoƥOD]U^|IV^d{ roundsPerSecond = 1.6 energyUsage = 0.09 ammoCount = 0 ammoUsage = 0 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "Spinfusor" attentionFXDuration = 0.500000 attentionFXMaterial = Shader'FX.ScreenFindmeShader' attentionFXSpacing = 3.000000 automaticallyHold = False bCanDrop = True bFirstPersonUseTrace = True bMelee = False bNeedIdleFX = True bOnlyAffectCurrentZone = False droppedElasticity = 0.200000 dropVelocity = 1500 equipDuration = 0.300000 fireAnimSubString = "large" firstPersonAltMesh = SkeletalMesh'weapons.HeavySpinfusor' firstPersonAltOffset = (X=-26,Y=22,Z=-18) firstPersonAltTraceExtent = (X=10,Y=20,Z=10) firstPersonAltTraceLength = 150.000000 firstPersonBobMultiplier = 0.150000 firstPersonMesh = SkeletalMesh'weapons.Spinfusor' firstPersonOffset = (X=-26,Y=22,Z=-18) firstPersonTraceExtent = (X=10,Y=20,Z=10) firstPersonAltTraceLength = 125.000000 hudIcon = texture'HUD.Tabs' hudIconCoords = (U=102,V=472,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=102,V=421,UL=80,VL=40) hudReticule = Texture'HUD.reticuleDirect' hudReticuleWidth = 128 hudReticuleHeight = 128 hudReticuleCenterX = 64 hudReticuleCenterY = 64 infostring = "Single-shot, direct-fire projectile weapon. Projectile explodes on impact." inventoryIcon = Texture'GUITribes.InvButtonSpinfusor' localizedname = "Ultrafusor" dialMaterialIndex = 5 projectileClass = class'DSA_Wicked_Xtreme.UltrafusorProjectile' projectileInheritedVelFactor = 0.65 projectileVelocity = 10000 thirdPersonStaticMesh = StaticMesh'weapons.spinfusorheld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavySpinfusorHeld' thirdPersonAttachmentOffset = (X=25,Y=-2,Z=5) +..\DSA_Wicked_Xtreme\Classes\Ultrafusor.uc4$Q=m"$?p D!$@F%$ff&?Q7$CS$C9$BA$BS]large$.:A@:A":Aj$>h: AA Ag$Cc: AA Ae] Spinfusorw$>Sz$L>y"= Ultrafusor]MKSingle-shot, direct-fire projectile weapon. Projectile explodes on impact.Z $B$C$B $ BZ $B$C$B $ Bvu$@@s$?}class ShockLance extends Gameplay.EnergyBlade; KRv6LdrmKԋ.U^$=V^v{ damageAmt = 200.0 firstPersonMesh = SkeletalMesh'weapons.Blade' firstPersonOffset = (X=-22,Y=23,Z=-20) firstPersonAltMesh = SkeletalMesh'weapons.HeavyBlade' firstPersonAltOffset = (X=-30,Y=22,Z=-20) thirdPersonStaticMesh = StaticMesh'weapons.BladeHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavyBladeHeld' thirdPersonAttachmentOffset = (X=28,Y=5,Z=0) inventoryIcon = Texture'GUITribes.InvButtonBlade' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=102,V=319,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=102,V=319,UL=80,VL=40) localizedname = "EnergyBlade" infostring = "Short-range melee weapon which uses energy each time it is fired." roundsPerSecond = 1.0 ammoCount = 1000 ammoUsage = 0 energyUsage = 25.0 range = 2000 knockBackVelocity = 50000 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "EnergyBlade" equippedArmAnim = "weapon_energyblade_hold" bGenerateMissSpeechEvents = false damageTypeClass = class'ProjectileDamageType' +..\DSA_Wicked_Xtreme\Classes\ShockLance.uc]")"4$AM$PCG5"$?$.:A@:A":A] EnergyBladem]weapon_energyblade_hold] EnergyBlade]DBShort-range melee weapon which uses energy each time it is fired.Z $B$C$B $ BZ $B$C$B $ B~u 0a~( Ms`!W  NdA`!I2!WaAFI-A' OKO# AKL R!class RocketGun extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; var() int numProjectiles "The number of rockets to fire"; var int numProjectilesFired; var() float launchDelay "The number of seconds to wait in between each rocket firing"; var float angleIncreament; simulated function PostBeginPlay() { Super.PostBeginPlay(); angleIncreament = 2 * Pi / float(numProjectiles); } simulated function Timer() { if (equipped) FireWeapon(); } simulated protected function FireWeapon() { local Name fireAnim; if (numProjectilesFired < numProjectiles) { ++numProjectilesFired; Super.FireWeapon(); fireAnim = Name("Fire_0" $ numProjectilesFired); animClass.static.playEquippableAnim(self, fireAnim, speedPackScale); SetTimer(launchDelay / speedPackScale, false); } else numProjectilesFired = 0; } function bool canUnequip() { return numProjectilesFired == 0; } simulated function playIdleAnim() { if (numProjectilesFired == 0) Super.playIdleAnim(); } simulated protected function playPostFireAnim() { if (numProjectilesFired == 0) Super.playPostFireAnim(); } protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local RocketPodProjectile p; p = RocketPodProjectile(Super.makeProjectile(fireRot, fireLoc)); if (p != None) { GetAxes(fireRot, p.xAxis, p.yAxis, p.zAxis); p.offsetVecAngle = numProjectilesFired * angleIncreament; p.zAxis = QuatRotateVector(QuatFromAxisAndAngle(p.xAxis, p.offsetVecAngle), p.zAxis); p.initialZAxis.X = p.zAxis.X; p.initialZAxis.Y = p.zAxis.Y; p.initialZAxis.Z = p.zAxis.Z; } return p; } simulated state Dropped { simulated function BeginState() { numProjectilesFired = 0; super.BeginState(); } } simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } QtS]6Rzhl hhhhhhhhhhhhhh7;U^$=V^f{ firstPersonMesh = Mesh'Weapons.RocketPod' firstPersonOffset = (X=-33,Y=22,Z=-15) firstPersonAltMesh = SkeletalMesh'weapons.HeavyRocketPod' firstPersonAltOffset = (X=-33,Y=22,Z=-15) thirdPersonStaticMesh = StaticMesh'weapons.HeavyRocketPodHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavyRocketPodHeld' thirdPersonAttachmentOffset = (X=28,Y=-3,Z=2) numProjectiles = 6 numProjectilesFired = 0 launchDelay = 0.5 ammoCount = 0 roundsPerSecond = 6.0 energyUsage = 10.0 projectileClass = class'DSA_Wicked_Xtreme.DSARocketGunProjectile' projectileVelocity = 7500 projectileInheritedVelFactor = 1.0 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "RocketPod" hudReticule = Texture'HUD.reticuleScatter' hudReticuleWidth = 128 hudReticuleHeight = 128 hudReticuleCenterX = 64 hudReticuleCenterY = 64 inventoryIcon = Texture'GUITribes.InvButtonRocketPod' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=307,V=472,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=307,V=421,UL=80,VL=40) LocalizedName = "RocketGun" Infostring = "Multi-shot weapon that fires rockets. Rockets can be guided once fired." *..\DSA_Wicked_Xtreme\Classes\RocketGun.uc4$ AO"P$?$@ d!$`E%$?Q7$CS$C9$BA$B$.:A@@:Ap":Ap] RocketPod] RocketGun]JHMulti-shot weapon that fires rockets. Rockets can be guided once fired.Z $C$C$B $ BZ $C$C$B $ BPA)k%#-aV  S?_/G-A?@El?@?@ ` class PlasmaGun extends Gameplay.Burner; var() int numberOfBullets "Number of bullets to fire when shot"; var() float spread "Max angular deviation from ideal line of fire in degrees"; //needs to shoot multiple projectiles at once, with a certain spread protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local Rotator r; local float spreadInRotUnits; local int i; spreadInRotUnits = spread * 65536 / 360; for (i = 0; i < numberOfBullets; i++) { r.Yaw = spreadInRotUnits * (3.0f * FRand() - 1); r.Pitch = spreadInRotUnits * (3.0f * FRand() - 1); Super.makeProjectile( fireRot + r, fireLoc ); } } UVTS6Vu*zh;U^`:V^{{ dialMaterialIndex = 3 firstPersonMesh = SkeletalMesh'weapons.Burner' firstPersonOffset = (X=-30,Y=22,Z=-20) firstPersonAltMesh = SkeletalMesh'weapons.HeavyBurner' firstPersonAltOffset = (X=-30,Y=22,Z=-20) thirdPersonStaticMesh = StaticMesh'weapons.HeavyBurnerHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavyBurnerHeld' thirdPersonAttachmentOffset = (X=28,Y=0,Z=8) inventoryIcon = Texture'GUITribes.InvButtonBurner' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=0,V=267,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=0,V=216,UL=80,VL=40) localizedname = "PlasmaGun" infostring = "Energy weapon that fires a ball of plasma. Projectile explodes on impact, setting fire to a small area." ammoCount = 1000 spread = 4 numberOfBullets = 5 roundsPerSecond = 1.0 energyUsage = 0.09 ammoUsage = 0 projectileClass = class'BurnerProjectile' projectileVelocity = 10000 projectileInheritedVelFactor = 1.0 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "Burner" *..\DSA_Wicked_Xtreme\Classes\PlasmaGun.ucn"a$@4$Q=m"5"$? !$@F%$?$.:AA:A":A]Burner] PlasmaGun]jhEnergy weapon that fires a ball of plasma. Projectile explodes on impact, setting fire to a small area.Z $$C$B $ BZ $$XC$B $ BTOy7%-AORV ~class LordsMortar extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } YQUM6Z4ُzhl zU^`:V^g{ firstPersonMesh = Mesh'weapons.Mortar' firstPersonOffset = (X=-26,Y=22,Z=-18) firstPersonAltMesh = Mesh'weapons.Mortar' firstPersonAltOffset = (X=-26,Y=22,Z=-18) thirdPersonStaticMesh = StaticMesh'weapons.MortarHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.MortarHeld' ammoCount = 1000 roundsPerSecond = 0.5 ammoUsage = 0 projectileClass = class'DSA_Wicked_Xtreme.DSAMortarProjectile' projectileVelocity = 4500 projectileInheritedVelFactor = 0.6 aimClass = class'AimArcWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "Mortar" hudReticule = texture'HUD.ReticuleLob' hudReticuleWidth = 128 hudReticuleHeight = 256 hudReticuleCenterX = 64 hudReticuleCenterY = 64 inventoryIcon = texture'GUITribes.InvButtonMortar' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=205,V=370,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=205,V=319,UL=80,VL=40) localizedname = "LordsMortar" infostring = "Single-shot, long range, parabolic projectile weapon that fires explosive shells." bGenerateMissSpeechEvents = false ,..\DSA_Wicked_Xtreme\Classes\LordsMortar.uc5"$? l!$E%$?Q7$CS$C9$BA$B$:A":A]Mortar] LordsMortar]TRSingle-shot, long range, parabolic projectile weapon that fires explosive shells.Z $MC$C$B $ BZ $MC$C$B $ BCclass LordsLauncher extends Gameplay.Blaster; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } XCQ<-P.CACWY [KVG6^˘Bl zU^`8V^q{ firstPersonMesh = Mesh'Weapons.GrenadeLauncher' firstPersonOffset = (X=-36,Y=22,Z=-15) firstPersonAltMesh = SkeletalMesh'weapons.HeavyGrenadeLauncher' firstPersonAltOffset = (X=-31,Y=22,Z=-15) thirdPersonStaticMesh = StaticMesh'weapons.HeavyGrenadeLauncherHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavyGrenadeLauncherHeld' ammoCount = 1000 roundsPerSecond = 1.25 ammoUsage = 0 projectileClass = class'DSA_Wicked_Xtreme.DSAGrenadeLauncherProjectile' projectileVelocity = 4200 projectileInheritedVelFactor = 0.8 aimClass = class'AimArcWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "GrenadeLauncher" hudReticule = texture'HUD.ReticuleLob' hudReticuleWidth = 128 hudReticuleHeight = 256 hudReticuleCenterX = 64 hudReticuleCenterY = 64 inventoryIcon = texture'GUITribes.InvButtonGrenadeLauncher' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=0,V=370,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=0,V=319,UL=80,VL=40) localizedname = "G. Launcher" infostring = "Single-shot parabolic projectile weapon that fires explosive grenades." bGenerateMissSpeechEvents = false ...\DSA_Wicked_Xtreme\Classes\LordsLauncher.uc5"$? n!$@E%$L?Q7$CS$C9$BA$B$:Ap":Ap]GrenadeLauncher] G. Launcher]IGSingle-shot parabolic projectile weapon that fires explosive grenades.Z $$C$B $ BZ $$C$B $ Bh class LordsLaserRifle extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local SniperRifleProjectile p; p = SniperRifleProjectile(Super.makeProjectile(fireRot, fireLoc)); if (p != None); return p; } _BW|6`u zhl zU^`8V^R{ firstPersonMesh = Mesh'Weapons.SniperRifle' firstPersonOffset = (X=-25,Y=26,Z=-18) firstPersonAltMesh = SkeletalMesh'weapons.SniperRifle' firstPersonAltOffset = (X=-33,Y=22,Z=-15) thirdPersonStaticMesh = StaticMesh'weapons.SniperRifleHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.SniperRifleHeld' thirdPersonAttachmentOffset = (X=28,Y=-3,Z=2) ammoCount = 1000 roundsPerSecond = 1.0 energyUsage = 0.05 ammoUsage = 0 projectileClass = class'DSA_Wicked_Xtreme.DSASniperRifleProjectile' projectileVelocity = 40000 projectileInheritedVelFactor = 1.0 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "SniperRifle" hudReticule = Texture'HUD.reticuleSniper' hudReticuleWidth = 128 hudReticuleHeight = 128 hudReticuleCenterX = 64 hudReticuleCenterY = 64 inventoryIcon = Texture'GUITribes.InvButtonSniperRifle' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=410,V=472,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=410,V=421,UL=80,VL=40) localizedname = "50.cal Rifle" Infostring = "Long-range weapon that uses energy." 0..\DSA_Wicked_Xtreme\Classes\LordsLaserRifle.uc4$L=5"$? a!$@G%$?Q7$CS$C9$BA$B$.:A@@:A":Ap] SniperRifle] 50.cal Rifle]%$Long-range weapon that uses energy.Z $C$C$B $ BZ $C$C$B $ B]!PCromw!*!!!V!V | class LordsBlaster extends Gameplay.Blaster; Y'class Ultrafusor extends Gameplay.Burner; var() float energyUsage "Amount of energy to use when shot"; var float secsUntilNextFire; var Shader dialShader; var ControllableTextureRotator dialTexRotator; var() int dialMaterialIndex; var bool bControllableSkinSet; simulated function buildControllableSkins() { local Combiner dialCombiner; dialShader = Shader(ShallowCopyMaterial(GetMaterial(dialMaterialIndex), self)); if (dialShader != None) { dialCombiner = Combiner(ShallowCopyMaterial(dialShader.SelfIllumination, self)); if (dialCombiner != None) { dialTexRotator = new class'ControllableTextureRotator'; dialTexRotator.Rotation = TexRotator(dialCombiner.Material2).Rotation; dialTexRotator.UOffset = TexRotator(dialCombiner.Material2).UOffset; dialTexRotator.VOffset = TexRotator(dialCombiner.Material2).VOffset; dialTexRotator.Material = TexRotator(dialCombiner.Material2).Material; dialCombiner.Material2 = dialTexRotator; dialShader.SelfIllumination = dialCombiner; } } if (dialTexRotator != None) setControllableSkins(); } simulated function ammoSkinChange() { if (bControllableSkinSet) setControllableSkins(); else buildControllableSkins(); } simulated function setControllableSkins() { local int i; if (Skins.Length <= dialMaterialIndex) Skins.Length = dialMaterialIndex + 1; for (i = 0; i < dialMaterialIndex; ++i) { Skins[i] = None; } Skins[dialMaterialIndex] = dialShader; bControllableSkinSet = true; } simulated protected function FireWeapon() { Super.FireWeapon(); secsUntilNextFire = 1 / roundsPerSecond; } simulated function Tick(float DeltaTime) { Super.Tick(DeltaTime); if (PlayerCharacter(Owner) != None) { if (bControllableSkinSet) { if (secsUntilNextFire > 0.0) { dialTexRotator.Scale = (secsUntilNextFire / (1 / roundsPerSecond)) - 0.016; secsUntilNextFire -= DeltaTime; } else dialTexRotator.Scale = -0.016; } else buildControllableSkins(); } } simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } bX{6d^BzU^`8V^A{ dialMaterialIndex = 1 plasmaMaterialIndex = 3 ammoCount = 1000 spread = 2 numberOfBullets = 22 firstPersonMesh = Mesh'Weapons.Blaster' firstPersonOffset = (X=-33,Y=22,Z=-15) firstPersonAltMesh = SkeletalMesh'weapons.HeavyBlaster' firstPersonAltOffset = (X=-33,Y=22,Z=-15) thirdPersonStaticMesh = StaticMesh'weapons.HeavyBlasterHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavyBlasterHeld' thirdPersonAttachmentOffset = (X=28,Y=-3,Z=2) roundsPerSecond = 1.5 energyUsage = 0.09 ammoUsage = 0 projectileClass = class'BlasterProjectile' projectileVelocity = 6000 projectileInheritedVelFactor = 1.0 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "Blaster" inventoryIcon = texture'GUITribes.InvButtonBlaster' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=0,V=472,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=0,V=421,UL=80,VL=40) LocalizedName = "Bastard" Infostring = "Close-range energy weapon that fires multiple bolts. Projectiles bounce off surfaces." bGenerateMissSpeechEvents = false -..\DSA_Wicked_Xtreme\Classes\LordsBlaster.uca$@n"4$Q=v"m"5"$? !$E%$?$.:A@@:Ap":Ap] Blaster] Bastard]XVClose-range energy weapon that fires multiple bolts. Projectiles bounce off surfaces.Z $$C$B $ BZ $$C$B $ BEclass LazerProjectile extends Gameplay.SentryProjectile; eYzf>^5Õ wU^`8V^j{ StaticMesh = StaticMesh'Weapons.SniperRifleTracer' deathMessage = '%s copped it off %s\'s Sentry' 0..\DSA_Wicked_Xtreme\Classes\LazerProjectile.uc,*Jclass LazerBeam extends Gameplay.SniperRifleBeam; g[yhUŢ wU^`8V^B{ fadeRate = 1.0 bNetNotify = true bUpdateSimulatedPosition = true RemoteRole = ROLE_SimulatedProxy DrawType = DT_StaticMesh StaticMesh = StaticMesh'Weapons.SniperRifleTracer' *..\DSA_Wicked_Xtreme\Classes\LazerBeam.ucn$?W@VYtmclass Grabber extends Gameplay.Burner; var() class ropeClass; var() float ropeNonCollisionLength "The amount of rope at the end which won't collide, allowing you to swing around things"; var() float maxRopeLength "The maximum length of the rope"; var() float reelinLengthRate "The rate at which the rope will reel in when the trigger is held"; var() float reelInDelay "A delay before reeling in will occur"; var bool bDisallowFire; var Shader cableShader; var ControllableTexturePanner cableTexPanner; var ControllableTexturePanner cableNormTexPanner; var() int cableMaterialIndex; var bool bControllableSkinSet; var() float energyUsage "Amount of energy to use when shot"; replication { reliable if (Role < ROLE_Authority) sendServerRequestDetachGrapple; } simulated function PostNetBeginPlay() { super.PostNetBeginPlay(); registerClientMessage(class'MessagePreRender', Level.label); } simulated function buildControllableSkins() { // Build a controllable texture panner for the cable shader cableShader = Shader(ShallowCopyMaterial(GetMaterial(cableMaterialIndex), self)); if (cableShader != None) { cableTexPanner = new class'ControllableTexturePanner'; cableTexPanner.PanDirection = Vector(TexPanner(cableShader.Diffuse).PanDirection); cableTexPanner.Material = TexPanner(cableShader.Diffuse).Material; cableNormTexPanner = new class'ControllableTexturePanner'; cableNormTexPanner.PanDirection = Vector(TexPanner(cableShader.NormalMap).PanDirection); cableNormTexPanner.Material = TexPanner(cableShader.NormalMap).Material; cableShader.Diffuse = cableTexPanner; cableShader.NormalMap = cableNormTexPanner; } // If succeeded set the shader as the skin for the weapon if (cableTexPanner != None && cableNormTexPanner != None) setControllableSkins(); } simulated function Tick(float DeltaTime) { local Character c; local float newScale; Super.Tick(DeltaTime); if (bIsFirstPerson && equipped) { if (bControllableSkinSet) { c = Character(Owner); if (c != None && c.proj != None) { if (!c.bAttached) { newScale = cableTexPanner.Scale + DeltaTime * 3; if (newScale > 1.0) newScale = newScale - 1.0; cableTexPanner.Scale = newScale; cableNormTexPanner.Scale = newScale; } else if (c.bReelIn) { newScale = cableTexPanner.Scale - DeltaTime; if (newScale < 0.0) newScale = newScale + 1.0; cableTexPanner.Scale = newScale; cableNormTexPanner.Scale = newScale; } } } else buildControllableSkins(); } } simulated function setControllableSkins() { local int i; if (Skins.Length <= cableMaterialIndex) Skins.Length = cableMaterialIndex + 1; for (i = 0; i < cableMaterialIndex; ++i) { Skins[i] = None; } Skins[cableMaterialIndex] = cableShader; bControllableSkinSet = true; } simulated function ammoSkinChange() { if (bControllableSkinSet) setControllableSkins(); else buildControllableSkins(); } simulated function drop() { if (Level.NetMode == NM_Client && Character(Owner) != None) Character(Owner).detachGrapple(); super.drop(); } protected function requestEquipmentDrop() { if (Character(Owner) != None) Character(Owner).detachGrapple(); super.requestEquipmentDrop(); } function bool canUnequip() { local Character c; c = Character(rookOwner); return c.proj == None || c.bAttached; } simulated function onMessage(Message m) { local Character c; super.onMessage(m); if (equipped && bIsFirstPerson) { c = Character(Owner); if (c != None) c.updateGrapplerRopeEquippedFirstPerson(); } } protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { Character(rookOwner).proj = GrapplerProjectile(super.makeProjectile(fireRot, fireLoc)); return Character(rookOwner).proj; } simulated function playIdleAnim() { local Character c; c = Character(rookOwner); if (c.proj != None) { if (c.bAttached) animClass.static.playEquippableAnim(self, 'IdleAttach'); else animClass.static.playEquippableAnim(self, 'CableIdle'); } else super.playIdleAnim(); } simulated function playEquipAnim() { local Character c; c = Character(owner); if (c != None && c.proj != None && c.bAttached) animClass.static.playEquippableAnim(self, 'SelectAttach'); else Super.playEquipAnim(); } simulated function playUnequipAnim() { local Character c; c = Character(owner); if (c != None && c.proj != None && c.bAttached) animClass.static.playEquippableAnim(self, 'DeselectAttach'); else Super.playEquipAnim(); } simulated function Timer() { Character(rookOwner).bReelIn = true; } simulated state Held { simulated function BeginState() { local Character c; c = Character(rookOwner); if (c != None) c.bReelIn = false; super.BeginState(); } } simulated state FirePressed { simulated function BeginState() { local Character c; c = Character(rookOwner); if (c.proj == None) bDisallowFire = false; if (c.bAttached && !c.bReelIn) SetTimer(reelInDelay, false); super.BeginState(); } simulated function TickFirePressed() { local Character c; if (bDisallowFire) return; c = Character(rookOwner); if (c.proj == None && canFire() && fireRatePassed()) { bDisallowFire = true; FireWeapon(); c.bReelIn = true; } if (fireOnce) GotoState('Idle'); } } // Function for AIs to use to begin reeling in function beginReelIn() { local Character c; c = Character(rookOwner); if (c.bAttached) c.bReelIn = true; } // Function for AIs to use to end reeling in function endReelIn() { Character(rookOwner).bReelIn = false; } event simulated bool releaseFire(optional bool bClientOnly) { local Character c; c = Character(rookOwner); if (Role != ROLE_Authority && !bClientOnly) { if (!c.bReelIn) sendServerRequestDetachGrapple(); else sendServerRequestReleaseFire(); } return handleReleaseFire(); } private function bool sendServerRequestDetachGrapple() { local Character c; c = Character(rookOwner); c.bReelIn = false; return sendServerRequestReleaseFire(); } simulated state FireReleased { simulated function BeginState() { local Character c; SetTimer(0.0, false); c = Character(rookOwner); if (c.bReelIn) c.bReelIn = false; else c.detachGrapple(); super.BeginState(); } } simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } ]0[".%Hw"*."Hw*  'F\  .  . . . "Yw *1 iw]w 9:9:$6BkN#zhl l l l l l l l l l l l l l l l l l 7l l 7l l 77l l l l l l U l l l @}@}@}l @}@}@}@}@}D]tߙ@}D]tߙ@}@}D]tߙ@}D]tߗD]D]U  wU^`8V^J{ ammoCount = 1000 ammoUsage = 0 aimClass = class'AimProjectileWeapons' animClass = class'CharacterEquippableAnimator' animPrefix = "Grappler" attentionFXDuration = 0.500000 attentionFXMaterial = Shader'FX.ScreenFindmeShader' attentionFXSpacing = 3.000000 automaticallyHold = False bCanDrop = True bFirstPersonUseTrace = True bMelee = False bNeedIdleFX = True bOnlyAffectCurrentZone = False cableMaterialIndex = 1 droppedElasticity = 0.200000 dropVelocity = 1500 equipDuration = 0.000000 firstPersonAltMesh = SkeletalMesh'weapons.HeavyGrappler' firstPersonAltOffset = (X=-28,Y=23,Z=-20) firstPersonAltTraceExtent = (X=10,Y=20,Z=10) firstPersonAltTraceLength = 150.000000 firstPersonBobMultiplier = 0.150000 firstPersonMesh = SkeletalMesh'weapons.Grappler' firstPersonOffset = (X=-28,Y=23,Z=-20) firstPersonTraceExtent = (X=10,Y=20,Z=10) firstPersonAltTraceLength = 125.000000 hudIcon = texture'HUD.Tabs' hudIconCoords = (U=410,V=370,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=410,V=319,UL=80,VL=40) hudReticule = Texture'HUD.reticuleDirect' hudReticuleWidth = 128 hudReticuleHeight = 128 hudReticuleCenterX = 64 hudReticuleCenterY = 64 thirdPersonStaticMesh = StaticMesh'weapons.GrapplerHeld' thirdPersonAltStaticMesh = StaticMesh'weapons.HeavyGraplerHeld' thirdPersonAttachmentOffset = (X=28,Y=-3,Z=2) inventoryIcon = texture'GUITribes.InvButtonGrappler' LocalizedName = "Grabber" Infostring = "Single-shot device designed to increase mobility. Fires a cable that attaches to targets." roundsPerSecond = 4.0 projectileClass = class'GrapplerProjectile' projectileVelocity = 22500 ropeClass = class'GrapplerRope' ropeNonCollisionLength = 100 maxRopeLength = 40000 reelinLengthRate = 26000 reelInDelay = 0.2 (..\DSA_Wicked_Xtreme\Classes\Grabber.uc~}$B|$@G{$ Fz$L>y"5"$@p !$ȯFQ7$CS$C9$BA$B$.:A@@:A":Aj$>h: AA Ag$Cc: AA Ae] GrapplerSz$L>y"] Grabber]\ZSingle-shot device designed to increase mobility. Fires a cable that attaches to targets.Z $C$C$B $ BZ $C$C$B $ Bvu$@@s$?jf.-K10 l-18g7%7%&-%L-%-*-&%"-K' a'class DSASpeedPack extends Gameplay.SpeedPack; var (SpeedPack) float refireRateScale "How much to scale the refire rate of all weapons when the pack is active"; var (SpeedPack) float passiveRefireRateScale "How much to scale the refire rate of all weapons when the pack is worn"; var Character user; var (LordsSpeedPack) float rechargeScale "The wearer's energy recharge rate will be passively multiplied by this amount"; var float originalEnergyRechargeScale; var bool bWarned; simulated function applyPassiveEffect(Character characterOwner) { user = characterOwner; scaleRefireRate(passiveRefireRateScale); originalEnergyRechargeScale = characterOwner.energyRechargeScale; characterOwner.energyRechargeScale = rechargeScale; } simulated function removePassiveEffect(Character characterOwner) { resetRefireRate(); characterOwner.energyRechargeScale = originalEnergyRechargeScale; } simulated function startActiveEffect(Character characterOwner) { scaleRefireRate(refireRateScale); user.TriggerEffectEvent('SpeedPackActive',,,,,,,self); } simulated function finishActiveEffect() { resetRefireRate(); applyPassiveEffect(user); user.UnTriggerEffectEvent('SpeedPackActive'); } simulated function scaleRefireRate(float scale) { local Equipment e; local Weapon w; e = user.equipmentHead(); // Scale up weapon refire rates while (e != None) { w = Weapon(e); if (w != None) w.addSpeedPackScale(scale); e = e.next; } if (user.fallbackWeapon == None) user.spawnFallbackWeapon(); if (user.fallbackWeapon != None) user.fallbackWeapon.addSpeedPackScale(scale); } simulated function resetRefireRate() { local Equipment e; local Weapon w; e = user.equipmentHead(); // Reset weapon refire rates while (e != None) { w = Weapon(e); if (w != None) w.removeSpeedPackScale(); e = e.next; } if (user.fallbackWeapon == None) user.spawnFallbackWeapon(); if (user.fallbackWeapon != None) user.fallbackWeapon.removeSpeedPackScale(); } simulated event Material GetOverlayMaterialForOwner(int Index) { return currentOverlay; } simulated function OnEffectStarted(Actor inStartedEffect) { local Emitter e; local int i; e = Emitter(inStartedEffect); if (e != None) { for (i = 0; i < e.Emitters.Length; i++) { e.Emitters[i].SkeletalMeshActor = user; } } else super.OnEffectStarted(inStartedEffect); } mhG3? oON4Ow.*-Ki3 39?&o<3O} o0 nr^Z2qAl;-G6HD[HD[& N[l uk.S l l l l uk.l uk.S l l l l uk.l l l l l  U^ V^` { inventoryIcon = Texture'GUITribes.InvButtonSpeed' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=410,V=165,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=410,V=114,UL=80,VL=40) LocalizedName = "LordsSpeed" Infostring = "Passive effect increases the user's running speed. Active effect decreases the reload time of equipped weapons." refireRateScale = 3.0 passiveRefireRateScale = 1.5 rechargeTimeSeconds = 20 rampUpTimeSeconds = 0 durationSeconds = 20 rechargeScale = 6 thirdPersonMesh = StaticMesh'packs.SpeedPack' StaticMesh = StaticMesh'packs.SpeedPackdropped' Texture = Texture'Engine_res.S_Actor' -..\DSA_Wicked_Xtreme\Classes\DSASpeedPack.ucG$@@H$?j$@g$A~$A]= LordsSpeed]sqPassive effect increases the user's running speed. Active effect decreases the reload time of equipped weapons.Z $C$%C$B $ BZ $C$B$B $ B\p+d r-h. &] su#mY ' ]class UltrafusorProjectile extends Gameplay.SpinfusorProjectile; Qiclass VulcanSMG extends DSASniperRifle; var() float energyUsage "Amount of energy to use when shot"; var() float minSpread "The angular deviation from ideal line of fire in degrees"; var() float maxSpread "The maximum angle the spread will increase to during heatup"; var() float spinPeriod "The amount of time it takes for the chaingun to spin up or spin down"; var float spinTime; var bool overheated; var() float heatPeriod "The amount of time it takes for the chaingun to overheat"; var() float coolDownThreshold "The fraction of the heatPeriod at which the gun can start firing again"; var() float speedCooldownFactor "Multiplier for the speed when calculating cooldown/heatup"; var float heatTime; var Shader heatShader; var ConstantColor heatColorMaterial; var Color heatColor; var() int heatMaterialIndex; var bool bControllableSkinSet; simulated function buildControllableSkins() { heatShader = Shader(ShallowCopyMaterial(GetMaterial(heatMaterialIndex), self)); if (heatShader != None) { heatColorMaterial = ConstantColor(ShallowCopyMaterial(heatShader.SelfIllumination, self)); if (heatColorMaterial != None) { heatShader.SelfIllumination = heatColorMaterial; heatColor.R = heatColorMaterial.color.R; heatColor.G = heatColorMaterial.color.G; heatColor.B = heatColorMaterial.color.B; heatColor.A = heatColorMaterial.color.A; setControllableSkins(); } } } simulated function setControllableSkins() { local int i; if (Skins.Length <= heatMaterialIndex) Skins.Length = heatMaterialIndex + 1; for (i = 0; i < heatMaterialIndex; ++i) { Skins[i] = None; } Skins[heatMaterialIndex] = heatShader; bControllableSkinSet = true; } protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local Rotator r; local float actualSpread; local float spreadInRotUnits; actualSpread = ((maxSpread - minSpread) * (heatTime / heatPeriod)) + minSpread; spreadInRotUnits = actualSpread * 65536 / 360; r.Yaw = spreadInRotUnits * (2.0f * FRand() - 1); r.Pitch = spreadInRotUnits * (2.0f * FRand() - 1); return Super.makeProjectile( fireRot + r, fireLoc ); } function unEquip() { Super.unEquip(); spinTime = 0.0; } simulated function float GetProjectileSpreadScale() { return heatTime / heatPeriod; } simulated function updateHeatGlow() { local float colorScale; if (bIsFirstPerson && equipped) { if (bControllableSkinSet) { if (heatColorMaterial != None) { colorScale = heatTime / heatPeriod; heatColorMaterial.Color.R = float(heatColor.R) * colorScale; heatColorMaterial.Color.G = float(heatColor.G) * colorScale; heatColorMaterial.Color.B = float(heatColor.B) * colorScale; heatColorMaterial.Color.A = float(heatColor.A) * colorScale; } else Log("No heat colour material"); } else buildControllableSkins(); } } simulated function bool isInWater() { return (Owner != None && Owner.PhysicsVolume != None && Owner.PhysicsVolume.bWaterVolume) || (PhysicsVolume != None && PhysicsVolume.bWaterVolume); } simulated function float speedRelativeCooldown() { if (Owner != None) return VSize(Owner.Velocity) * speedCooldownFactor + 1.0; else return 1.0; } simulated function heatUp(float Delta) { if (isInWater()) { if (heatTime > 0.0) { heatTime = 0.0; TriggerEffectEvent('RapidCooldown'); } } else { heatTime = FMin(heatPeriod, heatTime + (Delta * speedPackScale) / speedRelativeCooldown()); } updateHeatGlow(); overheated = heatTime >= heatPeriod; } simulated function coolDown(float Delta) { if (isInWater()) { if (heatTime > 0.0) { heatTime = 0.0; TriggerEffectEvent('RapidCooldown'); } } else { heatTime = FMax(0.0, heatTime - Delta * speedRelativeCooldown()); } updateHeatGlow(); if (heatTime <= coolDownThreshold) overheated = false; } simulated State Idle { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Spinup { simulated function BeginState() { if (spinTime >= spinPeriod) spinTime = 0.0; if (spinTime == 0.0) { if (hasAmmo()) animClass.static.playEquippableAnim(self, 'Start'); else animClass.static.playEquippableAnim(self, 'Start_Empty'); } } simulated function Tick(float Delta) { Global.Tick(Delta); if (!IsInState('Spinup')) return; coolDown(Delta); spinTime += Delta; if (spinTime >= spinPeriod) GotoState('FirePressed'); } simulated protected function bool handleReleaseFire() { spinTime = spinPeriod - spinTime; GotoState('Spindown'); return true; } } simulated state FirePressed { simulated function BeginState() { heatTime = FMin(heatPeriod, heatTime + (1 / roundsPerSecond) * 2.0); super.BeginState(); } simulated function Tick(float Delta) { heatUp(Delta); Super.Tick(Delta); } } simulated State Spindown { simulated function BeginState() { animClass.static.playEquippableAnim(self, 'Spindown_Idle'); if (spinTime >= spinPeriod) spinTime = 0.0; } simulated function Tick(float Delta) { Global.Tick(Delta); if (!IsInState('Spindown')) return; coolDown(Delta); spinTime += Delta; if (spinTime >= spinPeriod) GotoState('Idle'); } simulated protected function bool handleFire() { spinTime = spinPeriod - spinTime; GotoState('Spinup'); return true; } } simulated State AwaitingPickup { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Held { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Dropped { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Equipping { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated State Unequipping { simulated function Tick(float Delta) { coolDown(Delta); Super.Tick(Delta); } } simulated function setHasAmmoSkins() { } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } Vclass DSASniperRifleProjectile extends Gameplay.Projectile; Tclass DSAShockMine extends Gameplay.ShockMine implements IEffectObserver; var float jammingPeriodSeconds; var float jammingRadius; var bool jammingSwitch; var bool localJammingSwitch; var Character characterOwner; var float alpha; simulated function PostNetReceive() { super.PostNetReceive(); // check if jammed if (jammingSwitch != localJammingSwitch) { if (isInState('Activating')); finishActiveEffect(); GotoState('Activating'); localJammingSwitch = jammingSwitch; } } simulated function startActiveEffect(Character characterOwner) { characterOwner.TriggerEffectEvent('DSAShockMineActive'); } simulated function finishActiveEffect() { characterOwner.bHidden = true; characterOwner.UnTriggerEffectEvent('DSAShockMineActive'); } simulated function startApplyPartialActiveEffect() { setTimer(jammingPeriodSeconds, true); } simulated function removePassiveEffect(Character characterOwner); simulated function applyPartialActiveEffect(float alpha, Character characterOwner) { characterOwner.bHidden = true; } yG`~B Y2zRu'l l l l  lU^V^{ proximityHeight = 2000 proximityRadius = 2000 jammingPeriodSeconds = 6000 jammingRadius = 6000 localJammingSwitch = True jammingSwitch = True armingDelay = 0.1 bNoDelete = false bIgnoreEncroachers = true bWorldGeometry = false -..\DSA_Wicked_Xtreme\Classes\DSAShockMine.ucN$EM$Eute$=f$Di$Dk` class DSAShieldPack extends Gameplay.ShieldPack; var (ShieldPack) float passiveFractionDamageBlocked; var (ShieldPack) float activeFractionDamageBlocked; var (LordsShieldPack) float rechargeScale "The wearer's energy recharge rate will be passively multiplied by this amount"; var float originalEnergyRechargeScale; var (ShieldPack) Material passiveHitMaterial "Overlay material to be used when shield has been impacted"; var (ShieldPack) Material activeHitMaterial "Overlay material to be used when shield has been impacted"; var (ShieldPack) float hitStayTime "Length of time that the hit material is displayed for on damage"; var float currentHitTime; var float lastHealth; simulated function applyPassiveEffect(Character characterOwner) { characterOwner.shieldActive = true; characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; originalEnergyRechargeScale = characterOwner.energyRechargeScale; characterOwner.energyRechargeScale = rechargeScale; } simulated function removePassiveEffect(Character characterOwner) { characterOwner.shieldActive = false; characterOwner.energyRechargeScale = originalEnergyRechargeScale; } simulated function startActiveEffect(Character characterOwner) { lastHealth = characterOwner.health; characterOwner.shieldFractionDamageBlocked = activeFractionDamageBlocked; } simulated function finishActiveEffect() { if (heldBy != None) heldBy.shieldFractionDamageBlocked = passiveFractionDamageBlocked; } simulated event Material GetOverlayMaterialForOwner(int Index) { if (currentHitTime <= 0) { return currentIdle; } else { return currentHit; } } simulated function tick(float deltaSeconds) { super.tick(deltaSeconds); if (currentHitTime > 0) currentHitTime -= deltaSeconds; if (localHeldBy != None) { if (lastHealth != localHeldBy.health) { if (lastHealth > localHeldBy.health) { currentHitTime = hitStayTime; } lastHealth = localHeldBy.health; } } } {BaT2|e5y| 0l l l l l l l l l l l l  PU^f:V^b { thirdPersonMesh = StaticMesh'Packs.ShieldPack' StaticMesh = StaticMesh'Packs.ShieldPackdropped' inventoryIcon = Texture'GUITribes.InvButtonShield' hudIcon = texture'HUD.Tabs' hudIconCoords = (U=205,V=165,UL=80,VL=40) hudRefireIcon = texture'HUD.Tabs' hudRefireIconCoords = (U=205,V=165,UL=80,VL=40) LocalizedName = "LordsShield" Infostring = "Passive effect slightly reduces damage to the user. Active effect greatly reduces damage." passiveFractionDamageBlocked = 0.75 rechargeScale = 6 activeFractionDamageBlocked = 0.99 hitStayTime = 0.5 rechargeTimeSeconds = 20 ...\DSA_Wicked_Xtreme\Classes\DSAShieldPack.uc^$@?_$p}?j$@d$?g$A]] LordsShield]][Passive effect slightly reduces damage to the user. Active effect greatly reduces damage.Z $MC$%C$B $ BZ $MC$%C$B $ BGclass DSARocketGunProjectile extends Gameplay.RocketPodProjectile; g class DSARepairPack extends Gameplay.RepairPack implements IRepairClient; var (LordsRepairPack) float rechargeScale "The wearer's energy recharge rate will be passively multiplied by this amount"; var float originalEnergyRechargeScale; simulated function applyPassiveEffect(Character characterOwner) { originalEnergyRechargeScale = characterOwner.energyRechargeScale; characterOwner.energyRechargeScale = rechargeScale; characterOwner.regenerationActive = true; characterOwner.regenerationRateHealthPerSecond = passiveHealthPerPeriod; } simulated function removePassiveEffect(Character characterOwner) { characterOwner.energyRechargeScale = originalEnergyRechargeScale; characterOwner.regenerationActive = false; characterOwner.regenerationRateHealthPerSecond = 0; } w// Buggy class DSAMPB extends Gameplay.Buggy; e]B Y2@]_ܖi U^V^D%{ DrawType=DT_Mesh Mesh=SkeletalMesh'Vehicles.Buggy' DrawScale=1.2 Gear=2 StopThreshold=40 ChassisMass=750 AirSpeed = 5000 Health=10000 bDrawDriverInTP = true rootBone=Buggy inventoryStationAccessClass = class'DSA_Wicked_Xtreme.DSAInventoryStationAccess' inventoryStationOffset = (X=-250,Y=0,Z=150) // inventory station positions must be last in array positions(0)=(type=VP_DRIVER,hideOccupant=false,occupantControllerState=TribesPlayerDriving,thirdPersonCamera=true,occupantAnimation=Buggy_Stand,occupantConnection=character,enterAnimation=HatchClosing,occupiedAnimation=HatchClosed,unoccupiedAnimation=HatchOpen,exitAnimation=HatchOpening,ManifestXPosition=50,ManifestYPosition=20) positions(1)=(type=VP_GUNNER,hideOccupant=true,occupantControllerState=PlayerVehicleTurreting,thirdPersonCamera=false,ManifestXPosition=30,ManifestYPosition=20) positions(2)=(type=VP_INVENTORY_STATION_ONE,hideOccupant=true,thirdPersonCamera=false,ManifestXPosition=33,ManifestYPosition=53,bNotLabelledInManifest=true) positions(3)=(type=VP_INVENTORY_STATION_TWO,hideOccupant=true,thirdPersonCamera=false,ManifestXPosition=33,ManifestYPosition=67,bNotLabelledInManifest=true) positions(4)=(type=VP_INVENTORY_STATION_THREE,hideOccupant=true,thirdPersonCamera=false,ManifestXPosition=47,ManifestYPosition=53,bNotLabelledInManifest=true) positions(5)=(type=VP_INVENTORY_STATION_FOUR,hideOccupant=true,thirdPersonCamera=false,ManifestXPosition=47,ManifestYPosition=67,bNotLabelledInManifest=true) turretClass = class'Gameplay.BuggyMountedTurret' gunnerWeaponClass = class'DSA_Wicked_Xtreme.DSAAntiAircraftWeapon' turretBone = turret gunnerCameraOffset = (X=0,Y=0,Z=50) gunnerWeaponOffset = (X=0,Y=0,Z=25) gunnerMaximumPitch = 10000 gunnerMinimumPitch = -3000 motorClass = class'BuggyMotor' HavokDataClass = class'BuggyHavokData' numberInventoryStationPositions = 4 maximumNumberInventoryStationPositions = 4 gunnerClientTurnRate = 30000 flipTriggers(0)=(radius=400,height=400,offset=(X=0,Y=0,Z=0)) collisionDamageMagnitudeScale = 0.00075 gunnerAITurnRate = 12000 ManifestLayoutMaterial = Texture'HUD.RoverSchematic'; driveYawCoefficient = 0.1 bEnableHavokBackstep = true localizedName = "MPB" bVehicleCameraTrace = true vehicleCameraTraceExtents = (X=10,Y=10,Z=10) '..\DSA_Wicked_Xtreme\Classes\DSAMPB.ucV{y:zCWZ:HB[:AY$@FX$;\$;FN$`Fx"w"c$;D`$ BB"~iETBGS;SN8SMKUI:L:EECDHvPB@J:?:6D"2O"FS=r<sTBGS;NS8SMKtI:L:ECHP@J:?:6D"O"FS=<TBGS;NS8SMKI:L:ECHP@J:?:6D"!O"5F=<TBGS;NS8SMKI:L:ECHP@J:?:6D"!O"CF=<TBGS;NS8SMKI:L:ECHP@J:?:6D"/O"5F=<TBGS;NS8SMKI:L:ECHP@J:?:6D"/O"CF=<IY y$CA$CO:g]$D:SL: A A Ah$=uFE}]MPBN$@Ex$@FWRW$?\Z]class DSAMortarProjectile extends Gameplay.MortarProjectile; Cclass DSALoadout extends Gameplay.Loadout; Bg^Cf>v nU^V^]{ weaponList(0)=(weaponClass=class'EquipmentClasses.WeaponSpinfusor') weaponList(1)=(weaponClass=class'EquipmentClasses.WeaponChaingun') weaponList(2)=(weaponClass=class'EquipmentClasses.WeaponGrenadeLauncher') packClass=class'DSA_Wicked_Xtreme.DSAEnergyPack' grenades=(grenadeClass=class'EquipmentClasses.WeaponHandGrenade',ammo=5) consumableList(0)=(consumableClass=class'HealthKit',amount=1) +..\DSA_Wicked_Xtreme\Classes\DSALoadout.ucvoQY({e"{e"{e"VZC @e"ZYT~"qclass DSAGrenadeLauncherProjectile extends Gameplay.GrenadeLauncherProjectile; aclass DSAEnergyPack extends Gameplay.EnergyPack; V/////////////////////////////////////////////////////////////////////////////// // // Emergency Station // class DSAEmergencyStation extends Gameplay.EmergencyStation; _0.w*.w*666666661 G/12)g77&/%L//*/&-x' FjdB Y2IaMr>[ U^V^l{ Mesh = SkeletalMesh'BaseObjects.RepairStation' DrawType = DT_Mesh ActiveLightSkin = shader'BaseObjects.vstationlightshader' ActiveLightSkinSlot = 3 bReplicateAnimations = true bCanBeDamaged = false bAIThreat = false accessRadius = 50 accessHeight = 80 accessClass = class'Gameplay.EmergencyStationAccess' repairPackClass = class'DSA_Wicked_Xtreme.DSARepairPack' respawnDelay = 0.25 4..\DSA_Wicked_Xtreme\Classes\DSAEmergencyStation.uc@$HBD$BFG"Hgj}$>W|RaHp>EfcQQWf9?9?h6Q9DW@9?&6Q9DW@9?&aa<pQr l virtual void initialiseHavokDataObject(); virtual void HavokPreSyncCallback(const FVector& deltaPos); a// // DSADynamicObject Class // // - Destroyable object // - Chunks are large child objects in Karma physics // - Fragments are small child objects in the new physics system // - Sounds and effects have been removed pending the new sound and effects system integration // class DSADynamicObject extends Engine.HavokActor native placeable; // (cpptext) // (cpptext) // (cpptext) // (cpptext) // (cpptext) var (DSADynamicObject) float Mass "The mass of the object (kg)"; var (DSADynamicObject) float Elasticity "The elasticity [0,1]"; var (DSADynamicObject) float friction "The amount of friction [0,1]"; var (DSADynamicObject) float LinearDamping "Linear Damping [0,1] 0 = no damping"; var (DSADynamicObject) float AngularDamping "Angular Damping [0,1] 0 = no damping"; var (DSADynamicObject) float Health "The amount of health in the object"; var (DSADynamicObject) bool Invulnerable "Object will be invulnerable to weapon attacks"; var (DSADynamicObject) bool Blocking "Blocks players and collide with other objects"; var (DSADynamicObject) bool Stationary "The object is stationary and cannot move"; var (DSADynamicObject) bool Enabled "Start enabled in physics right away"; var (DSADynamicObject) bool Shadows "Use projected shadows with this object (expensive)"; var (DSADynamicObject) bool Volatile "Object will explode immediately on collision or when hit with a weapon"; var (DSADynamicObject) bool Freeze "Child objects all freeze immediately on spawning (useful for art testing)"; var (DSADynamicObject) bool FadeOut "Fadeout object when destroyed (requires material to be setup correctly)"; var (DSADynamicObject) bool LimitedLife "If true, object will only hang around for Lifetime amount of time after spawning"; var (DSADynamicObject) float Lifetime "Object will only appear in the world for this long before fading out"; var (DSADynamicObject) bool Explosion "Launch child objects with initial explosion (true/false)"; var (DSADynamicObject) float ExplosionForce "Force applied to child objects when this object is destroyed"; var (DSADynamicObject) array< class > Children "Child objects spawned when this object is destroyed"; var (DSADynamicObject) array< class > Explosions "Explosion objects spawned when this object is destroyed"; var array Style; var bool StyleCreated; var bool FadingOut; var float FadeOutAlpha; var float FadeOutTime; var float FadeOutLength; var bool NextVersionPending; var bool NextVersionCalled; // currently can switch of dynamic on minspec machine enum EScalabilitySetting { DS_NoDynamics, DS_Full, }; overloaded function Construct( actor Owner, optional optional name Tag, optional vector Location, optional rotator Rotation, optional float Scale) { Label = Tag; setNativeActorData(Scale); super.construct(Owner, Tag, Location, Rotation); Label = Tag; } // this is used to set script const data in the Construct call native final function setNativeActorData(float Scale); event PreBeginPlay() { // local data -> actor bActorShadows = Shadows; if (!Blocking) SetCollision(false, false, false); // force stationary if scalability says so if (GetScalabilitySetting() == DS_NoDynamics) Stationary = true; if (Stationary) { SetPhysics(PHYS_None); } else { // initially inactive (to stop decorations falling off walls etc) HavokActivate(Enabled); } Super.PreBeginPlay(); } static simulated function PrecacheDSADynamicObjectRenderData(LevelInfo Level, class DynClass) { local int i; if (DynClass.default.StaticMesh != None) { Level.AddPrecacheStaticMesh(DynClass.default.StaticMesh); // Log("PRECACHING DSADynamicObject MESH "$DynClass.default.StaticMesh.Name); } // recurse through children for (i=0; i0) { // destroy self and spawn children SpawnChildren(); } Remove(); } } function Explode() { local int i; local Explosion ExplosionObject; local String SocketName; local Vector SocketPosition; local Rotator SocketRotation; local Vector SocketScale; for (i=0; i damageType, vector HitLocation) { if(Killer != None && Killer.Pawn != None) dispatchMessage(new class'MessageDestroyed'(Killer.Pawn.label, label)); else dispatchMessage(new class'MessageDestroyed'(label, label)); } // rowan: had to override this, as we set bSkipEncroachment as an optimisation, but still want to take damage form projectiles (base class returns !bSkipEncroachment) simulated event bool ShouldProjectileHit(Actor projInstigator) { return bProjTarget; } function PostTakeDamage(float Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { local Controller Killer; Killer = None; if (EventInstigator != None) Killer = EventInstigator.Controller; if (!Stationary) HavokImpartImpulse(Momentum, HitLocation); if (Invulnerable) return; if (Volatile) { NextVersion(); // post destroyed message Died(Killer, damageType, HitLocation); } else if (Health>0) { Health -= Damage; if (Health<=0) { NextVersion(); // post destroyed message Died(Killer, damageType, HitLocation); } } } function CreateAlphaStyle() { local int i; if (Skins.Length==0) LoadSkinsFromMaterials(); if (!StyleCreated) { for(i=0; i..\DSA_Wicked_Xtreme\Classes\DSADeployedTurretSentryWeapon.ucgclass DSADeployedTurret extends Gameplay.DeployedTurret; JmQ QSwX  R#@_ ---xw*#69C9<6#69C9<6#69C9<6#69C9<6#No heat colour material0 Pl[B Y2UG U^#M:(MM Fclass Cutter extends Gameplay.Buckler; var() float energyUsage "Amount of energy to use when shot"; simulated function setHasAmmoSkins() { // Always has ammo } function useAmmo() { Character(rookOwner).weaponUseEnergy(energyUsage); } simulated function bool hasAmmo() { return true; } b}+Fl `@ -J. &_ ^A C #O' O.class Wicked extends Gameplay.Mutator; function Actor ReplaceActor(Actor Other) { if(Other.IsA('EnergyPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAEnergyPack"); } if(Other.IsA('ShieldPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAShieldPack"); } if(Other.IsA('RepairPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSARepairPack"); } if(Other.IsA('SpeedPack')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSASpeedPack"); } if(Other.IsA('MortarProjectile')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAMortarProjectile"); } if(Other.IsA('ChaingunProjectile')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAChaingunProjectile"); } if(Other.IsA('GrenadeLauncherProjectile')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAGrenadeLauncherProjectile"); } if(Other.IsA('EnergyBlade')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.ShockLance"); } if(Other.IsA('Spinfusor')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.Ultrafusor"); } if(Other.IsA('Burner')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.PlasmaGun"); } if(Other.IsA('RocketPod')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.RocketGun"); } if(Other.IsA('Chaingun')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.VulcanSMG"); } if(Other.IsA('SniperRifle')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsLaserRifle"); } if(Other.IsA('Mortar')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsMortar"); } if(Other.IsA('Blaster')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsBlaster"); } if(Other.IsA('GrenadeLauncher')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.LordsLauncher"); } if(Other.IsA('Buckler')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.Cutter"); } if(Other.IsA('Grappler')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.Grabber"); } if(Other.IsA('DeployedTurret')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSADeployedTurret"); } if(Other.IsA('DeployedRepairer')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSADeployedRepairer"); } if(Other.IsA('ShockMine')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSAShockMine"); } if(Other.IsA('DeployedCatapult')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSADeployedCatapult"); } if(Other.IsA('Catapult')) { Other.Destroy(); return ReplaceWith(Other, "DSA_Wicked_Xtreme.DSACatapult"); } } ^XMa/!Ba DSA_Wicked_Xtreme.DSAEnergyPacka/!:a DSA_Wicked_Xtreme.DSAShieldPacka/!pa DSA_Wicked_Xtreme.DSARepairPack3a/!wa DSA_Wicked_Xtreme.DSASpeedPacka/!da DSA_Wicked_Xtreme.DSAMortarProjectilea/!`a DSA_Wicked_Xtreme.DSAChaingunProjectile7a/!ca DSA_Wicked_Xtreme.DSAGrenadeLauncherProjectilea/!Ua DSA_Wicked_Xtreme.ShockLancea/!Ka DSA_Wicked_Xtreme.Ultrafusora/!Ga DSA_Wicked_Xtreme.PlasmaGun]a/!Ha DSA_Wicked_Xtreme.RocketGuna/!Ea DSA_Wicked_Xtreme.VulcanSMGa/!La DSA_Wicked_Xtreme.LordsLaserRifle@a/!Ta DSA_Wicked_Xtreme.LordsMortara/!Ja DSA_Wicked_Xtreme.LordsBlastera/!Ia DSA_Wicked_Xtreme.LordsLaunchera/!Fa DSA_Wicked_Xtreme.Cutterfa/!Qa DSA_Wicked_Xtreme.Grabbera/!ma DSA_Wicked_Xtreme.DSADeployedTurret a/!la DSA_Wicked_Xtreme.DSADeployedRepairerVa/!pa DSA_Wicked_Xtreme.DSAShockMinea/!ka DSA_Wicked_Xtreme.DSADeployedCatapulta/!ma DSA_Wicked_Xtreme.DSACatapult fro6F sg4čl PdU^K$BJ$=I$?$?p {!$E%$?:pAp] Bucklerm]weapon_buckler_hold]Cutter]ljDefensive weapon that acts as a forward facing shield when equipped. Projectile can be guided once fired.Z $C$C$B $ BYpppnrnAnw nf nn n\ ne n_ nnnkpnGnL n] nD pzn|z \S nhe [ nvnP nbz y nt^ { z 6pq e u nunx nwnsL c ngncn:ninqw >nmnox re e n N nj] y _ ` Dp^ nrn_ L d ndnue tnJn _nO W Hnynxw nwe i w -w #w +^ z ] TnP nznpw ~n@nqe we Q w hnfx ww sW VW In O w ow 3W Ww dw upQ L Z nyntnpL ep\ x xn P e x e } n xx oe ~ x bx in je |n n|S e G w _B w }n^ w 0z g] X] Zw d] V L F n}w 1x Rn f n{^ M nW nde w e y nLnxnFW d] Yn~w Qn{ncnniw Rn^w SpU n` e T fm] v e mL K n WL | nL w knnw 3e mnE] y nmnD w w hhI n K\Q w C w x xw Pw Aw w QP Op w 3fLw w mP P] v w `w OH n _w ynmnl| w |n W \R x ow 7w qP L w pw tfTw A A P ] Rn` w np} L h e R w kw 3nUL g _ Q w RL I x we v w Dw Ow uw yw ^nknBw w ~3O e Y e X e ] n jn kw enEw i` ow #w hw Bw CL J z `nC x o_ n L] Q] Sw -w +n M nvn Mw zw bw }w bn Lw _nw_ nn Mn K] Yw \w bw _e unlw wn P n Pn N n W nhW x ninanrnsw ]ng nbw #w -w +` lw fw Vw _w zw fw VfF@ pW n P \z fD n N ] YpX fZ p[ s fb h] \\ Ba L ce |e n_ n^ n] n` pa fE\U pb \j T :` \h \b wc \V w fl fQna i \d fJfm w B \m w ^n\V \g fIfs w B w @ \l nkw A\k fGfk w E\y fHfr w P\T \i fR fj G ~ \f w lfq fK\p E u fEft F h \o E@ `A  |]q Ycvo UFC ss Pd HnWv>GT_ qc UOM dS BL `Sr ~l ]SF {t YN wS UJ rWGQbXocdG]kGIr f(CDGblB R ^j |K ZywmUlGs,CPFJodJMJGku H@V fGDTGaG~sJ[aA  y]JY^ w[JT} rZ O~ l=GJ2Gg2CD[ cxB@u B(N`@ ~M ]n |,NZBxRJV!u tqeRWC  pYJPaJnhJLk jK Gu d| XB-D ZSH w WTfJsOJQu o#D Ma  j m JIV gA FGem BW`@Y FI ^k {E Yz>cv@J YD x@L!UOD Fp cI @gI ]hXzuR_pA2Mq_UX \qY{qXZqu yA X mWG KUY iEH4@fRS  fY F@[e|X@Z qXJ hI{ jqX g[xRBG CTLW[ McX p4@O4@O4@OnCOaWRY i@O HY fX E@b d4ACP[DX _F4@~lU~LFS=~YtwzDU<F Ysw5F U5E tPqR4bCqa3b3E ^o|.d ZK xOW+_u+RS@ r* Q*{ oM L) k){ I#u fa DM cjoBN qHgOGjvjo`4@Oz#2O4AAz-=B_z+/~gZmb} G_DjobdoQD @ag^d_E`XdfX|aIThX sizK Y EaX d X CaY bD Az4@^u ^u |D ZoA wNxq] VkU sMQF4koUZQ\wz=SFPfJVv6`_0Vu Fu=dUa [zF4o^  MVFkfGqzLxa[D_Kbbamn [No [iF4w DF4^{_WYbcp[SF4mpF4x']F4~ UF4tSF4NGF4ZUF4Ho\ wbXTF4xl_Bd F4mfzKS%u ^fG|BmCQ5pL5ew5ZCiON.xk@fV5f/ [/[yD~XpCVq@YRCY9F4[\F4Knw~!B}wc|>Z{aXt@y\^yZ~W@c UAkrC[]Ce zE6YyFO0PUReIY wIL!UtTv1kJQ[uf?TAaS`LtkU@O[UD/sPdbGfFEJl>QvvJG_\QU[moyKX`DdqdH8UeqMeJ ~d=\x?Y`3PXe@ hr>Gc3pEl=uchErawGQX|>iHL] c i{CH[KY CjF4Zm~gm[TSQr[CF4QbF4~sF4zqF4i!k$F4TT F4Ah 3F4~i F4Bg [i uKF d;Q hzL F#2F k7x [o osD F-=w F+/t [c FF4]A w?^ 36] +/S -=B #2 [q F4TN F4Kb B4Km Jo x B4Gg KU n u;C d3~ skq zB4o\ hK D s B4f.P LV v PLL B4hiX F4G@ zNdG B4tk B4p'_ Q`(O B4To R\C u;_ s;Z dZU O?o B4i!n SfW AJ} _^G B4w e Tm\ [I yJf B4Up UFEB4ZK[eQKBVPMB4 ]W`\Py|B4SuF4p'HXixB4\aYf}B4ac[LDB4KnP0I[]{/df?_1k^B4x'IhAAQB^eS+/x-=g#2d[VF4tsF4higB4mOB4k|`GgB4w na`eB4^EB4~ cB4Nae{8oB4tjB4Z^gc xB4H[B4xc B4m[0uH1k}j] ha>kEt 4CpB4ys [lB4QKk`\B4~|mv!3ntF!^bnb @!iAb%[cr>@'3L~'>JB4AHa>I+3LGF+^S3B4~q+\@o/[oo?L1