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;
|
this.Captor = captor;
|
||||||
|
|
||||||
if (self.Owner != self.World.WorldActor.Owner)
|
if (self.Owner != self.World.WorldActor.Owner)
|
||||||
{
|
|
||||||
self.ChangeOwner(self.World.WorldActor.Owner);
|
self.ChangeOwner(self.World.WorldActor.Owner);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Tick(Actor self)
|
public void Tick(Actor self)
|
||||||
@@ -60,6 +58,7 @@ namespace OpenRA.Mods.RA
|
|||||||
self.World.AddFrameEndTask(w =>
|
self.World.AddFrameEndTask(w =>
|
||||||
{
|
{
|
||||||
self.ChangeOwner(Captor.Owner);
|
self.ChangeOwner(Captor.Owner);
|
||||||
|
ChangeCargoOwner(self, Captor.Owner);
|
||||||
|
|
||||||
foreach (var t in self.TraitsImplementing<INotifyCapture>())
|
foreach (var t in self.TraitsImplementing<INotifyCapture>())
|
||||||
t.OnCapture(self, Captor, self.Owner, Captor.Owner);
|
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