Merge pull request #12863 from abcdefg30/ignoreTargetUpgrades

Make AutoTargetIgnore upgradeable
This commit is contained in:
Paul Chote
2017-03-03 21:27:38 +00:00
committed by GitHub
4 changed files with 28 additions and 24 deletions

View File

@@ -259,12 +259,19 @@ namespace OpenRA.Mods.Common.Traits
} }
[Desc("Will not get automatically targeted by enemy (like walls)")] [Desc("Will not get automatically targeted by enemy (like walls)")]
class AutoTargetIgnoreInfo : TraitInfo<AutoTargetIgnore> { } class AutoTargetIgnoreInfo : ConditionalTraitInfo
class AutoTargetIgnore : IPreventsAutoTarget
{ {
public override object Create(ActorInitializer init) { return new AutoTargetIgnore(this); }
}
class AutoTargetIgnore : ConditionalTrait<AutoTargetIgnoreInfo>, IPreventsAutoTarget
{
public AutoTargetIgnore(AutoTargetIgnoreInfo info)
: base(info) { }
public bool PreventsAutoTarget(Actor self, Actor attacker) public bool PreventsAutoTarget(Actor self, Actor attacker)
{ {
return true; return !IsTraitDisabled;
} }
} }

View File

@@ -219,7 +219,7 @@ Actors:
Location: 69,49 Location: 69,49
Owner: Greece Owner: Greece
Facing: 32 Facing: 32
Radar: dome.ignore Radar: dome
Location: 70,45 Location: 70,45
Owner: Greece Owner: Greece
Actor57: fact Actor57: fact

View File

@@ -82,13 +82,11 @@ APC:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
DOME.IGNORE: DOME:
Inherits: DOME ExternalCondition@lua:
RenderSprites: Condition: captured
Image: DOME
AutoTargetIgnore: AutoTargetIgnore:
Buildable: RequiresCondition: !captured
Prerequisites: ~disabled
powerproxy.paratroopers: powerproxy.paratroopers:
ParatroopersPower: ParatroopersPower:

View File

@@ -206,14 +206,16 @@ WorldLoaded = function()
Trigger.OnDamaged(mcvtransport, Expand) Trigger.OnDamaged(mcvtransport, Expand)
Trigger.OnKilled(Radar, function() Trigger.OnKilled(Radar, function()
if not player.IsObjectiveCompleted(CaptureObjective) then
player.MarkFailedObjective(CaptureObjective) player.MarkFailedObjective(CaptureObjective)
end)
Trigger.OnCapture(Radar, function(self, captor)
if captor.Owner ~= player then
return
end end
if HoldObjective then
player.MarkFailedObjective(HoldObjective)
end
end)
Trigger.OnCapture(Radar, function()
HoldObjective = player.AddPrimaryObjective("Defend the Radar Dome.") HoldObjective = player.AddPrimaryObjective("Defend the Radar Dome.")
player.MarkCompletedObjective(CaptureObjective) player.MarkCompletedObjective(CaptureObjective)
@@ -222,15 +224,12 @@ WorldLoaded = function()
ExpansionCheck = true ExpansionCheck = true
end end
Reinforcements.Reinforce(Greece, ArmorReinfGreece, AlliedCrossroadsToRadarPath , 0, function(soldier) Reinforcements.Reinforce(Greece, ArmorReinfGreece, AlliedCrossroadsToRadarPath , 0, IdleHunt)
soldier.Hunt()
end)
Trigger.AfterDelay(1, function() Radar.GrantCondition("captured")
local newRadar = Actor.Create("dome", true, { Owner = player, Location = Radar.Location }) Trigger.ClearAll(Radar)
newRadar.Health = Radar.Health Trigger.AfterDelay(0, function()
Radar.Destroy() Trigger.OnRemovedFromWorld(Radar, function()
Trigger.OnKilled(newRadar, function()
player.MarkFailedObjective(HoldObjective) player.MarkFailedObjective(HoldObjective)
end) end)
end) end)