Ticket #2190: betterGarrisonRange.patch

File betterGarrisonRange.patch, 16.6 KB (added by sanderd17, 11 years ago)
  • binaries/data/mods/public/simulation/components/Builder.js

     
    4242Builder.prototype.GetRange = function()
    4343{
    4444    var cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
    45     var max = 2;
     45    var max = 1;
    4646    if (cmpObstruction)
    47         max += cmpObstruction.GetUnitRadius();
     47        max += cmpObstruction.GetUnitRadius()*1.5;
     48        // multiply by something larger than sqrt(2)
    4849
    4950    return { "max": max, "min": 0 };
    5051};
  • binaries/data/mods/public/simulation/components/GarrisonHolder.js

     
    1818    "</element>" +
    1919    "<element name='BuffHeal' a:help='Number of hit points that will be restored to this holder&apos;s garrisoned units each second'>" +
    2020        "<ref name='nonNegativeDecimal'/>" +
    21     "</element>" +
    22     "<element name='LoadingRange' a:help='The maximum distance from this holder at which entities are allowed to garrison. Should be about 2.0 for land entities and preferably greater for ships'>" +
    23         "<ref name='nonNegativeDecimal'/>" +
    2421    "</element>";
    2522
    2623/**
     
    3532};
    3633
    3734/**
    38  * Return range at which entities can garrison here
    39  */
    40 GarrisonHolder.prototype.GetLoadingRange = function()
    41 {
    42     var max = +this.template.LoadingRange;
    43     return { "max": max, "min": 0 };
    44 };
    45 
    46 /**
    4735 * Return the list of entities garrisoned inside
    4836 */
    4937GarrisonHolder.prototype.GetEntities = function()
  • binaries/data/mods/public/simulation/components/UnitAI.js

     
    34693469
    34703470UnitAI.prototype.CheckGarrisonRange = function(target)
    34713471{
    3472     var cmpGarrisonHolder = Engine.QueryInterface(target, IID_GarrisonHolder);
    3473     var range = cmpGarrisonHolder.GetLoadingRange();
     3472    var cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
     3473    var max = 1;
     3474    if (cmpObstruction)
     3475        max += cmpObstruction.GetUnitRadius()*1.5;
     3476        // multiply by something larger than sqrt(2)
    34743477
    34753478    var cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion);
    3476     return cmpUnitMotion.IsInTargetRange(target, range.min, range.max);
     3479    return cmpUnitMotion.IsInTargetRange(target, 0, max);
    34773480};
    34783481
    34793482/**
  • binaries/data/mods/public/simulation/templates/other/plane.xml

     
    2323    <EjectHealth>0</EjectHealth>
    2424    <List datatype="tokens">Support Infantry</List>
    2525    <BuffHeal>1</BuffHeal>
    26     <LoadingRange>5</LoadingRange>
    2726    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
    2827  </GarrisonHolder>
    2928  <Decay>
  • binaries/data/mods/public/simulation/templates/structures/athen_wonder.xml

     
    1010    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    1111    <List datatype="tokens">Support Infantry Cavalry</List>
    1212    <BuffHeal>3</BuffHeal>
    13     <LoadingRange>2</LoadingRange>
    1413  </GarrisonHolder>
    1514  <Identity>
    1615    <Civ>athen</Civ>
  • binaries/data/mods/public/simulation/templates/structures/ptol_wonder.xml

     
    1010    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    1111    <List datatype="tokens">Support Infantry Cavalry</List>
    1212    <BuffHeal>3</BuffHeal>
    13     <LoadingRange>2</LoadingRange>
    1413  </GarrisonHolder>
    1514  <Identity>
    1615    <Civ>ptol</Civ>
  • binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml

     
    4747    <Max>40</Max>
    4848    <List datatype="tokens">Support Infantry Cavalry Siege</List>
    4949    <BuffHeal>1</BuffHeal>
    50     <LoadingRange>6</LoadingRange>
    5150  </GarrisonHolder>
    5251  <Health>
    5352    <Max>3600</Max>
  • binaries/data/mods/public/simulation/templates/structures/rome_tent.xml

     
    1919    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    2020    <List datatype="tokens">Support Infantry</List>
    2121    <BuffHeal>0</BuffHeal>
    22     <LoadingRange>2</LoadingRange>
    2322  </GarrisonHolder>
    2423  <Health>
    2524    <Max>200</Max>
  • binaries/data/mods/public/simulation/templates/structures/rome_wonder.xml

     
    1010    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    1111    <List datatype="tokens">Support Infantry Cavalry</List>
    1212    <BuffHeal>3</BuffHeal>
    13     <LoadingRange>2</LoadingRange>
    1413  </GarrisonHolder>
    1514  <Identity>
    1615    <Civ>rome</Civ>
  • binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml

     
    4545    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    4646    <List datatype="tokens">Support Infantry Cavalry</List>
    4747    <BuffHeal>1</BuffHeal>
    48     <LoadingRange>2</LoadingRange>
    4948  </GarrisonHolder>
    5049  <Health>
    5150    <Max>3000</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml

     
    2626    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    2727    <List datatype="tokens">Support Infantry Cavalry</List>
    2828    <BuffHeal>3</BuffHeal>
    29     <LoadingRange>2</LoadingRange>
    3029  </GarrisonHolder>
    3130  <Health>
    3231    <Max>2000</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_defense_defense_tower.xml

     
    4444    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    4545    <List datatype="tokens">Support Infantry</List>
    4646    <BuffHeal>0</BuffHeal>
    47     <LoadingRange>2</LoadingRange>
    4847  </GarrisonHolder>
    4948  <Health>
    5049    <Max>1000</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_defense_outpost.xml

     
    4747    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    4848    <List datatype="tokens">Support Infantry</List>
    4949    <BuffHeal>0</BuffHeal>
    50     <LoadingRange>2</LoadingRange>
    5150  </GarrisonHolder>
    5251  <Health>
    5352    <Max>800</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_defense_wall_tower.xml

     
    3838    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    3939    <List datatype="tokens">Support Infantry</List>
    4040    <BuffHeal>0</BuffHeal>
    41     <LoadingRange>2</LoadingRange>
    4241  </GarrisonHolder>
    4342  <Health>
    4443    <Max>5000</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml

     
    1919    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    2020    <List datatype="tokens">Infantry Cavalry</List>
    2121    <BuffHeal>0</BuffHeal>
    22     <LoadingRange>2</LoadingRange>
    2322  </GarrisonHolder>
    2423  <Health>
    2524    <Max>2000</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_military_blacksmith.xml

     
    1919    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    2020    <List datatype="tokens">Infantry</List>
    2121    <BuffHeal>0</BuffHeal>
    22     <LoadingRange>2</LoadingRange>
    2322  </GarrisonHolder>
    2423  <Health>
    2524    <Max>2000</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml

     
    3939    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    4040    <List datatype="tokens">Support Infantry Cavalry Siege</List>
    4141    <BuffHeal>0</BuffHeal>
    42     <LoadingRange>6</LoadingRange>
    4342  </GarrisonHolder>
    4443  <Health>
    4544    <Max>4200</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml

     
    1616    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    1717    <List datatype="tokens">Animal</List>
    1818    <BuffHeal>1</BuffHeal>
    19     <LoadingRange>2</LoadingRange>
    2019  </GarrisonHolder>
    2120  <Health>
    2221    <Max>500</Max>
  • binaries/data/mods/public/simulation/templates/template_structure_special.xml

     
    3232    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    3333    <List datatype="tokens">Support Infantry Cavalry</List>
    3434    <BuffHeal>1</BuffHeal>
    35     <LoadingRange>2</LoadingRange>
    3635  </GarrisonHolder>
    3736  <Health>
    3837    <Max>2000</Max>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml

     
    3636    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
    3737    <List datatype="tokens">Support Infantry Cavalry</List>
    3838    <BuffHeal>1</BuffHeal>
    39     <LoadingRange>10</LoadingRange>
    4039  </GarrisonHolder>
    4140  <Health>
    4241    <Max>800</Max>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml

     
    2525    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
    2626    <List datatype="tokens">Support Infantry</List>
    2727    <BuffHeal>1</BuffHeal>
    28     <LoadingRange>10</LoadingRange>
    2928  </GarrisonHolder>
    3029  <Identity>
    3130    <GenericName>Fishing Boat</GenericName>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml

     
    1717    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
    1818    <List datatype="tokens">Support Infantry Cavalry</List>
    1919    <BuffHeal>1</BuffHeal>
    20     <LoadingRange>10</LoadingRange>
    2120  </GarrisonHolder>
    2221  <Health>
    2322    <Max>400</Max>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml

     
    4444    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
    4545    <List datatype="tokens">Support Infantry Cavalry Siege</List>
    4646    <BuffHeal>1</BuffHeal>
    47     <LoadingRange>10</LoadingRange>
    4847  </GarrisonHolder>
    4948  <Health>
    5049    <Max>2000</Max>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml

     
    3636    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
    3737    <List datatype="tokens">Support Infantry Cavalry Siege</List>
    3838    <BuffHeal>1</BuffHeal>
    39     <LoadingRange>10</LoadingRange>
    4039  </GarrisonHolder>
    4140  <Health>
    4241    <Max>1400</Max>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml

     
    5959    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    6060    <List datatype="tokens">Support Infantry</List>
    6161    <BuffHeal>1</BuffHeal>
    62     <LoadingRange>2</LoadingRange>
    6362  </GarrisonHolder>
    6463  <Health>
    6564    <Max>200</Max>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml

     
    4141    <EjectEntitiesOnDestroy>true</EjectEntitiesOnDestroy>
    4242    <List datatype="tokens">Support Infantry</List>
    4343    <BuffHeal>1</BuffHeal>
    44     <LoadingRange>2</LoadingRange>
    4544  </GarrisonHolder>
    4645  <Health>
    4746    <Max>800</Max>