FIX uses unit repair values with RepairsUnits trait, Buildings use right repair values, nuke unused GeneralInfo

This commit is contained in:
alzeih
2010-04-02 16:21:33 +13:00
parent c54d904e2b
commit dca052dbc8
8 changed files with 26 additions and 118 deletions

View File

@@ -36,11 +36,14 @@ namespace OpenRA.Traits.Activities
if (isCanceled) return NextActivity;
if (remainingTicks == 0)
{
var hostBuilding = self.World.FindUnits(self.CenterLocation, self.CenterLocation)
.FirstOrDefault(a => a.traits.Contains<RenderBuilding>());
var unitCost = self.Info.Traits.Get<BuildableInfo>().Cost;
var hp = self.Info.Traits.Get<OwnedActorInfo>().HP;
var costPerHp = (self.World.Defaults.URepairPercent * unitCost) / hp;
var hpToRepair = Math.Min(self.World.Defaults.URepairStep, hp - self.Health);
var costPerHp = (hostBuilding.Info.Traits.Get<RepairsUnitsInfo>().URepairPercent * unitCost) / hp;
var hpToRepair = Math.Min(hostBuilding.Info.Traits.Get<RepairsUnitsInfo>().URepairStep, hp - self.Health);
var cost = (int)Math.Ceiling(costPerHp * hpToRepair);
if (!self.Owner.TakeCash(cost))
{
@@ -52,8 +55,7 @@ namespace OpenRA.Traits.Activities
if (self.Health == hp)
return NextActivity;
var hostBuilding = self.World.FindUnits(self.CenterLocation, self.CenterLocation)
.FirstOrDefault(a => a.traits.Contains<RenderBuilding>());
if (hostBuilding != null)
hostBuilding.traits.Get<RenderBuilding>()

View File

@@ -125,8 +125,8 @@ namespace OpenRA.Traits
var csv = self.Info.Traits.GetOrDefault<CustomSellValueInfo>();
var buildingValue = csv != null ? csv.Value : self.Info.Traits.Get<BuildableInfo>().Cost;
var maxHP = self.Info.Traits.Get<BuildingInfo>().HP;
var costPerHp = (self.World.Defaults.URepairPercent * buildingValue) / maxHP;
var hpToRepair = Math.Min(self.World.Defaults.URepairStep, maxHP - self.Health);
var costPerHp = (self.World.Defaults.RepairPercent * buildingValue) / maxHP;
var hpToRepair = Math.Min(self.World.Defaults.RepairStep, maxHP - self.Health);
var cost = (int)Math.Ceiling(costPerHp * hpToRepair);
if (!self.Owner.TakeCash(cost))
{

View File

@@ -0,0 +1,14 @@
using System;
namespace OpenRA.Traits
{
public class RepairsUnitsInfo : StatelessTraitInfo<RepairsUnits>
{
public readonly float URepairPercent = 0.2f;
public readonly int URepairStep = 10;
}
public class RepairsUnits{}
}

View File

@@ -23,8 +23,7 @@ namespace OpenRA.Traits
public readonly float RepairPercent = 0.2f;
public readonly float RepairRate = 0.016f;
public readonly int RepairStep = 7;
public readonly float URepairPercent = 0.2f;
public readonly int URepairStep = 10;
/* Combat & Damage */
public readonly float TurboBoost = 1.5f;