mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-28 07:13:03 +00:00
TriggerHelper SetUnitStance helper function for a very frequent triggerscript order.
This was SVN commit r21458.
This commit is contained in:
@@ -224,7 +224,7 @@ Trigger.prototype.SpawnInitialCCDefenders = function(gaiaEnts)
|
||||
|
||||
for (let ccDefender of ccDefenders)
|
||||
for (let ent of TriggerHelper.SpawnUnits(gaiaEnt, pickRandom(ccDefender.templates), ccDefender.count, gaulPlayer))
|
||||
Engine.QueryInterface(ent, IID_UnitAI).SwitchToStance("defensive");
|
||||
TriggerHelper.SetUnitStance(ent, "defensive");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -281,9 +281,7 @@ Trigger.prototype.StartCelticRitual = function(gaiaEnts)
|
||||
if (randBool(ritualProbability))
|
||||
this.ritualEnts.add(ent);
|
||||
|
||||
let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI);
|
||||
if (cmpUnitAI)
|
||||
cmpUnitAI.SwitchToStance("defensive");
|
||||
TriggerHelper.SetUnitStance(ent, "defensive");
|
||||
}
|
||||
|
||||
this.DoRepeatedly(5 * 1000, "UpdateCelticRitual", {});
|
||||
|
||||
@@ -10,7 +10,7 @@ Trigger.prototype.InitElephantine_DefenderStance = function()
|
||||
{
|
||||
let cmpIdentity = Engine.QueryInterface(ent, IID_Identity);
|
||||
if (cmpIdentity && cmpIdentity.HasClass("Soldier"))
|
||||
Engine.QueryInterface(ent, IID_UnitAI).SwitchToStance("defensive");
|
||||
TriggerHelper.SetUnitStance(ent, "defensive");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -21,6 +21,13 @@ TriggerHelper.GetOwner = function(ent)
|
||||
return -1;
|
||||
};
|
||||
|
||||
TriggerHelper.SetUnitStance = function(ent, stance)
|
||||
{
|
||||
let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI);
|
||||
if (cmpUnitAI)
|
||||
cmpUnitAI.SwitchToStance(stance);
|
||||
};
|
||||
|
||||
/**
|
||||
* Can be used to "force" a building/unit to spawn a group of entities.
|
||||
*
|
||||
@@ -91,8 +98,8 @@ TriggerHelper.SpawnUnits = function(source, template, count, owner)
|
||||
TriggerHelper.SpawnGarrisonedUnits = function(entity, template, count, owner)
|
||||
{
|
||||
let entities = [];
|
||||
let cmpGarrisonHolder = Engine.QueryInterface(entity, IID_GarrisonHolder);
|
||||
|
||||
let cmpGarrisonHolder = Engine.QueryInterface(entity, IID_GarrisonHolder);
|
||||
if (!cmpGarrisonHolder)
|
||||
{
|
||||
error("tried to create garrisoned entities inside a non-garrisonholder");
|
||||
@@ -105,13 +112,17 @@ TriggerHelper.SpawnGarrisonedUnits = function(entity, template, count, owner)
|
||||
for (let i = 0; i < count; ++i)
|
||||
{
|
||||
let ent = Engine.AddEntity(template);
|
||||
|
||||
let cmpOwnership = Engine.QueryInterface(ent, IID_Ownership);
|
||||
if (cmpOwnership)
|
||||
cmpOwnership.SetOwner(owner);
|
||||
|
||||
if (cmpGarrisonHolder.PerformGarrison(ent))
|
||||
{
|
||||
if (Engine.QueryInterface(ent, IID_UnitAI))
|
||||
Engine.QueryInterface(ent, IID_UnitAI).Autogarrison(entity);
|
||||
let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI);
|
||||
if (cmpUnitAI)
|
||||
cmpUnitAI.Autogarrison(entity);
|
||||
|
||||
entities.push(ent);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user