Guest User

Untitled

a guest
Nov 18th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  *  Ship
  3.  *
  4.  *  Creation date: 03/09/2012 13:31
  5.  *  Copyright 2012, Cameron
  6.  */
  7. class Ship extends Pawn dependsOn (ShipStats)
  8.     placeable;
  9.  
  10. //Stats of the ship
  11. var() Stats totalStats;
  12.  
  13. //Parts of the ship
  14. var() ShipChassis chassis;
  15. var() ShipWings wings;
  16. var() ShipCore core;
  17.  
  18. //List of weapons that the ship has
  19. var array<ShipWeapon> weapons;
  20.  
  21. //List of engines that the ship has
  22. var array<ShipEngine> engines;
  23.  
  24. //List of abilities that the ship has
  25. var array<int> abilities;
  26.  
  27. function GetTotalStats(){
  28.     local ShipWeapon w;
  29.     local ShipEngine e;
  30.     totalStats = chassis.partStats;
  31.  
  32.     AddStats(wings.partStats);
  33.     AddStats(core.partStats);
  34.  
  35.     foreach engines(e){
  36.         // engines do not stack.  Eventually, replace Fraction with Socket Efficiency
  37.         AddStatsMultiplier(e.partStats, float(1 / engines.Length));
  38.     }
  39.  
  40.     foreach weapons(w){
  41.         AddStats(w.stats);
  42.     }
  43. }
  44.  
  45. function AddStatsMultiplier(Stats adding, float multiplier){
  46.     totalStats.hp += adding.hp * multiplier;
  47.     totalStats.pwr += adding.pwr * multiplier;
  48.     totalStats.wght += adding.wght * multiplier;
  49.     totalStats.hbox += adding.hbox * multiplier;
  50.     totalStats.ovr += adding.ovr * multiplier;
  51.     totalStats.dmg[0] += adding.dmg[0] * multiplier;
  52.     totalStats.dmg[1] += adding.dmg[1] * multiplier;
  53.     totalStats.aspd += adding.aspd * multiplier;
  54.     totalStats.heat += adding.heat * multiplier;
  55.     totalStats.ctrl += adding.ctrl * multiplier;
  56.     totalStats.spd += adding.spd * multiplier;
  57. }
  58.  
  59. function AddStats(Stats adding){
  60.     AddStatsMultiplier(adding, 1.0f);
  61. }
  62.  
  63. function ReplacePart(ReplaceShipPart MyAction){
  64.     chassis.SetSkeletalMesh(MyAction.shipChassis.SkeletalMeshComponent.SkeletalMesh);
  65.     chassis.partStats = MyAction.shipChassis.partStats;
  66.     chassis.weapons = MyAction.shipChassis.weapons;
  67.     chassis.abilities = MyAction.shipChassis.abilities;
  68.     //Recalculate Stats
  69.     GetTotalStats();
  70. }
  71.  
  72. defaultproperties
  73. {
  74.     Begin Object Class=ShipChassis Name=DefaultChassis
  75.         SkeletalMesh=SkeletalMesh'EditorMeshes.SkeletalMesh.DefaultSkeletalMesh'
  76.         bAllowApproximateOcclusion=TRUE
  77.         bForceDirectLightMap=TRUE
  78.         bUsePrecomputedShadows=TRUE
  79.         partStats = (hp=10)
  80.     End Object
  81.     Begin Object Class=ShipWings Name=DefaultWings
  82.         SkeletalMesh=SkeletalMesh'EditorMeshes.SkeletalMesh.DefaultSkeletalMesh'
  83.         bAllowApproximateOcclusion=TRUE
  84.         bForceDirectLightMap=TRUE
  85.         bUsePrecomputedShadows=TRUE
  86.         Translation = (X=300.0,Y=0.0,Z=0.0)
  87.         partStats = (hp=10)
  88.     End Object
  89.     Begin Object Class=ShipCore Name=DefaultCore
  90.         SkeletalMesh=SkeletalMesh'EditorMeshes.SkeletalMesh.DefaultSkeletalMesh'
  91.         bAllowApproximateOcclusion=TRUE
  92.         bForceDirectLightMap=TRUE
  93.         bUsePrecomputedShadows=TRUE
  94.         Translation = (X=-300.0,Y=0.0,Z=0.0)
  95.         partStats = (hp=10)
  96.     End Object
  97.     CollisionComponent=DefaultChassis
  98.     chassis = DefaultChassis
  99.     wings = DefaultWings
  100.     core = DefaultCore
  101.     Components.Add(DefaultChassis)
  102.     Components.Add(DefaultWings)
  103.     Components.Add(DefaultCore)
  104. }
Add Comment
Please, Sign In to add comment