Ticket #2242: swimmer.diff

File swimmer.diff, 6.3 KB (added by mimo, 11 years ago)

added missing word in the help text of EjectSwimmingEntitiesOnDestroy

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

     
    1616    "<element name='EjectEntitiesOnDestroy' a:help='Whether the entity should eject or kill all garrisoned entities on destroy'>" +
    1717        "<data type='boolean'/>" +
    1818    "</element>" +
     19    "<optional>" +
     20        "<element name='EjectSwimmingEntitiesOnDestroy' a:help='Whether the entity should eject garrisoned entities which can swim on destroy'>" +
     21            "<data type='boolean'/>" +
     22        "</element>" +
     23    "</optional>" +
    1924    "<element name='BuffHeal' a:help='Number of hit points that will be restored to this holder&apos;s garrisoned units each second'>" +
    2025        "<ref name='nonNegativeDecimal'/>" +
    2126    "</element>" +
     
    8287    return this.template.EjectEntitiesOnDestroy == "true";
    8388};
    8489
     90GarrisonHolder.prototype.EjectSwimmingEntitiesOnDestroy = function()
     91{
     92    return (this.template.EjectSwimmingEntitiesOnDestroy ? (this.template.EjectSwimmingEntitiesOnDestroy == "true") : false);
     93};
     94
    8595/**
    8696 * Set this entity to allow or disallow garrisoning in
    8797 * Every component calling this function should do it with its own ID, and as long as one
     
    537547    var cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
    538548    // Eject the units which can be ejected (if not in world, it generally means this holder
    539549    // is inside a holder which kills its entities, so do not eject)
    540     if (cmpPosition.IsInWorld() && this.EjectEntitiesOnDestroy())
    541         this.PerformEject(entities, true);
     550    if (cmpPosition.IsInWorld())
     551    {
     552        if( this.EjectEntitiesOnDestroy())
     553            this.PerformEject(entities, true);
     554        else if( this.EjectSwimmingEntitiesOnDestroy())
     555        {
     556            for each (var entity in entities)
     557            {
     558                var cmpUnitAI = Engine.QueryInterface(entity, IID_UnitAI);
     559                if (cmpUnitAI && cmpUnitAI.CanSwim())
     560                    this.PerformEject([entity], false);  // not force in case no spawn point possible
     561            }
    542562
     563        }
     564    }
     565
    543566    // And destroy all remaining entities
    544567    for each (var entity in entities)
    545568    {
  • binaries/data/mods/public/simulation/components/UnitAI.js

     
    26102610    return true;
    26112611};
    26122612
     2613UnitAI.prototype.CanSwim = function()
     2614{
     2615    var cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
     2616    if (!cmpIdentity)
     2617        return false;
     2618    return cmpIdentity.HasClass("Female") || cmpIdentity.HasClass("Infantry");
     2619};
     2620
    26132621UnitAI.prototype.OnCreate = function()
    26142622{
    26152623    if (this.IsAnimal())
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml

     
    3434    <Max>20</Max>
    3535    <EjectHealth>0</EjectHealth>
    3636    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
     37    <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy>
    3738    <List datatype="tokens">Support Infantry Cavalry</List>
    3839    <BuffHeal>1</BuffHeal>
    3940    <LoadingRange>10</LoadingRange>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml

     
    2323    <Max>1</Max>
    2424    <EjectHealth>0</EjectHealth>
    2525    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
     26    <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy>
    2627    <List datatype="tokens">Support Infantry</List>
    2728    <BuffHeal>1</BuffHeal>
    2829    <LoadingRange>10</LoadingRange>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml

     
    1515    <Max>15</Max>
    1616    <EjectHealth>0</EjectHealth>
    1717    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
     18    <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy>
    1819    <List datatype="tokens">Support Infantry Cavalry</List>
    1920    <BuffHeal>1</BuffHeal>
    2021    <LoadingRange>10</LoadingRange>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml

     
    4242    <Max>50</Max>
    4343    <EjectHealth>0</EjectHealth>
    4444    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
     45    <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy>
    4546    <List datatype="tokens">Support Infantry Cavalry Siege</List>
    4647    <BuffHeal>1</BuffHeal>
    4748    <LoadingRange>10</LoadingRange>
  • binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml

     
    3434    <Max>30</Max>
    3535    <EjectHealth>0</EjectHealth>
    3636    <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy>
     37    <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy>
    3738    <List datatype="tokens">Support Infantry Cavalry Siege</List>
    3839    <BuffHeal>1</BuffHeal>
    3940    <LoadingRange>10</LoadingRange>