*>@J 6sIl=6=m>None typeClass quantityaumodv3Core GameplayEngineVectorSystemOffsetEquipmentClassesheightRadiusprimaryPositionsecondaryPositions entryClass PositionAllowedGrenadesAllowedWeaponsobjectInstance objectTypeTeamQuantityGrenadesattachmentPoint hideOccupantenterAnimationbNotLabelledInManifest occupantoccupantRelativeRotationUserexitAnimationTickweaponsManifestYPositionoldOccupantWeaponthirdPersonCameralookAtInheritPitchwantsToGetOutVehicleClassesoccupantAnimationvehicleDamageModifiertoBePossessedRotatoroccupiedAnimationManifestXPositionfirstPersonWeaponLocationHealthoccupantControllerStatefirstPersonCameraLocationoccupantConnectioncanArmorOccupyoccupantRelativeLocationTypeunoccupiedAnimationPostNetBeginPlayClientRestart WeaponBurner bProjTarget LifeSpanServerToggleBehindViewGetOverlayMaterial ReplaceActorConsoleCommandPostTakeDamageProjectileMortar MovementdamageComponentsServerRestartPlayerInVehicle LightColor Collision kickvoteupdateCameraRotationToggleBehindViewboostStrengthtreadVehicleGravityScaleForceKarma Lighting dropVelocity ReplaceWithbCanBeDamagedSubmitKickVoteWeaponEnergyBladetreadGainFactorthrottleToVelocityFactor treadLengthWeaponVehicleTankburningAreaClassEntriesOnMovementCollisionDamageWeaponGrapplerWeaponSpinfusorbackDamageModifierheadDamageModifiercollisionDamageexits flipTriggersmaxAmmoWeaponChaingunauBladeProjectileDamageTypeaumodpickupCarryablecompArmorHeavyMutateSpawnCombatRoleClasssimulatedAttach DamageTagdriverWeaponClassdamageTypeClass positionscompArmorLightPlayerVehicleTurretingaimAdjustViewRotationcompArmorMediumradiusDamageMomentumTribesPlayerDrivingcompBurnerProjectileradiusDamageAmt Pannel00 Pannel01radiusDamageSize pannel02 reloadTime CharactercompBurningAreacompCharacter PlayEffectcompDamageTypeChaingunhasAmmoprojectileClassprojectileVelocitycompGrapplerProjectile ammoCount ammoUsagecanFire updateCasts PreBeginPlay DestroyedcompGrapplerRopecompPlayerCharacterControllercompPlayerControllercompPodcompPodWeaponcompProjectileChainguncompSpinfusorProjectile compTankcompTankMortarcompTankRoundfallDamageModifier ProjFXClassburningDamagerPerSecondropeGlowMaterialbStartFirstPerson reloadTimer GravityScaleprojectileInheritedVelFactor aimClassJointControlledAircraft MPCarryableRagdollWeapon damageAmtVehicleMPFlag EnergyBlade GrapplerBurner ScreenShaderFX_Ball_AlivePlayerCharacterControllerPodFX energyUsage TouchingIndexMPCarryableThrowerOtherDeltacollisionDamageMagnitudeScale DeltaSeconds bIsSpectator minimumCollisionDamageMagnitudeEventInstigatorTouchLocation maxChargeDamage HitLocation MomentumbCollisionDamageEnabled TeamInfo chargeScaleprojectileFactorSource TimeSeconds VehicleClassRotationNormalenergyaPawnVoteReplicationInfo currentStateDefaultPlayerClassName Projectile TakeDamage armorClassLevelPlayerControllerClassName GameInfo ropeClasspeakChargeMaxHoldTime releaseDelay chargeRateAnimationChannelArmorClientSideCharacterMultiplayerCharacter CombatRole EquippableAimArcWeaponsChargeUpWeaponTimeChargeUpWeapon PodWeaponVehicleSpawnPoint GrapplerRopeGrapplerProjectile BurningAreaMovementCollisionDamageTypeEmitter DamageType Controller increaseAmmo LevelInfoEDirectionTypebJustRespawnedmovementDamageTypeClassvehicleRespawnIndex bKeepPawncurrentCameraRotationcollisionDamageTypemaxRotationDeltarequiredRotationDeltaactualrotationDeltacurrentCameraRotationNormalEClientPainType pseudoWeaponblockMovementDamagelastMovementDamageTimeAnimationChannelIndex magnitudeVehiclePositionTypeMutatorPlayerReplicationInfoShaderVotingReplicationInfoBasecombatRoleData VehiclesDynTankPannelBDynTankPannelADynTankPannelCPawnProjectileSpinfusorProjectileChaingunWeaponBlasterPlayerControllerWeaponBucklerProjectileDamageTypeDefaultProjectileMortarTankProjectileBurnerProjectileDamageTypeChaingun Material WeaponMortarActor ArmorHeavy ScriptTextWeaponHandGrenadeProcessedTextWeaponVehicleFighterRocketWeaponRocketPodiProjectileBurnerBurningAreaCWeaponGrenadeLauncherWeaponSniperRiflePitch VehicleTank VehiclePodYaw Location Rotation Velocity ReturnValueDynamicLoadObject NormalizeRangeRoleClassPackage TextBufferObjectEnum FunctionStructName StrPropertyStructPropertyArrayPropertyClassPropertyVSPhook NamePropertyObjectPropertyprojfxFloatProperty bLastHook BoolProperty IntProperty EnergyMaxEnergyRegenPerSec ByteProperty RoleDataA GeUBE Aa];RؖjRؖ]{ Health=30.000000 ProjFXClass=Class'FX.FX_Ball_Alive' burningDamagerPerSecond=55.000000 bCanBeDamaged=True bProjTarget=True -..\aumodv3\Classes\compGrapplerProjectile.uc.$ATU$\BP9@>oI5&.ORKSSd RؖbRؖ9{ LifeSpan=10.000000 GravityScale=1.200000 $..\aumodv3\Classes\compTankRound.uc:$ AY$? WyLhB Y2u.2ќ|\|\|\&RؖbRؖO${ //to reduce damage from ground // collisionDamageMagnitudeScale = 0.00001 driverWeaponClass=class'aumodv3.compPodWeapon'; //Energy = 15; //EnergyMax = 15; //EnergyRegenPerSec = 3; // Health=110//was 140 //JCA properties // topSpeed = 135000;// // AirSpeed = 10000; // coastingDamping = -.5; // reverseThrustForce = 1200; // reverseForce = 1200; // thrustCombinedReduction = 1.0; // forwardforce = 4000;//3000;//thrusting + forward (divided by thrust combined reduction) // forwardThrustForce = 10000;//holding forward down while thrusting // upThrustForce = 3500;//4500; //up thrust componant // divethrustforce = 7500; //dive down // strafethrustforce = 2500; //strafe // linearbankscale = .4; //sideways tilt // Angularbankscale = .50; // FlightRotationEffectMagnitude = 650; // cornerSlowDownSpeedCoefficient = 1//was 10 //unknown attribute // // DrawType=DT_Mesh // Mesh=SkeletalMesh'Vehicles.Pod' // TPCameraDistance=800 // strafeThrustForce = 2000//4000 // strafeForce = 5000//4000 // forwardThrustForce = 500 // forwardForce = 250 // upThrustForce = 500 // reverseForce = 150 // reverseThrustForce = 250 // diveThrustForce = 500 // 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'PodWeapon' // 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 // navigationTurnRate = 10000 // throttleScale = 0.002 // thrustThresholdPitch = 12000 // driveYawCoefficient = 25 // drivePitchCoefficient = 25 // navigationMaximumPitch = 12000 // localizedName = "fighter" ..\aumodv3\Classes\compPod.ucjVAM{6p@"  RؖbRؖ\{ maxAmmo = 8; reloadTimer = .9; reloadTime = .9; ammoUsage = 1; ammoCount = 8; $..\aumodv3\Classes\compPodWeapon.uca"X$fff?y$fff?C"D"6TNC'y62bT" RؖbRؖ8{ damageTypeClass=Class'compDamageTypeChaingun' -..\aumodv3\Classes\compProjectileChaingun.uck/SOD!^F  RؖbRؖo{ radiusDamageAmt=58.000000 radiusDamageSize=650.000000 radiusDamageMomentum=255000.000000 ...\aumodv3\Classes\compSpinfusorProjectile.uct$hBw$"Dq$yH RFPEB Y2#.Hm|\|\|\&RؖbRؖM{ 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 ..\aumodv3\Classes\compTank.ucI$$tKU$fCT$ BS$Q=J$@lY4%S#$S)/r0:-:+5"3::*,"(!"S1'4%S#S$S)/n0:-:+5"3::*,"(!"2S1'XY $HC $B :zCzCC  $HC $B :zHC  $HC $B :\C  $HC $B :\  $HC $B :z `Y $D $D :_YM :CB :B :C :BY%uvx.$D"$%@,J)HcI2+N4 ;RؖRؖX{ headDamageModifier = 4.0 backDamageModifier = 1.5 vehicleDamageModifier = 1.5 2..\aumodv3\Classes\auBladeProjectileDamageType.uc]$@\$?($?cZIX- p;RؖjRؖ3{ ropeGlowMaterial=Shader'FX.ScreenShader' '..\aumodv3\Classes\compGrapplerRope.ucVf~D2/ \ ;RؖjRؖ){ vehicleDamageModifier=0.600000 -..\aumodv3\Classes\compDamageTypeChaingun.uc($?t9{8A1JIjKԛKԛ A ;RؖjRؖ{ &..\aumodv3\Classes\compBurningArea.ucus72$͑# ;RؖjRؖ2{ burningAreaClass=Class'compBurningArea' +..\aumodv3\Classes\compBurnerProjectile.ucW1Pclass 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); }   % 74 - .  w * ,. )**  Hclass compArmorMedium extends Gameplay.Armor; Gclass compArmorLight extends Gameplay.Armor; Gclass compArmorHeavy extends Gameplay.Armor; 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 F=!6a/!@.0Aiia/!b. a/!zaOaumodv3.compCharactera/!Z. -. ]a/![. !.333?.Ea/!R. +..,2.A=a/!8. 2.@A.>a/!V. . .E.% ^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); } G ^/a0 w*aumodv3.compCharacteraumodv3.compCharacteraumodv3.compPlayerCharacterControlleraumodv3.compPlayerCharacterController10/a0 [!w*r  ZZw*r  #10 *j(DynamicLoadObject("aumodv3.compArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv3.compArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv3.compArmorHeavy", class'class')).default.AllowedWeapons; } fclass auBladeProjectileDamageType extends EquipmentClasses.ProjectileDamageTypeDefault; K 6 LH w** M?(T9U  9U . 9?%a&%$"  Oclass compTankRound extends EquipmentClasses.ProjectileMortarTank; Oclass compTankMortar extends EquipmentClasses.WeaponVehicleTank; PQJ6QLk1  RؖbRؖl{ projectileClass=Class'compTankRound' projectileVelocity=6000.000000 dropVelocity=2000 %..\aumodv3\Classes\compTankMortar.uc@A$EN"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; } Zclass compSpinfusorProjectile extends EquipmentClasses.ProjectileSpinfusor; Tclass compProjectileChaingun extends EquipmentClasses.ProjectileChaingun; Nh8H6a''' nclass compPodWeapon extends EquipmentClasses.WeaponVehicleFighterRocket; var int maxAmmo; var float reloadTimer; var float reloadTime; simulated function tick(float deltaSeconds) { if(reloadTimer <= 0) { if(ammoCount < maxAmmo) { increaseAmmo(1); reloadTimer = reloadTime; } } else { reloadTimer -= deltaSeconds; } super.tick(deltaSeconds); } //AssaultShipWeapon sticks this true, so override simulated function bool canFire() { return hasAmmo(); } //simulated protected function FireWeapon() //{ // local Vector fireLoc; // local int i; // for( i = 0; i < 2; i ++) // { // fireLoc = rookMotor.getProjectileSpawnLocation(); // makeProjectile(getAimRotation(fireLoc), fireLoc); // // lastFireTime = Level.TimeSeconds; // // if (rookMotor == None) // initialiseRookMotor(); // // firedEffectProcessing(); // } // bFiredWeapon = true; // playCharacterFireAnim(); // animClass.static.playEquippableAnim(self, fireAnimation, speedPackScale); // demoFireCount++; // if (demoFireCount==0) // demoFireCount = 1; //} w\class compPod extends VehicleClasses.VehiclePod; var () float Energy; var () float EnergyMax; var () float EnergyRegenPerSec; /*function PostTakeDamage(float Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType, optional float projectileFactor) { local class pdt; local int positionI; local Controller killer; local Rook killerRook; local ModeInfo mode; local Rook instigatedRook; instigatedRook = Rook(instigatedBy); // catch case we have been torn off and this is called if (Level.NetMode == NM_Client) return; // disable invincibility if attacked by our own team if (instigatedRook != None && instigatedRook.team() == team()) bInvincible = false; // do nothing if in god mode or invincible if (InGodMode() || bInvincible) return; pdt = class(damageType); if (pdt != None) Damage *= pdt.default.vehicleDamageModifier; //shield code if(Energy >= Damage) { Energy -= Damage;//subtract damage from energy Health += Damage;//undo damage taken } else { Health += Energy;//Since energy < damage, just heal what we can Energy = 0;//we used all our shields } // avoid damage healing the car if (Damage < 0) return; // vehicle is dead if ((Health - Damage) <= 0) { aboutToDie(); // have all occupants leave for (positionI = 0; positionI < positions.length; ++positionI) { if (positions[positionI].occupant != None) driverLeave(true, positionI); } // Notify mode for stat-tracking purposes mode = ModeInfo(Level.Game); if (mode != None) { mode.OnVehicleDestroyed(instigatedBy, self, damageType); } // Remove dead vehicle's from other AI's VisionNotifier's // (maybe to be consistent with Pawn's postTakeDamage function we should call Died() here) Level.Game.NotifyKilled(instigatedBy.Controller, Controller, self); // emit death message if (instigatedBy != None) killer = instigatedBy.GetKillerController(); if (killer!= None && Killer.Pawn != None) { killerRook = Rook(Killer.Pawn); if (killerRook != None) dispatchMessage(new class'MessageDeath'(killerRook.getKillerLabel(), label, killer.Pawn.PlayerReplicationInfo, None)); else dispatchMessage(new class'MessageDeath'(killer.Pawn.label, label, killer.Pawn.PlayerReplicationInfo, None)); } else dispatchMessage(new class'MessageDeath'(self.label, label, None, None)); TriggerEffectEvent('VehicleDestroyed'); } Super.PostTakeDamage(Damage, instigatedBy, hitlocation, momentum, damageType, projectileFactor); } function tick(float deltaSeconds) { if(Energy < EnergyMax) Energy += EnergyRegenPerSec * deltaSeconds; else Energy = EnergyMax; super.tick(deltaSeconds); }*/ //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; } function bool aimAdjustViewRotation() { return true; } simulated event updateCameraRotation(float deltaSeconds) { local float maxRotationDelta; local rotator requiredRotationDelta; local rotator actualrotationDelta; local rotator rotationNormal; local rotator currentCameraRotationNormal; rotationNormal = rotation; if (rotationNormal.Pitch > 16384) rotationNormal.Yaw += 32768; rotationNormal = Normalize(rotationNormal); if (rotationNormal.Yaw < 0) rotationNormal.Yaw += 65536; if (rotationNormal.Pitch < 0) rotationNormal.Pitch += 65536; currentCameraRotationNormal = Normalize(currentCameraRotation); if (currentCameraRotationNormal.Yaw < 0) currentCameraRotationNormal.Yaw += 65536; if (currentCameraRotationNormal.Pitch < 0) currentCameraRotationNormal.Pitch += 65536; maxRotationDelta = deltaSeconds * 70000; requiredRotationDelta = rotationNormal - currentCameraRotationNormal; if (requiredRotationDelta.Pitch > 32768) requiredRotationDelta.Pitch -= 65536; else if (requiredRotationDelta.Pitch < -32768) requiredRotationDelta.Pitch += 65536; if (requiredRotationDelta.Yaw > 32768) requiredRotationDelta.Yaw -= 65536; else if (requiredRotationDelta.Yaw < -32768) requiredRotationDelta.Yaw += 65536; if (requiredRotationDelta.Yaw < 0) actualrotationDelta.Yaw = max(-maxRotationDelta, requiredRotationDelta.Yaw); else actualrotationDelta.Yaw = min(maxRotationDelta, requiredRotationDelta.Yaw); if (requiredRotationDelta.Pitch < 0) actualrotationDelta.Pitch = max(-maxRotationDelta, requiredRotationDelta.Pitch); else actualrotationDelta.Pitch = min(maxRotationDelta, requiredRotationDelta.Pitch); currentCameraRotation.Pitch += actualrotationDelta.Pitch; currentCameraRotation.Yaw += actualrotationDelta.Yaw; } simulated event collisionDamage(float magnitude) { if (bCollisionDamageEnabled && magnitude >= minimumCollisionDamageMagnitude) { //apply damage on the server if (ROLE == ROLE_Authority) TakeDamage(collisionDamageMagnitudeScale * magnitude, self, Location, vect(0,0,0), class'DamageType'); } } F class compGrapplerRope extends Gameplay.GrapplerRope; var() Material ropeGlowMaterial; simulated function Material GetOverlayMaterial(int Index) { log("rope texuter overlay: " $ ropeGlowMaterial); return ropeGlowMaterial; } Dclass compPlayerController extends Engine.PlayerController; [<+prope texuter overlay: 9V \vclass compPlayerCharacterController extends Gameplay.PlayerCharacterController; var config bool bStartFirstPerson; 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); } function ClientRestart(Pawn aPawn, Name currentState) { bJustRespawned = true; Log("Parent ClientRestart() called for "$self$" and pawn "$aPawn); super.ClientRestart(aPawn, currentState); if(!bStartFirstPerson) { ServerToggleBehindView(); ToggleBehindView(); } updateCasts(); } YKg 6^I2e1;RؖjRؖ{ +..\aumodv3\Classes\compPlayerController.uc' F JD-pSpectating >pSpectate w*psending kick vote:  Q none voteReplicationInfo! vclass compPlayerCharacterController extends Gameplay.PlayerCharacterController; var config bool bStartFirstPerson; 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); } //Set to 3rd person view when the player spawns. function ClientRestart(Pawn aPawn, Name currentState) { bJustRespawned = true; Log("Parent ClientRestart() called for "$self$" and pawn "$aPawn); super.ClientRestart(aPawn, currentState); //Switch to behindview. if(!bStartFirstPerson) { //bBehindView = true; ServerToggleBehindView(); ToggleBehindView(); } updateCasts(); } _(C3ServerRestartPlayerInVehicle(-, `dJ]06btޙ+OU;RؖjRؖy{ 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 bStartFirstPerson = True 4..\aumodv3\Classes\compPlayerCharacterController.ucWF// such as class compGrapplerRope extends Gameplay.GrapplerRope; var() Material ropeGlowMaterial; simulated function Material GetOverlayMaterial(int Index) { log("rope texuter overlay: " $ ropeGlowMaterial); return ropeGlowMaterial; } a7"y-'pppParent ClientRestart() called for 9V and pawn 9V.q-';HF 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); } ^class compDamageTypeChaingun extends EquipmentClasses.ProjectileDamageTypeChaingun; Dclass compPlayerController extends Engine.PlayerController; w\class compPod extends VehicleClasses.VehiclePod; var () float Energy; var () float EnergyMax; var () float EnergyRegenPerSec; 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; } function bool aimAdjustViewRotation() { return true; } simulated event updateCameraRotation(float deltaSeconds) { local float maxRotationDelta; local rotator requiredRotationDelta; local rotator actualrotationDelta; local rotator rotationNormal; local rotator currentCameraRotationNormal; rotationNormal = rotation; if (rotationNormal.Pitch > 16384) rotationNormal.Yaw += 32768; rotationNormal = Normalize(rotationNormal); if (rotationNormal.Yaw < 0) rotationNormal.Yaw += 65536; if (rotationNormal.Pitch < 0) rotationNormal.Pitch += 65536; currentCameraRotationNormal = Normalize(currentCameraRotation); if (currentCameraRotationNormal.Yaw < 0) currentCameraRotationNormal.Yaw += 65536; if (currentCameraRotationNormal.Pitch < 0) currentCameraRotationNormal.Pitch += 65536; maxRotationDelta = deltaSeconds * 70000; requiredRotationDelta = rotationNormal - currentCameraRotationNormal; if (requiredRotationDelta.Pitch > 32768) requiredRotationDelta.Pitch -= 65536; else if (requiredRotationDelta.Pitch < -32768) requiredRotationDelta.Pitch += 65536; if (requiredRotationDelta.Yaw > 32768) requiredRotationDelta.Yaw -= 65536; else if (requiredRotationDelta.Yaw < -32768) requiredRotationDelta.Yaw += 65536; if (requiredRotationDelta.Yaw < 0) actualrotationDelta.Yaw = max(-maxRotationDelta, requiredRotationDelta.Yaw); else actualrotationDelta.Yaw = min(maxRotationDelta, requiredRotationDelta.Yaw); if (requiredRotationDelta.Pitch < 0) actualrotationDelta.Pitch = max(-maxRotationDelta, requiredRotationDelta.Pitch); else actualrotationDelta.Pitch = min(maxRotationDelta, requiredRotationDelta.Pitch); currentCameraRotation.Pitch += actualrotationDelta.Pitch; currentCameraRotation.Yaw += actualrotationDelta.Yaw; } simulated event collisionDamage(float magnitude) { if (bCollisionDamageEnabled && magnitude >= minimumCollisionDamageMagnitude) { if (ROLE == ROLE_Authority) TakeDamage(collisionDamageMagnitudeScale * magnitude, self, Location, vect(0,0,0), class'DamageType'); } } jkim2r cBr*p9W's armor class is none'_r (a' 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.timeSeconds(DynamicLoadObject("aumodv3.compGrappler", class'Class')); c.team().combatRoleData[0].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv3.compArmorLight", class'class')).default.AllowedWeapons; c.team().combatRoleData[1].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv3.compArmorMedium", class'class')).default.AllowedWeapons; c.team().combatRoleData[2].role.default.armorClass.default.AllowedWeapons = class(DynamicLoadObject("aumodv3.compArmorHeavy", class'class')).default.AllowedWeapons; } 4 J19?%.4&5= ~@dH2=@441o|\7+ׇii|\7+ׇii|\7+ׇiiKԛ_rKԛYKԛKԛKԛG6G6Kԛ ?u ?u ?uKԛVc^Vc^Vc^Vc^KԛKԛ1111T T T T )+)+)+)+AEMDLK;RؖjRؖ{ ..\aumodv3\Classes\aumod.ucBE  Tclass compProjectileChaingun extends EquipmentClasses.ProjectileChaingun; Zclass 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; } G2cBr*p9W's armor class is none'_r (a' fclass auBladeProjectileDamageType extends EquipmentClasses.ProjectileDamageTypeDefault; Oclass compTankMortar extends EquipmentClasses.WeaponVehicleTank; Oclass compTankRound extends EquipmentClasses.ProjectileMortarTank; fff ehfegeek*eMezeSejetevy\yYe_e\eVe8e[e|eaeRehenpJeZexentreVf&oeMebp@e\eEeepAece^iueReMeypJeZexvAeZo|oljIk}f}pdvZeDjaeWkePe[epeSnkeHeRe|jbeWeNfjsleYeAe]iweBmLjeHtEedtKmGeIeUeyeJe@j?eCe_jj6eajHeGe`exeKn]ebv@eUjhj7phj2vtjCemjeiZfvwjY|debj^pNycp[iqv}vkkvPxgjFvkxsvqy`vQvtpke[n^jgx{jjojuEzfn_jdyDeeeieXxstbye{x9v:jGec|\Aj=j<eFjGe^yCeTeLeseXe]vOegee~e@CoL`rnk`rBIaFqgaroEbrpcbFVAcrm_c9T|c9rYd .wdBfUe_l{j@VXk?l vklzVlzulXTm?xqmrNnyvknNxHodDeoBVDpRncp-VQt9pptLR'MuMi_UoHNmfN~SOwpNb gPK'GNzRNypNuNbWmaiJ Ug uEccdajGIcddFG~`drrD{HasdisSMajyGUvd2Q4gB1Q4]i1OFwQ4_UzQ4^t}Q4^RsQ4eKp@`UsYgrgAYC`Zsegx=t_/Q4uS Q4EHGM T LQ4A=l+Q4}m wj H 62g HNO4ELO4N]Q-Q4]_^O4[|-<RWZmiZ`GbQ4MfKpsbFwcbO4MZbC[gJM B-O4]Ob7Ql O4E}/O4uB^Q4[wQ4N]RC`z~{\2~ylwsO4eKVl`{o3Xp`KGhh|NP1O4]^2O4g{wO4_bpbAzO4^c^oAmfpQ4EV}O4^[fayO4A=Z[[dC vE6y`oQ4kL!Q4qw#Q4L h#2}tq+O4}P`MQQ4fjQ4fP