@@ -28,16 +28,19 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
class Explodes : INotifyKilled
|
class Explodes : INotifyKilled
|
||||||
{
|
{
|
||||||
readonly ExplodesInfo Info;
|
readonly ExplodesInfo explodesInfo;
|
||||||
|
|
||||||
public Explodes( ExplodesInfo info ) { Info = info; }
|
public Explodes(ExplodesInfo info) { explodesInfo = info; }
|
||||||
|
|
||||||
public void Killed(Actor self, AttackInfo e)
|
public void Killed(Actor self, AttackInfo e)
|
||||||
{
|
{
|
||||||
if (self.World.SharedRandom.Next(100) > Info.Chance)
|
if (!self.IsInWorld)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Info.InfDeath != null && e.Warhead != null && !Info.InfDeath.Contains(e.Warhead.InfDeath))
|
if (self.World.SharedRandom.Next(100) > explodesInfo.Chance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (explodesInfo.InfDeath != null && e.Warhead != null && !explodesInfo.InfDeath.Contains(e.Warhead.InfDeath))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var weapon = ChooseWeaponForExplosion(self);
|
var weapon = ChooseWeaponForExplosion(self);
|
||||||
@@ -48,7 +51,7 @@ namespace OpenRA.Mods.RA
|
|||||||
string ChooseWeaponForExplosion(Actor self)
|
string ChooseWeaponForExplosion(Actor self)
|
||||||
{
|
{
|
||||||
var shouldExplode = self.TraitsImplementing<IExplodeModifier>().All(a => a.ShouldExplode(self));
|
var shouldExplode = self.TraitsImplementing<IExplodeModifier>().All(a => a.ShouldExplode(self));
|
||||||
return shouldExplode ? Info.Weapon : Info.EmptyWeapon;
|
return shouldExplode ? explodesInfo.Weapon : explodesInfo.EmptyWeapon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user