Ticket #2445: teambonus_withauras.4.diff

File teambonus_withauras.4.diff, 3.7 KB (added by fatherbushido, 8 years ago)

fix a diplomacy issue

  • binaries/data/mods/public/simulation/components/Auras.js

    Auras.prototype.GetAffectedPlayers = fun  
    8585Auras.prototype.CalculateAffectedPlayers = function(name)
    8686{
    8787    var affectedPlayers = this.auras[name].affectedPlayers || ["Player"];
    8888    this.affectedPlayers[name] = [];
    8989
    90     var cmpPlayer = QueryOwnerInterface(this.entity);
     90    var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
     91    if (!cmpPlayer)
     92        cmpPlayer = QueryOwnerInterface(this.entity);
    9193    if (!cmpPlayer)
    9294        return;
    9395
    9496    var numPlayers = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetNumPlayers();
    9597    for (var i = 0; i < numPlayers; ++i)
    Auras.prototype.OnOwnershipChanged = fun  
    384386    this.Clean();
    385387};
    386388
    387389Auras.prototype.OnDiplomacyChanged = function(msg)
    388390{
    389     var cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
    390     if (cmpOwnership && cmpOwnership.GetOwner() == msg.player)
     391    var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
     392    if (cmpPlayer && cmpPlayer.GetPlayerID() == msg.player || IsOwnedByPlayer(msg.player, this.entity))
    391393        this.Clean();
    392394};
    393395
    394396Auras.prototype.OnGlobalResearchFinished = function(msg)
    395397{
    396     let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
    397     if (!cmpOwnership || cmpOwnership.GetOwner() != msg.player)
     398    var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
     399    if ((!cmpPlayer || cmpPlayer.GetPlayerID() != msg.player) && !IsOwnedByPlayer(msg.player, this.entity))
    398400        return;
    399401    let auraNames = this.GetAuraNames();
    400402    let needsClean = false;
    401403    for (let name of auraNames)
    402404    {
  • binaries/data/mods/public/simulation/components/Player.js

    Player.prototype.SetDiplomacyIndex = fun  
    426426    if (this.state != "active" || cmpPlayer.state != "active")
    427427        return;
    428428
    429429    this.diplomacy[idx] = value;
    430430    Engine.BroadcastMessage(MT_DiplomacyChanged, { "player": this.playerID });
     431    Engine.BroadcastMessage(MT_DiplomacyChanged, { "player": cmpPlayer.GetPlayerID() });
    431432
    432433    // Mutual worsening of relations
    433434    if (cmpPlayer.diplomacy[this.playerID] > value)
    434435        cmpPlayer.SetDiplomacyIndex(this.playerID, value);
    435436};
  • binaries/data/mods/public/simulation/templates/special/player_iber.xml

     
     1<?xml version="1.0" encoding="utf-8"?>
     2<Entity parent="special/player">
     3  <Auras datatype="tokens">iber_player_teambonus</Auras>
     4</Entity>
  • binaries/data/mods/public/simulation/templates/special/player_sele.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="special/player">
     3  <Auras datatype="tokens">sele_player_teambonus</Auras>
    34  <EntityLimits>
    45    <LimitRemovers>
    56      <CivilCentre>
    67        <RequiredTechs datatype="tokens">phase_town</RequiredTechs>
    78        <RequiredClasses datatype="tokens">Hero</RequiredClasses>