/* 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.