* @epQB@@Q0e None quantity typeClassCoreaumodv2Vector GameplayEngineSystemOffsetEquipmentClassesRadiusheightprimaryPositionsecondaryPositions entryClass PositionTeamAllowedGrenadesattachmentPoint objectTypeQuantityGrenadesobjectInstanceAllowedWeaponsunoccupiedAnimationwantsToGetOutoldOccupantWeaponoccupantRelativeRotationexitAnimationManifestXPositionenterAnimationfirstPersonCameraLocationoccupantConnectionoccupantRelativeLocationoccupantControllerStatefirstPersonWeaponLocationtoBePossessedoccupantAnimationlookAtInheritPitchthirdPersonCameraManifestYPosition hideOccupantbNotLabelledInManifestoccupiedAnimationRotatorUser occupantHealthTypepickupCarryablePostNetBeginPlayburningDamagerPerSecond bProjTarget LifeSpanGetOverlayMaterial ReplaceActorConsoleCommand ProjFXClassfallDamageModifiercompTankRoundcompTankMortar compTankcompSpinfusorProjectilecompProjectileChainguncompPlayerControllercompPlayerCharacterControllercompGrapplerRopecompGrapplerProjectilePostTakeDamagecompDamageTypeChaingun GravityScalecompCharacter ReplaceWithbCanBeDamagedSubmitKickVote MovementcompBurningAreacompBurnerProjectile LightColorcompArmorMediumEntries CollisioncompArmorLightcompArmorHeavyaumodVehicleClassesWeaponChaingunWeaponSpinfusorWeaponGrapplerWeaponVehicleTankWeaponEnergyBladeForceProjectileMortar WeaponBurnerdamageComponentsServerRestartPlayerInVehicle kickvoteboostStrengthtreadVehicleGravityScale dropVelocityweaponstreadGainFactorthrottleToVelocityFactor treadLengthburningAreaClass Pannel00 Pannel01OnMovementCollisionDamage pannel02vehicleDamageModifier Characterexits PlayEffect flipTriggersprojectileClassprojectileVelocityropeGlowMaterialMutateSpawnCombatRoleClasssimulatedAttachKarma Lighting DamageTagdamageTypeClass positionsPlayerVehicleTurretingradiusDamageMomentumTribesPlayerDrivingcanArmorOccupyradiusDamageSize DestroyedTick PreBeginPlayClassPackageRoleRangeDynamicLoadObject TextBufferObjectEnum FunctionStructRagdoll RoleData damageAmt ReturnValue Velocity LocationCiPlayerCharacterControllerName energyUsageProcessedText ScriptTextMPCarryableThrowerActor ammoUsageroundsPerSecondprojectileInheritedVelFactor StrProperty maxChargeStructPropertyArrayProperty TeamInfo chargeScale aimClass MPCarryableWeaponVehicleMPFlag EnergyBlade GrapplerBurner ScreenShader armorClassFX_Ball_AliveFX ropeClasspeakChargeMaxHoldTime releaseDelay chargeRateAnimationChannelArmorClientSideCharacterMultiplayerCharacter CombatRoleAimArcWeaponsChargeUpWeaponTimeChargeUpWeaponVehicleSpawnPoint GrapplerRopeGrapplerProjectile BurningAreaMovementCollisionDamageType TouchingClassProperty NamePropertyIndexEDirectionTypemovementDamageTypeClassvehicleRespawnIndex bKeepPawncollisionDamageTypeEClientPainType pseudoWeaponblockMovementDamagelastMovementDamageTimeAnimationChannelIndexVehiclePositionTypeOtherObjectPropertyFloatProperty BoolPropertycombatRoleData VehiclesDynTankPannelBDynTankPannelADynTankPannelC IntPropertyProjectileSpinfusorProjectileChaingunWeaponBlasterDeltaWeaponBucklerProjectileMortarTankProjectileBurnerProjectileDamageTypeChaingun bIsSpectator WeaponMortarEventInstigator ArmorHeavyTouchLocationWeaponHandGrenadeDamageWeaponRocketPod HitLocationProjectileBurnerBurningArea MomentumWeaponGrenadeLauncherWeaponSniperRifleprojectileFactor VehicleTank BytePropertySource TimeSeconds VehicleClassVoteReplicationInfoDefaultPlayerClassName Projectile TakeDamage MaterialLevelPlayerControllerClassName GameInfoEmitter DamageType Controller LevelInfoMutatorPlayerReplicationInfoVSPhookShaderVotingReplicationInfoBaseprojfxPawn bLastHookPlayerController)@@[NC>Aa]:*'u+u]{ Health=25.000000 ProjFXClass=Class'FX.FX_Ball_Alive' burningDamagerPerSecond=55.000000 bCanBeDamaged=True bProjTarget=True -..\aumodv2\Classes\compGrapplerProjectile.uc/$A93$\BI4 c,5;eSSd :*'uHQ.u9{ LifeSpan=10.000000 GravityScale=1.200000 $..\aumodv2\Classes\compTankRound.uc5$ AF$?ZSBQ p:*'u+u3{ ropeGlowMaterial=Shader'FX.ScreenShader' '..\aumodv2\Classes\compGrapplerRope.uct!K?]'y62bT" :*'u+u8{ damageTypeClass=Class'compDamageTypeChaingun' -..\aumodv2\Classes\compProjectileChaingun.ucz$J>^| 8  :*'u+uO{ radiusDamageSize=650.000000 radiusDamageMomentum=255000.000000 ...\aumodv2\Classes\compSpinfusorProjectile.uc@$"D}$yHI`=_B Y2.Hm|\|\|\U:*'uHQ.uM{ boostStrength=16000000.000000 treadLength=230.000000 throttleToVelocityFactor=35.000000 treadGainFactor=0.090000 treadVehicleGravityScale=2.000000 positions(0)=(hideOccupant=True,thirdPersonCamera=True,occupantControllerState="TribesPlayerDriving",ManifestXPosition=40,ManifestYPosition=30) positions(1)=(Type=VP_GUNNER,hideOccupant=True,occupantControllerState="PlayerVehicleTurreting",ManifestXPosition=40,ManifestYPosition=50) Entries(0)=(Radius=200.000000,Height=125.000000,Offset=(X=250.000000,Y=250.000000,Z=150.000000),secondaryPositions=(VP_GUNNER)) Entries(1)=(Radius=200.000000,Height=125.000000,Offset=(Y=-250.000000,Z=200.000000),primaryPosition=VP_GUNNER,secondaryPositions=(VP_DRIVER)) Entries(2)=(Radius=200.000000,Height=125.000000,Offset=(Y=220.000000),secondaryPositions=(VP_GUNNER)) Entries(3)=(Radius=200.000000,Height=125.000000,Offset=(Y=-220.000000),secondaryPositions=(VP_GUNNER)) Entries(4)=(Radius=200.000000,Height=125.000000,Offset=(X=-250.000000),secondaryPositions=(VP_GUNNER)) flipTriggers(0)=(Radius=600.000000,Height=600.000000) exits(0)=(Offset=(Y=300.000000,Z=100.000000)) exits(1)=(Offset=(Y=-300.000000,Z=100.000000)) exits(2)=(Offset=(Z=300.000000),Position=VP_NULL) exits(3)=(Offset=(Z=-300.000000),Position=VP_NULL) damageComponents(0)=(objectType=Class'Vehicles.DynTankPannelA',attachmentPoint="Pannel00") damageComponents(1)=(objectType=Class'Vehicles.DynTankPannelB',attachmentPoint="Pannel01") damageComponents(2)=(objectType=Class'Vehicles.DynTankPannelC',attachmentPoint="pannel02") Health=600.000000 ..\aumodv2\Classes\compTank.uca$$tKg$fCf$ Be$Q=b$@{Y0.S)'&S$"~:#:+!::,"(("*S %0.S)'S&S$"|:#:+!::,"(("2*S %PY $HC $B :zCzCC  $HC $B :zHC  $HC $B :\C  $HC $B :\  $HC $B :z qY $D $D :oYM :CB :B :C :^Y%ijl/$DC4M0"$͑# :*'u+u2{ burningAreaClass=Class'compBurningArea' +..\aumodv2\Classes\compBurnerProjectile.uch#+bL1A#JIjKԛKԛA :*'u+u{ &..\aumodv2\Classes\compBurningArea.uc7E=2$ \ :*'u+u){ vehicleDamageModifier=0.600000 -..\aumodv2\Classes\compDamageTypeChaingun.ucm$?C "/a0 w*aumodv2.compCharacteraumodv2.compCharacteraumodv2.compPlayerCharacterControlleraumodv2.compPlayerCharacterController10/a0 w*r  10 NKclass compCharacter extends Gameplay.MultiplayerCharacter; var float fallDamageModifier; /* var float lightActiveShield; var float mediumActiveShield; var float heavyActiveShield; var float lightPassiveShield; var float mediumPassiveShield; var float heavyPassiveShield; simulated function bool shouldBreakRope() { local int i; local float ropeLength; if (Level.NetMode == NM_Client) return false; ropeLength = VSize(proj.Location - rope.Location); if (Controller == None) { //Log("!!!!!!!!Break grapple: Controller was None"); return true; } if (bAttached && (proj.Base == None || proj.Base.bDeleteMe)) { //Log("!!!!!!!!Break grapple: Projectiles base was None or destroyed"); //one less ammo for(i = 0; i < NUM_WEAPON_SLOTS;i++) if( Grappler(weaponSlots[i]) != None) { Grappler(weaponSlots[i]).ammoCount--; if (Grappler(weaponSlots[i]).ammoCount <= 0) Grappler(weaponSlots[i]).setOutOfAmmo(); compGrappler(weaponSlots[i]).Penalize(); LOG("ammo--, now " $ weaponSlots[i].ammoCount); } return true; } if (ropeLength > grapplerClass.default.maxRopeLength) { //Log("!!!!!!!!Break grapple: Rope got too long"); for(i = 0; i < NUM_WEAPON_SLOTS;i++) if(Grappler(weaponSlots[i]) != None) { Grappler(weaponSlots[i]).ammoCount--; if (Grappler(weaponSlots[i]).ammoCount <= 0) Grappler(weaponSlots[i]).setOutOfAmmo(); compGrappler(weaponSlots[i]).Penalize(); LOG("ammo--, now " $ weaponSlots[i].ammoCount); } return true; } if (ropeObstructionTrace(ropeLength - grapplerClass.default.ropeNonCollisionLength)) { //Log("!!!!!!!!Break grapple: Rope was obstructed"); for(i = 0; i < NUM_WEAPON_SLOTS;i++) if(Grappler(weaponSlots[i]) != None) { Grappler(weaponSlots[i]).ammoCount--; if (Grappler(weaponSlots[i]).ammoCount <= 0) Grappler(weaponSlots[i]).setOutOfAmmo(); compGrappler(weaponSlots[i]).Penalize(); LOG("ammo--, now " $ weaponSlots[i].ammoCount); } return true; } return false; } */ // on movement collision damage. // this method is called by fusion whenever a collision in the movement // is suffiently large as to cause damage to the character. simulated event OnMovementCollisionDamage(float damage) { local class collisionDamageType; damage *= fallDamageModifier; if (blockMovementDamage) return; if (level.timeSecondsa/!Y.>. . .E.% &;G6BY2(ismBmBmBmBmBmBmB_pii_p:*'u+u&{ fallDamageModifier=0.800000 $..\aumodv2\Classes\compCharacter.uc:$L?' uu -6% aumodv2.compArmorLight 6& aumodv2.compArmorMedium 6, aumodv2.compArmorHeavy  Fclass compBurningArea extends EquipmentClasses.ProjectileBurnerBurningArea; simulated function Tick(float Delta) { local Actor hook; local int i; for (i = 0; i < Touching.Length; ++i) { if (!Touching[i].bProjTarget) continue; hook = compGrapplerProjectile(Touching[i]); if (hook != None)//&& FastTrace(hook.Location)) { hook.TakeDamage(compGrapplerProjectile(hook).burningDamagerPerSecond * Delta, None, Location, Velocity, None); } } super.Tick(Delta); } @Gclass compArmorHeavy extends Gameplay.Armor; Gclass compArmorLight extends Gameplay.Armor; Hclass compArmorMedium extends Gameplay.Armor; Pclass compBurnerProjectile extends EquipmentClasses.ProjectileBurner; Fclass compBurningArea extends EquipmentClasses.ProjectileBurnerBurningArea; simulated function Tick(float Delta) { local Actor hook; local int i; for (i = 0; i < Touching.Length; ++i) { if (!Touching[i].bProjTarget) continue; hook = compGrapplerProjectile(Touching[i]); if (hook != None) { hook.TakeDamage(compGrapplerProjectile(hook).burningDamagerPerSecond * Delta, None, Location, Velocity, None); } } super.Tick(Delta); } X6class aumod extends Gameplay.Mutator; function preBeginPlay() { local Gameplay.GameInfo C; local Gameplay.VehicleSpawnPoint VSP; foreach AllActors(class'Gameplay.GameInfo', C) if (C != None) { C.Default.DefaultPlayerClassName = "aumodv2.compCharacter"; C.DefaultPlayerClassName = "aumodv2.compCharacter"; C.PlayerControllerClassName = "aumodv2.compPlayerCharacterController"; C.Default.PlayerControllerClassName = "aumodv2.compPlayerCharacterController"; } foreach AllActors(class'Gameplay.VehicleSpawnPoint', VSP) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleTank') { VSP.vehicleClass = class'aumodv2.compTank'; } } } function Actor ReplaceActor(Actor Other) { if(Other.IsA('ProjectileMortar')) { ProjectileMortar(Other).LifeSpan = 11; return Other; } else if(Other.IsA('WeaponChaingun')) { WeaponChaingun(Other).projectileClass = class'compProjectileChaingun'; return Other; } if(Other.IsA('Character')) { Other.Destroy(); return ReplaceWith(Other, "aumodv2.compCharacter"); } if(Other.IsA('WeaponGrappler')) { WeaponGrappler(Other).ropeClass = class'compGrapplerRope'; WeaponGrappler(Other).projectileClass = class'compGrapplerProjectile'; return Other; } if(Other.IsA('WeaponSpinfusor')) { WeaponSpinfusor(Other).ProjectileClass = class'compSpinfusorProjectile'; WeaponSpinfusor(Other).ProjectileInheritedVelFactor = 0.70; WeaponSpinfusor(Other).ProjectileVelocity = 4700; return Other; } if(Other.IsA('WeaponEnergyBlade')) { WeaponEnergyBlade(Other).roundsPerSecond = 0.8000; WeaponEnergyBlade(Other).Range = 600; WeaponEnergyBlade(Other).damageAmt = 75; return Other; } if(Other.IsA('WeaponBurner')) { WeaponBurner(Other).ProjectileClass = class'compBurnerProjectile'; WeaponBurner(Other).energyUsage = 12; WeaponBurner(Other).ProjectileInheritedVelFactor = 0.25; return Other; } if(Other.IsA('WeaponVehicleTank')) { WeaponVehicleTank(Other).roundsPerSecond = 0.4; WeaponVehicleTank(Other).aimClass = class'AimArcWeapons'; WeaponVehicleTank(Other).projectileClass = class'compTankRound'; WeaponVehicleTank(Other).projectileVelocity = 6000; WeaponVehicleTank(Other).ammoUsage = 0; return Other; } return Other; } function string MutateSpawnCombatRoleClass(Character c) { c.team().combatRoleData[0].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv2.compArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv2.compArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv2.compArmorHeavy", class'class')).default.AllowedWeapons; } X*T22;3%T1o|\7+׆ii|\7+׆ii|\7+׆iiKԛ_rKԛYKԛKԛKԛG6G6Kԛ ?u ?u ?uKԛVc^Vc^Vc^KԛKԛ11111T T T T )+)+KQxNw[$u)u{ ..\aumodv2\Classes\aumod.ucPclass compBurnerProjectile extends EquipmentClasses.ProjectileBurner; Oclass compTankRound extends EquipmentClasses.ProjectileMortarTank; NKclass compCharacter extends Gameplay.MultiplayerCharacter; var float fallDamageModifier; simulated event OnMovementCollisionDamage(float damage) { local class collisionDamageType; damage *= fallDamageModifier; if (blockMovementDamage) return; if (level.timeSecondsL=?D?9?,K Gclass compArmorLight extends Gameplay.Armor; ^class compDamageTypeChaingun extends EquipmentClasses.ProjectileDamageTypeChaingun; nclass compGrapplerProjectile extends Gameplay.GrapplerProjectile; var float Health; var class ProjFXClass; var Emitter projfx; var float burningDamagerPerSecond; var bool bLastHook; var Grappler source; simulated function PostNetBeginPlay() { super.PostNetBeginPlay(); } simulated function Destroyed() { if(projfx!=none) { } Super.Destroyed(); } function PostTakeDamage(float Damage, Engine.Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { log(health); Health -= Damage; log(health); 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); } <R.2?Ni:*'u+uQ { 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',quantity=20) AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=150) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) %..\aumodv2\Classes\compArmorLight.ucY\ """ " "*"" ""Z " Oclass compTankMortar extends EquipmentClasses.WeaponVehicleTank; A<d6BLk1 d:*'uHQ.ul{ projectileClass=Class'compTankRound' projectileVelocity=6000.000000 dropVelocity=2000 %..\aumodv2\Classes\compTankMortar.ucrs$Ec"D2 EA w * F D(T9U 9U.9?%a  Gclass compArmorHeavy extends Gameplay.Armor; u class compTank extends VehicleClasses.VehicleTank; //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; } //else if (position == VP_DRIVER) // return canArmourBeDriver(character.armorClass); //else // return canArmourBePassenger(character.armorClass); if(character.ArmorClass == class'EquipmentClasses.ArmorHeavy') return false; else return true; } Xclass compSpinfusorProjectile extends EquipmentClasses.ProjectileSpinfusor; Tclass compProjectileChaingun extends EquipmentClasses.ProjectileChaingun; Dclass compPlayerController extends Engine.PlayerController; L@\ 6MI2e1-:*'u+u{ +..\aumodv2\Classes\compPlayerController.ucGv8Ha''' x class compPlayerCharacterController extends Gameplay.PlayerCharacterController; exec function kickvote(string name) { //This hack allows a spectator to directly observe a player by pressing the vote to kick button. //Effectively disallows observers from voting to kick, of course. if(PlayerReplicationInfo.bIsSpectator) { log("Spectating " $name); ConsoleCommand("Spectate " $ name); } else if (voteReplicationInfo!=None) { log("sending kick vote: "$name); voteReplicationInfo.SubmitKickVote(name); } else log("none voteReplicationInfo!"); } function ServerRestartPlayerInVehicle(int vehicleRespawnIndex, bool bKeepPawn) { Log("ServerRestartPlayerInVehicle"); super.ServerRestartPlayerInVehicle(vehicleRespawnIndex, bKeepPawn); } OYAV06Pa}y:+OU-:*'u+uZ{ 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.400000 zoomedMouseScale(2)=0.100000 zoomMagnificationLevels(0)=2.000000 zoomMagnificationLevels(1)=4.000000 zoomMagnificationLevels(2)=10.000000 ChatWindowSizes(0)=4 ChatWindowSizes(1)=6 ChatWindowSizes(2)=12 SPChatWindowSizes(0)=6 4..\aumodv2\Classes\compPlayerCharacterController.ucF class compGrapplerRope extends Gameplay.GrapplerRope; var() Material ropeGlowMaterial; simulated function Material GetOverlayMaterial(int Index) { log("rope texuter overlay: " $ ropeGlowMaterial); return ropeGlowMaterial; } HS-2R +oi:*'u+uL { 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',quantity=30) AllowedWeapons(8)=(typeClass=Class'EquipmentClasses.WeaponChaingun',quantity=300) AllowedGrenades=(typeClass=Class'EquipmentClasses.WeaponHandGrenade',quantity=5) %..\aumodv2\Classes\compArmorHeavy.ucY\ """ ""`"" "",Z "T6+prope texuter overlay: 9V Ux class compPlayerCharacterController extends Gameplay.PlayerCharacterController; exec function kickvote(string name) { if(PlayerReplicationInfo.bIsSpectator) { log("Spectating " $name); ConsoleCommand("Spectate " $ name); } else if (voteReplicationInfo!=None) { log("sending kick vote: "$name); voteReplicationInfo.SubmitKickVote(name); } else log("none voteReplicationInfo!"); } function ServerRestartPlayerInVehicle(int vehicleRespawnIndex, bool bKeepPawn) { Log("ServerRestartPlayerInVehicle"); super.ServerRestartPlayerInVehicle(vehicleRespawnIndex, bKeepPawn); } `%D-pSpectating 8pSpectate w*psending kick vote:  Jnone voteReplicationInfo! X6class aumod extends Gameplay.Mutator; function preBeginPlay() { local Gameplay.GameInfo C; local Gameplay.VehicleSpawnPoint VSP; foreach AllActors(class'Gameplay.GameInfo', C) if (C != None) { C.Default.DefaultPlayerClassName = "aumodv2.compCharacter"; C.DefaultPlayerClassName = "aumodv2.compCharacter"; C.PlayerControllerClassName = "aumodv2.compPlayerCharacterController"; C.Default.PlayerControllerClassName = "aumodv2.compPlayerCharacterController"; } foreach AllActors(class'Gameplay.VehicleSpawnPoint', VSP) { if (VSP != None && VSP.vehicleClass == class'VehicleClasses.VehicleTank') { VSP.vehicleClass = class'aumodv2.compTank'; } } } function Actor ReplaceActor(Actor Other) { //replace ammotypes first for speed if(Other.IsA('ProjectileMortar')) { ProjectileMortar(Other).LifeSpan = 11; //was 8 return Other; } //swap cg bullets else if(Other.IsA('WeaponChaingun')) { WeaponChaingun(Other).projectileClass = class'compProjectileChaingun'; return Other; } //replace character if(Other.IsA('Character')) { Other.Destroy(); return ReplaceWith(Other, "aumodv2.compCharacter"); } //limit ammo for grappler if(Other.IsA('WeaponGrappler')) { WeaponGrappler(Other).ropeClass = class'compGrapplerRope'; WeaponGrappler(Other).projectileClass = class'compGrapplerProjectile'; return Other; //Other.Destroy(); //return ReplaceWith(Other, "aumodv2.compGrappler"); } //change spinfusor if(Other.IsA('WeaponSpinfusor')) { WeaponSpinfusor(Other).ProjectileClass = class'compSpinfusorProjectile'; WeaponSpinfusor(Other).ProjectileInheritedVelFactor = 0.70; //was .4 WeaponSpinfusor(Other).ProjectileVelocity = 4700;//was 4700 return Other; } //change WeaponEnergyBlade if(Other.IsA('WeaponEnergyBlade')) { WeaponEnergyBlade(Other).roundsPerSecond = 0.8000; WeaponEnergyBlade(Other).Range = 600;//was 400 WeaponEnergyBlade(Other).damageAmt = 75;//was 25 return Other; } //change burner if(Other.IsA('WeaponBurner')) { WeaponBurner(Other).ProjectileClass = class'compBurnerProjectile'; WeaponBurner(Other).energyUsage = 12;//was 15 WeaponBurner(Other).ProjectileInheritedVelFactor = 0.25;//was 0.0 return Other; } //change tank weapon if(Other.IsA('WeaponVehicleTank')) { WeaponVehicleTank(Other).roundsPerSecond = 0.4; WeaponVehicleTank(Other).aimClass = class'AimArcWeapons'; WeaponVehicleTank(Other).projectileClass = class'compTankRound'; WeaponVehicleTank(Other).projectileVelocity = 6000; WeaponVehicleTank(Other).ammoUsage = 0; //was 1 return Other; } return Other; } function string MutateSpawnCombatRoleClass(Character c) { //hack in the grappler //c.grapplerClass = class(DynamicLoadObject("aumodv2.compGrappler", class'Class')); c.team().combatRoleData[0].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv2.compArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv2.compArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv2.compArmorHeavy", class'class')).default.AllowedWeapons; } W_3ServerRestartPlayerInVehicle-! F// such as class compGrapplerRope extends Gameplay.GrapplerRope; var() Material ropeGlowMaterial; simulated function Material GetOverlayMaterial(int Index) { log("rope texuter overlay: " $ ropeGlowMaterial); return ropeGlowMaterial; } nclass compGrapplerProjectile extends Gameplay.GrapplerProjectile; var float Health; var class ProjFXClass; var Emitter projfx; var float burningDamagerPerSecond; var bool bLastHook; var Grappler source; simulated function PostNetBeginPlay() { super.PostNetBeginPlay(); // 01/02/05 //projfx = Spawn(ProjFXClass); // projfx.SetBase(self); } simulated function Destroyed() { if(projfx!=none) { //projfx.Disabled = true; //projfx.Destroy(); } Super.Destroyed(); } function PostTakeDamage(float Damage, Engine.Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType, optional float projectileFactor) { log(health); Health -= Damage; log(health); if(Health <= 0) Destroy(); Super.PostTakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, projectileFactor); } simulated function simulatedAttach(Actor Other, vector TouchLocation) { //flashy effect //projfx = Spawn(ProjFXClass); //projfx.SetBase(self); Super.simulatedAttach(Other, TouchLocation); SetCollision(True, True, True); } Dclass compPlayerController extends Engine.PlayerController; Tclass compProjectileChaingun extends EquipmentClasses.ProjectileChaingun; Xclass compSpinfusorProjectile extends EquipmentClasses.ProjectileSpinfusor; u class compTank 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; } acBr *p9W 's armor class is none'_r  (a'  B %74-.w*,.** Oclass compTankMortar extends EquipmentClasses.WeaponVehicleTank; Oclass compTankRound extends EquipmentClasses.ProjectileMortarTank; EEE EDIDDD\DnDwDJDhDLDSDYD]DWDdDXDTD[SMcD~DZDzD~DrDVDoDVDBKPDvD@DLD~DkD^DFMOTsD[DbDDDoEUcCDCDrEWD}cVDUDiMLHDoT_D]DiDyDcTuLAD`DD|DmDLzD{EqDbDyDlLDT^`}SwDDS|Dv`xDALBL2DaD\LvDBDCDHD\DkTOL_L1KL[GLkKGTaLTsDjDrUNDfTuTeTXTt[]L`[PDmD{LuDsGnsKKQDgDxEWDJDNDALCL6L7T5U4DHD`UdDgD@bRDebSDpSDDpDYDXDZ'RZP%TxPbUVQ/sQ%EQRWWoRbFLSCcjS8jMY8K jY`nJZ*TiZGjG[td[;lC\;To_b_N`(:k`BcHaYIkdNhHeNRfeGqDfG@ af?jAgGnkj>OIkGlXo=K'voGfA3`I~YJ]MczLH]E]e3CYB(Z4eK[37w@GJw'QA3u@_#Z4]_*Q|RY4^Y?Y4^w:Y4_U"Y4gt#Y4][3Y4o6xTn g"Z4gUZ4f|(Y4eKb$Z4uG(kf|:Z4_bO^A(1f_?Z4^E$Y4ucY4EXRb]9 BZ4f_<gEKltJ22iA<[D_WRZ4^vZ4L TZ4o`Z4kOMZ4[z@pUv>EPZ4O CAj RY4]|S_Y6RxSFJSQhPY4O GP`wV3Z4o6MP_[|Z4]WZ4EtMY4[yY4kTY4oY4L n~z`x#BQW`QhBY4fEY4fk