Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Ship
- *
- * Creation date: 03/09/2012 13:31
- * Copyright 2012, Cameron
- */
- class Ship extends Pawn dependsOn (ShipStats)
- placeable;
- //Stats of the ship
- var() Stats totalStats;
- //Parts of the ship
- var() ShipChassis chassis;
- var() ShipWings wings;
- var() ShipCore core;
- //List of weapons that the ship has
- var array<ShipWeapon> weapons;
- //List of engines that the ship has
- var array<ShipEngine> engines;
- //List of abilities that the ship has
- var array<int> abilities;
- function GetTotalStats(){
- local ShipWeapon w;
- local ShipEngine e;
- totalStats = chassis.partStats;
- AddStats(wings.partStats);
- AddStats(core.partStats);
- foreach engines(e){
- // engines do not stack. Eventually, replace Fraction with Socket Efficiency
- AddStatsMultiplier(e.partStats, float(1 / engines.Length));
- }
- foreach weapons(w){
- AddStats(w.stats);
- }
- }
- function AddStatsMultiplier(Stats adding, float multiplier){
- totalStats.hp += adding.hp * multiplier;
- totalStats.pwr += adding.pwr * multiplier;
- totalStats.wght += adding.wght * multiplier;
- totalStats.hbox += adding.hbox * multiplier;
- totalStats.ovr += adding.ovr * multiplier;
- totalStats.dmg[0] += adding.dmg[0] * multiplier;
- totalStats.dmg[1] += adding.dmg[1] * multiplier;
- totalStats.aspd += adding.aspd * multiplier;
- totalStats.heat += adding.heat * multiplier;
- totalStats.ctrl += adding.ctrl * multiplier;
- totalStats.spd += adding.spd * multiplier;
- }
- function AddStats(Stats adding){
- AddStatsMultiplier(adding, 1.0f);
- }
- function ReplacePart(ReplaceShipPart MyAction){
- chassis.SetSkeletalMesh(MyAction.shipChassis.SkeletalMeshComponent.SkeletalMesh);
- chassis.partStats = MyAction.shipChassis.partStats;
- chassis.weapons = MyAction.shipChassis.weapons;
- chassis.abilities = MyAction.shipChassis.abilities;
- //Recalculate Stats
- GetTotalStats();
- }
- defaultproperties
- {
- Begin Object Class=ShipChassis Name=DefaultChassis
- SkeletalMesh=SkeletalMesh'EditorMeshes.SkeletalMesh.DefaultSkeletalMesh'
- bAllowApproximateOcclusion=TRUE
- bForceDirectLightMap=TRUE
- bUsePrecomputedShadows=TRUE
- partStats = (hp=10)
- End Object
- Begin Object Class=ShipWings Name=DefaultWings
- SkeletalMesh=SkeletalMesh'EditorMeshes.SkeletalMesh.DefaultSkeletalMesh'
- bAllowApproximateOcclusion=TRUE
- bForceDirectLightMap=TRUE
- bUsePrecomputedShadows=TRUE
- Translation = (X=300.0,Y=0.0,Z=0.0)
- partStats = (hp=10)
- End Object
- Begin Object Class=ShipCore Name=DefaultCore
- SkeletalMesh=SkeletalMesh'EditorMeshes.SkeletalMesh.DefaultSkeletalMesh'
- bAllowApproximateOcclusion=TRUE
- bForceDirectLightMap=TRUE
- bUsePrecomputedShadows=TRUE
- Translation = (X=-300.0,Y=0.0,Z=0.0)
- partStats = (hp=10)
- End Object
- CollisionComponent=DefaultChassis
- chassis = DefaultChassis
- wings = DefaultWings
- core = DefaultCore
- Components.Add(DefaultChassis)
- Components.Add(DefaultWings)
- Components.Add(DefaultCore)
- }
Add Comment
Please, Sign In to add comment