1
AUTHORS
1
AUTHORS
@@ -69,6 +69,7 @@ Also thanks to:
|
|||||||
* Tristan Mühlbacher (MicroBit)
|
* Tristan Mühlbacher (MicroBit)
|
||||||
* Vladimir Komarov (VrKomarov)
|
* Vladimir Komarov (VrKomarov)
|
||||||
* Wuschel
|
* Wuschel
|
||||||
|
* Ian T. Jacobsen (Smilex)
|
||||||
|
|
||||||
Using Simple DirectMedia Layer distributed under
|
Using Simple DirectMedia Layer distributed under
|
||||||
the terms of the zlib license.
|
the terms of the zlib license.
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ NEW:
|
|||||||
Added skirmish mode to RA and D2k to complement TD's skirmish mode.
|
Added skirmish mode to RA and D2k to complement TD's skirmish mode.
|
||||||
Added an Extras submenu for miscellaneous game extras.
|
Added an Extras submenu for miscellaneous game extras.
|
||||||
Engineers can now regain control over husks.
|
Engineers can now regain control over husks.
|
||||||
|
A player's units, and allied units, now move out of the way when blocking production facilities.
|
||||||
Dune 2000:
|
Dune 2000:
|
||||||
Added the Atreides grenadier from the 1.06 patch.
|
Added the Atreides grenadier from the 1.06 patch.
|
||||||
Added randomized tiles for Sand and Rock terrain.
|
Added randomized tiles for Sand and Rock terrain.
|
||||||
|
|||||||
@@ -183,9 +183,9 @@ namespace OpenRA.Mods.RA
|
|||||||
public void OnNotifyBlockingMove(Actor self, Actor blocking)
|
public void OnNotifyBlockingMove(Actor self, Actor blocking)
|
||||||
{
|
{
|
||||||
// I'm blocking someone else from moving to my location:
|
// I'm blocking someone else from moving to my location:
|
||||||
Activity act = self.GetCurrentActivity();
|
var act = self.GetCurrentActivity();
|
||||||
// If I'm just waiting around then get out of the way:
|
// If I'm just waiting around then get out of the way:
|
||||||
if (act == null || act.GetType() == typeof(Wait))
|
if (act is Wait)
|
||||||
{
|
{
|
||||||
self.CancelActivity();
|
self.CancelActivity();
|
||||||
var mobile = self.Trait<Mobile>();
|
var mobile = self.Trait<Mobile>();
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ namespace OpenRA.Mods.RA.Move
|
|||||||
public int GetInitialFacing() { return InitialFacing; }
|
public int GetInitialFacing() { return InitialFacing; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Mobile : IIssueOrder, IResolveOrder, IOrderVoice, IPositionable, IMove, IFacing, ISync, INotifyAddedToWorld, INotifyRemovedFromWorld
|
public class Mobile : IIssueOrder, IResolveOrder, IOrderVoice, IPositionable, IMove, IFacing, ISync, INotifyAddedToWorld, INotifyRemovedFromWorld, INotifyBlockingMove
|
||||||
{
|
{
|
||||||
public readonly Actor self;
|
public readonly Actor self;
|
||||||
public readonly MobileInfo Info;
|
public readonly MobileInfo Info;
|
||||||
@@ -542,5 +542,11 @@ namespace OpenRA.Mods.RA.Move
|
|||||||
public Activity MoveWithinRange(Target target, WRange range) { return new Move(target, range); }
|
public Activity MoveWithinRange(Target target, WRange range) { return new Move(target, range); }
|
||||||
public Activity MoveFollow(Actor self, Target target, WRange range) { return new Follow(self, target, range); }
|
public Activity MoveFollow(Actor self, Target target, WRange range) { return new Follow(self, target, range); }
|
||||||
public Activity MoveTo(Func<List<CPos>> pathFunc) { return new Move(pathFunc); }
|
public Activity MoveTo(Func<List<CPos>> pathFunc) { return new Move(pathFunc); }
|
||||||
}
|
|
||||||
|
public void OnNotifyBlockingMove(Actor self, Actor blocking)
|
||||||
|
{
|
||||||
|
if (self.IsIdle && self.AppearsFriendlyTo(blocking))
|
||||||
|
Nudge(self, blocking, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,12 +175,8 @@ namespace OpenRA.Mods.RA.Move
|
|||||||
{
|
{
|
||||||
foreach (var blocker in self.World.ActorMap.GetUnitsAt(nextCell))
|
foreach (var blocker in self.World.ActorMap.GetUnitsAt(nextCell))
|
||||||
{
|
{
|
||||||
Log.Write("debug", "NotifyBlocker #{0} nudges #{1} at {2} from {3}",
|
|
||||||
self.ActorID, blocker.ActorID, nextCell, self.Location);
|
|
||||||
|
|
||||||
// Notify the blocker that he's blocking our move:
|
// Notify the blocker that he's blocking our move:
|
||||||
var moveBlocked = blocker.TraitOrDefault<INotifyBlockingMove>();
|
foreach (var moveBlocked in blocker.TraitsImplementing<INotifyBlockingMove>())
|
||||||
if (moveBlocked != null)
|
|
||||||
moveBlocked.OnNotifyBlockingMove(blocker, self);
|
moveBlocked.OnNotifyBlockingMove(blocker, self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,13 @@ namespace OpenRA.Mods.RA
|
|||||||
{
|
{
|
||||||
var mobileInfo = producee.Traits.GetOrDefault<MobileInfo>();
|
var mobileInfo = producee.Traits.GetOrDefault<MobileInfo>();
|
||||||
|
|
||||||
|
foreach (var blocker in self.World.ActorMap.GetUnitsAt(self.Location + s.ExitCell))
|
||||||
|
{
|
||||||
|
// Notify the blocker that he's blocking our move:
|
||||||
|
foreach (var moveBlocked in blocker.TraitsImplementing<INotifyBlockingMove>())
|
||||||
|
moveBlocked.OnNotifyBlockingMove(blocker, self);
|
||||||
|
}
|
||||||
|
|
||||||
return mobileInfo == null ||
|
return mobileInfo == null ||
|
||||||
mobileInfo.CanEnterCell(self.World, self, self.Location + s.ExitCell, self, true, true);
|
mobileInfo.CanEnterCell(self.World, self, self.Location + s.ExitCell, self, true, true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user