diff --git a/binaries/data/mods/public/simulation/ai/petra/_petrabot.js b/binaries/data/mods/public/simulation/ai/petra/_petrabot.js index 01cc4ca7ad..6d4d718148 100644 --- a/binaries/data/mods/public/simulation/ai/petra/_petrabot.js +++ b/binaries/data/mods/public/simulation/ai/petra/_petrabot.js @@ -40,14 +40,11 @@ PetraBot.prototype.CustomInit = function(gameState) { for (const i in this.savedEvents[key]) { - if (!this.savedEvents[key][i].entityObj) - continue; const evt = this.savedEvents[key][i]; const evtmod = {}; for (const keyevt in evt) { evtmod[keyevt] = evt[keyevt]; - evtmod.entityObj = new Entity(gameState.sharedScript, evt.entityObj); this.savedEvents[key][i] = evtmod; } } @@ -143,13 +140,13 @@ PetraBot.prototype.Serialize = function() savedEvents[key] = this.savedEvents[key].slice(); for (const i in savedEvents[key]) { - if (!savedEvents[key][i] || !savedEvents[key][i].entityObj) + if (!savedEvents[key][i]) continue; const evt = savedEvents[key][i]; const evtmod = {}; for (const keyevt in evt) evtmod[keyevt] = evt[keyevt]; - evtmod.entityObj = evt.entityObj._entity; + evtmod.entityObj = undefined; savedEvents[key][i] = evtmod; } } diff --git a/binaries/data/mods/public/simulation/ai/petra/basesManager.js b/binaries/data/mods/public/simulation/ai/petra/basesManager.js index 7e2e10323c..0d7e7b67cb 100644 --- a/binaries/data/mods/public/simulation/ai/petra/basesManager.js +++ b/binaries/data/mods/public/simulation/ai/petra/basesManager.js @@ -135,23 +135,18 @@ BasesManager.prototype.checkEvents = function(gameState, events) for (const evt of events.Destroy) { // Let's check we haven't lost an important building here. - if (evt && !evt.SuccessfulFoundation && evt.entityObj && evt.metadata && evt.metadata[PlayerID] && - evt.metadata[PlayerID].base) + if (evt && !evt.SuccessfulFoundation && evt.metadata?.[PlayerID]?.base) { - const ent = evt.entityObj; if (evt?.metadata?.[PlayerID]?.assignedResource) { this.getBaseByID(evt.metadata[PlayerID].base) .removeFromAssignedDropsite(evt.entity); } - if (ent.owner() != PlayerID) - continue; // A new base foundation was created and destroyed on the same (AI) turn if (evt.metadata[PlayerID].base == -1 || evt.metadata[PlayerID].base == -2) continue; const base = this.getBaseByID(evt.metadata[PlayerID].base); - if (ent.resourceDropsiteTypes() && ent.hasClass("Structure")) - base.removeDropsite(gameState, evt.entity); + base.removeDropsite(gameState, evt.entity); if (evt.metadata[PlayerID].baseAnchor && evt.metadata[PlayerID].baseAnchor === true) base.anchorLost(gameState); } diff --git a/binaries/data/mods/public/simulation/ai/petra/defenseArmy.js b/binaries/data/mods/public/simulation/ai/petra/defenseArmy.js index f5d6567e20..c5b7fbfd2e 100644 --- a/binaries/data/mods/public/simulation/ai/petra/defenseArmy.js +++ b/binaries/data/mods/public/simulation/ai/petra/defenseArmy.js @@ -563,10 +563,9 @@ DefenseArmy.prototype.checkEvents = function(gameState, events) for (const evt of events.Destroy) { - const entityObj = evt.entityObj || undefined; // we may have capture+destroy, so do not trust owner and check all possibilities - this.removeOwn(gameState, evt.entity, entityObj); - this.removeFoe(gameState, evt.entity, entityObj); + this.removeOwn(gameState, evt.entity); + this.removeFoe(gameState, evt.entity); } }; diff --git a/binaries/data/mods/public/simulation/ai/petra/navalManager.js b/binaries/data/mods/public/simulation/ai/petra/navalManager.js index b5d093da61..769e67587c 100644 --- a/binaries/data/mods/public/simulation/ai/petra/navalManager.js +++ b/binaries/data/mods/public/simulation/ai/petra/navalManager.js @@ -288,15 +288,14 @@ NavalManager.prototype.checkEvents = function(gameState, queues, events) for (const evt of events.Destroy) { - if (!evt.entityObj || evt.entityObj.owner() !== PlayerID || !evt.metadata || !evt.metadata[PlayerID]) + const transporter = evt.metadata?.[PlayerID]?.transporter; + if (!transporter) continue; - if (!evt.entityObj.hasClass("Ship") || !evt.metadata[PlayerID].transporter) - continue; - const plan = this.getPlan(evt.metadata[PlayerID].transporter); + const plan = this.getPlan(transporter); if (!plan) continue; - const shipId = evt.entityObj.id(); + const shipId = evt.entity; if (this.Config.debug > 1) { aiWarn("one ship " + shipId + " from plan " + plan.ID + " destroyed during " +