Ticket #1724: collectiveBehavior-edit.patch

File collectiveBehavior-edit.patch, 7.8 KB (added by leper, 11 years ago)
  • binaries/data/mods/public/simulation/components/Identity.js

     
    1515        "<text/>" +
    1616    "</element>" +
    1717    "<optional>" +
     18        "<element name='Species' a:help='Species this unit belongs to'>" +
     19            "<text/>" +
     20        "</element>" +
     21    "</optional>" +
     22    "<optional>" +
    1823        "<element name='SpecificName' a:help='Specific native-language name for this unit type'>" +
    1924            "<text/>" +
    2025        "</element>" +
  • binaries/data/mods/public/simulation/components/UnitAI.js

     
    21272127                this.template.NaturalBehaviour == "passive")
    21282128            {
    21292129                this.Flee(msg.data.attacker, false);
     2130                this.NearbyAnimalsRespondToAttack(msg.data.attacker);
    21302131            }
    21312132            else if (this.IsDangerousAnimal() || this.template.NaturalBehaviour == "defensive")
    21322133            {
    21332134                if (this.CanAttack(msg.data.attacker))
    21342135                    this.Attack(msg.data.attacker, false);
     2136                this.NearbyAnimalsRespondToAttack(msg.data.attacker);
    21352137            }
    21362138            else if (this.template.NaturalBehaviour == "domestic")
    21372139            {
     
    42384240    );
    42394241};
    42404242
     4243/**
     4244 * All wild animals in a given distance respond to the attack :
     4245 * If skittish behaviour, they flee
     4246 * If defensive behaviour, they attack if it is a member of their species which is involved
     4247 */
     4248UnitAI.prototype.NearbyAnimalsRespondToAttack = function(attacker)
     4249{
     4250    var cmpOwnIdentity = Engine.QueryInterface(this.entity, IID_Identity);
     4251    var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
     4252    // Get other animals ; range = 24 (TODO: what is a good value?), players = [0] (gaia only)
     4253    var nearby = cmpRangeManager.ExecuteQuery(this.entity, 0, 24, [0], IID_UnitAI);
     4254    for each (var ent in nearby)
     4255    {
     4256        var cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI);
     4257        if (cmpUnitAI.template.NaturalBehaviour == "skittish" ||
     4258            cmpUnitAI.template.NaturalBehaviour == "passive")
     4259        {
     4260            cmpUnitAI.Flee(attacker, false);
     4261        }
     4262        else if (cmpOwnIdentity && cmpOwnIdentity.template.Species &&
     4263                 (cmpUnitAI.IsDangerousAnimal() || cmpUnitAI.template.NaturalBehaviour == "defensive"))
     4264        {
     4265            var cmpIdentity = Engine.QueryInterface(ent, IID_Identity);
     4266            if (cmpIdentity && cmpIdentity.template.Species &&
     4267                cmpIdentity.template.Species == cmpOwnIdentity.template.Species)
     4268            {
     4269                if(cmpUnitAI.CanAttack(attacker))
     4270                    cmpUnitAI.Attack(attacker, false);
     4271            }
     4272        }
     4273    }
     4274};
     4275
    42414276Engine.RegisterComponentType(IID_UnitAI, "UnitAI", UnitAI);
  • binaries/data/mods/public/simulation/templates/gaia/fauna_elephant.xml

     
    1111  <Identity>
    1212    <Civ>gaia</Civ>
    1313    <Classes datatype="tokens">Elephant</Classes>
     14    <Species>Elephant</Species>
    1415    <SpecificName>Elephant</SpecificName>
    1516    <Icon>gaia/fauna_elephant.png</Icon>
    1617  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_african_bush.xml

     
    4444  <Identity>
    4545    <Civ>gaia</Civ>
    4646    <Classes datatype="tokens">Elephant</Classes>
     47    <Species>Elephant</Species>
    4748    <SpecificName>African Bush Elephant</SpecificName>
    4849    <Icon>gaia/fauna_elephant_african_bush.png</Icon>
    4950  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_african_infant.xml

     
    1212  <Identity>
    1313    <Civ>gaia</Civ>
    1414    <Classes datatype="tokens">Elephant</Classes>
     15    <Species>Elephant</Species>
    1516    <SpecificName>African Elephant (Infant)</SpecificName>
    1617    <Icon>gaia/fauna_elephant_african_infant.png</Icon>
    1718  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_asian.xml

     
    4444  <Identity>
    4545    <Civ>gaia</Civ>
    4646    <Classes datatype="tokens">Elephant</Classes>
     47    <Species>Elephant</Species>
    4748    <SpecificName>Asian Elephant</SpecificName>
    4849    <Icon>gaia/fauna_elephant_african_bush.png</Icon>
    4950  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_north_african.xml

     
    3131  <Identity>
    3232    <Civ>gaia</Civ>
    3333    <Classes datatype="tokens">Elephant</Classes>
     34    <Species>Elephant</Species>
    3435    <SpecificName>North African Elephant</SpecificName>
    3536    <Icon>gaia/fauna_elephant_north_african.png</Icon>
    3637  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml

     
    1515  </Footprint>
    1616  <Identity>
    1717    <Civ>gaia</Civ>
     18    <Species>Panthera leo</Species>
    1819    <SpecificName>Lion</SpecificName>
    1920    <Icon>gaia/fauna_lion.png</Icon>
    2021  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_lioness.xml

     
    1515  </Footprint>
    1616  <Identity>
    1717    <Civ>gaia</Civ>
     18    <Species>Panthera leo</Species>
    1819    <SpecificName>Lion</SpecificName>
    1920    <Icon>gaia/fauna_lion.png</Icon>
    2021  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_wolf.xml

     
    1515  </Footprint>
    1616  <Identity>
    1717    <Civ>gaia</Civ>
     18    <Species>Canis lupus</Species>
    1819    <SpecificName>Wolf</SpecificName>
    1920    <Icon>gaia/fauna_wolf.png</Icon>
    2021  </Identity>
  • binaries/data/mods/public/simulation/templates/gaia/fauna_wolf_snow.xml

     
    1515  </Footprint>
    1616  <Identity>
    1717    <Civ>gaia</Civ>
     18    <Species>Canis lupus</Species>
    1819    <SpecificName>Snow Wolf</SpecificName>
    1920    <Icon>gaia/fauna_wolf_snow.png</Icon>
    2021  </Identity>