Change cargo ownership when capturing actors with cargo
This commit is contained in:
committed by
Chris Forbes
parent
e1907364e6
commit
37f91542a9
@@ -44,9 +44,7 @@ namespace OpenRA.Mods.RA
|
||||
this.Captor = captor;
|
||||
|
||||
if (self.Owner != self.World.WorldActor.Owner)
|
||||
{
|
||||
self.ChangeOwner(self.World.WorldActor.Owner);
|
||||
}
|
||||
}
|
||||
|
||||
public void Tick(Actor self)
|
||||
@@ -60,6 +58,7 @@ namespace OpenRA.Mods.RA
|
||||
self.World.AddFrameEndTask(w =>
|
||||
{
|
||||
self.ChangeOwner(Captor.Owner);
|
||||
ChangeCargoOwner(self, Captor.Owner);
|
||||
|
||||
foreach (var t in self.TraitsImplementing<INotifyCapture>())
|
||||
t.OnCapture(self, Captor, self.Owner, Captor.Owner);
|
||||
@@ -71,5 +70,15 @@ namespace OpenRA.Mods.RA
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void ChangeCargoOwner(Actor self, Player captor)
|
||||
{
|
||||
var cargo = self.TraitOrDefault<Cargo>();
|
||||
if (cargo == null)
|
||||
return;
|
||||
|
||||
foreach (var c in cargo.Passengers)
|
||||
c.Owner = captor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user