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)")]
class AutoTargetIgnoreInfo : TraitInfo<AutoTargetIgnore> { }
class AutoTargetIgnore : IPreventsAutoTarget
class AutoTargetIgnoreInfo : ConditionalTraitInfo
{
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)
{
return true;
return !IsTraitDisabled;
}
}

View File

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

View File

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

View File

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