Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/maps/scripts/CaptureTheRelic.js
Trigger.prototype.InitCaptureTheRelic = function() | Trigger.prototype.InitCaptureTheRelic = function() | ||||
{ | { | ||||
let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); | let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); | ||||
let catafalqueTemplates = shuffleArray(cmpTemplateManager.FindAllTemplates(false).filter( | let catafalqueTemplates = shuffleArray(cmpTemplateManager.FindAllTemplates(false).filter( | ||||
name => name.startsWith("other/catafalque/"))); | name => name.startsWith("other/catafalque/"))); | ||||
// Attempt to spawn relics using gaia entities in neutral territory | let potentialSpawnPoints = TriggerHelper.GetLandSpawnPoints(); | ||||
// If there are none, try to spawn using gaia entities in non-neutral territory | |||||
let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); | |||||
let cmpWaterManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_WaterManager); | |||||
let cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager); | |||||
let potentialGaiaSpawnPoints = []; | |||||
let potentialSpawnPoints = cmpRangeManager.GetEntitiesByPlayer(0).filter(entity => { | |||||
let cmpPosition = Engine.QueryInterface(entity, IID_Position); | |||||
if (!cmpPosition || !cmpPosition.IsInWorld()) | |||||
return false; | |||||
let cmpIdentity = Engine.QueryInterface(entity, IID_Identity); | |||||
if (!cmpIdentity) | |||||
return false; | |||||
let templateName = cmpTemplateManager.GetCurrentTemplateName(entity); | |||||
if (!templateName) | |||||
return false; | |||||
let template = cmpTemplateManager.GetTemplate(templateName); | |||||
if (!template || template.UnitMotionFlying) | |||||
return false; | |||||
let pos = cmpPosition.GetPosition(); | |||||
if (pos.y <= cmpWaterManager.GetWaterLevel(pos.x, pos.z)) | |||||
return false; | |||||
if (cmpTerritoryManager.GetOwner(pos.x, pos.z) == 0) | |||||
potentialGaiaSpawnPoints.push(entity); | |||||
return true; | |||||
}); | |||||
if (potentialGaiaSpawnPoints.length) | |||||
potentialSpawnPoints = potentialGaiaSpawnPoints; | |||||
if (!potentialSpawnPoints.length) | if (!potentialSpawnPoints.length) | ||||
{ | { | ||||
error("No gaia entities found on this map that could be used as spawn points!"); | error("No gaia entities found on this map that could be used as spawn points!"); | ||||
return; | return; | ||||
} | } | ||||
let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager); | let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager); | ||||
let numSpawnedRelics = cmpEndGameManager.GetGameTypeSettings().relicCount; | let numSpawnedRelics = cmpEndGameManager.GetGameTypeSettings().relicCount; | ||||
▲ Show 20 Lines • Show All 140 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator