Ticket #1724: collectiveBehavior.patch
File collectiveBehavior.patch, 5.8 KB (added by , 11 years ago) |
---|
-
binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_african_bush.xml
44 44 <Identity> 45 45 <Civ>gaia</Civ> 46 46 <Classes datatype="tokens">Elephant</Classes> 47 <Species>Elephant</Species> 47 48 <SpecificName>African Bush Elephant</SpecificName> 48 49 <Icon>gaia/fauna_elephant_african_bush.png</Icon> 49 50 </Identity> -
binaries/data/mods/public/simulation/templates/gaia/fauna_elephant.xml
11 11 <Identity> 12 12 <Civ>gaia</Civ> 13 13 <Classes datatype="tokens">Elephant</Classes> 14 <Species>Elephant</Species> 14 15 <SpecificName>Elephant</SpecificName> 15 16 <Icon>gaia/fauna_elephant.png</Icon> 16 17 </Identity> -
binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_north_african.xml
31 31 <Identity> 32 32 <Civ>gaia</Civ> 33 33 <Classes datatype="tokens">Elephant</Classes> 34 <Species>Elephant</Species> 34 35 <SpecificName>North African Elephant</SpecificName> 35 36 <Icon>gaia/fauna_elephant_north_african.png</Icon> 36 37 </Identity> -
binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_asian.xml
44 44 <Identity> 45 45 <Civ>gaia</Civ> 46 46 <Classes datatype="tokens">Elephant</Classes> 47 <Species>Elephant</Species> 47 48 <SpecificName>Asian Elephant</SpecificName> 48 49 <Icon>gaia/fauna_elephant_african_bush.png</Icon> 49 50 </Identity> -
binaries/data/mods/public/simulation/templates/gaia/fauna_elephant_african_infant.xml
12 12 <Identity> 13 13 <Civ>gaia</Civ> 14 14 <Classes datatype="tokens">Elephant</Classes> 15 <Species>Elephant</Species> 15 16 <SpecificName>African Elephant (Infant)</SpecificName> 16 17 <Icon>gaia/fauna_elephant_african_infant.png</Icon> 17 18 </Identity> -
binaries/data/mods/public/simulation/components/Identity.js
15 15 "<text/>" + 16 16 "</element>" + 17 17 "<optional>" + 18 "<element name='Species' a:help='Species for this class of unit'>" + 19 "<text/>" + 20 "</element>" + 21 "</optional>" + 22 "<optional>" + 18 23 "<element name='SpecificName' a:help='Specific native-language name for this unit type'>" + 19 24 "<text/>" + 20 25 "</element>" + -
binaries/data/mods/public/simulation/components/UnitAI.js
2096 2096 this.template.NaturalBehaviour == "passive") 2097 2097 { 2098 2098 this.Flee(msg.data.attacker, false); 2099 this.NearbyAnimalsRespondToAttack(msg.data.attacker); 2099 2100 } 2100 2101 else if (this.IsDangerousAnimal() || this.template.NaturalBehaviour == "defensive") 2101 2102 { 2102 2103 if (this.CanAttack(msg.data.attacker)) 2103 2104 this.Attack(msg.data.attacker, false); 2105 this.NearbyAnimalsRespondToAttack(msg.data.attacker); 2104 2106 } 2105 2107 else if (this.template.NaturalBehaviour == "domestic") 2106 2108 { … … 4207 4209 ); 4208 4210 }; 4209 4211 4212 /** 4213 * All wild animals in a given distance respond to the attack : 4214 * If skittish behaviour, they flee 4215 * If defensive behaviour, they attack if it is a member of their specy which is involved 4216 */ 4217 UnitAI.prototype.NearbyAnimalsRespondToAttack = function(attacker) 4218 { 4219 var thisIdentity = Engine.QueryInterface(this.entity, IID_Identity); 4220 // Look for other animal (gaia player = 0) nearby (dist=24, to be tuned) 4221 var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); 4222 var nearby = cmpRangeManager.ExecuteQuery(this.entity, 0, 24, [0], IID_UnitAI); 4223 for each (var ent in nearby) 4224 { 4225 var cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI); 4226 if (cmpUnitAI.template.NaturalBehaviour == "skittish" || 4227 cmpUnitAI.template.NaturalBehaviour == "passive") 4228 { 4229 cmpUnitAI.Flee(attacker, false); 4230 } 4231 else if (cmpUnitAI.IsDangerousAnimal() || cmpUnitAI.template.NaturalBehaviour == "defensive") 4232 { 4233 var cmpIdentity = Engine.QueryInterface(ent, IID_Identity); 4234 if ((cmpIdentity.template.Species && cmpIdentity.template.Species == thisIdentity.template.Species) || 4235 (cmpIdentity.template.SpecificName && cmpIdentity.template.SpecificName == thisIdentity.template.SpecificName)) 4236 { 4237 if(cmpUnitAI.CanAttack(attacker)) 4238 cmpUnitAI.Attack(attacker, false); 4239 } 4240 } 4241 } 4242 }; 4243 4210 4244 Engine.RegisterComponentType(IID_UnitAI, "UnitAI", UnitAI);