mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-17 22:03:56 -07:00
Prevent out of scope usage of cmpTrigger, which would result in an OOS on rejoin, refs #4310.
This was SVN commit r18912.
This commit is contained in:
parent
554032e507
commit
d124b32f6a
3 changed files with 42 additions and 36 deletions
|
|
@ -195,9 +195,11 @@ Trigger.prototype.DefeatPlayerOnceCCIsDestroyed = function(data)
|
|||
TriggerHelper.DefeatPlayer(data.from);
|
||||
};
|
||||
|
||||
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||
cmpTrigger.playerCivicCenter = {};
|
||||
cmpTrigger.DoAfterDelay(0, "InitGame", {});
|
||||
cmpTrigger.DoAfterDelay(1000, "InitializeEnemyWaves", {});
|
||||
|
||||
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "DefeatPlayerOnceCCIsDestroyed", { "enabled": true });
|
||||
{
|
||||
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||
cmpTrigger.playerCivicCenter = {};
|
||||
cmpTrigger.DoAfterDelay(0, "InitGame", {});
|
||||
cmpTrigger.DoAfterDelay(1000, "InitializeEnemyWaves", {});
|
||||
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "DefeatPlayerOnceCCIsDestroyed", { "enabled": true });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,30 +105,34 @@ Trigger.prototype.RangeAction = function(data)
|
|||
warn(uneval(data));
|
||||
};
|
||||
|
||||
// Activate all possible triggers
|
||||
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||
{
|
||||
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||
|
||||
var data = {"enabled": true};
|
||||
cmpTrigger.RegisterTrigger("OnStructureBuilt", "StructureBuiltAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnConstructionStarted", "ConstructionStartedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnTrainingFinished", "TrainingFinishedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnTrainingQueued", "TrainingQueuedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnResearchFinished", "ResearchFinishedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnResearchQueued", "ResearchQueuedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "OwnershipChangedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnPlayerCommand", "PlayerCommandAction", data);
|
||||
// Activate all possible triggers
|
||||
let data = { "enabled": true };
|
||||
cmpTrigger.RegisterTrigger("OnStructureBuilt", "StructureBuiltAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnConstructionStarted", "ConstructionStartedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnTrainingFinished", "TrainingFinishedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnTrainingQueued", "TrainingQueuedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnResearchFinished", "ResearchFinishedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnResearchQueued", "ResearchQueuedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "OwnershipChangedAction", data);
|
||||
cmpTrigger.RegisterTrigger("OnPlayerCommand", "PlayerCommandAction", data);
|
||||
|
||||
data.delay = 10000; // after 10 seconds
|
||||
data.interval = 5000; // every 5 seconds
|
||||
cmpTrigger.numberOfTimerTrigger = 0;
|
||||
cmpTrigger.maxNumberOfTimerTrigger = 3; // execute it 3 times maximum
|
||||
cmpTrigger.RegisterTrigger("OnInterval", "IntervalAction", data);
|
||||
var entities = cmpTrigger.GetTriggerPoints("A");
|
||||
data = {
|
||||
"entities": entities, // central points to calculate the range circles
|
||||
"players": [1], // only count entities of player 1
|
||||
"maxRange": 40,
|
||||
"requiredComponent": IID_UnitAI, // only count units in range
|
||||
"enabled": true,
|
||||
};
|
||||
cmpTrigger.RegisterTrigger("OnRange", "RangeAction", data);
|
||||
cmpTrigger.numberOfTimerTrigger = 0;
|
||||
cmpTrigger.maxNumberOfTimerTrigger = 3; // execute it 3 times maximum
|
||||
|
||||
cmpTrigger.RegisterTrigger("OnInterval", "IntervalAction", {
|
||||
"enabled": true,
|
||||
"delay": 10 * 1000,
|
||||
"interval": 5 * 1000,
|
||||
});
|
||||
|
||||
cmpTrigger.RegisterTrigger("OnRange", "RangeAction", {
|
||||
"entities": cmpTrigger.GetTriggerPoints("A"), // central points to calculate the range circles
|
||||
"players": [1], // only count entities of player 1
|
||||
"maxRange": 40,
|
||||
"requiredComponent": IID_UnitAI, // only count units in range
|
||||
"enabled": true,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@ Trigger.prototype.SpawnAndAttack = function()
|
|||
this.DoAfterDelay(this.attackTime, "SpawnAndAttack", {});
|
||||
};
|
||||
|
||||
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||
|
||||
cmpTrigger.attackSize = 1; // attack with 1 soldier
|
||||
cmpTrigger.attackTime = 60*1000; // attack in 1 minute
|
||||
cmpTrigger.DoAfterDelay(cmpTrigger.attackTime, "SpawnAndAttack", {});
|
||||
|
||||
{
|
||||
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||
cmpTrigger.attackSize = 1; // attack with 1 soldier
|
||||
cmpTrigger.attackTime = 60 * 1000; // attack in 1 minute
|
||||
cmpTrigger.DoAfterDelay(cmpTrigger.attackTime, "SpawnAndAttack", {});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue