/*
Defence Types (Results/Outcomes) in the Engine for npc->Defense[index]
This list may, in the future, equally apply to Link->Defense[]
This list is split into five segments:
1. Implemented (old): These are in 2.50.0->2.53.0
2. Implemented (new): These exist only in 2.54, and some only exist in specific builds (and later).
3. Planned: These are likely to be added to 2.54, or 2.55.
4. Planned, Custom: A set of types that are used solely by scripts.
5. Insanity: In-dev discussion occasionally runs into InSomNia madness. These probably won't exist, but: Who knows, eh?
*/
//! Section 1: Implemented in 2.50.0->2.53.0
NPC Defense types. Use with npc->Defense[].
const int NPCDT_NONE = 0;
const int NPCDT_HALFDAMAGE = 1;
const int NPCDT_QUARTERDAMAGE = 2;
const int NPCDT_STUN = 3;
const int NPCDT_STUNORBLOCK = 4;
const int NPCDT_STUNORIGNORE = 5;
const int NPCDT_BLOCK1 = 6;
const int NPCDT_BLOCK2 = 7;
const int NPCDT_BLOCK4 = 8;
const int NPCDT_BLOCK6 = 9;
const int NPCDT_BLOCK8 = 10;
const int NPCDT_BLOCK = 11;
const int NPCDT_IGNORE1 = 12;
const int NPCDT_IGNORE = 13;
const int NPCDT_ONEHITKILL = 14; // One-hit knock-out
//! 2.50.xx defences ended here
//! Section 2: Implemented in 2.54+
const int NPCDT_BLOCK10 = 15; //If damage is less than 10
const int NPCDT_DOUBLE = 16; //Double damage
const int NPCDT_TRIPLE = 17; //Triple Damage
const int NPCDT_QUADRUPLE = 18; //4x damage
const int NPCDT_HEAL = 19; //recover the weapon damage in HP
const int NPCDT_TRIGGERSECRETS = 20; //Triggers all screen secrets.
const int NPCDT_FREEZE = 21; //Freeze solid--not finished.
//! 2.54 Defences that are visible in ZQuest and work, or
//! partially-work, end here.
//Two internal-only vars here, used as line separators:
const int NPCDT_UNUSED0 = 22; //Used as an editor message. This may be used for something else, later.
const
const int NPCDT_UNUSED1 = 23; //Used to show a horizontal line in the editor list. This may be used for something else, later
//! Section 3: Planned for 2.54->2.55, starting at case value '24'.
const int NPCDT_LEVELDAMAGE = 24; //Damage * item level
const int NPCDT_LEVELREDUCTION = 25; //Damage / item level
const int NPCDT_SPLIT = 26; //causes the enemy to split if it has a split attribute
const int NPCDT_REPLACE = 27; //replaced by next in list?
const int NPCDT_LEVELBLOCK2 = 28; //If item level is < 2: This needs a weapon variable that is set by
const int NPCDT_LEVELBLOCK3 = 29; //If item level is < 3: the item that generates it (itemdata::level stored to
const int NPCDT_LEVELBLOCK4 = 30; //If item level is < 4: weapon::level, or something similar; then a check to
const int NPCDT_LEVELBLOCK5 = 31; //If item level is < 5: read weapon::level in hit detection.
const int NPCDT_SHOCK = 32; //buzz blob
const int NPCDT_EXPLODESM = 33; //ew bombblast
const int NPCDT_EXPLODELG = 34; //super bomb blast
//Need 'harmless' versions, but they may as well be new 'Death Type' variable values. -Z
const int NPCDT_STONE = 35; //deadrock
const int NPCDT_BREAKSHIELD = 36; //break the enemy shield
const int NPCDT_RESTORESHIELD = 37; //if the enemy had a shield, reset it
const int NPCDT_DROPSPECIAL = 38; //drops a special item--but where to define it?
const int NPCDT_INCREASECOUNTER = 39; //but where to define the counter
const int NPCDT_REDUCECOUNTER = 40; //same problem
const int NPCDT_EXPLODENODAMAGE = 41; //boss death explosion
const int NPCDT_KILLNOSPLIT = 42; //If sufficient damage to kill it, a splitting enemy just dies.
const int NPCDT_TRIBBLE = 43; //Tribbles on hit.
const int NPCDT_FIREBALLSMALL = 44; //Makes a 1x1 fireball
const int NPCDT_FIREBALLLARGE = 45; //Makes a 3x3 fireball
const int NPCDT_SUMMON = 46; //Summons a number of enemies as defined by the summon properties of the npc.
const int NPCDT_WINGAME = 47; of Gamelon.
const int NPCDT_JUMP = 48; //Z3 stalfos
const int NPCDT_EATLINK = 49; //-G //Is this practical? We need special npc movement for it. -Zl npc movement for it. -Z
const int NPCDT_NEVERSPLIT; //Enemies that split on hit or death will not split.
//! Section 4: Custom Types With No Engine-Effects
/*
These lack an assigned value at present.
I would want them to start at an value that ends in
a '0' or a '1', such as '50' or '51' and run through
twenty contiguous indices, ending (for example) in
indices '69' or '70'.
*/
const int NPCDT_CUSTOM01;
// ... --->
const int NPCDT_CUSTOM20; //There would be 20 values for user/script-defined defence outcomes.
//! Section 4: Developer Insanity
const int NPCDT_SAVE; //Would call Game->Save()
const int NPCDT_RETRY; //Would act as F6->Retry
const int NPCDT_CONTINUE; //Would act as F6->Continue
const int NPCDT_ENDGAME; //Would act as Game->Quit().
const int NPCT_CRASHZC; //Clearly too little sleep.
Comments