Ticket #2242: swimmer.diff
File swimmer.diff, 6.3 KB (added by , 11 years ago) |
---|
-
binaries/data/mods/public/simulation/components/GarrisonHolder.js
16 16 "<element name='EjectEntitiesOnDestroy' a:help='Whether the entity should eject or kill all garrisoned entities on destroy'>" + 17 17 "<data type='boolean'/>" + 18 18 "</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>" + 19 24 "<element name='BuffHeal' a:help='Number of hit points that will be restored to this holder's garrisoned units each second'>" + 20 25 "<ref name='nonNegativeDecimal'/>" + 21 26 "</element>" + … … 82 87 return this.template.EjectEntitiesOnDestroy == "true"; 83 88 }; 84 89 90 GarrisonHolder.prototype.EjectSwimmingEntitiesOnDestroy = function() 91 { 92 return (this.template.EjectSwimmingEntitiesOnDestroy ? (this.template.EjectSwimmingEntitiesOnDestroy == "true") : false); 93 }; 94 85 95 /** 86 96 * Set this entity to allow or disallow garrisoning in 87 97 * Every component calling this function should do it with its own ID, and as long as one … … 537 547 var cmpPosition = Engine.QueryInterface(this.entity, IID_Position); 538 548 // Eject the units which can be ejected (if not in world, it generally means this holder 539 549 // 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 } 542 562 563 } 564 } 565 543 566 // And destroy all remaining entities 544 567 for each (var entity in entities) 545 568 { -
binaries/data/mods/public/simulation/components/UnitAI.js
2610 2610 return true; 2611 2611 }; 2612 2612 2613 UnitAI.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 2613 2621 UnitAI.prototype.OnCreate = function() 2614 2622 { 2615 2623 if (this.IsAnimal()) -
binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml
34 34 <Max>20</Max> 35 35 <EjectHealth>0</EjectHealth> 36 36 <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy> 37 <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy> 37 38 <List datatype="tokens">Support Infantry Cavalry</List> 38 39 <BuffHeal>1</BuffHeal> 39 40 <LoadingRange>10</LoadingRange> -
binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml
23 23 <Max>1</Max> 24 24 <EjectHealth>0</EjectHealth> 25 25 <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy> 26 <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy> 26 27 <List datatype="tokens">Support Infantry</List> 27 28 <BuffHeal>1</BuffHeal> 28 29 <LoadingRange>10</LoadingRange> -
binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml
15 15 <Max>15</Max> 16 16 <EjectHealth>0</EjectHealth> 17 17 <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy> 18 <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy> 18 19 <List datatype="tokens">Support Infantry Cavalry</List> 19 20 <BuffHeal>1</BuffHeal> 20 21 <LoadingRange>10</LoadingRange> -
binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml
42 42 <Max>50</Max> 43 43 <EjectHealth>0</EjectHealth> 44 44 <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy> 45 <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy> 45 46 <List datatype="tokens">Support Infantry Cavalry Siege</List> 46 47 <BuffHeal>1</BuffHeal> 47 48 <LoadingRange>10</LoadingRange> -
binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml
34 34 <Max>30</Max> 35 35 <EjectHealth>0</EjectHealth> 36 36 <EjectEntitiesOnDestroy>false</EjectEntitiesOnDestroy> 37 <EjectSwimmingEntitiesOnDestroy>true</EjectSwimmingEntitiesOnDestroy> 37 38 <List datatype="tokens">Support Infantry Cavalry Siege</List> 38 39 <BuffHeal>1</BuffHeal> 39 40 <LoadingRange>10</LoadingRange>