Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/Promotion.js
Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | Promotion.prototype.IncreaseXp = function(amount) | ||||
if (this.promotedUnitEntity) | if (this.promotedUnitEntity) | ||||
{ | { | ||||
let cmpPromotion = Engine.QueryInterface(this.promotedUnitEntity, IID_Promotion); | let cmpPromotion = Engine.QueryInterface(this.promotedUnitEntity, IID_Promotion); | ||||
if (cmpPromotion) | if (cmpPromotion) | ||||
cmpPromotion.IncreaseXp(amount); | cmpPromotion.IncreaseXp(amount); | ||||
return; | return; | ||||
} | } | ||||
this.currentXp += +(amount); | this.currentXp += +amount; | ||||
var requiredXp = this.GetRequiredXp(); | let requiredXp = this.GetRequiredXp(); | ||||
if (this.currentXp >= requiredXp) | if (this.currentXp >= requiredXp) | ||||
{ | { | ||||
var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); | let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); | ||||
var playerID = QueryOwnerInterface(this.entity, IID_Player).GetPlayerID(); | let cmpPlayer = QueryOwnerInterface(this.entity, IID_Player); | ||||
if (!cmpPlayer) | |||||
return; | |||||
let playerID = cmpPlayer.GetPlayerID(); | |||||
this.currentXp -= requiredXp; | this.currentXp -= requiredXp; | ||||
var promotedTemplateName = this.GetPromotedTemplateName(); | let promotedTemplateName = this.GetPromotedTemplateName(); | ||||
// check if we can upgrade a second time (or even more) | // check if we can upgrade a second time (or even more) | ||||
while (true) | while (true) | ||||
{ | { | ||||
var template = cmpTemplateManager.GetTemplate(promotedTemplateName); | let template = cmpTemplateManager.GetTemplate(promotedTemplateName); | ||||
if (!template.Promotion) | if (!template.Promotion) | ||||
break; | break; | ||||
requiredXp = ApplyValueModificationsToTemplate("Promotion/RequiredXp", +template.Promotion.RequiredXp, playerID, template); | requiredXp = ApplyValueModificationsToTemplate("Promotion/RequiredXp", +template.Promotion.RequiredXp, playerID, template); | ||||
Freagarach: Can't we use the template value when we have no player? | |||||
Not Done Inline Actionsno player means owner is invalid so entity is mostly dead Silier: no player means owner is invalid so entity is mostly dead | |||||
Done Inline ActionsAfaik the template doesn't contain a player ID bb: Afaik the template doesn't contain a player ID | |||||
Not Done Inline ActionsI meant using +template.Promotion.RequiredXp. But Angen may be right and it may not be needed. Freagarach: I meant using `+template.Promotion.RequiredXp`. But Angen may be right and it may not be needed. | |||||
// compare the current xp to the required xp of the promoted entity | // compare the current xp to the required xp of the promoted entity | ||||
if (this.currentXp < requiredXp) | if (this.currentXp < requiredXp) | ||||
break; | break; | ||||
this.currentXp -= requiredXp; | this.currentXp -= requiredXp; | ||||
promotedTemplateName = template.Promotion.Entity; | promotedTemplateName = template.Promotion.Entity; | ||||
} | } | ||||
this.Promote(promotedTemplateName); | this.Promote(promotedTemplateName); | ||||
let cmpPromotion = Engine.QueryInterface(this.promotedUnitEntity, IID_Promotion); | let cmpPromotion = Engine.QueryInterface(this.promotedUnitEntity, IID_Promotion); | ||||
▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
Can't we use the template value when we have no player?