Jump to content

lazarus

Community Newbie
  • Posts

    3
  • Joined

  • Last visited

lazarus's Achievements

Tiro

Tiro (1/14)

0

Reputation

  1. Thanks for quick reply, ok i'll try it later, now i'm going to update my 0ad first
  2. Sorry for late reply all, im not regulary connected @Quantumstate: i test on miletus map, regen only happen with helleness but not for rome and it happens in and outside his own teritory line i think its happen when we have teritory then we're able to regen, if not then unable to regen what i expect is regen only happen when units possition stand in inside their own teritory like logic in BuildRestriction.js i have no idea about cmpPosition, cmpOwnership, cmpTerritoryManager in IsConnected function if anyone can explain i'll be gratefull @Pedro: no, error text is from TeritoryDecay.js
  3. Hello everyone this is my first post here please help me, i'm not a programmer, i need some suggestion here i tried to enable health regen based on TeritoryDecay.js there is some mistake but i dont know how to fix it i added this in to health.js // begin regen // Based on TeritoryDecay // How: true if own teritory false outside own teritory Health.prototype.IsConnected = function() { var cmpPosition = Engine.QueryInterface(this.entity, IID_Position); if (!cmpPosition || !cmpPosition.IsInWorld()) return false; var cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership); if (!cmpOwnership) return false; // Prevent special gaia buildings from Regening (e.g. fences, ruins) //if (cmpOwnership.GetOwner() == 0) //return true; var cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager); if (!cmpTerritoryManager) return false; var pos = cmpPosition.GetPosition2D(); var tileOwner = cmpTerritoryManager.GetOwner(pos.x, pos.y); if (tileOwner != cmpOwnership.GetOwner()) return false; // TODO: this should probably use the same territory restriction // logic as BuildRestrictions, to handle allies etc return cmpTerritoryManager.IsConnected(pos.x, pos.y); }; Health.prototype.UpdateRegenState = function() { var damage = this.GetMaxHitpoints() - this.GetHitpoints(); var connected = this.IsConnected(); if (!connected && !this.timer && !damage) { // Start Regening var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); this.timer = cmpTimer.SetInterval(this.entity, IID_Health, "Regen", 1000, 1000, {}); } else if (connected && this.timer) { // Stop Regening var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); cmpTimer.CancelTimer(this.timer); this.timer = undefined; } }; Health.prototype.OnTerritoriesChanged = function(msg) { this.UpdateRegenState(); }; Health.prototype.OnOwnershipChanged = function(msg) { this.UpdateRegenState(); }; Health.prototype.Regen = function() { //var hitpoints = this.hitpoints; if (!this.hitpoints) return; // error this.Increase(+this.template.RegenRate); }; // end regen how to implement this condition, true when in own teritory and false when outside own teritory i need guide explaining in IsConnected function sorry for my bad english and sorry if i have to much ask, thanks before
×
×
  • Create New...