Have civilians come out of disturbed buildings
This commit is contained in:
@@ -505,7 +505,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
public object Create(ActorInitializer init) { return new Allies04TryRepairBuilding(this); }
|
||||
}
|
||||
|
||||
class Allies04TryRepairBuilding : INotifyDamage
|
||||
class Allies04TryRepairBuilding : INotifyDamageStateChanged
|
||||
{
|
||||
Allies04TryRepairBuildingInfo info;
|
||||
|
||||
@@ -514,7 +514,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
public void Damaged(Actor self, AttackInfo e)
|
||||
public void DamageStateChanged(Actor self, AttackInfo e)
|
||||
{
|
||||
if (self.HasTrait<RepairableBuilding>() && self.Owner.InternalName == info.Player && Game.IsHost
|
||||
&& e.DamageState > DamageState.Undamaged && e.PreviousDamageState == DamageState.Undamaged)
|
||||
|
||||
@@ -173,4 +173,40 @@ namespace OpenRA.Mods.RA.Missions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class Soviet01ClassicContainsActorsInfo : ITraitInfo
|
||||
{
|
||||
public readonly string[] Actors = { };
|
||||
|
||||
public object Create(ActorInitializer init) { return new Soviet01ClassicContainsActors(this); }
|
||||
}
|
||||
|
||||
class Soviet01ClassicContainsActors : INotifyDamage
|
||||
{
|
||||
bool spawned;
|
||||
Soviet01ClassicContainsActorsInfo info;
|
||||
|
||||
public Soviet01ClassicContainsActors(Soviet01ClassicContainsActorsInfo info)
|
||||
{
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
public void Damaged(Actor self, AttackInfo e)
|
||||
{
|
||||
if (spawned || self.IsDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (var actor in info.Actors)
|
||||
{
|
||||
var unit = self.World.CreateActor(actor, new TypeDictionary
|
||||
{
|
||||
new OwnerInit(self.Owner),
|
||||
new LocationInit(self.Location)
|
||||
});
|
||||
unit.Trait<Mobile>().Nudge(unit, unit, true);
|
||||
}
|
||||
spawned = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user