1
0
forked from 0ad/0ad

Fixes #1700 (Increasing max-health by tech)

This was SVN commit r12960.
This commit is contained in:
Yves 2012-12-08 19:17:48 +00:00
parent 8cbb7bb674
commit 2e37bf10bc
2 changed files with 29 additions and 31 deletions

View File

@ -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)

View File

@ -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];
}
}
}