*6@="Po8&8E |6NoneFailboat_Test1Core GameplayEngineSystemTriggerEffectEventEquipmentClasses quantity typeClassTeam PowerLost AllocateTickdispatchMessage Destructedconstruct_NameActiveProjectileTouchhasAmmoUnpoweredLoop PlayBDAnimweaponsShouldDeflectUnTriggerEffectEventBucklerDeflectGetViewRotationdamageEnergyDrainFactor EndStateweaponUseEnergyprojectileClassBaseObjectClasseslocalizedName BeginState isDisabledcanArmorOccupyWaitForNewSpawnEventbCollideWorld NewSpawn isPoweredbWorldGeometry VehicleClassReplaceVehiclePadUnpoweredStartUnpoweredStopVehicleClassesdeactivatePersonalShield isDamagedDamaged UnpoweredAlive LifeSpanmakeProjectileHealthradiusDamageSizemenuObjectgetProjectileSpawnLocationroundsPerSecondfiredEffectProcessingendLifesetSwitchedOn changeEnergyenableAbandonmentDestruction returnToHomemaxAmmogetModifiedAmmo energyUsage FireWeaponCollisionRadius TribesGuiModifyGameInfoCollisionHeight burnTimeburningAreaClassPostTakeDamageSpawnBurningArea getMaxAmmo validCarrierModifyPlayerStartVectorCheckTouchinguseAmmoplayCharacterFireAnimModifyFlagStandsProjectileHitgetAimRotationModifyBaseTurretsinitialiseRookMotorModifyVehiclePadsupdateCarryableEffects StaticMesh damageAmtPostBeginPlay PreBeginPlayDeployableClassesTimerunifiedSetPositionplayEquippableAnim ReplaceWithbCanBeDamaged Failboat HurtRadiusFailBurningAreaunifiedSetRotationunifiedSetAngularVelocityunifiedSetVelocityFailArmorLightFailDegrappleProjectile TopSpeedFailDeployableTurretFailDeployedTurret ReplaceActorfailNumVisibleLoadoutSlots AcceptTextWeaponBlaster WeaponBurnerHomeWeaponBucklerWeaponSniperRifle DrawScale3DWeaponGrenadeLauncherWeaponChaingun StartTimerWeaponSpinfusorWeaponRocketPodWeaponEnergyBlade PackShieldFailInventorySelectionMenu captureStat FailMPFlagMeshFailMultiplayerCharactercarrierKillStat pickupStatmeshWhileCarriedPlayerCalcView attackRadius defendRadius attackStat defendStatbDisablePositionSwitching MaxVelocity AllowedPacksAllowedDeployablesExtentAllowedDriverAllowedPassengerinventoryStationMenuClassAllowedConsumablesAllowedWeaponsBroadcastLocalizedFailPlasmaAreaknockbackAliveScale!coastingCounterGravityForceScaleturretWeaponClass-construct_BoolCharacterTeamInfoVectorRotatorignitionDelaybCollideActorsSkins DrawType rechargeRateprimaryFriendlyObjectiveDescprimaryEnemyObjectiveDescprimaryNeutralObjectiveDesc idleAnimGUIFailPlayerCharacterControllerbCanBeGrappledInField MovementreturnedHomeEffectEvent LightColorcarriedObjectClass CollisionForce GrapplerKarmaradarInfoClass BreakGrapple LightingIdledropCarryables FailPodMotorFailPodUseableObjectdeployaddVehicleRespawngunnerWeaponClass BurnTargetCarryableMessageClass driveVehiclesetTeamFailProjectileBlasterFailProjectileBurnerFailProjectileChaingunprojectileVelocityprojectileInheritedVelFactor setCarrierFailProjectileChaingunSentry'FailProjectileChaingunSentryDeployableFailProjectileGrenadeLauncherpickup ammoUsageFailProjectilePlasmaFailProjectileRocketPodFailProjectileSniperRifleFailProjectileSpinfusorFailScreenStrongMediumcanFireUVdetachGrappleULVLFailVehicleAssaultShipFailVehicleBuggySignificantReturnremoveVehicleRespawnMaxFailVehiclePodRange MatCoords FireReleasedFailVehicleSpawnAssaultShipUserFailVehicleSpawnBuggyFailVehicleSpawnFighterFailVehicleSpawnTankFailVehicleTankcollisionDamageMagnitudeScalehitbounce addCarryableUnTouchradiusDamageAmt DestroyedradiusDamageMomentumhudIconprojectileTouchProcessingFailWeaponBurnerhudIconCoords ShouldHitFailWeaponDeployedTurretSentrybaseDeviceClassLocked setOutOfAmmo returnTimeFailWeaponEnergyBladesimulatedAttachFailWeaponPlasmacanCharacterRespawnAtattemptPickuptriggerHitEffect bDeflectable motorClassBeginFailWeaponPoddriverWeaponClassFailWeaponTurretSentryMutateSpawnCombatRoleClassFailWeaponVehicleTurretSentrymissEnergyUsagespinfusorProjectileVelocityModifyTurretSpawn canOccupyclientWeaponUseEnergy returnStatUseableObjectdamageTypeClassRookSpread bWasDeployedPlayerCharacterController ShieldPack RoleDataPack occupant weaponClassBuggy ammoCountQuantityWeapon animClass MPCarryableTurret CharacterWeapon DeployableVehicle FlagStandMPFlagFlagNeutralShaderknockBackVelocityProjectileBlastersecondaryPositions EnergyBladeBucklerProjectileBlasterfireAnimationBurnercapturableClass TeamInfoMessageBaseDevicePowerOffMessageBaseDevicePowerOn VehicleMotorCharacterMotor IFiringMotorMotor PodMotor MPCapturableMPCapturePointMPCarryableContainerExplosiveProjectileBurnerProjectile BurningAreaGrapplerProjectileDeployedRepairerDeployedTurretObjectSpawnPointVehicleSpawnPointMultiplayerStart BaseInfoBaseDeviceDeployable EquippableEquippableAnimator CombatRoleMultiplayerCharacterClientSideCharacterArmorBucklerMPGameObjects BaseDeviceexistenceTimeAnimationChannelFlag bInitializedOwnerBase reelInDelaydriverMinimumPitchdriverMaximumPitchinvincibleDelayClientPositionData bFirstSpawn bDeleteMepassiveFractionDamageBlockedactiveFractionDamageBlocked InstigatorbUseCylinderCollisionOtherlostReturnDelay armorClasspbInitializationDeltaEventInstigator HitNormalTouchLocation TouchNormalspeedPackScaleknockbackScaleDamage HitLocation MomentumEDirectionTypebOldUseCylinderCollisioneDeployableInfo bDeployedprojectileFactor TraceEndvictim direction startLocfireLocfireRot bFiredWeapon lastFireTimedemoFireCount fireCount rookOwner rookMotor bEndedLifebucklerHeightdeflectionNormal HitMaterial HitEffect bounceCountGameEClientPainType ownerBasespawnedBaseDevicecosDeflectionAngle bDeflected bReturningAnimationChannelIndexinDive inThrustdirectionRotationperiodSecondsclientPositionsNetMode DiveInput ThrustInputRotationInputThrottleInput StrafeInputVehiclePositionType TimeSeconds EInputAction EInputKey OldLocationpersonalShieldClass objectTypeenergyViewRot InForward homeLocation homeRotationbHomeexistenceTimerhomeContainer bHomeEffect bWasDropped bSignificanthealthMaximumignoreLastCarrierCheck InStrafe ViewActor PromptIndexcombatRoleDataspawnedVehicleMPTabs OldRotationProjectileSpinfusorProjectileRocketPod PackRepairCombatRoleLight KitHealthProjectileChaingunSentry#ProjectileChaingunSentryDeployable PackEnergy ArmorLightProjectileBurner HitActorProjectileSniperRifleResult ArmorHeavyWeaponGrapplerWeaponVehicleFighterRocketTargetWeaponDeployedTurretSentryDefaultPlayerClassNameProjectileBurnerBurningAreaLevelspeed DamageType PackSpeed GameInfoProjectileGrenadeLauncherHUD InteractionsWeaponVehicleTurretSentryProjectileChaingunWeaponTurretSentryTribesInventorySelectionMenu LevelInfoMutator PlayerStartShaderScreenDefault BaseSensor BaseTurretBaseObjectVehicleSpawnFighterBaseObjectVehicleSpawnBuggy"BaseObjectVehicleSpawnAssaultShipBaseDeployableSpawnTurretBaseObjectVehicleSpawnTank TerrainInfo VehiclePodVehicleAssaultShip VehicleTank VehicleBuggy ProjectileDeployableInventoryStationDeployableShockMineDeployableTurretDeployableCatapultDeployableRepairer hudClassesRadarInfoFlag StatClassesAnnouncerClassesMPFlagMessagesflagPickupStatflagCaptureStatflagReturnStatStatFlagDefendStatFlagAttackStatFlagCarrierKill PositionPC TakeDamage SetAnimFrameStopAnimatingSetRelativeLocationSetRelativeRotationPhysics SkeletalMeshPawnPlayerController MaterialActor ScriptTextLabelProcessedTextjiSBCPitch Location Rotation Velocity ReturnValueNormal NormalizeTextureRoleClassPackageConst TextBufferEnum FunctionStateRotatorStructNamebStolen closestBaseclosestBaseTeam StrPropertybp returnCodepassengerSeat passengerStructProperty enemyPack weaponOwner enemyPCCArrayProperty VERSION_NAMEClassProperty NamePropertyObjectPropertyFloatProperty BoolProperty IntProperty vehiclePad oldOwnerBasenewVehiclePadbHasAssaultShip BytePropertyvehiclePadClassVehicleClassesASOld VehicleASOldXI   [8TB4VXNJ6` iB!b|FuTA[E9_:;K>?`*SFnK2 E! 6}yߋyߐyߐyߋyߐyߐy_@4uEu@{ bStolen = false baseDeviceClass=Class'DeployedRepairer' 2..\Failboat_Test1\Classes\FailDeployableTurret.ucszCw~f{F|Ln#3b5|\9|\~g |\9999|\|\|\|\9uSu${ damageEnergyDrainFactor = 0.5 :..\Failboat_Test1\Classes\FailProjectileChaingunSentry.uc$?TDx6Mf}=H\8Cu pu={ projectileClass = Class'FailProjectileChaingunSentry'; ;..\Failboat_Test1\Classes\FailWeaponVehicleTurretSentry.ucLUjkQCdWw_vB Y2Z}p2d{s>uHduK{ vehicleClass = Class'FailVehicleAssaultShip' localizedName = "Mile High Club Pad" bCollideWorld = false bWorldGeometry = false 9..\Failboat_Test1\Classes\FailVehicleSpawnAssaultShip.uc)_ ]Mile High Club Pad(S%Syz]x_^aMsC|B.Y6cϰ5_Uz 8 8_p8lc_pL7uEuB{ returnStat=Class'StatClasses.flagReturnStat' captureStat=Class'StatClasses.flagCaptureStat' returnTime=30.000000 hudIcon=Texture'HUD.MPTabs' hudIconCoords=(U=102.000000,V=216.000000) meshWhileCarried=SkeletalMesh'MPGameObjects.Flag' bCanBeGrappledInField=False CarryableMessageClass=Class'AnnouncerClasses.MPFlagMessages' pickupStat=Class'StatClasses.flagPickupStat' carrierKillStat=Class'StatClasses.StatFlagCarrierKill' returnedHomeEffectEvent="None" carriedObjectClass=Class'FlagThrower' localizedName="Flag" primaryFriendlyObjectiveDesc="Defend your team's flag" primaryEnemyObjectiveDesc="Get the enemy flag" primaryNeutralObjectiveDesc="Get the flag" defendStat=Class'StatClasses.StatFlagDefend' attackStat=Class'StatClasses.StatFlagAttack' defendRadius=1500 attackRadius=1500 idleAnim="Idle" secondaryMessageClass=Class'MPSecondaryFlagMessages' radarInfoClass=Class'hudClasses.RadarInfoFlag' DrawType=DT_Mesh StaticMesh=None Mesh=SkeletalMesh'MPGameObjects.Flag' Skins(1)=Shader'MPGameObjects.FlagNeutralShader' CollisionRadius=70.000000 CollisionHeight=120.000000 (..\Failboat_Test1\Classes\FailMPFlag.ucJBv$AmpZ]Q$BR$XCT$BU$ BHiS}GFkm ]Flagc]Defend your team's flagd]Get the enemy flage] Get the flagMLK"J"fura[D`)E$BH$BbfQRgiDSY]AkHjL7uGu>{ burnTime = .2 bCollideActors = false; lifeSPan = .2 ,..\Failboat_Test1\Classes\FailPlasmaArea.ucI$L>3$L>_S3YBw6m6h6\8Cu pu={ projectileClass = Class'FailProjectileChaingunSentry'; 4..\Failboat_Test1\Classes\FailWeaponTurretSentry.ucLnrvpsvtt'yatyl6 {SK_paЄ|\|\i\8Cu pu@{ projectileClass = Class'FailProjectilePlasma' energyUsage = 0 ammoCount = 20 ammoUsage = 1 roundsPerSecond = 1.5 projectileVelocity = 3750 projectileInheritedVelFactor = 0.4 ...\Failboat_Test1\Classes\FailWeaponPlasma.ucC$J":$?eC$`jED$>}@@ickCyQdPB Y2C7m|\|\|\-@u]iu{ -..\Failboat_Test1\Classes\FailVehicleTank.ucFGIJMNS}a|B Y2QNh-cVF2d{s>ufu@{ vehicleClass = Class'FailVehicleBuggy' localizedName = "Party Van Pad" bCollideWorld = false bWorldGeometry = false 3..\Failboat_Test1\Classes\FailVehicleSpawnBuggy.uc)X ]Party Van Pad(S%SSTWZr[oB Y2Vkќ|\|\|\-s>uHdu%{ motorClass=Class'FailPodMotor' ,..\Failboat_Test1\Classes\FailVehiclePod.uc~t[mW^B Y2 X bꘉ|\7|\7|\|\|\-s>u6bue{ localizedName = "Party Van" gunnerWeaponClass = Class'FailWeaponVehicleTurretSentry' bDisablePositionSwitching = true TopSpeed=13250.000000 abandonmentDestruction = false collisionDamageMagnitudeScale=0.000035 ...\Failboat_Test1\Classes\FailVehicleBuggy.uc{Me$8Nm$OF ] Party VanZ[7^5]\VWB Y2_$`C|\|\|\-NA MMile High Club5$D ^OVa;nNy/͑#9uLuA{ burningAreaClass = class'FailBurningArea' lifeSpan = 1.9 2..\Failboat_Test1\Classes\FailProjectileBurner.ucJu3$33?jF@Irn|\9|\~g |\9999|\|\|\|\L7uLu${ damageEnergyDrainFactor = 3.0 3..\Failboat_Test1\Classes\FailProjectileBlaster.uc$@@@~OwP tpU‘ױߑױߑױߑױߑױߑױߑױߑױߑױߑױL7uj_Ju{ *..\Failboat_Test1\Classes\FailPodMotor.ucUPgRAu7Oj@4u\8Cu{ burnTime = 1.5 -..\Failboat_Test1\Classes\FailBurningArea.ucI$?w\Y)v *.v~- w*.~w*\99 V #HB~Vw\ !--V))(|)'( pclass FailProjectileChaingunSentry extends EquipmentClasses.ProjectileChaingunSentry; var() float damageEnergyDrainFactor; function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } Gclass FailProjectileChaingunSentryDeployable extends EquipmentClasses.ProjectileChaingunSentryDeployable; var() float damageEnergyDrainFactor; function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); c.clientWeaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } singular simulated function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal) { local Projectile p; local Vector HitNormal; if(Other != None && Other == Class'BaseObjectClasses.BaseSensor'){ damageAmt = 0; } if (!projectileTouchProcessing(Other, TouchLocation, TouchNormal)) return; if (ShouldHit(Other, TouchLocation)) { if (!ShouldDeflect(Other, TouchLocation, HitNormal)) { ProjectileHit(Other, TouchLocation, TouchNormal); } else { p = bounce(HitNormal, TouchLocation, Other.Velocity); p.bounceCount = 0; } } } k >.k- w* .w * H99 4 #HB4gH  ! - -V(I'( Al.l~- w* .~w * K99 T #HB~TmK  ! - -V%%(|%'( %hhij wclass FailProjectileChaingun extends EquipmentClasses.ProjectileChaingun; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } Rclass FailProjectileBurner extends EquipmentClasses.ProjectileBurner; H].]~- w* .~w * 599 B #HB~B^5  ! - -V22(|2'( 4Y'w* r Cn6 q;U69g; 9% "2YYZ[ uclass FailProjectileBlaster extends EquipmentClasses.ProjectileBlaster; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } Cclass FailPodUseableObject extends Gameplay.UseableObject; RKuclass FailProjectileGrenadeLauncher extends EquipmentClasses.ProjectileGrenadeLauncher; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } OONM L~-?6 6 a+R-S?--T rclass FailPodMotor extends Gameplay.PodMotor; function driveVehicle(float inForward, float inStrafe, rotator directionRotation, bool inThrust, bool inDive) { vehicle.ThrottleInput = 1; vehicle.StrafeInput = 0; vehicle.RotationInput.Pitch = clamp(vehicle.RotationInput.Pitch, vehicle.driverMinimumPitch, vehicle.driverMaximumPitch); vehicle.setRotation(normalize(directionRotation)); if (inThrust) vehicle.ThrustInput = 1; else vehicle.ThrustInput = 0; vehicle.DiveInput = inDive; } G class FailPlayerCharacterController extends Gameplay.PlayerCharacterController; Uclass FailProjectilePlasma extends EquipmentClasses.ProjectileBurner; var bool bEndedLife; var() float radiusDamageAmt; var() float radiusDamageSize; var() float radiusDamageMomentum; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } simulated function ProjectileHit(Actor Other, vector TouchLocation, vector Normal) { endLife(Other, TouchLocation, Normal); super.ProjectileHit(Other, TouchLocation, Normal); } simulated function endLife(Actor HitActor, vector TouchLocation, Optional vector TouchNormal) { local float speed; local Vector direction; SpawnBurningArea(); if (bEndedLife) return; bEndedLife = true; HurtRadius(radiusDamageAmt, radiusDamageSize, damageTypeClass, radiusDamageMomentum, TouchLocation, HitActor, direction); Super.endLife(None, TouchLocation, TouchNormal); } simulated function triggerHitEffect(Actor HitActor, vector TouchLocation, vector TouchNormal, optional Name HitEffect) { SpawnBurningArea(); } simulated function BurnTarget(Rook target) { } U`a XTiT <H HGF YV # Zk !2 \] !2 W=U,<=>?=>? nclass FailPlasmaArea extends EquipmentClasses.ProjectileBurnerBurningArea; var float damageAmt; simulated function PostBeginPlay() { TriggerEffectEvent('Alive'); } simulated function Destroyed() { UntriggerEffectEvent('Alive'); } simulated function Tick(float Delta) { } simulated function UnTouch(Actor Other) { } function Timer() { Destroy(); } asA9w.*.?S  [B<UL-< -<'fKJICB~*C @M8*r@ {B A @ oclass FailMultiplayerCharacter extends Gameplay.MultiplayerCharacter; simulated function int getMaxAmmo(class weaponClass){ if(weaponClass == class'FailWeaponPlasma'){ return getModifiedAmmo(armorClass.static.maxAmmo(class'EquipmentClasses.WeaponBurner')); } return super.getMaxAmmo(weaponClass); } simulated event BreakGrapple() { if (Grappler(weapon) != None) Grappler(weapon).lastFireTime = Level.TimeSeconds - 0.5; detachGrapple(); } ~mh7-(-(Z5w* | _f|&$L ghiek|+m Fclass FailProjectileRocketPod extends EquipmentClasses.ProjectileRocketPod; var float Health; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ if(BaseObjectClasses.BaseSensor(Other) != None){ radiusDamageAmt *= 0.5; damageAmt *= 0.5; } super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function PostTakeDamage(float Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { Health -= Damage; if(Health <= 0) Destroy(); Super.PostTakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, projectileFactor); } o!Fu-(#"j#i"a**o-'w*ha q!t ah-'Z-'-( DG?(w.G*??Gzy qQ6F - /a3 CBNEI0 10 p@0e nIKGBDID9?%aIwtspn udvpNT1w*X, Q 1X<wuN% -(u-v xq{ -(q-r zo@-'-o E!class FailProjectileSniperRifle extends EquipmentClasses.ProjectileSniperRifle; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ if(BaseObjectClasses.BaseSensor(Other) != None){ damageAmt = 0; } super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } ]m)!9:9:$-( #O2w.O*Oji x%class FailMPFlag extends Gameplay.MPFlag; var bool bReturning; simulated function PostBeginPlay() { if (Level.NetMode != NM_Client) { bReturning = false; } Super.PostBeginPlay(); } function returnToHome(optional bool bSignificant) { bReturning = true; super.returnToHome(bSignificant); } function bool attemptPickup(Character c, optional bool ignoreLastCarrierCheck){ if(bReturning) return false; super.attemptPickup(c, ignoreLastCarrierCheck); } function bool validCarrier(Character c, optional bool ignoreLastCarrierCheck){ if(bReturning) return false; super.validCarrier(c, ignoreLastCarrierCheck); } state Home { function returnToHome(optional bool bSignificant) { } function CheckTouching() { local Character c; if(bReturning) return; ForEach TouchingActors(class'Character',c) { if ( ValidCarrier(c) ) { setCarrier(c); pickup(c); return; } } } function BeginState() { bWasDropped = false; SetRelativeLocation(Vect(0,0,0)); SetRelativeRotation(Rot(0,0,0)); unifiedSetVelocity(Vect(0,0,0)); unifiedSetAngularVelocity(Rot(0,0,0)); SetBase(None); SetPhysics(default.Physics); bHome = true; if (homeContainer != None) { homeContainer.addCarryable(self); unifiedSetPosition(homeContainer.Location); GotoState('Locked'); return; } unifiedSetPosition(homeLocation); unifiedSetRotation(homeRotation); bHomeEffect = true; updateCarryableEffects(); bInitialized = true; bReturning = false; } function EndState() { bHome = false; bHomeEffect = false; updateCarryableEffects(); if (existenceTimer != None) existenceTimer.StartTimer(existenceTime); } SignificantReturn: if (CarryableMessageClass != None) Level.Game.BroadcastLocalized(self, CarryableMessageClass, 2, team()); Begin: CheckTouching(); } Eclass FailInventorySelectionMenu extends TribesGUI.TribesInventorySelectionMenu; Kclass FailDeployedTurret extends DeployableClasses.DeployedTurret; {hF.h~- w*.~w*R99 X #HB~XgR !--V##(|#'( @A$DyG$9:$9:$a(((-!--' F]'.*r*--($--!--!-'$ JE^<Kclass FailProjectileSpinfusor extends EquipmentClasses.ProjectileSpinfusor; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; local BucklerProjectile bp; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; radiusDamageAmt = 0; } } } return false; } H``_x [class FailDeployableTurret extends DeployableClasses.DeployableTurret; var bool bStolen; state FireReleased { function eDeployableInfo deploy() { local eDeployableInfo result; local bool bOldUseCylinderCollision; local BaseInfo closestBase; local BaseInfo base; local TeamInfo closestBaseTeam; result = Super.deploy(); if (result == DeployableInfo_Ok) { SetCollision(false, false, false); bOldUseCylinderCollision = baseDeviceClass.default.bUseCylinderCollision; baseDeviceClass.default.bUseCylinderCollision = true; spawnedBaseDevice = new baseDeviceClass(true, Character(Owner), None, Location, Rotation); if (spawnedBaseDevice == None || spawnedBaseDevice.bDeleteMe) { bDeployed = false; return DeployableInfo_Blocked; } baseDeviceClass.default.bUseCylinderCollision = bOldUseCylinderCollision; spawnedBaseDevice.bUseCylinderCollision = bOldUseCylinderCollision; spawnedBaseDevice.bWasDeployed = true; } return result; } } N[x6Y.[wY*a[ya''' Ie.e - w*. w*Q99 N #HB NfQ !--( SUKBSUS9?%aUdba^] [ class FailDegrappleProjectile extends Gameplay.GrapplerProjectile; var float Health; function PostTakeDamage(float Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { Health -= Damage; if(Health <= 0) Destroy(); Super.PostTakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, projectileFactor); } simulated function simulatedAttach(Actor Other, vector TouchLocation) { local Character c; c = Character(Other); if(c != None) Destroy(); Super.simulatedAttach(Other, TouchLocation); SetCollision(true, true, true); } `e!2a ^class FailBurningArea extends EquipmentClasses.ProjectileBurnerBurningArea; function Timer() { UntriggerEffectEvent('Alive'); Destroy(); } Bclass FailArmorLight extends EquipmentClasses.ArmorLight; bclass FailWeaponVehicleTurretSentry extends EquipmentClasses.WeaponVehicleTurretSentry; Rclass FailScreenStrongMedium extends BaseObjectClasses.ScreenDefault; D class FailVehicleAssaultShip extends VehicleClasses.VehicleAssaultShip; simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass == class'EquipmentClasses.ArmorHeavy') && (position == VP_DRIVER)) return false; else return true; } function enableAbandonmentDestruction(float periodSeconds) { } l#uBr3*p9W3's armor class is none'qr3 9:l9:$(s' Tclass FailWeaponTurretSentry extends EquipmentClasses.WeaponTurretSentry; Qclass FailWeaponPod extends EquipmentClasses.WeaponVehicleFighterRocket; X]? Fclass FailVehicleBuggy extends VehicleClasses.VehicleBuggy; simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass == class'EquipmentClasses.ArmorHeavy') && (position == VP_DRIVER)) return false; else return true; } simulated function bool canCharacterRespawnAt() { if (clientPositions[0].occupant != None) return false; return super.canCharacterRespawnAt(); } function int canOccupy(Character character, VehiclePositionType position, array secondaryPositions, out byte promptIndex) { local int returnCode; returnCode = super.canOccupy(character, position, secondaryPositions, promptIndex); if(returnCode != -1 && team() != character.team()){ team().removeVehicleRespawn(self); setTeam(character.team()); team().addVehicleRespawn(self); } return returnCode; } function enableAbandonmentDestruction(float periodSeconds) { } x#uBr'*p9W''s armor class is none'qr' 9:x9:$(s' Z@v6`'Ɔ"\8Cu pu{ +..\Failboat_Test1\Classes\FailWeaponPod.ucSclass FailWeaponPlasma extends EquipmentClasses.WeaponBurner; function int getMaxAmmo(){ return Character(rookOwner).getModifiedAmmo(Character(rookOwner).armorClass.static.maxAmmo(class'EquipmentClasses.WeaponBurner')); } simulated protected function FireWeapon() { local Vector fireLoc; fireLoc = rookMotor.getProjectileSpawnLocation(); makeProjectile(getAimRotation(fireLoc), fireLoc); lastFireTime = Level.TimeSeconds; if (rookMotor == None) initialiseRookMotor(); firedEffectProcessing(); bFiredWeapon = true; playCharacterFireAnim(); animClass.static.playEquippableAnim(self, fireAnimation, speedPackScale * roundsPerSecond); demoFireCount++; if (demoFireCount==0) demoFireCount = 1; } function useAmmo() { if (ammoCount <= 0) return; ammoCount -= ammoUsage; if (ammoCount <= 0) setOutOfAmmo(); } simulated function bool hasAmmo() { return ammoCount >= ammoUsage; } simulated function bool canFire() { return hasAmmo(); } _dzw6%*( c(H!+(|}@+w (  Y(  z+ \&class FailWeaponEnergyBlade extends EquipmentClasses.WeaponEnergyBlade; var Vector extent; var float missEnergyUsage; /* simulated protected function FireWeapon(){ if(Character(rookOwner).pack != None){ Character(rookOwner).pack.gotoHeldState(); } Super.FireWeapon(); } */ simulated protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local Vector hitLocation; local Vector hitNormal; local Vector traceEnd; local Material hitMaterial; local Actor victim; local Actor viewActor; local Vector startLoc; local Rotator viewRot; local PlayerController pc; local Pack enemyPack; local Character weaponOwner; local PlayerCharacterController enemyPCC; weaponOwner = Character(rookOwner); useAmmo(); fireCount++; if (pc != None) { startLoc = pc.location; viewRot = pc.rotation; viewActor = Owner; pc.PlayerCalcView(viewActor, startLoc, viewRot); } else { startLoc = Owner.Location; viewRot = fireRot; } traceEnd = fireLoc + Vector(viewRot) * range; victim = Trace(hitLocation, hitNormal, traceEnd, startLoc, true, extent, hitMaterial); if (victim != None && TerrainInfo(victim) == None) { TriggerEffectEvent('Hit', None, hitMaterial, hitLocation, Rotator(hitNormal)); weaponOwner.changeEnergy(energyUsage); if (Level.NetMode != NM_Client){ victim.TakeDamage(damageAmt, rookOwner, hitLocation, Normal(traceEnd - fireLoc) * knockBackVelocity, damageTypeClass); if(Character(victim) != None){ Character(victim).dropCarryables(); /* if(Character(victim).pack != None){ enemyPack = Character(victim).pack; enemyPack.gotoHeldState(); /* enemyPack.gotoState('Recharging'); enemyPack.finishActiveEffect(); enemyPack.deactivating = true; enemyPack.deactivatingProgressedTime = 0; enemyPack.bLocalActive = false; enemyPack.rechargingAlpha = 0; enemyPack.alpha = 0; enemyPCC = PlayerCharacterController(Character(victim).Controller); enemyPCC.HUDManager.UpdateHUDData(); */ //Character(victim).pack.drop(); //Character(victim).destroyThirdPersonMesh(); //Character(victim).pack = None //Character(victim).pack.endHeldByCharacter(Character(victim)); } */ } } }else { Character(rookOwner).changeEnergy(missEnergyUsage * -1); } return None; } f\wY6 gIgVc^e1e1e1Kԛ|\_pKԛ|\|\@u"nui{ extent = (X=20,Y=20,Z=20) Range = 550 damageAmt = 25 energyUsage = 10 missEnergyUsage = 20 3..\Failboat_Test1\Classes\FailWeaponEnergyBlade.ucR:PAAAE$A\"&\"C$ Adclass FailWeaponDeployedTurretSentry extends EquipmentClasses.WeaponDeployedTurretSentry; hrX6jC\$f@uVkuD{ projectileClass=Class'FailProjectileChaingunSentryDeployable' <..\Failboat_Test1\Classes\FailWeaponDeployedTurretSentry.ucn+T class FailWeaponBurner extends EquipmentClasses.WeaponBurner; simulated protected function FireWeapon() { local Vector fireLoc; fireLoc = rookMotor.getProjectileSpawnLocation(); makeProjectile(getAimRotation(fireLoc), fireLoc); lastFireTime = Level.TimeSeconds; if (rookMotor == None) initialiseRookMotor(); firedEffectProcessing(); bFiredWeapon = true; playCharacterFireAnim(); animClass.static.playEquippableAnim(self, fireAnimation, speedPackScale * roundsPerSecond); demoFireCount++; if (demoFireCount==0) demoFireCount = 1; } en?.n A class FailVehiclePod extends VehicleClasses.VehiclePod; var name passengerSeat; var Character passenger; simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass != class'EquipmentClasses.ArmorLight')) return false; else return true; } qps# cBr,*p9W,'s armor class is none'_w, (a' ,lVoU6tAK_pa@uVkuL{ projectileClass = Class'FailProjectileBurner' roundsPerSecond = .67 ...\Failboat_Test1\Classes\FailWeaponBurner.uc:$+?qbclass FailVehicleSpawnAssaultShip extends BaseObjectClasses.BaseObjectVehicleSpawnAssaultShip; simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } {1QA 8 A!9?%q! 1"q!'M/q!0vr*q!!&q!!$ sclass FailVehicleTank extends VehicleClasses.VehicleTank; /* function Timer(){ driverWeapon.fire(true); } */ //Thanks Stryker //This is where compmod decides what class can pilot each vehicle. Not clean...but there is no nice way to edit the armorclasses allowed vehicles //Returns true if the armour of the specified character can occupy the specified position. simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass == class'EquipmentClasses.ArmorHeavy')) return false; else return true; } /* simulated function fire(optional bool fireOnce) { GotoState('Firing'); } State Firing { simulated function BeginState() { SetTimer(3, false); } simulated function Timer() { driverWeapon.fire(true); } } */ x!/b-!+!ow*Y-Pa! ! Vo! zD.   F-( zLw>!!,   F Vclass FailVehicleSpawnBuggy extends BaseObjectClasses.BaseObjectVehicleSpawnBuggy; simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } A1QD 8 D!9?%q! 1"q!'M/q!0vr*q!!&q!!$ Rclass FailVehicleSpawnTank extends BaseObjectClasses.BaseObjectVehicleSpawnTank; /* simulated function postSpawnVehicle() { // getting crash in detachFromBone if (spawnedVehicle != None) { spawnedVehicle.spawning = false; spawnedVehicle.finishedSpawnFromVehicleSpawnPoint(); } Destroy(); } */ // State Unpowered simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } ~!/V-!+!ow*Y-Pa! ! Vo! zD.   F-( @Lk>!!,   F hclass FailVehicleSpawnFighter extends BaseObjectClasses.BaseObjectVehicleSpawnFighter; var bool bFirstSpawn; simulated function preBeginPlay() { super.preBeginPlay(); bFirstSpawn = true; } simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } KcJB Y2C]:ޗ 2d{@u]iu]{ vehicleClass = Class'FailVehicleTank' bCollideWorld = false bWorldGeometry = false 2..\Failboat_Test1\Classes\FailVehicleSpawnTank.uc)C(S%SE^-E' DI1fL +8 L!9?%q! 1"q!'M/q!0vr*q!!&q!!$ hclass FailVehicleSpawnFighter extends BaseObjectClasses.BaseObjectVehicleSpawnFighter; var bool bFirstSpawn; simulated function preBeginPlay() { super.preBeginPlay(); bFirstSpawn = true; } /* simulated latent function latentExecuteInitialization() { if(isDisabled()) { GotoState('Destructed'); } else if(!isPowered() && !bWasDeployed) { GotoState('UnPowered'); } else if(isDamaged()) { GotoState('Damaged'); } else { if(bFirstSpawn) GotoState('Active'); else { bFirstSpawn = false; GotoState('Active','NewSpawn'); } } } */ // State Unpowered simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } F!Dj-!+!ow*Y-Pa! ! Vo! zD.   F-( Ha>!!,   F Rclass FailVehicleSpawnTank extends BaseObjectClasses.BaseObjectVehicleSpawnTank; simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } O1QP 8 P!9?%q! 1"q!'M/q!0vr*q!!&q!!$ GEbBB Y2M[b]m<2d{@ufu\{ vehicleClass = Class'FailVehiclePod' bCollideWorld = false bWorldGeometry = false 5..\Failboat_Test1\Classes\FailVehicleSpawnFighter.uc)V(S%SL!/T-!+!ow*Y-Pa! ! Vo! zD.   F-( NLi>!!,   F sclass FailVehicleTank extends VehicleClasses.VehicleTank; simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass == class'EquipmentClasses.ArmorHeavy')) return false; else return true; } R#cBr-*p9W-'s armor class is none'_r- (a' -Vclass FailVehicleSpawnBuggy extends BaseObjectClasses.BaseObjectVehicleSpawnBuggy; /* simulated function postSpawnVehicle() { // getting crash in detachFromBone if (spawnedVehicle != None) { spawnedVehicle.spawning = false; spawnedVehicle.finishedSpawnFromVehicleSpawnPoint(); } Destroy(); } */ // State Unpowered simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } T class FailWeaponBurner extends EquipmentClasses.WeaponBurner; simulated protected function FireWeapon() { local Vector fireLoc; fireLoc = rookMotor.getProjectileSpawnLocation(); makeProjectile(getAimRotation(fireLoc), fireLoc); lastFireTime = Level.TimeSeconds; if (rookMotor == None) initialiseRookMotor(); firedEffectProcessing(); bFiredWeapon = true; playCharacterFireAnim(); animClass.static.playEquippableAnim(self, fireAnimation, speedPackScale * roundsPerSecond); demoFireCount++; if (demoFireCount==0) demoFireCount = 1; } /D/ 94V//Pr*X;-'Sb9:%$ bclass FailVehicleSpawnAssaultShip extends BaseObjectClasses.BaseObjectVehicleSpawnAssaultShip; /* simulated function postSpawnVehicle() { // getting crash in detachFromBone if (spawnedVehicle != None) { spawnedVehicle.spawning = false; spawnedVehicle.finishedSpawnFromVehicleSpawnPoint(); } Destroy(); } */ // State Unpowered simulated state Unpowered { simulated function Tick(float Delta) { Global.Tick(Delta); if(Health <= 0) { GotoState('Destructed'); return; } if(isDisabled()) GotoState('Destructed'); if (isPowered()) { if(isDamaged()) GotoState('Damaged'); else if(Health >= healthMaximum) if(spawnedVehicle == None) GotoState('Active','NewSpawn'); else GotoState('Active','WaitForNewSpawnEvent'); } } simulated function BeginState() { if (!bInitialization) TriggerEffectEvent('UnpoweredStart'); TriggerEffectEvent('UnpoweredLoop'); if(Mesh != None) { if (!bInitialization) { if(HasAnim('PowerLost')) PlayBDAnim('PowerLost'); else StopAnimating(); } else { PlayBDAnim('PowerLost'); SetAnimFrame(1000.0); } } deactivatepersonalShield(); dispatchMessage(new class'MessageBaseDevicePowerOff'(Label)); bInitialization = false; } simulated function EndState() { UnTriggerEffectEvent('UnpoweredLoop'); TriggerEffectEvent('UnpoweredStop'); dispatchMessage(new class'MessageBaseDevicePowerOn'(Label)); } } dclass FailWeaponDeployedTurretSentry extends EquipmentClasses.WeaponDeployedTurretSentry; \&class FailWeaponEnergyBlade extends EquipmentClasses.WeaponEnergyBlade; var Vector extent; var float missEnergyUsage; simulated protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) { local Vector hitLocation; local Vector hitNormal; local Vector traceEnd; local Material hitMaterial; local Actor victim; local Actor viewActor; local Vector startLoc; local Rotator viewRot; local PlayerController pc; local Pack enemyPack; local Character weaponOwner; local PlayerCharacterController enemyPCC; weaponOwner = Character(rookOwner); useAmmo(); fireCount++; if (pc != None) { startLoc = pc.location; viewRot = pc.rotation; viewActor = Owner; pc.PlayerCalcView(viewActor, startLoc, viewRot); } else { startLoc = Owner.Location; viewRot = fireRot; } traceEnd = fireLoc + Vector(viewRot) * range; victim = Trace(hitLocation, hitNormal, traceEnd, startLoc, true, extent, hitMaterial); if (victim != None && TerrainInfo(victim) == None) { TriggerEffectEvent('Hit', None, hitMaterial, hitLocation, Rotator(hitNormal)); weaponOwner.changeEnergy(energyUsage); if (Level.NetMode != NM_Client){ victim.TakeDamage(damageAmt, rookOwner, hitLocation, Normal(traceEnd - fireLoc) * knockBackVelocity, damageTypeClass); if(Character(victim) != None){ Character(victim).dropCarryables(); } } }else { Character(rookOwner).changeEnergy(missEnergyUsage * -1); } return None; } A class FailVehiclePod extends VehicleClasses.VehiclePod; var name passengerSeat; var Character passenger; //Thanks Stryker //This is where compmod decides what class can pilot each vehicle. Not clean...but there is no nice way to edit the armorclasses allowed vehicles //Returns true if the armour of the specified character can occupy the specified position. simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass != class'EquipmentClasses.ArmorLight')) return false; else return true; } Fclass FailVehicleBuggy extends VehicleClasses.VehicleBuggy; //Thanks Stryker //This is where compmod decides what class can pilot each vehicle. Not clean...but there is no nice way to edit the armorclasses allowed vehicles //Returns true if the armour of the specified character can occupy the specified position. simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass == class'EquipmentClasses.ArmorHeavy') && (position == VP_DRIVER)) return false; else return true; } simulated function bool canCharacterRespawnAt() { // cannot respawn if there is a driver if (clientPositions[0].occupant != None) return false; return super.canCharacterRespawnAt(); } function int canOccupy(Character character, VehiclePositionType position, array secondaryPositions, out byte promptIndex) { local int returnCode; returnCode = super.canOccupy(character, position, secondaryPositions, promptIndex); if(returnCode != -1 && team() != character.team()){ team().removeVehicleRespawn(self); setTeam(character.team()); team().addVehicleRespawn(self); } return returnCode; } function enableAbandonmentDestruction(float periodSeconds) { } U\4 P.R|w*   JIJ   \*799 9?a.A*'UFw*r.*!f*F.9PAP >9:9:$19?.*7w.*.v.>W9?* D class FailVehicleAssaultShip extends VehicleClasses.VehicleAssaultShip; //Thanks Stryker //This is where compmod decides what class can pilot each vehicle. Not clean...but there is no nice way to edit the armorclasses allowed vehicles //Returns true if the armour of the specified character can occupy the specified position. simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } if((character.ArmorClass == class'EquipmentClasses.ArmorHeavy') && (position == VP_DRIVER)) return false; else return true; } function enableAbandonmentDestruction(float periodSeconds) { } Rclass FailScreenStrongMedium extends BaseObjectClasses.ScreenDefault; .Kclass FailProjectileSpinfusor extends EquipmentClasses.ProjectileSpinfusor; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; local BucklerProjectile bp; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; radiusDamageAmt = 0; } } } return false; } E!class FailProjectileSniperRifle extends EquipmentClasses.ProjectileSniperRifle; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ //Partial damage against sensor. Prevent distant sensor spamming if(BaseObjectClasses.BaseSensor(Other) != None){ damageAmt = 0; } super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); //c.clientWeaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } /* singular simulated function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal) { local Projectile p; local Vector HitNormal; //Partial damage against sensor. Prevent distant sensor spamming if(BaseObjectClasses.BaseSensor(Other) != None){ damageAmt = 0; } if (!projectileTouchProcessing(Other, TouchLocation, TouchNormal)) return; if (ShouldHit(Other, TouchLocation)) { if (!ShouldDeflect(Other, TouchLocation, HitNormal)) { ProjectileHit(Other, TouchLocation, TouchNormal); } else { p = bounce(HitNormal, TouchLocation, Other.Velocity); p.bounceCount = 0; // Deflection doesn't count as a bounce } } } */ Fclass FailProjectileRocketPod extends EquipmentClasses.ProjectileRocketPod; var float Health; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ //Partial damage against sensor. Prevent distant sensor spamming if(BaseObjectClasses.BaseSensor(Other) != None){ radiusDamageAmt *= 0.5; damageAmt *= 0.5; } super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function PostTakeDamage(float Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { Health -= Damage; if(Health <= 0) Destroy(); Super.PostTakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, projectileFactor); } /* singular simulated function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal) { local Projectile p; local Vector HitNormal; //Partial damage against sensor. Prevent distant sensor spamming if(BaseObjectClasses.BaseSensor(Other) != None){ radiusDamageAmt *= 0.5; damageAmt *= 0.5; } if (!projectileTouchProcessing(Other, TouchLocation, TouchNormal)) return; if (ShouldHit(Other, TouchLocation)) { if (!ShouldDeflect(Other, TouchLocation, HitNormal)) { ProjectileHit(Other, TouchLocation, TouchNormal); } else { p = bounce(HitNormal, TouchLocation, Other.Velocity); p.bounceCount = 0; // Deflection doesn't count as a bounce } } super.ProjectileTouch(Other, TouchLocation, TouchNormal); } */ Uclass FailProjectilePlasma extends EquipmentClasses.ProjectileBurner; var bool bEndedLife; var() float radiusDamageAmt; var() float radiusDamageSize; var() float radiusDamageMomentum; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } simulated function ProjectileHit(Actor Other, vector TouchLocation, vector Normal) { endLife(Other, TouchLocation, Normal); super.ProjectileHit(Other, TouchLocation, Normal); } simulated function endLife(Actor HitActor, vector TouchLocation, Optional vector TouchNormal) { local float speed; local Vector direction; SpawnBurningArea(); if (bEndedLife) return; bEndedLife = true; HurtRadius(radiusDamageAmt, radiusDamageSize, damageTypeClass, radiusDamageMomentum, TouchLocation, HitActor, direction); Super.endLife(None, TouchLocation, TouchNormal); } simulated function triggerHitEffect(Actor HitActor, vector TouchLocation, vector TouchNormal, optional Name HitEffect) { SpawnBurningArea(); } simulated function BurnTarget(Rook target) { } uclass FailProjectileGrenadeLauncher extends EquipmentClasses.ProjectileGrenadeLauncher; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } Gclass FailProjectileChaingunSentryDeployable extends EquipmentClasses.ProjectileChaingunSentryDeployable; var() float damageEnergyDrainFactor; function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); c.clientWeaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } singular simulated function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal) { local Projectile p; local Vector HitNormal; //Partial damage against sensor. Prevent distant sensor spamming if(Other != None && Other == Class'BaseObjectClasses.BaseSensor'){ damageAmt = 0; } if (!projectileTouchProcessing(Other, TouchLocation, TouchNormal)) return; if (ShouldHit(Other, TouchLocation)) { if (!ShouldDeflect(Other, TouchLocation, HitNormal)) { ProjectileHit(Other, TouchLocation, TouchNormal); } else { p = bounce(HitNormal, TouchLocation, Other.Velocity); p.bounceCount = 0; // Deflection doesn't count as a bounce } } } pclass FailProjectileChaingunSentry extends EquipmentClasses.ProjectileChaingunSentry; var() float damageEnergyDrainFactor; function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); //c.clientWeaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } wclass FailProjectileChaingun extends EquipmentClasses.ProjectileChaingun; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); //c.clientWeaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } Rclass FailProjectileBurner extends EquipmentClasses.ProjectileBurner; Puclass FailProjectileBlaster extends EquipmentClasses.ProjectileBlaster; var() float damageEnergyDrainFactor; function ProjectileTouch(Actor Other, vector TouchLocation, vector TouchNormal){ super.ProjectileTouch(Other, TouchLocation, TouchNormal); } function bool ShouldDeflect(Actor Other, Vector TouchLocation, out Vector deflectionNormal) { local Character c; local Buckler b; local Vector bucklerHeight; c = Character(Other); if (bDeflectable && c != None) { b = Buckler(c.weapon); if (b != None && b.hasAmmo()) { deflectionNormal = Normal(Vector(c.motor.GetViewRotation())); bucklerHeight = c.Location + Vect(0.0, 0.0, 50.0); if (Normal(bucklerHeight - TouchLocation) Dot deflectionNormal < -b.cosDeflectionAngle) { b.TriggerEffectEvent('BucklerDeflect'); b.bDeflected = !b.bDeflected; if(c.energy < damageAmt * damageEnergyDrainFactor) { damageAmt -= (c.energy * damageEnergyDrainFactor); c.energy = 0; return false; } else { Instigator = c; c.weaponUseEnergy(damageAmt * damageEnergyDrainFactor); //c.clientWeaponUseEnergy(damageAmt * damageEnergyDrainFactor); } return true; } } } return false; } Sclass FailWeaponPlasma extends EquipmentClasses.WeaponBurner; function int getMaxAmmo(){ return Character(rookOwner).getModifiedAmmo(Character(rookOwner).armorClass.static.maxAmmo(class'EquipmentClasses.WeaponBurner')); } simulated protected function FireWeapon() { local Vector fireLoc; fireLoc = rookMotor.getProjectileSpawnLocation(); makeProjectile(getAimRotation(fireLoc), fireLoc); lastFireTime = Level.TimeSeconds; if (rookMotor == None) initialiseRookMotor(); firedEffectProcessing(); bFiredWeapon = true; playCharacterFireAnim(); animClass.static.playEquippableAnim(self, fireAnimation, speedPackScale * roundsPerSecond); demoFireCount++; if (demoFireCount==0) demoFireCount = 1; } function useAmmo() { if (ammoCount <= 0) return; ammoCount -= ammoUsage; if (ammoCount <= 0) setOutOfAmmo(); } simulated function bool hasAmmo() { return ammoCount >= ammoUsage; } simulated function bool canFire() { return hasAmmo(); } nM^9.(B. A  m"D 0" 94V""Pr*X;-'Sb9:%$ Cclass FailPodUseableObject extends Gameplay.UseableObject; oR" , % *%u qs- ruP2  Qclass FailWeaponPod extends EquipmentClasses.WeaponVehicleFighterRocket; Tclass FailWeaponTurretSentry extends EquipmentClasses.WeaponTurretSentry; bclass FailWeaponVehicleTurretSentry extends EquipmentClasses.WeaponVehicleTurretSentry; nyclass Failboat extends Gameplay.Mutator config(Fail); var config float spinfusorProjectileVelocity; const VERSION_NAME = "Failboat_Test1"; function PreBeginPlay() { ModifyFlagStands(); ModifyVehiclePads(); ModifyBaseTurrets(); ModifyPlayerStart(); ModifyGameInfo(); } function ModifyTurretSpawn(){ local BaseObjectClasses.BaseDeployableSpawnTurret turret; ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnTurret', turret){ turret.objectType = class'FailDeployableTurret'; } } function ModifyGameInfo(){ local Gameplay.GameInfo game; ForEach AllActors(class'Gameplay.GameInfo', game){ game.default.defaultPlayerClassName = VERSION_NAME $ ".FailMultiplayerCharacter"; game.defaultPlayerClassName = VERSION_NAME $ ".FailMultiplayerCharacter"; } } function ModifyPlayerStart(){ local Gameplay.MultiplayerStart s; ForEach AllActors(class'Gameplay.MultiplayerStart', s){ if (s != None) { s.combatRole = class'EquipmentClasses.CombatRoleLight'; s.invincibleDelay = 2; } } } function ModifyFlagStands() { local Gameplay.MpCapturePoint flagStand; foreach AllActors(class'Gameplay.MPCapturePoint', flagStand) if (flagStand != None) { flagStand.capturableClass = class'FailMPFlag'; } } function ModifyBaseTurrets() { local BaseObjectClasses.BaseTurret baseTurret; ForEach AllActors(Class'BaseObjectClasses.BaseTurret', baseTurret){ baseTurret.weaponClass = Class'FailWeaponTurretSentry'; baseTurret.personalShieldClass = Class'FailScreenStrongMedium'; baseTurret.localizedName = "Sentry Turret"; } } function ModifyVehiclePads() { local Gameplay.VehicleSpawnPoint vehiclePad; local Vector oldLocation; local Rotator oldRotation; local BaseInfo oldOwnerBase; local Gameplay.VehicleSpawnPoint newVehiclePad; local bool bHasAssaultShip; bHasAssaultShip = false; ForEach AllActors(Class'Gameplay.VehicleSpawnPoint', vehiclePad) if(vehiclePad != None){ if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleAssaultShip'){ bHasAssaultShip = true; Break; } } ForEach AllActors(Class'Gameplay.VehicleSpawnPoint', vehiclePad) if(vehiclePad != None){ if(vehiclePad.vehicleClass == Class'VehicleClasses.VehiclePod'){ vehiclePad.setSwitchedOn(false); Continue; } if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleBuggy'){ ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnBuggy'); Continue; } if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleAssaultShip'){ ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnAssaultShip'); Continue; } if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleTank') if(!bHasAssaultShip) ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnAssaultShip'); else vehiclePad.setSwitchedOn(false); } } function ReplaceVehiclePad(VehicleSpawnPoint vehiclePad, Class vehiclePadClass){ local Gameplay.VehicleSpawnPoint newVehiclePad; local Vector oldLocation; local Rotator oldRotation; local BaseInfo oldOwnerBase; local BaseInfo base; oldLocation = vehiclePad.Location; oldRotation = vehiclePad.Rotation; oldOwnerBase = vehiclePad.ownerBase; vehiclePad.Destroy(); newVehiclePad = Spawn(vehiclePadClass, , , oldLocation , oldRotation); newVehiclePad.ownerBase = oldOwnerBase; newVehiclePad.bCollideWorld = true; newVehiclePad.bWorldGeometry = true; if(newVehiclePad.ownerBase == None){ ForEach AllActors(Class'Gameplay.BaseInfo', base){ if(oldOwnerBase == None){ oldOwnerBase = base; } else { if(VSize(oldOwnerBase.location - newVehiclePad.location) > VSize(base.location - newVehiclePad.location)) oldOwnerBase = base; } } newVehiclePad.ownerBase = oldOwnerBase; } } function Actor ReplaceActor(Actor Other) { if(Other.IsA('WeaponChaingun')) { WeaponChaingun(Other).projectileClass = Class'FailProjectileChaingun'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponBlaster')) { WeaponBlaster(Other).spread = 1.9; WeaponBlaster(Other).projectileClass = Class'FailProjectileBlaster'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponSpinfusor')) { WeaponSpinfusor(Other).projectileClass = Class'FailProjectileSpinfusor'; WeaponSpinfusor(Other).projectileVelocity = spinfusorProjectileVelocity; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponEnergyBlade')) { Other.Destroy(); return ReplaceWith(Other, VERSION_NAME $ ".FailWeaponEnergyBlade"); } if(Other.IsA('WeaponSniperRifle')) { WeaponSniperRifle(Other).projectileClass = Class'FailProjectileSniperRifle'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponGrenadeLauncher')) { WeaponGrenadeLauncher(Other).projectileClass = Class'FailProjectileGrenadeLauncher'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponBurner')) { Other.Destroy(); return ReplaceWith(Other, VERSION_NAME $ ".FailWeaponPlasma"); } if(Other.IsA('WeaponRocketPod')) { WeaponRocketPod(Other).projectileClass = Class'FailProjectileRocketPod'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponBuckler')) { WeaponBuckler(Other).lostReturnDelay = 5.0; return Super.ReplaceActor(Other); } if(Other.IsA('Grappler')) { Gameplay.Grappler(Other).projectileClass = Class'FailDegrappleProjectile'; Gameplay.Grappler(Other).reelInDelay = 0.5; Gameplay.Grappler(Other).roundsPerSecond = 1.0; return Super.ReplaceActor(Other); } if(Other.IsA('PackShield')) { Gameplay.ShieldPack(Other).activeFractionDamageBlocked = 0.500000; Gameplay.ShieldPack(Other).passiveFractionDamageBlocked = 0.1000000; return Super.ReplaceActor(Other); } return Super.ReplaceActor(Other); } function string MutateSpawnCombatRoleClass(Character c) { local int i, j; c.team().combatRoleData[2].role.default.armorClass.default.knockbackScale = 1.04; c.team().combatRoleData[2].role.default.armorClass.default.health = 225; for(i = 0; i < c.team().combatRoleData.length; i++) for(j = 0; j < c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons.length; j++){ if(c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].typeClass == Class'EquipmentClasses.WeaponGrappler') c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].quantity = 5; if(c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].typeClass == Class'EquipmentClasses.WeaponBurner') c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].quantity = 20 + i *5; } return Super.MutateSpawnCombatRoleClass(c); } pxJ2zs%L7uj_Ju{ 2..\Failboat_Test1\Classes\FailPodUseableObject.ucs "Failboat_Test1"{^ TYWOG |WG(/a0 W%W E10 rclass FailPodMotor extends Gameplay.PodMotor; /* function driveVehicle(float inForward, float inStrafe, rotator directionRotation, bool inThrust, bool inDive) { // apply input to vehicle input parameters // ... throttle if (InForward > 1) vehicle.ThrottleInput = 1; else if(InForward < -1) vehicle.ThrottleInput = -1; else vehicle.ThrottleInput = 0; // ... strafe if (InStrafe < -1) vehicle.StrafeInput = 1; else if(InStrafe > 1) vehicle.StrafeInput = -1; else vehicle.StrafeInput = 0; // ... rotation vehicle.RotationInput = directionRotation; vehicle.RotationInput = normalize(vehicle.RotationInput); vehicle.RotationInput.Pitch = clamp(vehicle.RotationInput.Pitch, vehicle.driverMinimumPitch, vehicle.driverMaximumPitch); vehicle.controller.setRotation(vehicle.RotationInput); // ... thrust if (inThrust) vehicle.ThrustInput = 1; else vehicle.ThrustInput = 0; // ... dive vehicle.DiveInput = inDive; } */ function driveVehicle(float inForward, float inStrafe, rotator directionRotation, bool inThrust, bool inDive) { // apply input to vehicle input parameters vehicle.ThrottleInput = 1; vehicle.StrafeInput = 0; // ... rotation //vehicle.RotationInput = directionRotation; //vehicle.RotationInput = normalize(vehicle.RotationInput); vehicle.RotationInput.Pitch = clamp(vehicle.RotationInput.Pitch, vehicle.driverMinimumPitch, vehicle.driverMaximumPitch); //vehicle.controller.setRotation(vehicle.RotationInput); //vehicle.setRotation(vehicle.RotationInput); vehicle.setRotation(normalize(directionRotation)); // ... thrust if (inThrust) vehicle.ThrustInput = 1; else vehicle.ThrustInput = 0; // ... dive vehicle.DiveInput = inDive; } }1Gg/a0 11pFailboat_Test1.FailMultiplayerCharacter1pFailboat_Test1.FailMultiplayerCharacter10 G class FailPlayerCharacterController extends Gameplay.PlayerCharacterController; /* radarZoomScales(0)=0.100000 radarZoomScales(1)=0.350000 radarZoomScales(2)=0.950000 zoomedFOVs(0)=50.000000 zoomedFOVs(1)=23.000000 zoomedFOVs(2)=8.000000 zoomedMouseScale(0)=0.750000 zoomedMouseScale(1)=0.240000 zoomedMouseScale(2)=0.070000 zoomMagnificationLevels(0)=2.000000 zoomMagnificationLevels(1)=4.500000 zoomMagnificationLevels(2)=8.000000 ChatWindowSizes(0)=4 ChatWindowSizes(1)=6 ChatWindowSizes(2)=12 SPChatWindowSizes(0)=6 inventoryStationMenuClass = "Failboat_v1.FailInventorySelectionMenu" inventoryStationMenuClass = VERSION_NAME $ ".FailInventorySelectionMenu" */ O(EG/a0 DCw* @10 @hQ06B4`L7uGuK{ inventoryStationMenuClass = "Failboat_v1.FailInventorySelectionMenu" ;..\Failboat_Test1\Classes\FailPlayerCharacterController.ucU]('Failboat_v1.FailInventorySelectionMenuA0T5\3/a0 00/w0*0 c10 nclass FailPlasmaArea extends EquipmentClasses.ProjectileBurnerBurningArea; var float damageAmt; simulated function PostBeginPlay() { TriggerEffectEvent('Alive'); } simulated function Destroyed() { UntriggerEffectEvent('Alive'); } simulated function Tick(float Delta) { } simulated function UnTouch(Actor Other) { } function Timer() { //UntriggerEffectEvent('Alive'); Destroy(); } CW@LZ/a0 W m aSentry Turret10 oclass FailMultiplayerCharacter extends Gameplay.MultiplayerCharacter; simulated function int getMaxAmmo(class weaponClass){ if(weaponClass == class'FailWeaponPlasma'){ return getModifiedAmmo(armorClass.static.maxAmmo(class'EquipmentClasses.WeaponBurner')); } return super.getMaxAmmo(weaponClass); } simulated event BreakGrapple() { // call this when the grapple breaks because it will play the breaking sound if (Grappler(weapon) != None) Grappler(weapon).lastFireTime = Level.TimeSeconds - 0.5; detachGrapple(); } /* DOESN'T WORK function Bump(Actor other) { local float combinedVelocity; local float impactDamage; local Buckler buckler; local Vector bucklerDir; buckler = Buckler(weapon); if (buckler != None && buckler.hasAmmo() && Level.TimeSeconds - buckler.lastCheckTime > buckler.default.minCheckRate) { combinedVelocity = VSize(Velocity) + VSize(other.Velocity); if (combinedVelocity < buckler.default.minCheckVelocity) return; bucklerDir = Normal(Vector(motor.GetViewRotation())); if ((bucklerDir Dot Normal(other.Location - Location)) > buckler.cosDeflectionAngle) { buckler.lastChecktime = Level.TimeSeconds; impactDamage = buckler.checkingDamage + buckler.checkingDmgVelMultiplier * combinedVelocity * 100; if (Character(Other) != None) Character(Other).blockMovementDamage = true; Other.TakeDamage(impactDamage, self, other.Location, bucklerDir * buckler.checkingMultiplier * combinedVelocity, class'DamageType'); buckler.TriggerEffectEvent('BucklerCheck'); changeEnergy(-20); } } } */ EYPB1-&(/a0 GFw*Fr -&'G10/a0 .-w*r =(1.r * Q1.r * Z1.-r -&* Z-=(10 F^EbBY2H6siG_piL7uGu/{ bCanZoom = True bZoomOutOnSpawn = True 6..\Failboat_Test1\Classes\FailMultiplayerCharacter.ucJKL&x%class FailMPFlag extends Gameplay.MPFlag; var bool bReturning; simulated function PostBeginPlay() { if (Level.NetMode != NM_Client) { bReturning = false; } Super.PostBeginPlay(); } function returnToHome(optional bool bSignificant) { bReturning = true; super.returnToHome(bSignificant); } /* singular function Touch(Actor Other) { if(bReturning) return; super.Touch(Other); } */ function bool attemptPickup(Character c, optional bool ignoreLastCarrierCheck){ if(bReturning) return false; super.attemptPickup(c, ignoreLastCarrierCheck); } function bool validCarrier(Character c, optional bool ignoreLastCarrierCheck){ if(bReturning) return false; super.validCarrier(c, ignoreLastCarrierCheck); } // Home state state Home { function returnToHome(optional bool bSignificant) { // Already home } function CheckTouching() { local Character c; if(bReturning) return; ForEach TouchingActors(class'Character',c) { if ( ValidCarrier(c) ) { setCarrier(c); pickup(c); return; } } } function BeginState() { bWasDropped = false; SetRelativeLocation(Vect(0,0,0)); SetRelativeRotation(Rot(0,0,0)); unifiedSetVelocity(Vect(0,0,0)); unifiedSetAngularVelocity(Rot(0,0,0)); SetBase(None); SetPhysics(default.Physics); bHome = true; // If a homeContainer is specified, use its location instead and send to Locked if (homeContainer != None) { //Log("homeContainer for "$self$" detected as "$homeContainer$"; adding and sending to Locked"); homeContainer.addCarryable(self); unifiedSetPosition(homeContainer.Location); GotoState('Locked'); return; } unifiedSetPosition(homeLocation); unifiedSetRotation(homeRotation); //Enable('Touch'); bHomeEffect = true; updateCarryableEffects(); bInitialized = true; bReturning = false; } function EndState() { bHome = false; bHomeEffect = false; updateCarryableEffects(); if (existenceTimer != None) existenceTimer.StartTimer(existenceTime); } SignificantReturn: if (CarryableMessageClass != None) Level.Game.BroadcastLocalized(self, CarryableMessageClass, 2, team()); Begin: // After setting to its home location, see if anyone is touching it CheckTouching(); } G*{=8 : a a` 8:  -' -';r */a0 &r*%%      10  Eclass FailInventorySelectionMenu extends TribesGUI.TribesInventorySelectionMenu; OA}6 PI͕ aHFgF787878@4uEuH{ // dont want to be persistent - the gui changes from station to station bPersistent = true bAutoAdvanceSlotSelection = false bSwapDuplicateWeaponSlots = false MenuState = MSAT_Blurry NumVisibleLoadoutSlots = 9 MaxLoadoutSlots = 23 NumWeaponSlots = 3 MaxLoadoutNameLength = 24 ArmorText = "1 - SELECT ARMOR" PackText = "2 - SELECT PACK" WeaponText = "3 - SELECT WEAPON" AcceptText = "4 - SUIT UP & EXIT" currentLoadoutText = "CURRENT LOADOUT" TitleText = "INVENTORY STATION" ArmorParams = (gutter=5,columns=3,rows=1,styleName="STY_InvButton") PackParams = (gutter=5,columns=4,rows=1,styleName="STY_InvButton") WeaponParams = (gutter=5,columns=5,rows=2,styleName="STY_InvWeaponButton") LoadoutParams = (gutter=0,columns=8,rows=1,styleName="STY_InvTab") WeaponSlotParams = (gutter=0,columns=3,rows=1,styleName="STY_InvButton") 8..\Failboat_Test1\Classes\FailInventorySelectionMenu.ucs]4 - SUIT UP & EXITr" Kclass FailDeployedTurret extends DeployableClasses.DeployedTurret; Qo~B Y2R>_@4uEu{ 0..\Failboat_Test1\Classes\FailDeployedTurret.uc[class FailDeployableTurret extends DeployableClasses.DeployableTurret; var bool bStolen; state FireReleased { function eDeployableInfo deploy() { local eDeployableInfo result; local bool bOldUseCylinderCollision; local BaseInfo closestBase; local BaseInfo base; local TeamInfo closestBaseTeam; result = Super.deploy(); if (result == DeployableInfo_Ok) { SetCollision(false, false, false); bOldUseCylinderCollision = baseDeviceClass.default.bUseCylinderCollision; baseDeviceClass.default.bUseCylinderCollision = true; /* if(bStolen) { */ //spawnedBaseDevice = new baseDeviceClass(true, Character(Owner), team, Location, Rotation); spawnedBaseDevice = new baseDeviceClass(true, Character(Owner), None, Location, Rotation); /* } else { ForEach AllActors(Class'Gameplay.BaseInfo', base){ if(closestBase == None){ closestBase = base; } else { if(VSize(closestBase.location - Location) > VSize(base.location - Location)) closestBase = base; if(base.team != team) closestBaseTeam = base.team; } } //closestBaseTeam = closestBase.team; spawnedBaseDevice = new baseDeviceClass(true, Character(Owner), closestBaseTeam, Location, Rotation); //} */ if (spawnedBaseDevice == None || spawnedBaseDevice.bDeleteMe) { bDeployed = false; return DeployableInfo_Blocked; } baseDeviceClass.default.bUseCylinderCollision = bOldUseCylinderCollision; spawnedBaseDevice.bUseCylinderCollision = bOldUseCylinderCollision; spawnedBaseDevice.bWasDeployed = true; } return result; } } [ class FailDegrappleProjectile extends Gameplay.GrapplerProjectile; var float Health; function PostTakeDamage(float Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { Health -= Damage; if(Health <= 0) Destroy(); Super.PostTakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, projectileFactor); } simulated function simulatedAttach(Actor Other, vector TouchLocation) { local Character c; c = Character(Other); if(c != None) Destroy(); Super.simulatedAttach(Other, TouchLocation); SetCollision(true, true, true); } ^class FailBurningArea extends EquipmentClasses.ProjectileBurnerBurningArea; function Timer() { UntriggerEffectEvent('Alive'); Destroy(); } Np39a/!{. oa/!t.33?. ra/!}. b.s3a/!acpFailboat_Test1.FailWeaponEnergyBladela/!x. ca/!z. fa/!uacpFailboat_Test1.FailWeaponPlasma/a/!~. dha/!w.@a/!p. p.?.?%a/!@.?.= nyclass Failboat extends Gameplay.Mutator config(Fail); var config float spinfusorProjectileVelocity; const VERSION_NAME = "Failboat_Test1"; function PreBeginPlay() { ModifyFlagStands(); ModifyVehiclePads(); ModifyBaseTurrets(); ModifyPlayerStart(); ModifyGameInfo(); //ModifyTurretSpawn(); } function ModifyTurretSpawn(){ local BaseObjectClasses.BaseDeployableSpawnTurret turret; ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnTurret', turret){ turret.objectType = class'FailDeployableTurret'; } } function ModifyGameInfo(){ local Gameplay.GameInfo game; ForEach AllActors(class'Gameplay.GameInfo', game){ game.default.defaultPlayerClassName = VERSION_NAME $ ".FailMultiplayerCharacter"; game.defaultPlayerClassName = VERSION_NAME $ ".FailMultiplayerCharacter"; //game.PlayerControllerClassName = VERSION_NAME $ ".FailPlayerCharacterController"; //game.default.PlayerControllerClassName = VERSION_NAME $ ".FailPlayerCharacterController"; } } function ModifyPlayerStart(){ local Gameplay.MultiplayerStart s; ForEach AllActors(class'Gameplay.MultiplayerStart', s){ if (s != None) { s.combatRole = class'EquipmentClasses.CombatRoleLight'; s.invincibleDelay = 2; } } } //Thank you Stryker function ModifyFlagStands() { local Gameplay.MpCapturePoint flagStand; foreach AllActors(class'Gameplay.MPCapturePoint', flagStand) if (flagStand != None) { flagStand.capturableClass = class'FailMPFlag'; } } function ModifyBaseTurrets() { local BaseObjectClasses.BaseTurret baseTurret; ForEach AllActors(Class'BaseObjectClasses.BaseTurret', baseTurret){ baseTurret.weaponClass = Class'FailWeaponTurretSentry'; baseTurret.personalShieldClass = Class'FailScreenStrongMedium'; baseTurret.localizedName = "Sentry Turret"; } } function ModifyVehiclePads() { local Gameplay.VehicleSpawnPoint vehiclePad; local Vector oldLocation; local Rotator oldRotation; local BaseInfo oldOwnerBase; local Gameplay.VehicleSpawnPoint newVehiclePad; local bool bHasAssaultShip; bHasAssaultShip = false; ForEach AllActors(Class'Gameplay.VehicleSpawnPoint', vehiclePad) if(vehiclePad != None){ if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleAssaultShip'){ bHasAssaultShip = true; Break; } } ForEach AllActors(Class'Gameplay.VehicleSpawnPoint', vehiclePad) //vehiclePad.setSwitchedOn(false); if(vehiclePad != None){ if(vehiclePad.vehicleClass == Class'VehicleClasses.VehiclePod'){ vehiclePad.setSwitchedOn(false); //ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnFighter'); Continue; } if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleBuggy'){ ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnBuggy'); Continue; } if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleAssaultShip'){ ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnAssaultShip'); Continue; } if(vehiclePad.vehicleClass == Class'VehicleClasses.VehicleTank') if(!bHasAssaultShip) ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnAssaultShip'); else vehiclePad.setSwitchedOn(false); //ReplaceVehiclePad(vehiclePad, Class'FailVehicleSpawnTank'); } } function ReplaceVehiclePad(VehicleSpawnPoint vehiclePad, Class vehiclePadClass){ local Gameplay.VehicleSpawnPoint newVehiclePad; local Vector oldLocation; local Rotator oldRotation; local BaseInfo oldOwnerBase; local BaseInfo base; oldLocation = vehiclePad.Location; oldRotation = vehiclePad.Rotation; oldOwnerBase = vehiclePad.ownerBase; vehiclePad.Destroy(); newVehiclePad = Spawn(vehiclePadClass, , , oldLocation , oldRotation); newVehiclePad.ownerBase = oldOwnerBase; newVehiclePad.bCollideWorld = true; newVehiclePad.bWorldGeometry = true; if(newVehiclePad.ownerBase == None){ ForEach AllActors(Class'Gameplay.BaseInfo', base){ if(oldOwnerBase == None){ oldOwnerBase = base; } else { if(VSize(oldOwnerBase.location - newVehiclePad.location) > VSize(base.location - newVehiclePad.location)) oldOwnerBase = base; } } newVehiclePad.ownerBase = oldOwnerBase; } } function Actor ReplaceActor(Actor Other) { if(Other.IsA('WeaponChaingun')) { WeaponChaingun(Other).projectileClass = Class'FailProjectileChaingun'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponBlaster')) { WeaponBlaster(Other).spread = 1.9; WeaponBlaster(Other).projectileClass = Class'FailProjectileBlaster'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponSpinfusor')) { WeaponSpinfusor(Other).projectileClass = Class'FailProjectileSpinfusor'; WeaponSpinfusor(Other).projectileVelocity = spinfusorProjectileVelocity; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponEnergyBlade')) { Other.Destroy(); return ReplaceWith(Other, VERSION_NAME $ ".FailWeaponEnergyBlade"); } if(Other.IsA('WeaponSniperRifle')) { WeaponSniperRifle(Other).projectileClass = Class'FailProjectileSniperRifle'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponGrenadeLauncher')) { WeaponGrenadeLauncher(Other).projectileClass = Class'FailProjectileGrenadeLauncher'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponBurner')) { Other.Destroy(); return ReplaceWith(Other, VERSION_NAME $ ".FailWeaponPlasma"); } if(Other.IsA('WeaponRocketPod')) { WeaponRocketPod(Other).projectileClass = Class'FailProjectileRocketPod'; return Super.ReplaceActor(Other); } if(Other.IsA('WeaponBuckler')) { WeaponBuckler(Other).lostReturnDelay = 5.0; return Super.ReplaceActor(Other); } //Copied from Vanilla. Thank you Rapher if(Other.IsA('Grappler')) { Gameplay.Grappler(Other).projectileClass = Class'FailDegrappleProjectile'; Gameplay.Grappler(Other).reelInDelay = 0.5; Gameplay.Grappler(Other).roundsPerSecond = 1.0; return Super.ReplaceActor(Other); } if(Other.IsA('PackShield')) { Gameplay.ShieldPack(Other).activeFractionDamageBlocked = 0.500000; Gameplay.ShieldPack(Other).passiveFractionDamageBlocked = 0.1000000; return Super.ReplaceActor(Other); } /* if(Other.IsA('DeployableTurret')) { //DeployableTurret(Other).baseDeviceClass = Class'FailDeployableTurret'; //return Super.ReplaceActor(Other); Other.Destroy(); return ReplaceWith(Other, VERSION_NAME $ ".FailDeployableTurret"); } */ return Super.ReplaceActor(Other); } function string MutateSpawnCombatRoleClass(Character c) { local int i, j; //Heavies. Copied from Vanilla Plus. Thank you Odio c.team().combatRoleData[2].role.default.armorClass.default.knockbackScale = 1.04; c.team().combatRoleData[2].role.default.armorClass.default.health = 225; for(i = 0; i < c.team().combatRoleData.length; i++) for(j = 0; j < c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons.length; j++){ if(c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].typeClass == Class'EquipmentClasses.WeaponGrappler') c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].quantity = 5; if(c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].typeClass == Class'EquipmentClasses.WeaponBurner') c.team().combatRoleData[i].role.default.armorClass.default.AllowedWeapons[j].quantity = 20 + i *5; } //c.team().combatRoleData[0].role.default.armorClass.default.AllowedDeployables = class(DynamicLoadObject(VERSION_NAME $ ".FailArmorLight", class'class')).default.AllowedDeployables; return Super.MutateSpawnCombatRoleClass(c); } V CS(6,  ?6,  aC%7  %76  nr66   66  ,r66   66  ,,w  WYey6fZ-1o|\7+׋i|\7+׋i|\7|\7+׋i|\7+׋i|\7+׋i|\7+׋i|\7+׋iKԛYKԛOaOaKԛ ?u ?uKԛKԛKԛDφKԛKԛKԛKԛtXKԛűKԛiGiGiGKԛ%%)+)+)+)+)+)+)+)+6>)+6>)+)+)+)+)+)+)+)+)+oʫoʫoʫ#ʵʵT T dqjntlqo\8Cup|u){ spinfusorProjectileVelocity = 6000 &..\Failboat_Test1\Classes\Failboat.ucF$E@Bclass FailArmorLight extends EquipmentClasses.ArmorLight; \kS2]zg@@4u\8Cu}{ AllowedWeapons(0)=(typeClass=Class'WeaponBlaster') AllowedWeapons(1)=(typeClass=Class'WeaponChaingun',quantity=150) AllowedWeapons(2)=(typeClass=Class'WeaponEnergyBlade') AllowedWeapons(3)=(typeClass=Class'WeaponGrappler',quantity=15) AllowedWeapons(4)=(typeClass=Class'WeaponGrenadeLauncher',quantity=10) AllowedWeapons(5)=(typeClass=Class'WeaponSpinfusor',quantity=15) AllowedWeapons(6)=(typeClass=Class'WeaponSniperRifle',quantity=10) AllowedWeapons(7)=(typeClass=Class'WeaponRocketPod',quantity=42) AllowedWeapons(8)=(typeClass=Class'WeaponBurner') AllowedPacks(0)=Class'PackSpeed' AllowedPacks(1)=Class'PackEnergy' AllowedPacks(2)=Class'PackRepair' AllowedPacks(3)=Class'PackShield' AllowedDeployables(0)=(typeClass=Class'deployableclasses.DeployableInventoryStation',quantity=1) AllowedDeployables(1)=(typeClass=Class'deployableclasses.DeployableShockMine',quantity=1) AllowedDeployables(2)=(typeClass=Class'deployableclasses.DeployableCatapult',quantity=1) AllowedDeployables(3)=(typeClass=Class'deployableclasses.DeployableRepairer',quantity=1) AllowedDeployables(4)=(typeClass=Class'deployableclasses.DeployableTurret',quantity=1) AllowedDeployables(5)=(typeClass=Class'FailDeployableTurret',quantity=1) AllowedConsumables(0)=(typeClass=Class'KitHealth') AllowedDriver(0)=Class'VehicleClasses.VehicleBuggy' AllowedDriver(1)=Class'VehicleClasses.VehiclePod' AllowedDriver(2)=Class'VehicleClasses.VehicleAssaultShip' AllowedDriver(3)=Class'VehicleClasses.VehicleTank' AllowedDriver(4)=Class'VehicleClassesASOld.VehicleASOld' AllowedPassenger(0)=Class'VehicleClasses.VehicleBuggy' AllowedPassenger(1)=Class'VehicleClasses.VehicleAssaultShip' AllowedPassenger(2)=Class'VehicleClasses.VehicleTank' AllowedPassenger(3)=Class'VehicleClassesASOld.VehicleASOld' ,..\Failboat_Test1\Classes\FailArmorLight.ucWYc " " " " " " " "* "PY QYC " " " " " E"V9 "SY TY QQQP\P8P~QPSPUPjPPPbPHXPPaPJP_P~P]PkPlPlPZQQ-PGk\PBV1bHUk\PDPAPQPPlGl`UpPoP{j_Pph^Q_PrPuj]k5PnPMP@i@flPmXWhhOXRh^PpTUjrPyP^UrxQiPfkFPQjDPml}PVPVh)PtjZjEfWP`VvjzP}P_Pkgj{P]PCU#PymWUPhhsU!UuPtPKjmU jDPHiYUvPzXXPQPuTIjDl[PLUKP|PPjcPdPZQIk:P{bIP^PPxP~PxPzPHPUkVPjPxjOP}kwV^PXhYlvTmPvTWPpkfPW]|BPFP[PVP{UDPCPqPIrOPvlaPuiijbldPimJU^PAPdPNbRP~Ugzh}PTXPqU<PYP|PMU{U]PLPDOkQQFPTPEPwUtyQtU`P?uU?PKPwzMmGUHh Uxk:jPsUMmU~UUCPaUNU@kKhkUiU~kgk5mRkQhLmSkcm\kCUMh[hUkTkX] k]kYkNUyPUyRUyU]Tkm\U@U!UUsb`P}UQhZlNbJTCU|U4U~|UkPtPsPwPrP@PGrymAb_jBhLlnhDlePhryUMU kClWlPUtPgl%PRl(lOkSkTP}P`P\jTXUbNPRUwUxP]QgPfQjU^P{PePbPfPcQJPSP[PnPmNnPFPkPlPqPoPpPhSb\`nF^F|FZFxFVCtFQppENEmEL\jEHEgoFBd EAcH`\q}d\ FznX\swDUVtFSPq\s Oo\]LljotHf|Cbq\\%\{LZ\pw%_V2\sQ\R\iqVtP`nBMl\I}h~Fee\tCYb_@o^c||Z\xdVLtU R\cr}Pdn5MnYj\C\b~Ah`\j~~\F_{DAZ }[\z\dY ~x~W5v}Shq}O}[m}L Fj_~H \F~eoDF!a dB \aj@i_CW~bU \t dSdr\QepdNYAmrnBzLoFfcF!@Fah@j^i}F\h{bYrxeVdtycS%rv%e UrueS%kr8aQzndRM>a_MV|eYdw\Vlu6RjpFaNekdI\hLaGahdLLKkJI'Rf[wE'E|W~Y\WdveU\us\QdpVXNsfOtEN_yM\XLwtKQ kHe|da\@d_e~\\\{dZGEyBY~l|WADS@XWFowMLgOY\hdG ef dDKcLk@LA4GkA4^rKPymlf:RA4NLKZA4iwK`j}`g:GA4LAzA4ZMig^EA4Lc:o~BiA4IkA4^ tA4lRk`3~\qki1Oa@:]k 0Wkk5Gk]5|UCqk\tkA4EQs[V<eqKVMTsA4FGEMVk|5AzvdUet@S|1p@aA4]!U\ZqQ\Kfg@0DK]tcv|QKMcNDjKnc{DKc@>OA4\!Mc]MiNvcA4O&DA4\SA4bolQ\}P[[zKYKvyZUE^?oA4bnP;mEZhEA4rExVwhMK]uA4r R`7D K{A4uXA4YMM4yf ^_A4i~A4[ g#MBm4kO 4hzKb?0MoA4]L#Mi@tv{4jjKTzFq#KwHIT'4s&]wdP*4{t}eorJM%KW44k t?0_-MOA4X l`Dab#~@2r~oo\2KKZA4yhZ1