more
This commit is contained in:
@@ -49,7 +49,7 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
var distance = (target.CenterLocation - loc).Length*1/24f;
|
var distance = (target.CenterLocation - loc).Length*1/24f;
|
||||||
var rawDamage = weapon.Damage * (float)Math.Exp(-distance / warhead.Spread);
|
var rawDamage = weapon.Damage * (float)Math.Exp(-distance / warhead.Spread);
|
||||||
var multiplier = warhead.EffectivenessAgainst(target.LegacyInfo.Armor);
|
var multiplier = warhead.EffectivenessAgainst(target.Info.Traits.WithInterface<OwnedActorInfo>().First().Armor);
|
||||||
return rawDamage * multiplier;
|
return rawDamage * multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ namespace OpenRa.Game
|
|||||||
var warhead = Rules.WarheadInfo[weapon.Warhead];
|
var warhead = Rules.WarheadInfo[weapon.Warhead];
|
||||||
var unit = target.traits.GetOrDefault<Unit>();
|
var unit = target.traits.GetOrDefault<Unit>();
|
||||||
|
|
||||||
if (warhead.EffectivenessAgainst(target.LegacyInfo.Armor) <= 0)
|
if (warhead.EffectivenessAgainst(target.Info.Traits.WithInterface<OwnedActorInfo>().First().Armor) <= 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (target.traits.Contains<Submarine>())
|
if (target.traits.Contains<Submarine>())
|
||||||
@@ -76,10 +76,11 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
public static bool HasAnyValidWeapons(Actor self, Actor target)
|
public static bool HasAnyValidWeapons(Actor self, Actor target)
|
||||||
{
|
{
|
||||||
if (self.LegacyInfo.Primary != null &&
|
var info = self.Info.Traits.WithInterface<AttackBaseInfo>().First();
|
||||||
WeaponValidForTarget(Rules.WeaponInfo[self.LegacyInfo.Primary], target)) return true;
|
if (info.PrimaryWeapon != null &&
|
||||||
if (self.LegacyInfo.Secondary != null &&
|
WeaponValidForTarget(Rules.WeaponInfo[info.PrimaryWeapon], target)) return true;
|
||||||
WeaponValidForTarget(Rules.WeaponInfo[self.LegacyInfo.Secondary], target)) return true;
|
if (info.SecondaryWeapon != null &&
|
||||||
|
WeaponValidForTarget(Rules.WeaponInfo[info.SecondaryWeapon], target)) return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,9 @@ namespace OpenRa.Game.Traits.Activities
|
|||||||
// if we're a thing that can turn, turn to the
|
// if we're a thing that can turn, turn to the
|
||||||
// right facing for the unload animation
|
// right facing for the unload animation
|
||||||
var unit = self.traits.GetOrDefault<Unit>();
|
var unit = self.traits.GetOrDefault<Unit>();
|
||||||
if (unit != null && unit.Facing != self.LegacyInfo.UnloadFacing)
|
var unloadFacing = self.Info.Traits.Get<CargoInfo>().UnloadFacing;
|
||||||
return new Turn(self.LegacyInfo.UnloadFacing) { NextActivity = this };
|
if (unit != null && unit.Facing != unloadFacing)
|
||||||
|
return new Turn(unloadFacing) { NextActivity = this };
|
||||||
|
|
||||||
// todo: handle the BS of open/close sequences, which are inconsistent,
|
// todo: handle the BS of open/close sequences, which are inconsistent,
|
||||||
// for reasons that probably make good sense to the westwood guys.
|
// for reasons that probably make good sense to the westwood guys.
|
||||||
|
|||||||
Reference in New Issue
Block a user