Fixes #1700 (Increasing max-health by tech)
This was SVN commit r12960.
This commit is contained in:
parent
8cbb7bb674
commit
2e37bf10bc
@ -38,8 +38,6 @@ Foundation.prototype.InitialiseConstruction = function(owner, template)
|
||||
var cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
|
||||
|
||||
this.finalTemplateName = template;
|
||||
this.addedHitpoints = cmpHealth.GetHitpoints();
|
||||
this.maxHitpoints = cmpHealth.GetMaxHitpoints();
|
||||
|
||||
// We need to know the owner in OnDestroy, but at that point the entity has already been
|
||||
// decoupled from its owner, so we need to remember it in here (and assume it won't change)
|
||||
@ -193,13 +191,13 @@ Foundation.prototype.Build = function(builderEnt, work)
|
||||
Engine.PostMessage(this.entity, MT_FoundationProgressChanged, { "to": this.GetBuildPercentage() });
|
||||
|
||||
// Add an appropriate proportion of hitpoints
|
||||
var targetHP = Math.max(0, Math.min(this.maxHitpoints, Math.floor(this.maxHitpoints * this.buildProgress)));
|
||||
var deltaHP = targetHP - this.addedHitpoints;
|
||||
if (deltaHP > 0)
|
||||
var cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
|
||||
var maxHealth = cmpHealth.GetMaxHitpoints();
|
||||
var targetHP = Math.max(0, Math.min(maxHealth, Math.floor(maxHealth * this.buildProgress)));
|
||||
if (targetHP > 0)
|
||||
{
|
||||
var cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
|
||||
cmpHealth.Increase(deltaHP);
|
||||
this.addedHitpoints += deltaHP;
|
||||
|
||||
cmpHealth.SetHitpoints(targetHP);
|
||||
}
|
||||
|
||||
if (this.buildProgress >= 1.0)
|
||||
|
@ -191,23 +191,23 @@ TechnologyManager.prototype.OnGlobalOwnershipChanged = function (msg)
|
||||
this.typeCounts[template] = this.typeCounts[template] || 0;
|
||||
this.typeCounts[template] += 1;
|
||||
|
||||
// don't use foundations for the class counts
|
||||
if (Engine.QueryInterface(msg.entity, IID_Foundation))
|
||||
return;
|
||||
|
||||
var cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
|
||||
if (!cmpIdentity)
|
||||
return;
|
||||
|
||||
var classes = cmpIdentity.GetClassesList();
|
||||
for (var i in classes)
|
||||
// don't use foundations for the class counts but check if techs apply (e.g. health increase)
|
||||
if (!Engine.QueryInterface(msg.entity, IID_Foundation))
|
||||
{
|
||||
this.classCounts[classes[i]] = this.classCounts[classes[i]] || 0;
|
||||
this.classCounts[classes[i]] += 1;
|
||||
for (var i in classes)
|
||||
{
|
||||
this.classCounts[classes[i]] = this.classCounts[classes[i]] || 0;
|
||||
this.classCounts[classes[i]] += 1;
|
||||
|
||||
this.typeCountsByClass[classes[i]] = this.typeCountsByClass[classes[i]] || {};
|
||||
this.typeCountsByClass[classes[i]][template] = this.typeCountsByClass[classes[i]][template] || 0;
|
||||
this.typeCountsByClass[classes[i]][template] += 1;
|
||||
this.typeCountsByClass[classes[i]] = this.typeCountsByClass[classes[i]] || {};
|
||||
this.typeCountsByClass[classes[i]][template] = this.typeCountsByClass[classes[i]][template] || 0;
|
||||
this.typeCountsByClass[classes[i]][template] += 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Newly created entity, check if any researched techs might apply
|
||||
@ -243,22 +243,22 @@ TechnologyManager.prototype.OnGlobalOwnershipChanged = function (msg)
|
||||
delete this.typeCounts[template];
|
||||
|
||||
// don't use foundations for the class counts
|
||||
if (Engine.QueryInterface(msg.entity, IID_Foundation))
|
||||
return;
|
||||
|
||||
var cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
|
||||
if (cmpIdentity)
|
||||
if (!Engine.QueryInterface(msg.entity, IID_Foundation))
|
||||
{
|
||||
var classes = cmpIdentity.GetClassesList();
|
||||
for (var i in classes)
|
||||
var cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
|
||||
if (cmpIdentity)
|
||||
{
|
||||
this.classCounts[classes[i]] -= 1;
|
||||
if (this.classCounts[classes[i]] <= 0)
|
||||
delete this.classCounts[classes[i]];
|
||||
var classes = cmpIdentity.GetClassesList();
|
||||
for (var i in classes)
|
||||
{
|
||||
this.classCounts[classes[i]] -= 1;
|
||||
if (this.classCounts[classes[i]] <= 0)
|
||||
delete this.classCounts[classes[i]];
|
||||
|
||||
this.typeCountsByClass[classes[i]][template] -= 1;
|
||||
if (this.typeCountsByClass[classes[i]][template] <= 0)
|
||||
delete this.typeCountsByClass[classes[i]][template];
|
||||
this.typeCountsByClass[classes[i]][template] -= 1;
|
||||
if (this.typeCountsByClass[classes[i]][template] <= 0)
|
||||
delete this.typeCountsByClass[classes[i]][template];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user