*y@jcBѼNrJAyNone typeClass quantityucmodv3 GameplayCoreSystemEngineEquipmentClassesTeamAllowedGrenadesQuantityGrenadescmodShieldPackAllowedWeaponsVehicleClassesCModArmorClasscanArmorOccupyweaponsHealthprojectileClassPostBeginPlayTickaccelerateProjectiledriverWeaponClassroundsPerSecond ammoUsageTriggerEffectEvent LifeSpan BeginStateTimerdiveThrustForcereverseThrustForceupThrustForcePodthirdPersonMeshradiusDamageSize forwardForce ShieldPackapplyPassiveEffectforwardThrustForce strafeForce FireWeaponstrafeThrustForce ammoCount AccelerateprojectileVelocity ConvergespreadAlongAxisJet AirSpeed EngineTorque EngineMinRPM EngineOptRPM EngineMaxRPMGearDownshiftRPMGearUpshiftRPM TopSpeednumProjectilespostSpreadAccelerationcollisionDamageMagnitudeScale BroadcastUnTriggerEffectEventcmodArmorHeavyclassyWeaponVehicleAssaultShip classyBuggySayPostTakeDamage ReplaceActor classypodclassyaaturretclassyAssaultShipclassyaaturretweapongrapplerAmmocmodArmorLight classyTankucmodcmodArmorMediumclassyBuggyBoost ReplaceWithbCanBeDamagedgrapplerAmmocmodArmorMedium MovementGearReverseRatio LightColor CollisionEngineTorqueFactorAtMaxRPMEngineTorqueFactorAtMinRPMForceKarma LightinggrapplerAmmocmodArmorHeavy ChassisMasscmodArmorLightclassyTankRoundclassyPodWeaponclassyProjectileturretaaclassyProjectilePodclassyWeaponVehicleTankBaseObjectClassesWeaponGrapplerWeaponEnergyBlade PackShieldpostSpreadVelocity spreadPeriod spreadRadiusInitVec launchDelaymuzzleSocketsvelocityInheritOnExitScaleflipPushUpImpulseflipRotationStrengthMuzzle1Muzzle2muzzle3Muzzle4DudturretWeaponClass dropVelocityboostEffectDurationboostUpDurationboostUpStrengthboostStrength boostAngletimeBetweenBoosts PlayEffectplayEquippableAnim lowFrictionthrottleToVelocityFactorprojectileInheritedVelFactordeactivatingDurationfirstPersonMesh hitStayTimemakeProjectileactiveFractionDamageBlockedpassiveFractionDamageBlockedendLife reverseForce weaponClass DestroyedfinishActiveEffectengineDustTraceLengthengineDustGroundOffsetgunnerWeaponClasssimulatedAttach PreBeginPlayMutateSpawnCombatRoleClasscreateThirdPersonMeshremovePassiveEffectdoCustomFiredEffectProcessingaimAdjustViewRotationrechargeTimeSecondsstartHeldByCharacterSpreadstartActiveEffectrampUpTimeSecondsdurationSecondsFiredGetOverlayMaterialForOwnerclassyGrapplerProjectileCoordsRangeDynamicLoadObjectClassQuatFromAxisAndAngle damageAmtPackage RoleDataQuatRotateVector ReturnValue VelocityZAxisPack TextBufferYAxisObjectEnum FunctionStateRotatorVectorStructName equipped armingPeriod TeamInfo StrPropertyAntiAircraftWeaponXAxisOriginpassiveIdleMaterialactiveIdleMaterialpassiveHitMaterialactiveHitMaterialZ animClasspassiveEffectNameYX InvStationTurret CharacterWeaponVehicleTurretbuggyFPS EnergyBlade armorClass TurretAA RocketPodCOwner bHardAttachIndexStructPropertyArrayPropertyArmor CombatRoleEquippableAnimator Equippable EquipmentExplosiveProjectileGrapplerProjectileRocketPodProjectileVehicleSpawnPointVehicleEffectObserverOtherpDelta DeltaSecondsClassPropertyOffsetEventInstigator spiralRateTouchLocation TouchNormalconvergeRadiusconvergePeriodDamage NamePropertymaxAnglePerSecondrotationModifierfireLocfireRotarmed bEndedLifeshieldFractionDamageBlocked shieldActive timeCountercharacterOwnerholderbHeld bDroppedheldBy localHeldByVehiclePositionTypecurrentMuzzleIndexengineDustEffectIndexengineDustEffectLocationmuzzleFlashObserverpreviousMuzzleIndexnumProjectilesFiredangleIncreament fireAnim initialZAxis rotationVecprevRotationVecoffsetVecAngle currentIdle currentHitcurrentHitTime lastHealthcombatRoleData VehiclesAssaultShipGunObjectProperty HitLocationWeaponVehicleAssaultShipWeaponSniperRifleWeaponRocketPod WeaponMortarWeaponHandGrenadeWeaponGrenadeLauncher MomentumWeaponChaingun WeaponBurnerWeaponBucklerWeaponBlasterWeaponSpinfusorWeaponVehicleTankProjectileRocketPodProjectileMortarBombProjectileMortarprojectileFactor ArmorHeavysensorFloatProperty VehicleBuggyVehicleAssaultShip VehicleTank VehiclePodGame BaseSensorBaseInventoryStationQuadBaseInventoryStationTriple$BaseDeployableSpawnInventoryStationStaticMeshRemovableBaseDeployableSpawnRepairer BaseCatapultBaseDeployableSpawnShockMineBaseInventoryStationDoubleBaseTurretAntiAirBaseInventoryStationBaseDeployableSpawnCatapult BaseTurretBaseDeployableSpawnTurretBaseInventoryStationSingle BaseResupplyBasePowerGenerator BoolProperty IntProperty BytePropertyNetMode VehicleClassProcessedText HitActor ScriptText ProjectileActor PositionGetBoneCoords SetDrawType MaterialLevel GameInfoEmitter DamageType LevelInfoMutatorbCollideWorldPawn SkeletalMeshRoleCModArmorClassNamelightActiveShieldlightPassiveShieldmediumActiveShieldmediumPassiveShieldheavyActiveShieldheavyPassiveShieldvieenregistreedifferencevie Degrapple VehicleRover GrapplerAmmoDisableDeployableTurrets DisableMinesDisableDeployableInvStationsDisableRepairerDisableDeployableCatapultsDisableBaseTurrets AATurret AntiBaseRape ScoreSystemEnergyBladeStyleVSPturret2depspawnturretdepspawncatapultdepspawninvstationdepspawnrepairer depspawnminecatap dblstation quadstationsinglestationtriplestation powergen resupstationucmodv2q`@rn j i%uk.%Cn wJq2_[@|B Y2 Aꘉ|\|\|\`>kt`>|{ inventoryStationAccessClass = class'Gameplay.InventoryStationAccess' ChassisMass=15000 flipPushUpImpulse=15000000.000 flipRotationStrength=52.500000 EngineMaxRPM=5500 EngineMinRPM=650 EngineOptRPM=4600 EngineTorque=6000 EngineTorqueFactorAtMaxRPM=0.55 EngineTorqueFactorAtMinRPM=2.8 GearDownshiftRPM=2200 GearReverseRatio=2.7 GearUpShiftRPM=4870.00 // 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) gunnerWeaponClass = None CModArmorClass=class'EquipmentClasses.ArmorHeavy' "..\ucmodv3\Classes\classyBuggy.ucMZ$`jF2$E3$"D4$E5$EU$333@T$ ?6$ E7$0EQ$,@m$RBl$dK|@|&:Og'IThe rate, in degrees, at which the projectiles rotate around each other y VOverlay material, if any, to be used when shield is active but has not been impacted $*%qKThe amount of time it will take the projectile the reach the spreadRadius E@>E[Gb63."tX'Ê'Ê'Ê'Ê'Ê'Ê'Ê'Ê'Ê'Ê'Ê'Ê'Ê'Ê6V6Yj{ firstPersonMesh = SkeletalMesh'weapons.TurretbuggyFPS' thirdPersonMesh=SkeletalMesh'weapons.TurretAA' projectileClass=class'classyProjectileturretaa' ammoUsage = 0 firstPersonOffset = (X=-33,Y=22,Z=-15) numprojectiles=8 +..\ucmodv3\Classes\classyaaturretweapon.uc9""A"\Rate of turn in degrees uMThe amount of time it will take the projectile the reach the convergeRadius Y/DThe radius to which the projectile will spread out to after launch lv@B;@o ;Overlay material to be used when shield has been impacted 1IThe number of rockets to fire H@?@g@@9} ALength of time that the hit material is displayed for on damage Q@]j]W6N JtX4V6qX6r{ ammoUsage=0 ammoCount=0 roundsPerSecond = 0.25 projectileClass = class'ucmodv3.classyProjectilePod' &..\ucmodv3\Classes\classyPodWeapon.uc+""$>m89The period after which the projectile will become armed t@^fMFFB Y2S[IhoC|\|\|\NNa{ collisionDamageMagnitudeScale=0.000100 turretWeaponClass=Class'ucmodv3.classyWeaponVehicleAssaultShip' driverWeaponClass=None positions(0)=(type=VP_DRIVER,hideOccupant=true,occupantControllerState=TribesPlayerDriving,thirdPersonCamera=true,lookAtInheritPitch=true,enterAnimation=HatchClosing,occupiedAnimation=HatchClosed,unoccupiedAnimation=HatchOpen,exitAnimation=HatchOpening) positions(1)=(type=VP_LEFT_GUNNER,hideOccupant=false,occupantControllerState=PlayerVehicleTurreting,thirdPersonCamera=false,occupantAnimation=AShipGunner_Stand,occupantConnection=gunnerleft) positions(2)=(type=VP_RIGHT_GUNNER,hideOccupant=false,occupantControllerState=PlayerVehicleTurreting,thirdPersonCamera=false,occupantAnimation=AShipGunner_Stand,occupantConnection=gunnerright) CModArmorClass=class'EquipmentClasses.ArmorHeavy' TopSpeed=5500; Health=250; AirSpeed=6500.000000 TopSpeed=7000.000000 strafeThrustForce = 200 strafeForce = 1000 forwardThrustForce = 25000 forwardForce = 30000 upThrustForce = 18000 reverseForce = 150 reverseThrustForce = 100 diveThrustForce = 35000 (..\ucmodv3\Classes\classyAssaultShip.ucs`*$HC($zD'$PF$$`F $FG$C$B$G;$88$E1$ E$zC!fNIhB Y2VmIm|\|\|\9NS89NS8S{ throttleToVelocityFactor=35.000000 timeBetweenBoosts = 15.00 boostAngle=0.800000 boostEffectDuration=3.0 boostStrength=10000000.000000 //default 15000000.000000 boostUpDuration=0.2 boostUpStrength=35000000.000000 //default 10000000.000000 CModArmorClass=class'EquipmentClasses.ArmorHeavy' Health=550 driverWeaponClass=Class'ucmodv3.classyWeaponVehicleTank' lowFriction=0.000500 !..\ucmodv3\Classes\classyTank.ucz$pAy$L?x$Kw$Lv$L>u$@@~$ B}$o:k$ DoI]oX3va]qT6YJ{ bCanBeDamaged = True //bWorldGeometry = true Health = 25 /..\ucmodv3\Classes\classyGrapplerProjectile.uc$ANew\yZN,_rw*~6w*~6{ LifeSpan=10.00 %..\ucmodv3\Classes\classyTanRound.uc$ Ajr uBr*p9W's armor class is none'qrj9:r9:$(s' 4HThe rate at which the projectile will accelerate to postSpreadVelocity dE?d6`ݼVamҌmҌY{ numProjectiles=3 numProjectilesFired=0 launchDelay = 0.50 ammoCount=0 ammoUsage=0 projectileInheritedVelFactor=0.4 projectileVelocity=4000.000 roundsPerSecond=0.0500 projectileClass=Class'EquipmentClasses.ProjectileMortarBomb' firstPersonMesh=SkeletalMesh'weapons.TurretbuggyFPS' thirdPersonMesh=SkeletalMesh'Vehicles.AssaultShipGun' firstPersonAltMesh=None thirdPersonAltMesh=None 5..\ucmodv3\Classes\classyWeaponVehicleAssaultShip.uc9"i$?+""$L=-$zE$>"lmrDgB Y2cnƽќ|\|\|\_p_pp sp sYp sYp sYz㨌A㨌z{ collisionDamageMagnitudeScale=0.00080 Health=100 velocityInheritOnExitScale=0.500000 TPCameraDistance=800 AirSpeed=9500.000000 strafeThrustForce = 100 strafeForce = 750 forwardThrustForce = 11000 forwardForce = 9500 upThrustForce = 4000 reverseForce = 150 reverseThrustForce = 100 diveThrustForce = 5500 bDrawDriverInTP = true HavokDataClass=class'PodHavokData' rootBone="Pod" positions(0)=(type=VP_DRIVER,hideOccupant=false,occupantControllerState=TribesPlayerDriving,thirdPersonCamera=true,lookAtInheritPitch=true,occupantAnimation=Pod_Stand,occupantConnection=character) driverWeaponClass=Class'ucmodv3.classyPodWeapon' muzzleSockets(0)=muzzle1 muzzleSockets(1)=muzzle2 muzzleSockets(2)=muzzle3 muzzleSockets(3)=muzzle4 motorClass = class'PodMotor' idleAnimation = idle leftAnimation = strafeLeft rightAnimation = strafeRight forwardAnimation = throttleForward backAnimation = throttleBack upAnimation = thrust downAnimation = dive blendTime = 0.2 engineDustTraceLength = 750 engineDustGroundOffset = 100 angularBankScale = 0.3 linearBankScale = 0.05 waterDamagePerSecond = 0 TopSpeed=100000.000000 navigationTurnRate = 10000 throttleScale = 0.002 thrustThresholdPitch = 12000 driveYawCoefficient = 25 drivePitchCoefficient = 25 navigationMaximumPitch = 12000 cornerSlowDownSpeedCoefficient = 10 localizedName = "fighter" CModArmorClass=class'EquipmentClasses.ArmorHeavy' ..\ucmodv3\Classes\classypod.ucjY nopqK$;DL$B*$B($;D'$+F$$pF $zE$B$E;$Q:8$PGNk$?1$pF$BL@T=The number of seconds to wait in between each rocket firing s`t6k)h1;;;;C{ projectileClass=Class'ucmodv3.classyTankRound' roundsPerSecond=0.2500 dropVelocity=2000 projectileVelocity=6500.000000 ...\ucmodv3\Classes\classyWeaponVehicleTank.uc$>Z-$ Et"hv_xm- 4V6qX6V{ radiusDamageSize=300 LifeSpan=5.0000 postSpreadAcceleration=5000 spreadRadius=40 spreadPeriod=0.05 *..\ucmodv3\Classes\classyProjectilePod.ucg$ Bf$L=:$@E#$C$@D@K ;Overlay material to be used when shield has been impacted 5VThe radius to which the projectile will converge in to after spreadRadius is reached  @in@\PThe velocity the projectile will accelerate to after reaching the spreadRadius G@_xhR@ VOverlay material, if any, to be used when shield is active but has not been impacted 0@Aa~ ~ T@,Dp/\ ^6 6x6 6R6 6^a  p/8 +#BB+#+9?%a#|alhT L-&3y= * @--'- ^6);d[C69ZpFire_09S|6?ai(b% XzcBr*p9W's armor class is none'_r}(a' [WU uBr!*p9W!'s armor class is none'qr!W9:U9:$(s'  zPL{B Y2QFq A|\|\|\kt`>kt`>s{ EngineMaxRPM=10500 EngineMinRPM=1250 EngineOptRPM=8800 EngineTorque=5000 EngineTorqueFactorAtMaxRPM=0.55 EngineTorqueFactorAtMinRPM=2.8 GearDownshiftRPM=4200 GearReverseRatio=2.7 GearUpShiftRPM=9300.00 gunnerWeaponClass = None CModArmorClass=class'EquipmentClasses.ArmorHeavy' '..\ucmodv3\Classes\classyBuggyBoost.uc2$@E3$@D4$ F5$$F6$@E7$PF{| s>9:9:$(5qq5quq!, KR.S_B\_ sS9:9:$ w*![ o9:9:$ o , % &&w*a 6s'-'a* ZP$]v&6% ucmodv3.grapplerAmmocmodArmorLight 6& ucmodv3.grapplerAmmocmodArmorMedium 6, ucmodv3.grapplerAmmocmodArmorHeavy 6% ucmodv3.cmodArmorLight 6& ucmodv3.cmodArmorMedium 6, ucmodv3.cmodArmorHeavy  YG z2WZ񵃳$KW|\|\|\_p8lc|\|\|\|\|\|\|\|\|\|\|\6VD]{ passiveFractionDamageBlocked=0.2000000 activeFractionDamageBlocked=0.750000 hitStayTime=0.500000 rechargeTimeSeconds=16.000000 rampUpTimeSeconds=0.200000 durationSeconds=3.000000 deactivatingDuration=0.000000 %..\ucmodv3\Classes\cmodShieldPack.ucE$L>D$@?B$?U$AY$L>Z$@@@$DdR;~d-( hA^]* 9:9:$Y _pqT6Y{ radiusDamageSize=480 LifeSpan=5.0000 postSpreadVelocity = 3500 postSpreadAcceleration = 800 /..\ucmodv3\Classes\classyProjectileturretaa.uce$ZE:$HD#$C$@\CIba/!dOG&aMucmodv3.cmodshieldpackG,.?.=a/!bz&. X`a/!c"&.,2`",.L?.,K.X c7C=C.7Y;w*7   9?I@9?,   6 6 6 6 6 6  zO2/a0 1X0,Uw*r  c0&w*r *E,w*r    E& w*r *h?,ew*r  S?&w*r *;,w*r  V00;&0w*r *10/a0 %ZYD&%a10/a0 :D&:a10/a0 H& 3H,a10/a0 &-(g&a10/a0 YA&-(Xn&a10/a0 &-(Q&a10/a0 &-(t&a10/a0 (&-('L&a10/a0 2VU&2-(10/a0 >&>-(10/a0 B&B-(10/a0 I&I-(10/a0 9 &9-(10/a0 ,<;&,-(10/a0 $ji&$-(10/a0 &&&-(10 GVJV6c]ø1o|\7+׈ii|\7+׈ii|\7+׈ii|\7+׈ii|\7+׈ii|\7+׈iiKԛKԛ$KW$KWKԛG6KԛVc^Vc^Vc^Vc^)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+Yn+wGٯJtJtuݒ}uݒ}}}VjHVjHiHIiHI e,  9LrȌt6f`PSXRWV6V]`{ ..\ucmodv3\Classes\ucmod.ucp-) l class classyBuggy extends VehicleClasses.VehicleBuggy; var class CModArmorClass; //compmod's way of telling which armor can use it simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } //else if (position == VP_DRIVER) // return canArmourBeDriver(character.armorClass); //else // return canArmourBePassenger(character.armorClass); if((character.ArmorClass == cmodarmorclass)&&(position==VP_DRIVER)) return false; else return true; } bEaB Y2`1%\aЦ\ӌ* _ӌ9{ weaponClass=class'ucmodv3.classyaaturretweapon' %..\ucmodv3\Classes\classyaaturret.ucH3Rclass classyaaturret extends BaseObjectClasses.BaseTurretAntiAir; A class classyaaturretweapon extends EquipmentClasses.WeaponRocketPod; simulated function PostBeginPlay() { Super.PostBeginPlay(); angleIncreament = (2 * Pi / (float(numProjectiles)/2)); } 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 +(Pi/4); 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; } r)@I@9?9?, tclass classyWeaponVehicleAssaultShip extends EquipmentClasses.WeaponVehicleAssaultShip; 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, 1.0); SetTimer(launchDelay , false); } else numProjectilesFired = 0; } l class classyAssaultShip extends VehicleClasses.VehicleAssaultShip; var class CModArmorClass; //compmod's way of telling which armor can use it simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } //else if (position == VP_DRIVER) // return canArmourBeDriver(character.armorClass); //else // return canArmourBePassenger(character.armorClass); if((character.ArmorClass == cmodarmorclass)&&(position==VP_DRIVER)) return false; else return true; } a# class classyPod extends VehicleClasses.VehiclePod; var array muzzleSockets; var int currentMuzzleIndex; var int engineDustEffectIndex; var vector engineDustEffectLocation; var (Pod) float engineDustTraceLength; var (Pod) float engineDustGroundOffset; var VehicleEffectObserver muzzleFlashObserver; var string CModArmorClassName; var class CModArmorClass; simulated function doCustomFiredEffectProcessing() { local int previousMuzzleIndex; if (Level.NetMode != NM_DedicatedServer && muzzleFlashObserver != None) { TriggerEffectEvent('Fired', , , , , , , muzzleFlashObserver); if (Level.NetMode == NM_Client) { ++currentMuzzleIndex; if (currentMuzzleIndex == 2) currentMuzzleIndex = 0; } previousMuzzleIndex = currentMuzzleIndex - 1; if (previousMuzzleIndex == -1) previousMuzzleIndex = 1; if (muzzleFlashObserver.emitter != None) { muzzleFlashObserver.emitter.setLocation(getBoneCoords(muzzleSockets[previousMuzzleIndex], true).origin); muzzleFlashObserver.emitter.bHardAttach = true; muzzleFlashObserver.emitter.setBase(self); } } } 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 == cmodarmorclass) return false; else return true; } function bool aimAdjustViewRotation() { return true; } N class classyTank extends VehicleClasses.VehicleTank; var class CModArmorClass; 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 == cmodarmorclass)&&(position==VP_DRIVER)) return false; else return true; } klm!!}@[ class classyGrapplerProjectile extends Gameplay.GrapplerProjectile; var float Health; function PostTakeDamage(float Damage, Engine.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) { Super.simulatedAttach(Other, TouchLocation); SetCollision(True, True, True); } OsTQE' c>u2t^i6V[@ { AllowedWeapons(1)=(typeClass=Class'EquipmentClasses.WeaponSpinfusor',quantity=25) AllowedWeapons(2)=(typeClass=Class'EquipmentClasses.WeaponMortar',quantity=10) AllowedWeapons(3)=(typeClass=Class'EquipmentClasses.WeaponGrenadeLauncher',quantity=20) AllowedWeapons(4)=(typeClass=Class'EquipmentClasses.WeaponRocketPod',quantity=96) AllowedWeapons(5)=(typeClass=Class'EquipmentClasses.WeaponBlaster') AllowedWeapons(6)=(typeClass=Class'EquipmentClasses.WeaponGrappler',quantity=15) AllowedWeapons(7)=(typeClass=Class'EquipmentClasses.WeaponBurner') AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=300) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) %..\ucmodv3\Classes\cmodArmorHeavy.uc Y\ """ ""`"""", Z "Gclass cmodArmorHeavy extends Gameplay.Armor; a[w2v>Ԋi6V[E { AllowedWeapons(1)=(typeClass=Class'EquipmentClasses.WeaponSpinfusor',quantity=15) AllowedWeapons(2)=(typeClass=Class'EquipmentClasses.WeaponSniperRifle',quantity=10) AllowedWeapons(3)=(typeClass=Class'EquipmentClasses.WeaponGrenadeLauncher',quantity=10) AllowedWeapons(4)=(typeClass=Class'EquipmentClasses.WeaponRocketPod',quantity=42) AllowedWeapons(5)=(typeClass=Class'EquipmentClasses.WeaponBlaster') AllowedWeapons(6)=(typeClass=Class'EquipmentClasses.WeaponGrappler',quantity=15) AllowedWeapons(7)=(typeClass=Class'EquipmentClasses.WeaponBurner') AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=150) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) %..\ucmodv3\Classes\cmodArmorLight.uc Y\ """ " "*"""" Z "Gclass cmodArmorLight extends Gameplay.Armor; ^Ky2x(4i6V[@ { AllowedWeapons(1)=(typeClass=Class'EquipmentClasses.WeaponSpinfusor',quantity=20) AllowedWeapons(2)=(typeClass=Class'EquipmentClasses.WeaponBuckler',quantity=1) AllowedWeapons(3)=(typeClass=Class'EquipmentClasses.WeaponGrenadeLauncher',quantity=15) AllowedWeapons(4)=(typeClass=Class'EquipmentClasses.WeaponRocketPod',quantity=72) AllowedWeapons(5)=(typeClass=Class'EquipmentClasses.WeaponBlaster') AllowedWeapons(6)=(typeClass=Class'EquipmentClasses.WeaponGrappler',quantity=15) AllowedWeapons(7)=(typeClass=Class'EquipmentClasses.WeaponBurner') AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=200) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) &..\ucmodv3\Classes\cmodArmorMedium.uc Y\ """""H"""" Z "Hclass cmodArmorMedium extends Gameplay.Armor; r6class cmodShieldPack extends EquipmentClasses.PackShield; var (ShieldPack) float passiveFractionDamageBlocked; var (ShieldPack) float activeFractionDamageBlocked; var (cmodShieldPack) Material passiveIdleMaterial "Overlay material, if any, to be used when shield is active but has not been impacted"; var (cmodShieldPack) Material activeIdleMaterial "Overlay material, if any, to be used when shield is active but has not been impacted"; var (cmodShieldPack) Material passiveHitMaterial "Overlay material to be used when shield has been impacted"; var (cmodShieldPack) Material activeHitMaterial "Overlay material to be used when shield has been impacted"; var (cmodShieldPack) float hitStayTime "Length of time that the hit material is displayed for on damage"; var() float lightActiveShield; var() float lightPassiveShield; var() float mediumActiveShield; var() float mediumPassiveShield; var() float heavyActiveShield; var() float heavyPassiveShield; var Material currentIdle; var Material currentHit; var float currentHitTime; var float lastHealth; var character characterOwner; var int vieenregistree; var int differencevie; function PostBeginPlay(){ super.PostBeginPlay(); characterOwner = Character(Owner); } function startHeldByCharacter(Character holder) { heldBy = holder; playEffect(passiveEffectName); applyPassiveEffect(holder); holder.createThirdPersonMesh(class); bHeld = true; bDropped = false; SetPhysics(PHYS_None); SetDrawType(DT_None); bCollideWorld = false; SetCollision(false, false, false); } simulated function applyPassiveEffect(Character characterOwner) { currentIdle = passiveIdleMaterial; currentHit = passiveHitMaterial; characterOwner.shieldActive = true; characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; } simulated function removePassiveEffect(Character characterOwner) { characterOwner.shieldActive = false; } simulated function startActiveEffect(Character characterOwner) { currentIdle = activeIdleMaterial; currentHit = activeHitMaterial; characterOwner.shieldFractionDamageBlocked = activeFractionDamageBlocked; vieenregistree=characterOwner.health; } simulated function finishActiveEffect() { if (heldBy != None) characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; currentIdle = passiveIdleMaterial; currentHit = passiveHitMaterial; } 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; differencevie=4*(characterOwner.health-vieenregistree); if ((characterOwner.shieldFractionDamageBlocked == activeFractionDamageBlocked) && (differencevie<-20)) { characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; Level.Game.Broadcast(self, "ShieldPack blocked a severe hit. Disabling it", 'Say'); } if (localHeldBy != None) { if (lastHealth != localHeldBy.health) { if (lastHealth > localHeldBy.health) { currentHitTime = hitStayTime; } lastHealth = localHeldBy.health; } } vieenregistree=characterOwner.health; } v9 !0 l class classyBuggy extends VehicleClasses.VehicleBuggy; var class CModArmorClass; 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 == cmodarmorclass)&&(position==VP_DRIVER)) return false; else return true; } ~@AB U ?444CI@))4CI@ A class classyaaturretweapon extends EquipmentClasses.WeaponRocketPod; simulated function PostBeginPlay() { Super.PostBeginPlay(); angleIncreament = (2 * Pi / (float(numProjectiles)/2)); } 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 +(Pi/4); 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; } l class classyAssaultShip extends VehicleClasses.VehicleAssaultShip; var class CModArmorClass; 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 == cmodarmorclass)&&(position==VP_DRIVER)) return false; else return true; } Zclass ucmod extends Gameplay.Mutator; var config int Degrapple; var config int VehiclePod; var config int VehicleRover; var config int VehicleAssaultShip; var config int VehicleTank; var config int GrapplerAmmo; var config int Shieldpack; var config int DisableDeployableTurrets; var config int DisableMines; var config int DisableDeployableInvStations; var config int DisableRepairer; var config int DisableDeployableCatapults; var config int DisableBaseTurrets; var config int AATurret; var config int AntiBaseRape; var config int ScoreSystem; var config int EnergyBladeStyle; function preBeginPlay() { local Gameplay.VehicleSpawnPoint VSP; local BaseObjectClasses.BaseTurretAntiAir turretaa; local BaseObjectClasses.BaseTurret turret2; local BaseObjectClasses.StaticMeshRemovable baseturret; local BaseObjectClasses.BaseDeployableSpawnTurret depspawnturret; local BaseObjectClasses.BaseDeployableSpawnCatapult depspawncatapult; local BaseObjectClasses.BaseDeployableSpawnInventoryStation depspawninvstation; local BaseObjectClasses.BaseDeployableSpawnRepairer depspawnrepairer; local BaseObjectClasses.BaseDeployableSpawnShockMine depspawnmine; local BaseObjectClasses.BaseCatapult catap; local BaseObjectClasses.BaseInventoryStation invstation; local BaseObjectClasses.BaseInventoryStationDouble dblstation; local BaseObjectClasses.BaseInventoryStationQuad quadstation; local BaseObjectClasses.BaseInventoryStationSingle singlestation; local BaseObjectClasses.BaseInventoryStationTriple triplestation; local BaseObjectClasses.BasePowerGenerator powergen; local BaseObjectClasses.BaseResupply resupstation; local BaseObjectClasses.Basesensor sensor; foreach AllActors(class'Gameplay.VehicleSpawnPoint', VSP) //here, we take care of the vehicle spawn points { if (VehiclePod==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehiclePod') { VSP.vehicleClass = class'ucmodv3.classyPod'; } } else if(VehiclePod==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehiclePod') { VSP.vehicleClass=None; } } if (VehicleRover==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleBuggy') { VSP.vehicleClass = class'ucmodv3.classyBuggy'; } } else if(VehicleRover==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleBuggy') { VSP.vehicleClass=None; } } if (VehicleAssaultShip==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleAssaultShip') { VSP.vehicleClass = class'ucmodv3.classyAssaultShip'; } } else if(VehicleAssaultShip==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleAssaultShip') { VSP.vehicleClass=None; } } if (VehicleTank==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleTank') { VSP.vehicleClass = class'ucmodv3.classyTank'; } } else if(VehicleTank==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleTank') { VSP.vehicleClass=None; } } } ForEach AllActors(class'BaseObjectClasses.BaseTurret', turret2) //ici, on va dgager les base turrets { if (DisableBaseTurrets==1) { turret2.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.StaticMeshRemovable', baseturret) //ici, on va dgager les bases des bases turrets { if (DisableBaseTurrets==1) { baseturret.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseTurretAntiAir', turretaa) //ici, on s'occupe des popcorn turrets { if (AATurret==1) { turretaa.weaponClass=Class'ucmodv3.classyaaturretweapon'; } else if (AATurret==2) { turretaa.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnTurret', depspawnturret) //ici, on s'occupe des spawn de deployable turrets { if (AntiBaseRape==1) { depspawnturret.bcanBeDamaged=False; } if (DisableDeployableTurrets==1) { depspawnturret.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnCatapult', depspawncatapult) //ici, on s'occupe des spawn de deployable catapult { if (AntiBaseRape==1) { depspawncatapult.bcanBeDamaged=False; } if (DisableDeployableCatapults==1) { depspawncatapult.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnInventoryStation', depspawninvstation) //ici, on s'occupe des spawn de deployable invstation { if (AntiBaseRape==1) { depspawninvstation.bcanBeDamaged=False; } if (DisableDeployableInvStations==1) { depspawninvstation.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnRepairer', depspawnrepairer) //ici, on s'occupe des spawn de deployable repairer { if (AntiBaseRape==1) { depspawnrepairer.bcanBeDamaged=False; } if (DisableRepairer==1) { depspawnrepairer.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnShockMine', depspawnmine) //ici, on s'occupe des spawn de deployable repairer { if (AntiBaseRape==1) { depspawnmine.bcanBeDamaged=False; } if (DisableMines==1) { depspawnmine.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseCatapult', catap) //ici, on modifie les catapultes { if (AntiBaseRape==1) { catap.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStation', invstation) //ici, on modifie les inv { if (AntiBaseRape==1) { invstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStationDouble', dblstation) //ici, on modifie les station { if (AntiBaseRape==1) { dblstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStationQuad', quadstation) //ici, on modifie les station { if (AntiBaseRape==1) { quadstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStationSingle', singlestation) //ici, on modifie les station { if (AntiBaseRape==1) { singlestation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BasePowerGenerator', powergen) //ici, on modifie les generator { if (AntiBaseRape==1) { powergen.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseResupply', resupstation) //ici, on modifie les resupplystation { if (AntiBaseRape==1) { resupstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.Basesensor', sensor) //ici, on modifie les sensor { if (AntiBaseRape==1) { sensor.bcanBeDamaged=False; } } } function Actor ReplaceActor(Actor Other) { if(Other.IsA('PackShield')) //on gere le shieldpack { if(ShieldPack==1) { Other.Destroy(); return ReplaceWith(Other, "ucmodv3.cmodshieldpack"); } if(ShieldPack==2) { PackShield(Other).activeFractionDamageBlocked=0.500000; PackShield(Other).passiveFractionDamageBlocked=0.100000; } } if(Other.IsA('WeaponGrappler')) //on s'occupe d'activer ou non desactiver degrapple { if(Degrapple==1) { WeaponGrappler(Other).projectileClass = class'ucmodv3.classyGrapplerProjectile'; return Other; } } if(Other.IsA('WeaponEnergyBlade')) //on s'occupe de transformer l'eblade en shocklance ou non { if(EnergyBladeStyle==1) { WeaponEnergyBlade(Other).damageAmt = 50; return Other; } if(EnergyBladeStyle==2) { WeaponEnergyBlade(Other).roundsPerSecond = 0.8000; WeaponEnergyBlade(Other).damageAmt = 75; WeaponEnergyBlade(Other).Range = 600; return Other; } } } function string MutateSpawnCombatRoleClass(Character c) { //thanks to compmod for that one! if(grapplerAmmo==1) { c.team().combatRoleData[0].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.grapplerAmmocmodArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.grapplerAmmocmodArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.grapplerAmmocmodArmorHeavy", class'class')).default.AllowedWeapons; } else { c.team().combatRoleData[0].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.cmodArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.cmodArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.cmodArmorHeavy", class'class')).default.AllowedWeapons; } } . JOU2I1ׂi6VD]@ { AllowedWeapons(1)=(typeClass=Class'EquipmentClasses.WeaponSpinfusor',quantity=20) AllowedWeapons(2)=(typeClass=Class'EquipmentClasses.WeaponBuckler',quantity=1) AllowedWeapons(3)=(typeClass=Class'EquipmentClasses.WeaponGrenadeLauncher',quantity=15) AllowedWeapons(4)=(typeClass=Class'EquipmentClasses.WeaponRocketPod',quantity=72) AllowedWeapons(5)=(typeClass=Class'EquipmentClasses.WeaponBlaster') AllowedWeapons(6)=(typeClass=Class'EquipmentClasses.WeaponGrappler',quantity=10) AllowedWeapons(7)=(typeClass=Class'EquipmentClasses.WeaponBurner') AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=200) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) 2..\ucmodv3\Classes\grapplerAmmocmodArmorMedium.uc Y\ """""H"" "" Z "Tclass grapplerAmmocmodArmorMedium extends Gameplay.Armor; HIM =!0 FJI7w* * @ LN\Q  9?%    OQHT2P͊i6VD]E { AllowedWeapons(1)=(typeClass=Class'EquipmentClasses.WeaponSpinfusor',quantity=15) AllowedWeapons(2)=(typeClass=Class'EquipmentClasses.WeaponSniperRifle',quantity=10) AllowedWeapons(3)=(typeClass=Class'EquipmentClasses.WeaponGrenadeLauncher',quantity=10) AllowedWeapons(4)=(typeClass=Class'EquipmentClasses.WeaponRocketPod',quantity=42) AllowedWeapons(5)=(typeClass=Class'EquipmentClasses.WeaponBlaster') AllowedWeapons(6)=(typeClass=Class'EquipmentClasses.WeaponGrappler',quantity=10) AllowedWeapons(7)=(typeClass=Class'EquipmentClasses.WeaponBurner') AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=150) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) 1..\ucmodv3\Classes\grapplerAmmocmodArmorLight.uc Y\ """ " "*"" "" Z "Sclass grapplerAmmocmodArmorLight extends Gameplay.Armor; XYS2Rߧi6VD]@ { AllowedWeapons(1)=(typeClass=Class'EquipmentClasses.WeaponSpinfusor',quantity=25) AllowedWeapons(2)=(typeClass=Class'EquipmentClasses.WeaponMortar',quantity=10) AllowedWeapons(3)=(typeClass=Class'EquipmentClasses.WeaponGrenadeLauncher',quantity=20) AllowedWeapons(4)=(typeClass=Class'EquipmentClasses.WeaponRocketPod',quantity=96) AllowedWeapons(5)=(typeClass=Class'EquipmentClasses.WeaponBlaster') AllowedWeapons(6)=(typeClass=Class'EquipmentClasses.WeaponGrappler',quantity=10) AllowedWeapons(7)=(typeClass=Class'EquipmentClasses.WeaponBurner') AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=300) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) 1..\ucmodv3\Classes\grapplerAmmocmodArmorHeavy.uc Y\ """ ""`"" "", Z "Sclass grapplerAmmocmodArmorHeavy extends Gameplay.Armor; Sclass grapplerAmmocmodArmorLight extends Gameplay.Armor; Tclass grapplerAmmocmodArmorMedium extends Gameplay.Armor; Zclass ucmod extends Gameplay.Mutator; var config int Degrapple; var config int VehiclePod; var config int VehicleRover; var config int VehicleAssaultShip; var config int VehicleTank; var config int GrapplerAmmo; var config int Shieldpack; var config int DisableDeployableTurrets; var config int DisableMines; var config int DisableDeployableInvStations; var config int DisableRepairer; var config int DisableDeployableCatapults; var config int DisableBaseTurrets; var config int AATurret; var config int AntiBaseRape; var config int ScoreSystem; var config int EnergyBladeStyle; function preBeginPlay() { local Gameplay.VehicleSpawnPoint VSP; local BaseObjectClasses.BaseTurretAntiAir turretaa; local BaseObjectClasses.BaseTurret turret2; local BaseObjectClasses.StaticMeshRemovable baseturret; local BaseObjectClasses.BaseDeployableSpawnTurret depspawnturret; local BaseObjectClasses.BaseDeployableSpawnCatapult depspawncatapult; local BaseObjectClasses.BaseDeployableSpawnInventoryStation depspawninvstation; local BaseObjectClasses.BaseDeployableSpawnRepairer depspawnrepairer; local BaseObjectClasses.BaseDeployableSpawnShockMine depspawnmine; local BaseObjectClasses.BaseCatapult catap; local BaseObjectClasses.BaseInventoryStation invstation; local BaseObjectClasses.BaseInventoryStationDouble dblstation; local BaseObjectClasses.BaseInventoryStationQuad quadstation; local BaseObjectClasses.BaseInventoryStationSingle singlestation; local BaseObjectClasses.BaseInventoryStationTriple triplestation; local BaseObjectClasses.BasePowerGenerator powergen; local BaseObjectClasses.BaseResupply resupstation; local BaseObjectClasses.Basesensor sensor; foreach AllActors(class'Gameplay.VehicleSpawnPoint', VSP) { if (VehiclePod==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehiclePod') { VSP.vehicleClass = class'ucmodv3.classyPod'; } } else if(VehiclePod==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehiclePod') { VSP.vehicleClass=None; } } if (VehicleRover==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleBuggy') { VSP.vehicleClass = class'ucmodv3.classyBuggy'; } } else if(VehicleRover==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleBuggy') { VSP.vehicleClass=None; } } if (VehicleAssaultShip==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleAssaultShip') { VSP.vehicleClass = class'ucmodv3.classyAssaultShip'; } } else if(VehicleAssaultShip==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleAssaultShip') { VSP.vehicleClass=None; } } if (VehicleTank==2) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleTank') { VSP.vehicleClass = class'ucmodv3.classyTank'; } } else if(VehicleTank==1) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleTank') { VSP.vehicleClass=None; } } } ForEach AllActors(class'BaseObjectClasses.BaseTurret', turret2) { if (DisableBaseTurrets==1) { turret2.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.StaticMeshRemovable', baseturret) { if (DisableBaseTurrets==1) { baseturret.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseTurretAntiAir', turretaa) { if (AATurret==1) { turretaa.weaponClass=Class'ucmodv3.classyaaturretweapon'; } else if (AATurret==2) { turretaa.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnTurret', depspawnturret) { if (AntiBaseRape==1) { depspawnturret.bcanBeDamaged=False; } if (DisableDeployableTurrets==1) { depspawnturret.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnCatapult', depspawncatapult) { if (AntiBaseRape==1) { depspawncatapult.bcanBeDamaged=False; } if (DisableDeployableCatapults==1) { depspawncatapult.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnInventoryStation', depspawninvstation) { if (AntiBaseRape==1) { depspawninvstation.bcanBeDamaged=False; } if (DisableDeployableInvStations==1) { depspawninvstation.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnRepairer', depspawnrepairer) { if (AntiBaseRape==1) { depspawnrepairer.bcanBeDamaged=False; } if (DisableRepairer==1) { depspawnrepairer.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseDeployableSpawnShockMine', depspawnmine) { if (AntiBaseRape==1) { depspawnmine.bcanBeDamaged=False; } if (DisableMines==1) { depspawnmine.Destroy(); } } ForEach AllActors(class'BaseObjectClasses.BaseCatapult', catap) { if (AntiBaseRape==1) { catap.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStation', invstation) { if (AntiBaseRape==1) { invstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStationDouble', dblstation) { if (AntiBaseRape==1) { dblstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStationQuad', quadstation) { if (AntiBaseRape==1) { quadstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseInventoryStationSingle', singlestation) { if (AntiBaseRape==1) { singlestation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BasePowerGenerator', powergen) { if (AntiBaseRape==1) { powergen.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.BaseResupply', resupstation) { if (AntiBaseRape==1) { resupstation.bcanBeDamaged=False; } } ForEach AllActors(class'BaseObjectClasses.Basesensor', sensor) { if (AntiBaseRape==1) { sensor.bcanBeDamaged=False; } } } function Actor ReplaceActor(Actor Other) { if(Other.IsA('PackShield')) { if(ShieldPack==1) { Other.Destroy(); return ReplaceWith(Other, "ucmodv3.cmodshieldpack"); } if(ShieldPack==2) { PackShield(Other).activeFractionDamageBlocked=0.500000; PackShield(Other).passiveFractionDamageBlocked=0.100000; } } if(Other.IsA('WeaponGrappler')) { if(Degrapple==1) { WeaponGrappler(Other).projectileClass = class'ucmodv3.classyGrapplerProjectile'; return Other; } } if(Other.IsA('WeaponEnergyBlade')) { if(EnergyBladeStyle==1) { WeaponEnergyBlade(Other).damageAmt = 50; return Other; } if(EnergyBladeStyle==2) { WeaponEnergyBlade(Other).roundsPerSecond = 0.8000; WeaponEnergyBlade(Other).damageAmt = 75; WeaponEnergyBlade(Other).Range = 600; return Other; } } } function string MutateSpawnCombatRoleClass(Character c) { if(grapplerAmmo==1) { c.team().combatRoleData[0].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.grapplerAmmocmodArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.grapplerAmmocmodArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.grapplerAmmocmodArmorHeavy", class'class')).default.AllowedWeapons; } else { c.team().combatRoleData[0].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.cmodArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.cmodArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("ucmodv3.cmodArmorHeavy", class'class')).default.AllowedWeapons; } } Xclass classyPodWeapon extends EquipmentClasses.WeaponRocketPod; Sclass grapplerAmmocmodArmorHeavy extends Gameplay.Armor; r6class cmodShieldPack extends EquipmentClasses.PackShield; var (ShieldPack) float passiveFractionDamageBlocked; var (ShieldPack) float activeFractionDamageBlocked; var (cmodShieldPack) Material passiveIdleMaterial "Overlay material, if any, to be used when shield is active but has not been impacted"; var (cmodShieldPack) Material activeIdleMaterial "Overlay material, if any, to be used when shield is active but has not been impacted"; var (cmodShieldPack) Material passiveHitMaterial "Overlay material to be used when shield has been impacted"; var (cmodShieldPack) Material activeHitMaterial "Overlay material to be used when shield has been impacted"; var (cmodShieldPack) float hitStayTime "Length of time that the hit material is displayed for on damage"; var() float lightActiveShield; var() float lightPassiveShield; var() float mediumActiveShield; var() float mediumPassiveShield; var() float heavyActiveShield; var() float heavyPassiveShield; var Material currentIdle; var Material currentHit; var float currentHitTime; var float lastHealth; var character characterOwner; var int vieenregistree; var int differencevie; function PostBeginPlay(){ super.PostBeginPlay(); characterOwner = Character(Owner); } function startHeldByCharacter(Character holder) { heldBy = holder; playEffect(passiveEffectName); applyPassiveEffect(holder); holder.createThirdPersonMesh(class); bHeld = true; bDropped = false; SetPhysics(PHYS_None); SetDrawType(DT_None); bCollideWorld = false; SetCollision(false, false, false); } simulated function applyPassiveEffect(Character characterOwner) { currentIdle = passiveIdleMaterial; currentHit = passiveHitMaterial; characterOwner.shieldActive = true; characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; } simulated function removePassiveEffect(Character characterOwner) { characterOwner.shieldActive = false; } simulated function startActiveEffect(Character characterOwner) { currentIdle = activeIdleMaterial; currentHit = activeHitMaterial; characterOwner.shieldFractionDamageBlocked = activeFractionDamageBlocked; vieenregistree=characterOwner.health; } simulated function finishActiveEffect() { if (heldBy != None) characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; currentIdle = passiveIdleMaterial; currentHit = passiveHitMaterial; } 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; differencevie=4*(characterOwner.health-vieenregistree); if ((characterOwner.shieldFractionDamageBlocked == activeFractionDamageBlocked) && (differencevie<-20)) //si le sp est actif et qu'on s'en est trop pris dans la gueule { characterOwner.shieldFractionDamageBlocked = passiveFractionDamageBlocked; //on le desactive Level.Game.Broadcast(self, "ShieldPack blocked a severe hit. Disabling it", 'Say'); } if (localHeldBy != None) { if (lastHealth != localHeldBy.health) { if (lastHealth > localHeldBy.health) { currentHitTime = hitStayTime; } lastHealth = localHeldBy.health; } } vieenregistree=characterOwner.health; } [7 -'' w10aO( /Modifier applied to the angle before rotation \ convergePeriod) { if (VSize(Velocity) < postSpreadVelocity) GotoState('Accelerate'); } } } simulated function accelerateProjectile(float Delta) { Velocity += Normal(Velocity) * (postSpreadAcceleration * Delta); } state Accelerate { simulated function Tick(float Delta) { accelerateProjectile(Delta); } } Hclass cmodArmorMedium extends Gameplay.Armor; e"@Gclass cmodArmorLight extends Gameplay.Armor; Rclass classyaaturret extends BaseObjectClasses.BaseTurretAntiAir; Gclass cmodArmorHeavy extends Gameplay.Armor; tclass classyWeaponVehicleAssaultShip extends EquipmentClasses.WeaponVehicleAssaultShip; 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, 1.0); SetTimer(launchDelay , false); } else numProjectilesFired = 0; } //protected function Projectile makeProjectile(Rotator fireRot, Vector fireLoc) //{ // local EquipmentClasses.ProjectileMortarBomb p; // p = EquipmentClasses.ProjectileMortarBomb(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; //}  N class classyTank extends VehicleClasses.VehicleTank; var class CModArmorClass; //compmod's way of telling which armor can use it simulated function bool canArmorOccupy(VehiclePositionType position, Character character) { if (character.armorClass == None) { warn(character.name $ "'s armor class is none"); return true; } //else if (position == VP_DRIVER) // return canArmourBeDriver(character.armorClass); //else // return canArmourBePassenger(character.armorClass); if((character.ArmorClass == cmodarmorclass)&&(position==VP_DRIVER)) return false; else return true; } )\ convergePeriod) { // If we haven't hit terminal velocity yet continue accelerating if (VSize(Velocity) < postSpreadVelocity) GotoState('Accelerate'); } } } simulated function accelerateProjectile(float Delta) { Velocity += Normal(Velocity) * (postSpreadAcceleration * Delta); } state Accelerate { simulated function Tick(float Delta) { accelerateProjectile(Delta); } } (Xclass classyPodWeapon extends EquipmentClasses.WeaponRocketPod; ,a#// Pod // Tweaked version class classyPod extends VehicleClasses.VehiclePod; var array muzzleSockets; var int currentMuzzleIndex; var int engineDustEffectIndex; var vector engineDustEffectLocation; var (PoA4jFA4kpA4r[NA4oMC4j|C4I7f4o :c nL] A4s