diff --git a/binaries/data/mods/public/simulation/components/Foundation.js b/binaries/data/mods/public/simulation/components/Foundation.js index c4836a4058..34f2991f33 100644 --- a/binaries/data/mods/public/simulation/components/Foundation.js +++ b/binaries/data/mods/public/simulation/components/Foundation.js @@ -343,6 +343,19 @@ Foundation.prototype.Build = function(builderEnt, work) if (cmpVisual && cmpBuildingVisual) cmpBuildingVisual.SetActorSeed(cmpVisual.GetActorSeed()); + const cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity); + const cmpBuildingIdentity = Engine.QueryInterface(building, IID_Identity); + if (cmpIdentity && cmpBuildingIdentity) + { + const oldPhenotype = cmpIdentity.GetPhenotype(); + if (cmpBuildingIdentity.GetPhenotype() !== oldPhenotype) + { + cmpBuildingIdentity.SetPhenotype(oldPhenotype); + if (cmpVisualCorpse) + cmpVisualCorpse.RecomputeActorName(); + } + } + if (cmpPlayerStatisticsTracker) cmpPlayerStatisticsTracker.IncreaseConstructedBuildingsCounter(building); diff --git a/binaries/data/mods/public/simulation/components/Health.js b/binaries/data/mods/public/simulation/components/Health.js index ca37e7f7ed..f5987b8bc9 100644 --- a/binaries/data/mods/public/simulation/components/Health.js +++ b/binaries/data/mods/public/simulation/components/Health.js @@ -378,6 +378,22 @@ Health.prototype.CreateCorpse = function() cmpVisualCorpse.SelectAnimation("death", true, 1); } + const cmpIdentityCorpse = Engine.QueryInterface(entCorpse, IID_Identity); + if (cmpIdentityCorpse) + { + const cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity); + if (cmpIdentity) + { + const oldPhenotype = cmpIdentity.GetPhenotype(); + if (cmpIdentityCorpse.GetPhenotype() !== oldPhenotype) + { + cmpIdentityCorpse.SetPhenotype(oldPhenotype); + if (cmpVisualCorpse) + cmpVisualCorpse.RecomputeActorName(); + } + } + } + if (resource) Engine.PostMessage(this.entity, MT_EntityRenamed, { "entity": this.entity, diff --git a/binaries/data/mods/public/simulation/components/Identity.js b/binaries/data/mods/public/simulation/components/Identity.js index 933c8027f7..30ead8e94c 100644 --- a/binaries/data/mods/public/simulation/components/Identity.js +++ b/binaries/data/mods/public/simulation/components/Identity.js @@ -201,6 +201,11 @@ Identity.prototype.SetControllable = function(controllability) this.controllable = controllability; }; +Identity.prototype.SetPhenotype = function(phenotype) +{ + this.phenotype = phenotype; +}; + function IdentityMirage() {} IdentityMirage.prototype.Init = function(cmpIdentity) {