Difference between revisions of "NPC equipment damage OXP"
Cholmondely (talk | contribs) m (Tidied page) |
Cholmondely (talk | contribs) m (oops!) |
||
Line 5: | Line 5: | ||
Also damages NPC cargo, because Oolite does both with the same code for the player. |
Also damages NPC cargo, because Oolite does both with the same code for the player. |
||
+ | |||
+ | ==Note on code== |
||
OXP equipment which needs to be disabled by script when damaged can push a handler onto the worldScripts.NPC_Equipment_Damage.NPC_equipmentDamagedHandlers array. |
OXP equipment which needs to be disabled by script when damaged can push a handler onto the worldScripts.NPC_Equipment_Damage.NPC_equipmentDamagedHandlers array. |
||
Note that such handlers will be called as if they were in the damaged ship's script, not your worldScript. |
Note that such handlers will be called as if they were in the damaged ship's script, not your worldScript. |
||
− | A simple example handler from my NPC Energy Units OXP: |
||
− | this.NPC_energy_equipmentDamaged = function(equipment) |
||
+ | ''A simple example handler from my NPC Energy Units OXP'': |
||
− | [blockquote]{ |
||
+ | <blockquote>this.NPC_energy_equipmentDamaged = function(equipment) |
||
+ | |||
+ | { |
||
if (equipment == "EQ_NPC_NAVAL_ENERGY_UNIT") this.ship.energyRechargeRate /= worldScripts.NPC_Energy_Units.NEU_multiplier; |
if (equipment == "EQ_NPC_NAVAL_ENERGY_UNIT") this.ship.energyRechargeRate /= worldScripts.NPC_Energy_Units.NEU_multiplier; |
||
Line 19: | Line 22: | ||
if (equipment == "EQ_NPC_ENERGY_UNIT") this.ship.energyRechargeRate /= worldScripts.NPC_Energy_Units.EEU_multiplier; |
if (equipment == "EQ_NPC_ENERGY_UNIT") this.ship.energyRechargeRate /= worldScripts.NPC_Energy_Units.EEU_multiplier; |
||
− | } |
+ | }</blockquote> |
== License == |
== License == |
||
Line 30: | Line 33: | ||
*0.1.1 Fixed 'quantity is not defined' bug in cargo damage code |
*0.1.1 Fixed 'quantity is not defined' bug in cargo damage code |
||
*0.1 Initial WIP release |
*0.1 Initial WIP release |
||
+ | |||
+ | ==Links== |
||
+ | [http://www.aegidian.org/bb/viewtopic.php?f=4&t=18139|BB Discussion] |
||
+ | |||
+ | [[File:Tag-colour-blue.png]]{{OXPLevel|0}} |
||
+ | {{mechanics-OXP}} |
Revision as of 21:52, 9 December 2020
NPC Equipment Damage 0.2.1 by Ngalo
Does what it says on the tin: allows NPC equipment to get damaged in combat, as much like the core player damage handling as I can manage.
Also damages NPC cargo, because Oolite does both with the same code for the player.
Contents
Note on code
OXP equipment which needs to be disabled by script when damaged can push a handler onto the worldScripts.NPC_Equipment_Damage.NPC_equipmentDamagedHandlers array.
Note that such handlers will be called as if they were in the damaged ship's script, not your worldScript.
A simple example handler from my NPC Energy Units OXP:
this.NPC_energy_equipmentDamaged = function(equipment)
{
if (equipment == "EQ_NPC_NAVAL_ENERGY_UNIT") this.ship.energyRechargeRate /= worldScripts.NPC_Energy_Units.NEU_multiplier;
if (equipment == "EQ_NPC_ENERGY_UNIT") this.ship.energyRechargeRate /= worldScripts.NPC_Energy_Units.EEU_multiplier;
}
License
You may use, adapt, distribute etc. this Oolite Expansion Pack as permitted by the Creative Commons Attribution-NonCommercial-ShareAlike License (CC-BY-NC-SA).
Version history
- 0.2.1 Added a small fix which prevents time-wasting if the damaged ship is about to die anyway.
- 0.2 Made use of compatibility improvements in Ship Configuration OXP.
- Prevented the script from trying to damage equipment which is already damaged, or which can't be damaged at all.
- 0.1.1 Fixed 'quantity is not defined' bug in cargo damage code
- 0.1 Initial WIP release