
- Dying to a trap while attempting to open a container won't display the "get items in container" dialog with no alive character anymore. - Casting the priest Light spell now updates the surrounding areas automatically (like Light and Long Light mage spells; moving or waiting isn't required anymore). - Debug and Ghost mode are now turned off when loading a game. - The shop scrolling bar is now properly cleaned up when loading a game while shopping. - Items are now automatically combined when identified in a shop. To avoid any loss of information, the game now gives the identified item name in the message window (format : "Your item is identified. (full_item_name)" - If an "active" character (i.e solo fighting) is incapacitated (AP reduced to 0 because of webs, sleep, paralysis, etc) the rest of the party (if present) is now activated the next turn. - Entering a space containing the special node number 50 won't "force move" the party anymore. - Added a compatibility option (mainly testing purpose) : "specials are triggered when on boat". - The restart option of the death menu now works as intended. - Finally renamed the "Heal All" monster priest spell from "Full Heal" to "Revive Self". That should prevent any further confusion. - Using items now always updates the ap counter. - For the sake of consistency : changed labels "Power Potion" to "Energy Potion" potions in the Alchemy menu. - Redrawing the screen is now correctly handled by specials in all mode (e.g a special that changes a terrain will correctly redraw the screen, even if it was called by looking or moving). Scenario Editor : - Redid the custom pictures drawing implementation : custom pictures should now always appears and redraw (terrain, animated terrains, monsters, items, preset items, ...). - It is now possible to directly give the "Drain missiles" ability to bows and crossbows (use the "Weapon Ability" menu). Chokboyz git-svn-id: http://openexile.googlecode.com/svn/trunk@160 4ebdad44-0ea0-11de-aab3-ff745001d230
1112 lines
33 KiB
C
1112 lines
33 KiB
C
/*
|
|
* simpletypes.h
|
|
* BoE
|
|
*
|
|
* Created by Celtic Minstrel on 01/06/09.
|
|
*
|
|
*/
|
|
|
|
#ifndef _CONSTS_H
|
|
#define _CONSTS_H
|
|
|
|
#define NUM_OF_PCS 6
|
|
#define INVALID_PC 6
|
|
|
|
#define NUM_SOUNDS 100
|
|
|
|
#define NUM_OF_BOATS 30
|
|
#define NUM_OF_HORSES 30
|
|
|
|
/* stuff done flags */
|
|
#define SDF_IS_PARTY_SPLIT 304][0
|
|
#define SDF_PARTY_SPLIT_WHERE_PARTY_X 304][1
|
|
#define SDF_PARTY_SPLIT_WHERE_PARTY_Y 304][2
|
|
#define SDF_PARTY_SPLIT_PC 304][3
|
|
#define SDF_PARTY_SPLIT_TOWN 304][4 //for future use, hopefully
|
|
#define SDF_STEALTH 305][0
|
|
#define SDF_FLYING 305][1
|
|
#define SDF_DETECT_MONSTER 305][2
|
|
#define SDF_LAVAWALK 305][3
|
|
//#define SDF_SKIP_STARTUP 305][4 //is now a boolean : play_startup
|
|
#define SDF_LESS_SOUND 305][5
|
|
#define SDF_NO_TARGET_LINE 305][6
|
|
#define SDF_FASTER_BOOM_SPACES 305][7 //new (Classic Blades of Exile) option
|
|
#define SDF_MONSTERS_ALERTNESS 305][9 //is 0 if monsters are placid (not detected), 30 if an active monster is seeking the party (detected), reduced by one (until 0) each turn when no such monster exists
|
|
#define SFD_NO_MAPS 306][0
|
|
#define SDF_NO_SOUNDS 306][1
|
|
#define SDF_NO_FRILLS 306][2
|
|
#define SDF_ROOM_DESCS_AGAIN 306][3 //not used in the code
|
|
#define SDF_NO_INSTANT_HELP 306][4 //boolean
|
|
#define SDF_NO_SHORE_FRILLS 306][5
|
|
#define SDF_GAME_SPEED 306][6
|
|
#define SDF_EASY_MODE 306][7
|
|
#define SDF_LESS_WANDER_ENC 306][8
|
|
#define SDF_NO_TER_ANIM 306][9
|
|
#define SDF_USE_DARKER_GRAPHICS 307][0 //new (Classic Blades of Exile) option (use Mac graphics)
|
|
#define SDF_ASK_ABOUT_TEXT_BOX 307][1 //new (Classic Blades of Exile) option (display an "Ask About" text box in talk mode)
|
|
#define SDF_HIDDEN_MAP 308][0
|
|
#define SDF_LEGACY_SCENARIO 305][8 //0 is new scenario, 1 is legacy
|
|
|
|
#define SDF_COMPATIBILITY_LEGACY_DAY_REACHED 309][0
|
|
#define SDF_COMPATIBILITY_LEGACY_KILL_NODE 309][1
|
|
#define SDF_COMPATIBILITY_WORKING_TOWN_WATERFALL 309][2
|
|
#define SDF_COMPATIBILITY_FULL_TRIMS 309][3
|
|
#define SDF_COMPATIBILITY_SPECIALS_INTERRUPT_REST 309][4
|
|
#define SDF_COMPATIBILITY_ANYTIME_STAIRWAY_NODES 309][5
|
|
#define SDF_COMPATIBILITY_CHECK_TIMERS_WHILE_RESTING 309][6
|
|
#define SDF_COMPATIBILITY_TRIGGER_SPECIALS_ON_BOAT 309][7
|
|
|
|
#define INVALID_TOWN 200
|
|
|
|
typedef unsigned short m_num_t;
|
|
typedef unsigned short ter_num_t;
|
|
typedef signed short spec_num_t;
|
|
typedef signed short item_num_t;
|
|
typedef unsigned short str_num_t;
|
|
|
|
/* Monsters Attitudes :
|
|
0 - Friendly, Docile
|
|
1 - Hostile, Type A
|
|
2 - Friendly, Will fight
|
|
3 - Hostile, Type B
|
|
*/
|
|
|
|
/* overall mode; some seem to be missing */ //<=seems complete now
|
|
enum eMode {
|
|
MODE_OUTDOORS = 0,
|
|
MODE_TOWN = 1,
|
|
MODE_TALK_TOWN = 2, // looking for someone to talk
|
|
MODE_TOWN_TARGET = 3, // spell target, that is
|
|
MODE_USE = 4,
|
|
MODE_TOWN_DROPPING = 5,//dropping while in town mode
|
|
MODE_COMBAT = 10,
|
|
MODE_SPELL_TARGET = 11,
|
|
MODE_FIRING = 12, // firing from bow or crossbow
|
|
MODE_THROWING = 13, // throwing missile
|
|
MODE_FANCY_TARGET = 14, // spell target, that is
|
|
MODE_DROPPING = 15,//dropping while in combat mode
|
|
MODE_TALKING = 20,
|
|
MODE_SHOPPING = 21,
|
|
MODE_LOOK_OUTDOORS = 35, // looking at something
|
|
MODE_LOOK_TOWN = 36,
|
|
MODE_LOOK_COMBAT = 37,
|
|
MODE_STARTUP = 45,
|
|
MODE_REDRAW = 50,
|
|
MODE_CUTSCENE = 51,
|
|
};
|
|
|
|
enum eTrapType {
|
|
TRAP_RANDOM = 0,
|
|
TRAP_BLADE = 1,
|
|
TRAP_DART = 2,
|
|
TRAP_GAS = 3, // poisons all
|
|
TRAP_EXPLOSION = 4, // damages all => uses c_town.difficulty rather than trap_level to calculates damages (and even c_town.difficulty /13).
|
|
TRAP_SLEEP_RAY = 5,
|
|
TRAP_FALSE_ALARM = 6,
|
|
TRAP_DRAIN_XP = 7,
|
|
TRAP_ALERT = 8, // makes town hostile
|
|
TRAP_FLAMES = 9, // damages all => uses trap_level (*5) to calculates damages.
|
|
TRAP_DUMBFOUND = 10, //dumbfound all
|
|
TRAP_DISEASE = 11,
|
|
TRAP_DISEASE_ALL = 12,
|
|
};
|
|
|
|
enum eMainStatus {
|
|
MAIN_STATUS_ABSENT = 0, // absent, empty slot
|
|
MAIN_STATUS_ALIVE = 1,
|
|
MAIN_STATUS_DEAD = 2,
|
|
MAIN_STATUS_DUST = 3,
|
|
MAIN_STATUS_STONE = 4,
|
|
MAIN_STATUS_FLED = 5,
|
|
MAIN_STATUS_SURFACE = 6, // fled to surface?
|
|
MAIN_STATUS_WON = 7,
|
|
MAIN_STATUS_SPLIT = 10,
|
|
// The rest are not really necessary, but are here for completeness so that all valid values have a name.
|
|
MAIN_STATUS_SPLIT_ABSENT = MAIN_STATUS_SPLIT + MAIN_STATUS_ABSENT,
|
|
MAIN_STATUS_SPLIT_ALIVE = MAIN_STATUS_SPLIT + MAIN_STATUS_ALIVE,
|
|
MAIN_STATUS_SPLIT_DEAD = MAIN_STATUS_SPLIT + MAIN_STATUS_DEAD,
|
|
MAIN_STATUS_SPLIT_DUST = MAIN_STATUS_SPLIT + MAIN_STATUS_DUST,
|
|
MAIN_STATUS_SPLIT_STONE = MAIN_STATUS_SPLIT + MAIN_STATUS_STONE,
|
|
MAIN_STATUS_SPLIT_FLED = MAIN_STATUS_SPLIT + MAIN_STATUS_FLED,
|
|
MAIN_STATUS_SPLIT_SURFACE = MAIN_STATUS_SPLIT + MAIN_STATUS_SURFACE,
|
|
MAIN_STATUS_SPLIT_WON = MAIN_STATUS_SPLIT + MAIN_STATUS_WON,
|
|
};
|
|
|
|
/* adven[i].race */ //future races !!! only first 3 (zero, one and two) are legacy !
|
|
enum eRace {
|
|
RACE_UNKNOWN = -1, // for parameters to some functions; not valid in the class
|
|
RACE_HUMAN = 0,
|
|
RACE_NEPHIL = 1,
|
|
RACE_SLITH = 2,
|
|
RACE_VAHNATAI = 3,
|
|
RACE_REPTILE = 4,
|
|
RACE_BEAST = 5,
|
|
RACE_IMPORTANT = 6,
|
|
RACE_MAGE = 7,
|
|
RACE_PRIEST = 8,
|
|
RACE_HUMANOID = 9,
|
|
RACE_DEMON = 10,
|
|
RACE_UNDEAD = 11,
|
|
RACE_GIANT = 12,
|
|
RACE_SLIME = 13,
|
|
RACE_STONE = 14,
|
|
RACE_BUG = 15,
|
|
RACE_DRAGON = 16,
|
|
RACE_MAGICAL = 17,
|
|
RACE_PLANT = 18,
|
|
RACE_BIRD = 19,
|
|
}; // TODO: Expand and merge with eMonsterType
|
|
|
|
/* adven[i].status*/ //complete - assign a positive value for a help pc effect, a negative for harm pc
|
|
enum eStatus {
|
|
STATUS_POISONED_WEAPON = 0,
|
|
STATUS_BLESS_CURSE = 1,
|
|
STATUS_POISON = 2,
|
|
STATUS_HASTE_SLOW = 3,
|
|
STATUS_INVULNERABLE = 4,
|
|
STATUS_MAGIC_RESISTANCE = 5,
|
|
STATUS_WEBS = 6,
|
|
STATUS_DISEASE = 7,
|
|
STATUS_INVISIBLE = 8, //sanctuary
|
|
STATUS_DUMB = 9,
|
|
STATUS_MARTYRS_SHIELD = 10,
|
|
STATUS_ASLEEP = 11,
|
|
STATUS_PARALYZED = 12,
|
|
STATUS_ACID = 13,
|
|
};
|
|
|
|
/* adven[i].skills */ //complete
|
|
enum eSkill {
|
|
SKILL_STRENGTH = 0,
|
|
SKILL_DEXTERITY = 1,
|
|
SKILL_INTELLIGENCE = 2,
|
|
SKILL_EDGED_WEAPONS = 3,
|
|
SKILL_BASHING_WEAPONS = 4,
|
|
SKILL_POLE_WEAPONS = 5,
|
|
SKILL_THROWN_MISSILES = 6,
|
|
SKILL_ARCHERY = 7,
|
|
SKILL_DEFENSE = 8,
|
|
SKILL_MAGE_SPELLS = 9,
|
|
SKILL_PRIEST_SPELLS = 10,
|
|
SKILL_MAGE_LORE = 11,
|
|
SKILL_ALCHEMY = 12,
|
|
SKILL_ITEM_LORE = 13,
|
|
SKILL_DISARM_TRAPS = 14,
|
|
SKILL_LOCKPICKING = 15,
|
|
SKILL_ASSASSINATION = 16,
|
|
SKILL_POISON = 17,
|
|
SKILL_LUCK = 18,
|
|
};
|
|
|
|
/* adven[i].traits */ //complete
|
|
enum eTrait {
|
|
TRAIT_TOUGHNESS = 0,
|
|
TRAIT_MAGICALLY_APT = 1,
|
|
TRAIT_AMBIDEXTROUS = 2,
|
|
TRAIT_NIMBLE = 3,
|
|
TRAIT_CAVE_LORE = 4,
|
|
TRAIT_WOODSMAN = 5,
|
|
TRAIT_GOOD_CONST = 6,
|
|
TRAIT_HIGHLY_ALERT = 7,
|
|
TRAIT_STRENGTH = 8,
|
|
TRAIT_RECUPERATION = 9,
|
|
TRAIT_SLUGGISH = 10,
|
|
TRAIT_MAGICALLY_INEPT = 11,
|
|
TRAIT_FRAIL = 12,
|
|
TRAIT_CHRONIC_DISEASE = 13,
|
|
TRAIT_BAD_BACK = 14,
|
|
TRAIT_PACIFIST = 15,
|
|
};
|
|
|
|
/* Monster Type a.k.a m_type */
|
|
enum eMonsterType {
|
|
MONSTER_TYPE_UNKNOWN = -1, // for parameters to some functions; not valid in the class
|
|
MONSTER_TYPE_HUMAN = 0,
|
|
MONSTER_TYPE_REPTILE = 1,
|
|
MONSTER_TYPE_BEAST = 2,
|
|
MONSTER_TYPE_IMPORTANT = 3,
|
|
MONSTER_TYPE_MAGE = 4,
|
|
MONSTER_TYPE_PRIEST = 5,
|
|
MONSTER_TYPE_HUMANOID = 6,
|
|
MONSTER_TYPE_DEMON = 7,
|
|
MONSTER_TYPE_UNDEAD = 8,
|
|
MONSTER_TYPE_GIANT = 9,
|
|
MONSTER_TYPE_SLIME = 10,
|
|
MONSTER_TYPE_STONE = 11,
|
|
MONSTER_TYPE_BUG = 12,
|
|
MONSTER_TYPE_DRAGON = 13,
|
|
MONSTER_TYPE_MAGICAL = 14,
|
|
};
|
|
|
|
|
|
//future spec_skill !!!
|
|
/* Special Ability a.k.a spec_skill */
|
|
|
|
/*enum eMonstAbil {
|
|
MONST_NO_ABIL = 0,
|
|
// Missile abilities (extra1 = number of sided dice; extra2 = number of sides)
|
|
MONST_THROWS_DARTS = 10,
|
|
MONST_SHOOTS_ARROWS,
|
|
MONST_THROWS_SPEARS,
|
|
MONST_THROWS_ROCKS,
|
|
MONST_THROWS_RAZORDISKS,
|
|
MONST_GOOD_ARCHER,
|
|
MONST_SHOOTS_SPINES,
|
|
MONST_THROWS_KNIVES,
|
|
// Ray abilities (extra1 = type of damage / status where applicable)
|
|
MONST_DAMAGE_RAY = 20,
|
|
MONST_STATUS_RAY,
|
|
MONST_PETRIFY_RAY,
|
|
MONST_DRAIN_SP_RAY,
|
|
MONST_DRAIN_XP_RAY,
|
|
MONST_DRAIN_XP_DAMAGE_RAY,
|
|
MONST_KILL_RAY,
|
|
MONST_STEAL_FOOD_RAY,
|
|
MONST_STEAL_GOLD_RAY,
|
|
// Touch abilities (extra1 = type of damage / status where applicable)
|
|
MONST_DAMAGE_TOUCH = 30,
|
|
MONST_STATUS_TOUCH,
|
|
MONST_PETRIFY_TOUCH,
|
|
MONST_DRAIN_SP_TOUCH,
|
|
MONST_DRAIN_XP_TOUCH,
|
|
MONST_DRAIN_XP_DAMAGE_TOUCH,
|
|
MONST_KILL_TOUCH,
|
|
MONST_STEAL_FOOD_TOUCH,
|
|
MONST_STEAL_GOLD_TOUCH,
|
|
// Summon abilities (extra1 = which monster / type / species; extra2 = % chance)
|
|
MONST_SUMMON_ONE = 40,
|
|
MONST_SUMMON_TYPE,
|
|
MONST_SUMMON_SPECIES,
|
|
MONST_SUMMON_RANDOM,
|
|
MONST_MASS_SUMMON,
|
|
// Misc abilities (extra1 = field / special #; extra2 = % chance for radiate only)
|
|
MONST_SPLITS = 50,
|
|
MONST_FIELD_MISSILE,
|
|
MONST_MARTYRS_SHIELD,
|
|
MONST_ABSORB_SPELLS,
|
|
MONST_INVULNERABLE,
|
|
MONST_RADIATE,
|
|
MONST_CALL_LOCAL_SPECIAL,
|
|
MONST_CALL_GLOBAL_SPECIAL,
|
|
};*/
|
|
|
|
//at least for proper code comprehension
|
|
//legacy spec_skill
|
|
/* Special Ability a.k.a spec_skill */
|
|
|
|
#define MONSTER_NO_SPECIAL_ABILITY 0
|
|
#define MONSTER_THROWS_DARTS 1
|
|
#define MONSTER_SHOOTS_ARROWS 2
|
|
#define MONSTER_THROWS_SPEARS 3
|
|
#define MONSTER_THROWS_ROCKS1 4 //4-24 damages
|
|
#define MONSTER_THROWS_ROCKS2 5 //5-30 damages
|
|
#define MONSTER_THROWS_ROCKS3 6 //6-36 damages
|
|
#define MONSTER_THROWS_RAZORDISKS 7
|
|
#define MONSTER_PETRIFICATION_RAY 8
|
|
#define MONSTER_SP_DRAIN_RAY 9 //spell points drain ray
|
|
#define MONSTER_HEAT_RAY 10
|
|
#define MONSTER_INVISIBLE 11
|
|
#define MONSTER_SPLITS 12
|
|
#define MONSTER_MINDLESS 13
|
|
#define MONSTER_BREATHES_STINKING_CLOUDS 14
|
|
#define MONSTER_ICY_TOUCH 15
|
|
#define MONSTER_XP_DRAINING_TOUCH 16
|
|
#define MONSTER_ICY_AND_DRAINING_TOUCH 17
|
|
#define MONSTER_SLOWING_TOUCH 18
|
|
#define MONSTER_SHOOTS_WEB 19
|
|
#define MONSTER_GOOD_ARCHER 20
|
|
#define MONSTER_STEALS_FOOD 21
|
|
#define MONSTER_PERMANENT_MARTYRS_SHIELD 22
|
|
#define MONSTER_PARALYSIS_RAY 23
|
|
#define MONSTER_DUMBFOUNDING_TOUCH 24
|
|
#define MONSTER_DISEASE_TOUCH 25
|
|
#define MONSTER_ABSORB_SPELLS 26
|
|
#define MONSTER_WEB_TOUCH 27
|
|
#define MONSTER_SLEEP_TOUCH 28
|
|
#define MONSTER_PARALYSIS_TOUCH 29
|
|
#define MONSTER_PETRIFYING_TOUCH 30
|
|
#define MONSTER_ACID_TOUCH 31
|
|
#define MONSTER_BREATHES_SLEEP_CLOUDS 32
|
|
#define MONSTER_ACID_SPIT 33
|
|
#define MONSTER_SHOOTS_SPINES 34
|
|
#define MONSTER_DEATH_TOUCH 35
|
|
#define MONSTER_INVULNERABILITY 36
|
|
#define MONSTER_GUARD 37
|
|
|
|
/* Create Monsters/Fields */
|
|
//a.k.a radiate_1
|
|
//radiate_2 is the second field (monster to summon, probability to happens, etc)
|
|
|
|
#define MONSTER_NO_RADIATE 0
|
|
#define MONSTER_RADIATE_FIRE_FIELDS 1
|
|
#define MONSTER_RADIATE_ICE_FIELDS 2
|
|
#define MONSTER_RADIATE_SHOCK_FIELDS 3
|
|
#define MONSTER_RADIATE_ANTIMAGIC_FIELDS 4
|
|
#define MONSTER_RADIATE_SLEEP_FIELDS 5
|
|
#define MONSTER_RADIATE_STINKING_CLOUDS 6
|
|
// 7,8 and 9 are unused
|
|
#define MONSTER_SUMMON1 10 //5 percent chance
|
|
#define MONSTER_SUMMON2 11 //20 percent chance
|
|
#define MONSTER_SUMMON3 12 //50 percent chance
|
|
// 13 and 14 are unused
|
|
#define MONSTER_DEATH_TRIGGERS 15 //death triggers global special
|
|
|
|
/* Attack Types */
|
|
|
|
enum eMonsterAttackTypes{
|
|
MONSTER_ATTACK_SWINGS = 0,
|
|
MONSTER_ATTACK_CLAWS = 1,
|
|
MONSTER_ATTACK_BITES = 2,
|
|
MONSTER_ATTACK_SLIMES = 3,
|
|
MONSTER_ATTACK_PUNCHES = 4,
|
|
MONSTER_ATTACK_STINGS = 5,
|
|
MONSTER_ATTACK_CLUBS = 6,
|
|
MONSTER_ATTACK_BURNS = 7,
|
|
MONSTER_ATTACK_HARMS = 8,
|
|
MONSTER_ATTACK_STABS = 9,
|
|
};
|
|
|
|
/* Terrains Special Properties : scenario.ter_types[i].special */ //complete
|
|
|
|
enum eTerSpec {
|
|
TER_SPEC_NONE = 0,
|
|
TER_SPEC_CHANGE_WHEN_STEP_ON = 1,
|
|
TER_SPEC_DOES_FIRE_DAMAGE = 2,
|
|
TER_SPEC_DOES_COLD_DAMAGE = 3,
|
|
TER_SPEC_DOES_MAGIC_DAMAGE = 4,
|
|
TER_SPEC_POISON_LAND = 5,
|
|
TER_SPEC_DISEASED_LAND = 6,
|
|
TER_SPEC_CRUMBLING_TERRAIN = 7,
|
|
TER_SPEC_LOCKABLE_TERRAIN = 8,
|
|
TER_SPEC_UNLOCKABLE_TERRAIN = 9,
|
|
TER_SPEC_UNLOCKABLE_BASHABLE = 10,
|
|
TER_SPEC_IS_A_SIGN = 11,
|
|
TER_SPEC_CALL_LOCAL_SPECIAL = 12,
|
|
TER_SPEC_CALL_SCENARIO_SPECIAL = 13,
|
|
TER_SPEC_IS_A_CONTAINER = 14,
|
|
TER_SPEC_WATERFALL = 15,
|
|
TER_SPEC_CONVEYOR_NORTH = 16,
|
|
TER_SPEC_CONVEYOR_EAST = 17,
|
|
TER_SPEC_CONVEYOR_SOUTH = 18,
|
|
TER_SPEC_CONVEYOR_WEST = 19,
|
|
TER_SPEC_BLOCKED_TO_MONSTERS = 20,
|
|
TER_SPEC_TOWN_ENTRANCE = 21,
|
|
TER_SPEC_CHANGE_WHEN_USED = 22,
|
|
TER_SPEC_CALL_SPECIAL_WHEN_USED = 23,
|
|
|
|
//future specs
|
|
/*TER_SPEC_NONE = 0,
|
|
TER_SPEC_CHANGE_WHEN_STEP_ON = 1,
|
|
TER_SPEC_DAMAGING = 2,
|
|
TER_SPEC_BRIDGE = 3, // new
|
|
TER_SPEC_BED = 4, // new
|
|
TER_SPEC_DANGEROUS = 5,
|
|
TER_SPEC_UNUSED1 = 6,
|
|
TER_SPEC_CRUMBLING = 7,
|
|
TER_SPEC_LOCKABLE = 8,
|
|
TER_SPEC_UNLOCKABLE = 9,
|
|
TER_SPEC_UNUSED2 = 10,
|
|
TER_SPEC_IS_A_SIGN = 11,
|
|
TER_SPEC_CALL_SPECIAL = 12,
|
|
TER_SPEC_UNUSED3 = 13,
|
|
TER_SPEC_IS_A_CONTAINER = 14,
|
|
TER_SPEC_WATERFALL = 15,
|
|
TER_SPEC_CONVEYOR = 16,
|
|
TER_SPEC_UNUSED4 = 17,
|
|
TER_SPEC_UNUSED5 = 18,
|
|
TER_SPEC_UNUSED6 = 19,
|
|
TER_SPEC_BLOCKED_TO_MONSTERS = 20,
|
|
TER_SPEC_TOWN_ENTRANCE = 21,
|
|
TER_SPEC_CHANGE_WHEN_USED = 22,
|
|
TER_SPEC_CALL_SPECIAL_WHEN_USED = 23,
|
|
// 1. Change when step on (What to change to, number of sound, Unused)
|
|
// 2. Damaging terrain; can't rest here (Amount of damage done, multiplier, damage type)
|
|
// 3. Reserved
|
|
// 4. Reserved
|
|
// 5. Dangerous land; can't rest here; percentage chance may be 0 (Strength, Percentage chance, status type)
|
|
// 6. Reserved
|
|
// 7. Crumbling terrain (Terrain to change to, strength?, destroyed by what - quickfire, shatter/move mountains, or both)
|
|
// 8. Lockable terrain (Terrain to change to when locked, Unused, Unused)
|
|
// 9. Unlockable terrain (Terrain to change to when locked, Difficulty, can be bashed)
|
|
// 10. Reserved
|
|
// 11. Sign (Unused, Unused, Unused)
|
|
// 12. Call special (Special to call, local or scenario?, Unused)
|
|
// 13. Reserved
|
|
// 14. Container (Unused, Unused, Unused)
|
|
// 15. Waterfall (Direction, Unused, Unused)
|
|
// 16. Conveyor Belt (Direction, Unused, Unused)
|
|
// 17. Reserved
|
|
// 18. Reserved
|
|
// 19. Reserved
|
|
// 20. Blocked to Monsters (Unused, Unused, Unused)
|
|
// 21. Town entrance (Terrain type if hidden, Unused, Unused)
|
|
// 22. Change when Used (Terrain to change to when used, Number of sound, Unused)
|
|
// 23. Call special when used (Special to call, local or scenario?, Unused)
|
|
// 24. Bridge - if the party boats over it, they get the option to land. (Unused, Unused, Unused)*/
|
|
};
|
|
|
|
enum eTrimType {//hopefully used in the future
|
|
TRIM_NONE = 0,
|
|
TRIM_WALL = 1, // not a trim, but trims will conform to it as if it's the same ground type (eg stone wall)
|
|
TRIM_S, TRIM_SE, TRIM_E, TRIM_NE, TRIM_N, TRIM_NW, TRIM_W, TRIM_SW,
|
|
TRIM_NE_INNER, TRIM_SE_INNER, TRIM_SW_INNER, TRIM_NW_INNER,
|
|
TRIM_FRILLS = 14, // like on lava and underground water; no trim_ter required
|
|
TRIM_ROAD = 15, // the game will treat it like a road space and draw roads; no trim_ter required
|
|
TRIM_WALKWAY = 16, // the game will draw walkway corners; trim_ter is base terrain to draw on
|
|
TRIM_WATERFALL = 17, // special case for waterfalls
|
|
TRIM_CITY = 18, // the game will join roads up to this space but not draw roads on the space
|
|
};
|
|
|
|
|
|
/* items[i].type a.k.a type of weapon */
|
|
enum eWeapType {
|
|
ITEM_NOT_MELEE = 0,
|
|
ITEM_EDGED = 1,
|
|
ITEM_BASHING = 2,
|
|
ITEM_POLE = 3,
|
|
};
|
|
|
|
/* items[i].variety a.k.a item type (in editor) */
|
|
enum eItemType {
|
|
ITEM_TYPE_NO_ITEM = 0,
|
|
ITEM_TYPE_ONE_HANDED = 1,
|
|
ITEM_TYPE_TWO_HANDED = 2,
|
|
ITEM_TYPE_GOLD = 3,
|
|
ITEM_TYPE_BOW = 4,
|
|
ITEM_TYPE_ARROW = 5,
|
|
ITEM_TYPE_THROWN_MISSILE = 6,
|
|
ITEM_TYPE_POTION = 7, // potion/magic item
|
|
ITEM_TYPE_SCROLL = 8, // scroll/magic item
|
|
ITEM_TYPE_WAND = 9,
|
|
ITEM_TYPE_TOOL = 10,
|
|
ITEM_TYPE_FOOD = 11,
|
|
ITEM_TYPE_SHIELD = 12,
|
|
ITEM_TYPE_ARMOR = 13,
|
|
ITEM_TYPE_HELM = 14,
|
|
ITEM_TYPE_GLOVES = 15,
|
|
ITEM_TYPE_SHIELD_2 = 16,
|
|
// don't know why a second type of shield is used ; it is actually checked
|
|
// in the armor code (item >= 12 and <= 17)
|
|
// and you can't equip another (12) shield while wearing it ... I didn't
|
|
// find a single item with this property in the bladbase.exs ...
|
|
ITEM_TYPE_BOOTS = 17,
|
|
ITEM_TYPE_RING = 18,
|
|
ITEM_TYPE_NECKLACE = 19,
|
|
ITEM_TYPE_WEAPON_POISON = 20,
|
|
ITEM_TYPE_NON_USE_OBJECT = 21,
|
|
ITEM_TYPE_PANTS = 22,
|
|
ITEM_TYPE_CROSSBOW = 23,
|
|
ITEM_TYPE_BOLTS = 24,
|
|
ITEM_TYPE_MISSILE_NO_AMMO = 25, //e.g slings
|
|
ITEM_TYPE_UNUSED1 = 26, // these are here solely because they are options in the editor
|
|
ITEM_TYPE_UNUSED2 = 27,
|
|
};
|
|
|
|
/* items[i].ability */
|
|
enum eItemAbil {
|
|
// Weapon abilities
|
|
ITEM_NO_ABILITY = 0,
|
|
ITEM_FLAMING_WEAPON = 1,
|
|
ITEM_DEMON_SLAYER = 2,
|
|
ITEM_UNDEAD_SLAYER = 3,
|
|
ITEM_LIZARD_SLAYER = 4,
|
|
ITEM_GIANT_SLAYER = 5,
|
|
ITEM_MAGE_SLAYER = 6,
|
|
ITEM_PRIEST_SLAYER = 7,
|
|
ITEM_BUG_SLAYER = 8,
|
|
ITEM_ACIDIC_WEAPON = 9,
|
|
ITEM_SOULSUCKER = 10,
|
|
ITEM_DRAIN_MISSILES = 11,
|
|
ITEM_WEAK_WEAPON = 12,
|
|
ITEM_CAUSES_FEAR = 13,
|
|
ITEM_POISONED_WEAPON = 14,
|
|
// General abilities
|
|
ITEM_PROTECTION = 30,
|
|
ITEM_FULL_PROTECTION = 31,
|
|
ITEM_FIRE_PROTECTION = 32,
|
|
ITEM_COLD_PROTECTION = 33,
|
|
ITEM_POISON_PROTECTION = 34,
|
|
ITEM_MAGIC_PROTECTION = 35,
|
|
ITEM_ACID_PROTECTION = 36,
|
|
ITEM_SKILL = 37,
|
|
ITEM_STRENGTH = 38,
|
|
ITEM_DEXTERITY = 39,
|
|
ITEM_INTELLIGENCE = 40,
|
|
ITEM_ACCURACY = 41,
|
|
ITEM_THIEVING = 42,
|
|
ITEM_GIANT_STRENGTH = 43,
|
|
ITEM_LIGHTER_OBJECT = 44,
|
|
ITEM_HEAVIER_OBJECT = 45,
|
|
ITEM_OCCASIONAL_BLESS = 46,
|
|
ITEM_OCCASIONAL_HASTE = 47,
|
|
ITEM_LIFE_SAVING = 48,
|
|
ITEM_PROTECT_FROM_PETRIFY = 49,
|
|
ITEM_REGENERATE = 50,
|
|
ITEM_POISON_AUGMENT = 51,
|
|
ITEM_DISEASE_PARTY = 52,
|
|
ITEM_WILL = 53,
|
|
ITEM_FREE_ACTION = 54,
|
|
ITEM_SPEED = 55,
|
|
ITEM_SLOW_WEARER = 56,
|
|
ITEM_PROTECT_FROM_UNDEAD = 57,
|
|
ITEM_PROTECT_FROM_DEMONS = 58,
|
|
ITEM_PROTECT_FROM_HUMANOIDS = 59,
|
|
ITEM_PROTECT_FROM_REPTILES = 60,
|
|
ITEM_PROTECT_FROM_GIANTS = 61,
|
|
ITEM_PROTECT_FROM_DISEASE = 62,
|
|
// Nonspell Usable
|
|
ITEM_POISON_WEAPON = 70, //put poison on weapon
|
|
ITEM_BLESS_CURSE = 71,
|
|
ITEM_AFFECT_POISON = 72,
|
|
ITEM_HASTE_SLOW = 73,
|
|
ITEM_AFFECT_INVULN = 74,
|
|
ITEM_AFFECT_MAGIC_RES = 75,
|
|
ITEM_AFFECT_WEB = 76,
|
|
ITEM_AFFECT_DISEASE = 77,
|
|
ITEM_AFFECT_SANCTUARY = 78,
|
|
ITEM_AFFECT_DUMBFOUND = 79,
|
|
ITEM_AFFECT_MARTYRS_SHIELD = 80,
|
|
ITEM_AFFECT_SLEEP = 81,
|
|
ITEM_AFFECT_PARALYSIS = 82,
|
|
ITEM_AFFECT_ACID = 83,
|
|
ITEM_BLISS = 84,
|
|
ITEM_AFFECT_EXPERIENCE = 85,
|
|
ITEM_AFFECT_SKILL_POINTS = 86,
|
|
ITEM_AFFECT_HEALTH = 87,
|
|
ITEM_AFFECT_SPELL_POINTS = 88,
|
|
ITEM_DOOM = 89,
|
|
ITEM_LIGHT = 90,
|
|
ITEM_STEALTH = 91,
|
|
ITEM_FIREWALK = 92,
|
|
ITEM_FLYING = 93,
|
|
ITEM_MAJOR_HEALING = 94,
|
|
ITEM_CALL_SPECIAL = 95, //new (Classic Blades of Exile) item property
|
|
// Spell Usable
|
|
ITEM_SPELL_FLAME = 110,
|
|
ITEM_SPELL_FIREBALL = 111,
|
|
ITEM_SPELL_FIRESTORM = 112,
|
|
ITEM_SPELL_KILL = 113,
|
|
ITEM_SPELL_ICE_BOLT = 114,
|
|
ITEM_SPELL_SLOW = 115,
|
|
ITEM_SPELL_SHOCKWAVE = 116,
|
|
ITEM_SPELL_DISPEL_UNDEAD = 117,
|
|
ITEM_SPELL_RAVAGE_SPIRIT = 118,
|
|
ITEM_SPELL_SUMMONING = 119,
|
|
ITEM_SPELL_MASS_SUMMONING = 120,
|
|
ITEM_SPELL_ACID_SPRAY = 121,
|
|
ITEM_SPELL_STINKING_CLOUD = 122,
|
|
ITEM_SPELL_SLEEP_FIELD = 123,
|
|
ITEM_SPELL_VENOM = 124,
|
|
ITEM_SPELL_SHOCKSTORM = 125,
|
|
ITEM_SPELL_PARALYSIS = 126,
|
|
ITEM_SPELL_WEB_SPELL = 127,
|
|
ITEM_SPELL_STRENGTHEN_TARGET = 128, //wand of carrunos effect
|
|
ITEM_SPELL_QUICKFIRE = 129,
|
|
ITEM_SPELL_MASS_CHARM = 130,
|
|
ITEM_SPELL_MAGIC_MAP = 131,
|
|
ITEM_SPELL_DISPEL_BARRIER = 132,
|
|
ITEM_SPELL_MAKE_ICE_WALL = 133,
|
|
ITEM_SPELL_CHARM_SPELL = 134,
|
|
ITEM_SPELL_ANTIMAGIC_CLOUD = 135,
|
|
// Reagents
|
|
ITEM_HOLLY = 150, // Holly/Toadstool
|
|
ITEM_COMFREY_ROOT = 151,
|
|
ITEM_GLOWING_NETTLE = 152,
|
|
ITEM_WORMGRASS = 153, // Crypt Shroom/Wormgr.
|
|
ITEM_ASPTONGUE_MOLD = 154,
|
|
ITEM_EMBER_FLOWERS = 155,
|
|
ITEM_GRAYMOLD = 156,
|
|
ITEM_MANDRAKE = 157,
|
|
ITEM_SAPPHIRE = 158,
|
|
ITEM_SMOKY_CRYSTAL = 159,
|
|
ITEM_RESSURECTION_BALM = 160,
|
|
ITEM_LOCKPICKS = 161,
|
|
// Missile Abilities
|
|
ITEM_MISSILE_RETURNING = 170,
|
|
ITEM_MISSILE_LIGHTNING = 171,
|
|
ITEM_MISSILE_EXPLODING = 172,
|
|
ITEM_MISSILE_ACID = 173,
|
|
ITEM_MISSILE_SLAY_UNDEAD = 174,
|
|
ITEM_MISSILE_SLAY_DEMON = 175,
|
|
ITEM_MISSILE_HEAL_TARGET = 176,
|
|
};
|
|
|
|
/* damage type*/
|
|
/* used as parameter to some functions */
|
|
enum eDamageType {
|
|
DAMAGE_WEAPON = 0,
|
|
DAMAGE_FIRE = 1,
|
|
DAMAGE_POISON = 2,
|
|
DAMAGE_MAGIC = 3,
|
|
DAMAGE_UNBLOCKABLE = 4, //from the source files - the display is the same as the magic one (damage_monst in SPECIALS.cpp)
|
|
DAMAGE_COLD = 5,
|
|
DAMAGE_UNDEAD = 6, //from the source files - the display is the same as the weapon one
|
|
DAMAGE_DEMON = 7, //from the source files - the display is the same as the weapon one
|
|
// 8 and 9 aren't defined : doesn't print any damage. According to the source files the 9 is DAMAGE_MARKED though. Wrong ?
|
|
DAMAGE_MARKED = 10, // usage: DAMAGE_MARKED + damage_type
|
|
DAMAGE_WEAPON_MARKED = 10,
|
|
DAMAGE_FIRE_MARKED = 11,
|
|
DAMAGE_POISON_MARKED = 12,
|
|
DAMAGE_MAGIC_MARKED = 13,
|
|
DAMAGE_UNBLOCKABLE_MARKED = 14,
|
|
DAMAGE_COLD_MARKED = 15,
|
|
DAMAGE_UNDEAD_MARKED = 16,
|
|
DAMAGE_DEMON_MARKED = 17,
|
|
DAMAGE_NO_PRINT = 30, // usage: DAMAGE_NO_PRINT + damage_type
|
|
DAMAGE_WEAPON_NO_PRINT = 30,
|
|
DAMAGE_FIRE_NO_PRINT = 31,
|
|
DAMAGE_POISON_NO_PRINT = 32,
|
|
DAMAGE_MAGIC_NO_PRINT = 33,
|
|
DAMAGE_UNBLOCKABLE_NO_PRINT = 34,
|
|
DAMAGE_COLD_NO_PRINT = 35,
|
|
DAMAGE_UNDEAD_NO_PRINT = 36,
|
|
DAMAGE_DEMON_NO_PRINT = 37,
|
|
// What about both NO_PRINT and MARKED?
|
|
};
|
|
|
|
inline void operator -= (eDamageType& cur, eDamageType othr){
|
|
if((othr == DAMAGE_MARKED && cur >= DAMAGE_MARKED && cur < DAMAGE_NO_PRINT) ||
|
|
(othr == DAMAGE_NO_PRINT && cur >= DAMAGE_NO_PRINT))
|
|
cur = (eDamageType) ((int)cur - (int)othr);
|
|
}
|
|
|
|
inline void operator += (eDamageType& cur, eDamageType othr){
|
|
if((othr == DAMAGE_MARKED || othr == DAMAGE_NO_PRINT) && cur < DAMAGE_MARKED)
|
|
cur = (eDamageType) ((int)cur + (int)othr);
|
|
}
|
|
|
|
//class sbyte {
|
|
// signed char c;
|
|
//public:
|
|
// operator int() {return c;}
|
|
// sbyte(signed char k) : c(k) {}
|
|
//}
|
|
|
|
enum eSpecContext {
|
|
SPEC_OUT_MOVE = 0,
|
|
SPEC_TOWN_MOVE = 1,
|
|
SPEC_COMBAT_MOVE = 2,
|
|
SPEC_OUT_LOOK = 3,
|
|
SPEC_TOWN_LOOK = 4,
|
|
SPEC_ENTER_TOWN = 5,
|
|
SPEC_LEAVE_TOWN = 6,
|
|
SPEC_TALK = 7,
|
|
SPEC_USE_SPEC_ITEM = 8,
|
|
SPEC_TOWN_TIMER = 9,
|
|
SPEC_SCEN_TIMER = 10,
|
|
SPEC_PARTY_TIMER = 11,
|
|
SPEC_KILL_MONST = 12,
|
|
SPEC_OUTDOOR_ENC = 13,
|
|
SPEC_WIN_ENCOUNTER = 14,
|
|
SPEC_FLEE_ENCOUNTER = 15,
|
|
SPEC_TARGET = 16,
|
|
SPEC_USE_SPACE = 17,
|
|
SPEC_SEE_MONST = 18,
|
|
};
|
|
|
|
enum eSpecNodeType {
|
|
SPEC_ERROR = -1,
|
|
SPEC_NULL = 0,
|
|
SPEC_SET_SDF = 1,
|
|
SPEC_INC_SDF = 2,
|
|
SPEC_DISPLAY_MSG = 3,
|
|
SPEC_SECRET_PASSAGE = 4,
|
|
SPEC_DISPLAY_SM_MSG = 5,
|
|
SPEC_FLIP_SDF = 6,
|
|
SPEC_OUT_BLOCK = 7,
|
|
SPEC_TOWN_BLOCK = 8,
|
|
SPEC_FIGHT_BLOCK = 9,
|
|
SPEC_LOOK_BLOCK = 10,
|
|
SPEC_CANT_ENTER = 11,
|
|
SPEC_CHANGE_TIME = 12,
|
|
SPEC_SCEN_TIMER_START = 13,
|
|
SPEC_PLAY_SOUND = 14,
|
|
SPEC_CHANGE_HORSE_OWNER = 15,
|
|
SPEC_CHANGE_BOAT_OWNER = 16,
|
|
SPEC_SET_TOWN_VISIBILITY = 17,
|
|
SPEC_MAJOR_EVENT_OCCURRED = 18,
|
|
SPEC_FORCED_GIVE = 19,
|
|
SPEC_BUY_ITEMS_OF_TYPE = 20,
|
|
SPEC_CALL_GLOBAL = 21,
|
|
SPEC_SET_SDF_ROW = 22,
|
|
SPEC_COPY_SDF = 23,
|
|
SPEC_SANCTIFY = 24,
|
|
SPEC_REST = 25,
|
|
SPEC_WANDERING_WILL_FIGHT = 26,
|
|
SPEC_END_SCENARIO = 27,
|
|
SPEC_DISPLAY_PICTURE = 28,//new (Classic Blades of Exile) special
|
|
SPEC_ONCE_GIVE_ITEM = 50,
|
|
SPEC_ONCE_GIVE_SPEC_ITEM = 51,
|
|
SPEC_ONCE_NULL = 52,
|
|
SPEC_ONCE_SET_SDF = 53,
|
|
SPEC_ONCE_DISPLAY_MSG = 54,
|
|
SPEC_ONCE_DIALOG = 55,
|
|
SPEC_ONCE_DIALOG_TERRAIN = 56,
|
|
SPEC_ONCE_DIALOG_MONSTER = 57,
|
|
SPEC_ONCE_GIVE_ITEM_DIALOG = 58,
|
|
SPEC_ONCE_GIVE_ITEM_TERRAIN = 59,
|
|
SPEC_ONCE_GIVE_ITEM_MONSTER = 60,
|
|
SPEC_ONCE_OUT_ENCOUNTER = 61,
|
|
SPEC_ONCE_TOWN_ENCOUNTER = 62,
|
|
SPEC_ONCE_TRAP = 63,
|
|
SPEC_SELECT_PC = 80,
|
|
SPEC_DAMAGE = 81,
|
|
SPEC_AFFECT_HP = 82,
|
|
SPEC_AFFECT_SP = 83,
|
|
SPEC_AFFECT_XP = 84,
|
|
SPEC_AFFECT_SKILL_PTS = 85,
|
|
SPEC_AFFECT_DEADNESS = 86,
|
|
SPEC_AFFECT_POISON = 87,
|
|
SPEC_AFFECT_SPEED = 88,
|
|
SPEC_AFFECT_INVULN = 89,
|
|
SPEC_AFFECT_MAGIC_RES = 90,
|
|
SPEC_AFFECT_WEBS = 91,
|
|
SPEC_AFFECT_DISEASE = 92,
|
|
SPEC_AFFECT_SANCTUARY = 93,
|
|
SPEC_AFFECT_CURSE_BLESS = 94,
|
|
SPEC_AFFECT_DUMBFOUND = 95,
|
|
SPEC_AFFECT_SLEEP = 96,
|
|
SPEC_AFFECT_PARALYSIS = 97,
|
|
SPEC_AFFECT_STAT = 98,
|
|
SPEC_AFFECT_MAGE_SPELL = 99,
|
|
SPEC_AFFECT_PRIEST_SPELL = 100,
|
|
SPEC_AFFECT_GOLD = 101,
|
|
SPEC_AFFECT_FOOD = 102,
|
|
SPEC_AFFECT_ALCHEMY = 103,
|
|
SPEC_AFFECT_STEALTH = 104,
|
|
SPEC_AFFECT_FIREWALK = 105,
|
|
SPEC_AFFECT_FLIGHT = 106,
|
|
SPEC_IF_SDF = 130,
|
|
SPEC_IF_TOWN_NUM = 131,
|
|
SPEC_IF_RANDOM = 132,
|
|
SPEC_IF_HAVE_SPECIAL_ITEM = 133,
|
|
SPEC_IF_SDF_COMPARE = 134,
|
|
SPEC_IF_TOWN_TER_TYPE = 135,
|
|
SPEC_IF_OUT_TER_TYPE = 136,
|
|
SPEC_IF_HAS_GOLD = 137,
|
|
SPEC_IF_HAS_FOOD = 138,
|
|
SPEC_IF_ITEM_CLASS_ON_SPACE = 139,
|
|
SPEC_IF_HAVE_ITEM_CLASS = 140,
|
|
SPEC_IF_EQUIP_ITEM_CLASS = 141,
|
|
SPEC_IF_HAS_GOLD_AND_TAKE = 142,
|
|
SPEC_IF_HAS_FOOD_AND_TAKE = 143,
|
|
SPEC_IF_ITEM_CLASS_ON_SPACE_AND_TAKE = 144,
|
|
SPEC_IF_HAVE_ITEM_CLASS_AND_TAKE = 145,
|
|
SPEC_IF_EQUIP_ITEM_CLASS_AND_TAKE = 146,
|
|
SPEC_IF_DAY_REACHED = 147,
|
|
SPEC_IF_BARRELS = 148,
|
|
SPEC_IF_CRATES = 149,
|
|
SPEC_IF_EVENT_OCCURRED = 150,
|
|
SPEC_IF_HAS_CAVE_LORE = 151,
|
|
SPEC_IF_HAS_WOODSMAN = 152,
|
|
SPEC_IF_ENOUGH_STATISTIC = 153,//modified (Classic Blades of Exile) special node
|
|
SPEC_IF_TEXT_RESPONSE = 154,
|
|
SPEC_IF_SDF_EQ = 155,
|
|
SPEC_IF_ENOUGH_SPECIES = 156,
|
|
SPEC_SET_TOWN_STATUS = 170,
|
|
SPEC_TOWN_CHANGE_TER = 171,
|
|
SPEC_TOWN_SWAP_TER = 172,
|
|
SPEC_TOWN_TRANS_TER = 173,
|
|
SPEC_TOWN_MOVE_PARTY = 174,
|
|
SPEC_TOWN_HIT_SPACE = 175,
|
|
SPEC_TOWN_EXPLODE_SPACE = 176,
|
|
SPEC_TOWN_LOCK_SPACE = 177,
|
|
SPEC_TOWN_UNLOCK_SPACE = 178,
|
|
SPEC_TOWN_SFX_BURST = 179,
|
|
SPEC_TOWN_CREATE_WANDERING = 180,
|
|
SPEC_TOWN_PLACE_MONST = 181,
|
|
SPEC_TOWN_DESTROY_MONST = 182,
|
|
SPEC_TOWN_NUKE_MONSTS = 183,
|
|
SPEC_TOWN_GENERIC_LEVER = 184,
|
|
SPEC_TOWN_GENERIC_PORTAL = 185,
|
|
SPEC_TOWN_GENERIC_BUTTON = 186,
|
|
SPEC_TOWN_GENERIC_STAIR = 187,
|
|
SPEC_TOWN_LEVER = 188,
|
|
SPEC_TOWN_PORTAL = 189,
|
|
SPEC_TOWN_STAIR = 190,
|
|
SPEC_TOWN_RELOCATE = 191, // Relocate outdoors
|
|
SPEC_TOWN_PLACE_ITEM = 192,
|
|
SPEC_TOWN_SPLIT_PARTY = 193,
|
|
SPEC_TOWN_REUNITE_PARTY = 194,
|
|
SPEC_TOWN_TIMER_START = 195,
|
|
SPEC_TOWN_CHANGE_LIGHTNING = 196,//new (Classic Blades of Exile) special node
|
|
SPEC_TOWN_CHANGE_ATTITUDE = 197,//new (Classic Blades of Exile) special node
|
|
SPEC_RECT_PLACE_FIRE = 200,
|
|
SPEC_RECT_PLACE_FORCE = 201,
|
|
SPEC_RECT_PLACE_ICE = 202,
|
|
SPEC_RECT_PLACE_BLADE = 203,
|
|
SPEC_RECT_PLACE_SCLOUD = 204,
|
|
SPEC_RECT_PLACE_SLEEP = 205,
|
|
SPEC_RECT_PLACE_QUICKFIRE = 206,
|
|
SPEC_RECT_PLACE_FIRE_BARR = 207,
|
|
SPEC_RECT_PLACE_FORCE_BARR = 208,
|
|
SPEC_RECT_CLEANSE = 209,
|
|
SPEC_RECT_PLACE_SFX = 210,
|
|
SPEC_RECT_PLACE_OBJECT = 211, // place barrels, etc
|
|
SPEC_RECT_MOVE_ITEMS = 212,
|
|
SPEC_RECT_DESTROY_ITEMS = 213,
|
|
SPEC_RECT_CHANGE_TER = 214,
|
|
SPEC_RECT_SWAP_TER = 215,
|
|
SPEC_RECT_TRANS_TER = 216,
|
|
SPEC_RECT_LOCK = 217,
|
|
SPEC_RECT_UNLOCK = 218,
|
|
SPEC_OUT_MAKE_WANDER = 225,
|
|
SPEC_OUT_CHANGE_TER = 226,
|
|
SPEC_OUT_PLACE_ENCOUNTER = 227,
|
|
SPEC_OUT_MOVE_PARTY = 228,
|
|
SPEC_OUT_STORE = 229,
|
|
};
|
|
|
|
enum eTalkNodeType {
|
|
TALK_REGULAR = 0,
|
|
TALK_DEP_ON_SDF = 1,
|
|
TALK_SET_SDF = 2,
|
|
TALK_INN = 3,
|
|
TALK_DEP_ON_TIME = 4,
|
|
TALK_DEP_ON_TIME_AND_EVENT = 5,
|
|
TALK_DEP_ON_TOWN = 6,
|
|
TALK_BUY_ITEMS = 7,
|
|
TALK_TRAINING = 8,
|
|
TALK_BUY_MAGE = 9,
|
|
TALK_BUY_PRIEST = 10,
|
|
TALK_BUY_ALCHEMY = 11,
|
|
TALK_BUY_HEALING = 12,
|
|
TALK_SELL_WEAPONS = 13,
|
|
TALK_SELL_ARMOR = 14,
|
|
TALK_SELL_ITEMS = 15,
|
|
TALK_IDENTIFY = 16,
|
|
TALK_ENCHANT = 17,
|
|
TALK_BUY_INFO = 18,
|
|
TALK_BUY_SDF = 19,
|
|
TALK_BUY_SHIP = 20,
|
|
TALK_BUY_HORSE = 21,
|
|
TALK_BUY_SPEC_ITEM = 22,
|
|
TALK_BUY_JUNK = 23,
|
|
TALK_BUY_TOWN_LOC = 24,
|
|
TALK_END_FORCE = 25,
|
|
TALK_END_FIGHT = 26,
|
|
TALK_END_ALARM = 27, // Town hostile
|
|
TALK_END_DIE = 28,
|
|
TALK_CALL_TOWN_SPEC = 29,
|
|
TALK_CALL_SCEN_SPEC = 30,
|
|
};
|
|
|
|
enum eMageSpells {
|
|
SPELL_MAGE_LIGHT = 0,
|
|
SPELL_MAGE_SPARK = 1,
|
|
SPELL_MAGE_MINOR_HASTE = 2,
|
|
SPELL_MAGE_STRENGTH = 3,
|
|
SPELL_MAGE_SCARE = 4,
|
|
SPELL_MAGE_FLAME_CLOUD = 5,
|
|
SPELL_MAGE_IDENTIFY = 6,
|
|
SPELL_MAGE_SCRY_MONSTER = 7,
|
|
SPELL_MAGE_GOO = 8,
|
|
SPELL_MAGE_TRUE_SIGHT = 9,
|
|
SPELL_MAGE_MINOR_POISON = 10,
|
|
SPELL_MAGE_FLAME = 11,
|
|
SPELL_MAGE_SLOW = 12,
|
|
SPELL_MAGE_DUMBFOUND = 13,
|
|
SPELL_MAGE_ENVENOM = 14,
|
|
SPELL_MAGE_STINKING_CLOUD = 15,
|
|
SPELL_MAGE_SUMMON_BEAST = 16,
|
|
SPELL_MAGE_CONFLAGRATION = 17,
|
|
SPELL_MAGE_DISPEL_FIELDS = 18,
|
|
SPELL_MAGE_SLEEP_CLOUD = 19,
|
|
SPELL_MAGE_UNLOCK = 20,
|
|
SPELL_MAGE_HASTE = 21,
|
|
SPELL_MAGE_FIREBALL = 22,
|
|
SPELL_MAGE_LONG_LIGHT = 23,
|
|
SPELL_MAGE_FEAR = 24,
|
|
SPELL_MAGE_WALL_OF_FORCE = 25,
|
|
SPELL_MAGE_WEAK_SUMMONING = 26,
|
|
SPELL_MAGE_FLAME_ARROWS = 27,
|
|
SPELL_MAGE_WEB = 28,
|
|
SPELL_MAGE_RESIST_MAGIC = 29,
|
|
SPELL_MAGE_POISON = 30,
|
|
SPELL_MAGE_ICE_BOLT = 31,
|
|
SPELL_MAGE_SLOW_GROUP = 32,
|
|
SPELL_MAGE_MAGIC_MAP = 33,
|
|
SPELL_MAGE_CAPTURE_SOUL = 34,
|
|
SPELL_MAGE_SIMULACRUM = 35,
|
|
SPELL_MAGE_VENOM_ARROWS = 36,
|
|
SPELL_MAGE_WALL_OF_ICE = 37,
|
|
SPELL_MAGE_STEALTH = 38,
|
|
SPELL_MAGE_MAJOR_HASTE = 39,
|
|
SPELL_MAGE_FIRE_STORM = 40,
|
|
SPELL_MAGE_DISPEL_BARRIER = 41,
|
|
SPELL_MAGE_FIRE_BARRIER = 42,
|
|
SPELL_MAGE_SUMMONING = 43,
|
|
SPELL_MAGE_SHOCKSTORM = 44,
|
|
SPELL_MAGE_SPRAY_FIELDS = 45,
|
|
SPELL_MAGE_MAJOR_POISON = 46,
|
|
SPELL_MAGE_GROUP_FEAR = 47,
|
|
SPELL_MAGE_KILL = 48,
|
|
SPELL_MAGE_PARALYSIS = 49,
|
|
SPELL_MAGE_DAEMON = 50,
|
|
SPELL_MAGE_ANTIMAGIC_CLOUD = 51,
|
|
SPELL_MAGE_MINDDUEL = 52,
|
|
SPELL_MAGE_FLIGHT = 53,
|
|
SPELL_MAGE_SHOCKWAVE = 54,
|
|
SPELL_MAGE_MAJOR_BLESSING = 55,
|
|
SPELL_MAGE_MASS_PARALYSIS = 56,
|
|
SPELL_MAGE_PROTECTION = 57,
|
|
SPELL_MAGE_MAJOR_SUMMON = 58,
|
|
SPELL_MAGE_FORCE_BARRIER = 59,
|
|
SPELL_MAGE_QUICKFIRE = 60,
|
|
SPELL_MAGE_DEATH_ARROWS = 61,
|
|
};
|
|
|
|
enum ePriestSpells {
|
|
SPELL_PRIEST_MINOR_BLESS = 0,
|
|
SPELL_PRIEST_MINOR_HEAL = 1,
|
|
SPELL_PRIEST_WEAKEN_POISON = 2,
|
|
SPELL_PRIEST_TURN_UNDEAD = 3,
|
|
SPELL_PRIEST_LOCATION = 4,
|
|
SPELL_PRIEST_SANCTUARY = 5,
|
|
SPELL_PRIEST_SYMBIOSIS = 6,
|
|
SPELL_PRIEST_MINOR_MANNA = 7,
|
|
SPELL_PRIEST_RITUAL_SANCTIFY = 8,
|
|
SPELL_PRIEST_STUMBLE = 9,
|
|
SPELL_PRIEST_BLESS = 10,
|
|
SPELL_PRIEST_CURE_POISON = 11,
|
|
SPELL_PRIEST_CURSE = 12,
|
|
SPELL_PRIEST_LIGHT = 13,
|
|
SPELL_PRIEST_WOUND = 14,
|
|
SPELL_PRIEST_SUMMON_SPIRIT = 15,
|
|
SPELL_PRIEST_MOVE_MOUNTAINS = 16,
|
|
SPELL_PRIEST_CHARM_FOE = 17,
|
|
SPELL_PRIEST_DISEASE = 18,
|
|
SPELL_PRIEST_AWAKEN = 19,
|
|
SPELL_PRIEST_HEAL = 20,
|
|
SPELL_PRIEST_LIGHT_HEAL_ALL = 21,
|
|
SPELL_PRIEST_HOLY_SCOURGE = 22,
|
|
SPELL_PRIEST_DETECT_LIFE = 23,
|
|
SPELL_PRIEST_CURE_PARALYSIS = 24,
|
|
SPELL_PRIEST_MANNA = 25,
|
|
SPELL_PRIEST_FORCEFIELD = 26,
|
|
SPELL_PRIEST_CURE_DISEASE = 27,
|
|
SPELL_PRIEST_RESTORE_MIND = 28,
|
|
SPELL_PRIEST_SMITE = 29,
|
|
SPELL_PRIEST_CURE_PARTY = 30,
|
|
SPELL_PRIEST_CURSE_ALL = 31,
|
|
SPELL_PRIEST_DISPEL_UNDEAD = 32,
|
|
SPELL_PRIEST_REMOVE_CURSE = 33,
|
|
SPELL_PRIEST_STICKS_TO_SNAKES = 34,
|
|
SPELL_PRIEST_MARTYRS_SHIELD = 35,
|
|
SPELL_PRIEST_CLEANSE = 36,
|
|
SPELL_PRIEST_FIREWALK = 37,
|
|
SPELL_PRIEST_BLESS_PARTY = 38,
|
|
SPELL_PRIEST_MAJOR_HEAL = 39,
|
|
SPELL_PRIEST_RAISE_DEAD = 40,
|
|
SPELL_PRIEST_FLAMESTRIKE = 41,
|
|
SPELL_PRIEST_MASS_SANCTUARY = 42,
|
|
SPELL_PRIEST_SUMMON_HOST = 43,
|
|
SPELL_PRIEST_SHATTER = 44,
|
|
SPELL_PRIEST_DISPEL_FIELDS = 45,
|
|
SPELL_PRIEST_HEAL_ALL = 46,
|
|
SPELL_PRIEST_REVIVE = 47,
|
|
SPELL_PRIEST_HYPERACTIVITY = 48,
|
|
SPELL_PRIEST_DESTONE = 49,
|
|
SPELL_PRIEST_GUARDIAN = 50,
|
|
SPELL_PRIEST_MASS_CHARM = 51,
|
|
SPELL_PRIEST_PROTECTIVE_CIRCLE = 52,
|
|
SPELL_PRIEST_PESTILENCE = 53,
|
|
SPELL_PRIEST_REVIVE_ALL = 54,
|
|
SPELL_PRIEST_RAVAGE_SPIRIT = 55,
|
|
SPELL_PRIEST_RESURRECT = 56,
|
|
SPELL_PRIEST_DIVINE_THUD = 57,
|
|
SPELL_PRIEST_AVATAR = 58,
|
|
SPELL_PRIEST_WALL_OF_BLADES = 59,
|
|
SPELL_PRIEST_WORD_OF_RECALL = 60,
|
|
SPELL_PRIEST_MAJOR_CLEANSING = 61,
|
|
};
|
|
|
|
//Specific spells called when using items
|
|
enum eItemsSpells {
|
|
SPELL_ITEMS_STRENGHTEN_TARGET = 62, //wand of carrunos effect
|
|
SPELL_ITEMS_ICE_WALL_BALLS = 64, //circular radius rather than straight wall
|
|
SPELL_ITEMS_GOO_BOMB = 65, //greater radius than webs
|
|
SPELL_ITEMS_FOUL_VAPORS = 66, //greater radius than stinking cloud
|
|
SPELL_ITEMS_SPRAY_ACID = 68,
|
|
SPELL_ITEMS_PARALYZE = 69, //powerful paralysis (won't break out of it soon)
|
|
};
|
|
|
|
enum eMonstersMageSpells {
|
|
SPELL_MONST_MAGE_NO_SPELL = 0,
|
|
SPELL_MONST_MAGE_SPARK = 1,
|
|
SPELL_MONST_MAGE_MINOR_HASTE = 2,
|
|
SPELL_MONST_MAGE_STRENGH = 3,
|
|
SPELL_MONST_MAGE_FLAME_CLOUD = 4,
|
|
SPELL_MONST_MAGE_FLAME = 5,
|
|
SPELL_MONST_MAGE_MINOR_POISON = 6,
|
|
SPELL_MONST_MAGE_SLOW = 7,
|
|
SPELL_MONST_MAGE_DUMBFOUND = 8,
|
|
SPELL_MONST_MAGE_STINKING_CLOUD = 9,
|
|
SPELL_MONST_MAGE_SUMMON_BEAST = 10,
|
|
SPELL_MONST_MAGE_CONFLAGRATION = 11,
|
|
SPELL_MONST_MAGE_FIREBALL = 12,
|
|
SPELL_MONST_MAGE_WEAK_SUMMONING = 13,
|
|
SPELL_MONST_MAGE_WEB = 14,
|
|
SPELL_MONST_MAGE_POISON = 15,
|
|
SPELL_MONST_MAGE_ICE_BOLT = 16,
|
|
SPELL_MONST_MAGE_SLOW_GROUP = 17,
|
|
SPELL_MONST_MAGE_MAJOR_HASTE = 18,
|
|
SPELL_MONST_MAGE_FIRESTORM = 19,
|
|
SPELL_MONST_MAGE_SUMMONING = 20,
|
|
SPELL_MONST_MAGE_SHOCKSTORM = 21,
|
|
SPELL_MONST_MAGE_MAJOR_POISON = 22,
|
|
SPELL_MONST_MAGE_KILL = 23,
|
|
SPELL_MONST_MAGE_DAEMON = 24,
|
|
SPELL_MONST_MAGE_MAJOR_BLESSING = 25,
|
|
SPELL_MONST_MAGE_MAJOR_SUMMONING = 26,
|
|
SPELL_MONST_MAGE_SHOCKWAVE = 27,
|
|
};
|
|
|
|
enum eMonstersPriestSpells {
|
|
SPELL_MONST_PRIEST_NO_SPELL = 0,
|
|
SPELL_MONST_PRIEST_MINOR_BLESS = 1,
|
|
SPELL_MONST_PRIEST_LIGHT_HEAL = 2,
|
|
SPELL_MONST_PRIEST_WRACK = 3,
|
|
SPELL_MONST_PRIEST_STUMBLE = 4,
|
|
SPELL_MONST_PRIEST_BLESS = 5,
|
|
SPELL_MONST_PRIEST_CURSE = 6,
|
|
SPELL_MONST_PRIEST_WOUND = 7,
|
|
SPELL_MONST_PRIEST_SUMMON_SPIRIT = 8,
|
|
SPELL_MONST_PRIEST_DISEASE = 9,
|
|
SPELL_MONST_PRIEST_HEAL = 10,
|
|
SPELL_MONST_PRIEST_HOLY_SCOURGE = 11,
|
|
SPELL_MONST_PRIEST_SMITE = 12,
|
|
SPELL_MONST_PRIEST_CURSE_ALL = 13,
|
|
SPELL_MONST_PRIEST_STICKS_TO_SNAKES = 14,
|
|
SPELL_MONST_PRIEST_MARTYRS_SHIELD = 15,
|
|
SPELL_MONST_PRIEST_BLESS_ALL = 16,
|
|
SPELL_MONST_PRIEST_MAJOR_HEAL = 17,
|
|
SPELL_MONST_PRIEST_FLAMESTRIKE = 18,
|
|
SPELL_MONST_PRIEST_SUMMON_HOST = 19,
|
|
SPELL_MONST_PRIEST_REVIVE_SELF = 20,// renamed from heal all, to avoid confusion (this isn't a mass spell !)
|
|
SPELL_MONST_PRIEST_UNHOLY_RAVAGING = 21,
|
|
SPELL_MONST_PRIEST_SUMMON_GUARDIAN = 22,
|
|
SPELL_MONST_PRIEST_PESTILENCE = 23,
|
|
SPELL_MONST_PRIEST_REVIVE_ALL = 24,
|
|
SPELL_MONST_PRIEST_AVATAR = 25,
|
|
SPELL_MONST_PRIEST_DIVINE_THUD = 26,
|
|
};
|
|
|
|
enum eShopTypes {
|
|
SHOP_WEAPON_SHOP = 0,
|
|
SHOP_ARMOR_SHOP = 1,
|
|
SHOP_MISC_SHOP = 2,
|
|
SHOP_HEALER = 3,
|
|
SHOP_FOOD = 4,
|
|
SHOP_MAGIC_SHOP_1 = 5,
|
|
SHOP_MAGIC_SHOP_2 = 6,
|
|
SHOP_MAGIC_SHOP_3 = 7,
|
|
SHOP_MAGIC_SHOP_4 = 8,
|
|
SHOP_MAGIC_SHOP_5 = 9,
|
|
SHOP_MAGE_SPELLS = 10,
|
|
SHOP_PRIEST_SPELLS = 11,
|
|
SHOP_ALCHEMY = 12,
|
|
};
|
|
|
|
#endif
|