uox3/source/enums.h
Xoduz e38be292e3 0.99.6d
Cleaned up an issue with last commit where wrong npclists were used in some spawn regions
Made a few additional adjustments to the new spawn regions in Lost Lands/New Haven
Included more changes related to poison updates that should've been in previous commit (like the complete UOX.INI support for POISONCORROSIONSYSTEM setting)
Adjusted region setup for New Haven to set the individual "building" regions within as a sub-region of the main town (regions.dfn)
Fixed an issue where the displayed HP of an equipped item would not update correctly
Further updates to convert timers 32-bit to 64-bit. This affects and addresses some potential issues with: Character creation/NPC guild-join timestamps, NPC movement, combat timers, idle timeouts, item decay, spellcasting
Added support for new JS Events that can trigger from global script, and can be used to store persistent custom entries in players' paperdoll profiles:
	onProfileRequest( socket, profileOwnerChar ) - Triggers when client requests data for a paperdoll profile
	onProfileUpdate( socket, updatedText ) - Triggers when client sends updated data from paperdoll profile
Added two new helper functions in code that allows faster (but very slightly less accurate) distance checks between two points: 	GetApproxDist( Point3_st a, Point3_st b )
	GetApproxDist( CBaseObject *a, CBaseObject *b )
Improved pathfinding for NPCs attempting to follow another character, by adopting a system of weighted variables to help the NPC determine when to recalculate the path vs when to stick with the old, combined with faster distance checks via GetApproxDist(). The end result of this is faster, smarter and more responsive NPC followers and NPC opponents in combat. The variables influencing this include: how far the target has moved from last pathfind target location, whether NPC is heading in the overall right direction or not, time since last path calculation and some small randomization to avoid edge case jitters.
Updated default command levels in commands.dfn, code and scripts to support the Seer role and make space for some custom roles. These are the new defaults as listed in commands.dfn, which should not be changed as they are linked to specific enums in code. Do take note that this might invalidate command levels for existing GMs/Seers/Counselors, who might need another round of 'make gm/seer/cns from an admin:
	ADMIN - command level 10
	GM - command level 9
	SEER - command level 7
	CNS - command level 4
	PLAYER - command level 0
Updated how UOX3 makes use of the account-level flags 0x2000 (Seer) and 0x4000 (Counselor). If either of these flags are set on an account, all new characters created on the accounts will automatically receive the relevant command privileges.
Fixed an issue with 'wholist command that prevented admin characters from seeing characters with lower privilege levels in the list (js/commands/wholist.js)
Fixed an issue with hiding/GM hide that prevented admin characters from seeing hidden characters with lower privilege levels in the world
UOX3 now includes the cross-platform, header-only utf8cpp library found at https://github.com/nemtrif/utfcpp and freely available under Boost Software License v1.0. The immediate use-case for this is in code right now is to better handle strings related to custom paperdoll profiles, but will also look to make more heavy use of this in future updates
2025-06-28 22:37:42 +08:00

965 lines
18 KiB
C

#ifndef __UOX3_ENUMS__
#define __UOX3_ENUMS__
enum DistinctLanguage
{
DL_DEFAULT = 0,
DL_ENGLISH,
DL_GERMAN,
DL_SPANISH,
DL_FRENCH,
DL_PORTUGUESE,
DL_ITALIAN,
DL_CZECH,
DL_POLISH,
DL_COUNT
};
enum UnicodeTypes
{
ZERO = 0,
UT_ARA,
UT_ARI,
UT_ARE,
UT_ARL,
UT_ARG,
UT_ARM,
UT_ART,
UT_ARO,
UT_ARY,
UT_ARS,
UT_ARJ,
UT_ARB,
UT_ARK,
UT_ARU,
UT_ARH,
UT_ARQ,
UT_BGR,
UT_CAT,
UT_CHT,
UT_CHS,
UT_ZHH,
UT_ZHI,
UT_ZHM,
UT_CSY,
UT_DAN,
UT_DEU,
UT_DES,
UT_DEA,
UT_DEL,
UT_DEC,
UT_ELL,
UT_ENU,
UT_ENG,
UT_ENA,
UT_ENC,
UT_ENZ,
UT_ENI,
UT_ENS,
UT_ENJ,
UT_ENB,
UT_ENL,
UT_ENT,
UT_ENW,
UT_ENP,
UT_ESP,
UT_ESM,
UT_ESN,
UT_ESG,
UT_ESC,
UT_ESA,
UT_ESD,
UT_ESV,
UT_ESO,
UT_ESR,
UT_ESS,
UT_ESF,
UT_ESL,
UT_ESY,
UT_ESZ,
UT_ESB,
UT_ESE,
UT_ESH,
UT_ESI,
UT_ESU,
UT_FIN,
UT_FRA,
UT_FRB,
UT_FRC,
UT_FRS,
UT_FRL,
UT_FRM,
UT_HEB,
UT_HUN,
UT_ISL,
UT_ITA,
UT_ITS,
UT_JPN,
UT_KOR,
UT_NLD,
UT_NLB,
UT_NOR,
UT_NON,
UT_PLK,
UT_PTB,
UT_PTG,
UT_ROM,
UT_RUS,
UT_HRV,
UT_SRL,
UT_SRB,
UT_SKY,
UT_SQI,
UT_SVE,
UT_SVF,
UT_THA,
UT_TRK,
UT_URP,
UT_IND,
UT_UKR,
UT_BEL,
UT_SLV,
UT_ETI,
UT_LVI,
UT_LTH,
UT_LTC,
UT_FAR,
UT_VIT,
UT_HYE,
UT_AZE,
UT_EUQ,
UT_MKI,
UT_AFK,
UT_KAT,
UT_FOS,
UT_HIN,
UT_MSL,
UT_MSB,
UT_KAZ,
UT_SWK,
UT_UZB,
UT_TAT,
UT_BEN,
UT_PAN,
UT_GUJ,
UT_ORI,
UT_TAM,
UT_TEL,
UT_KAN,
UT_MAL,
UT_ASM,
UT_MAR,
UT_SAN,
UT_KOK,
TOTAL_LANGUAGES
};
enum SpeechType
{
UNKNOWN = -1,
TALK = 0, // normal system message
PROMPT = 1, // Display as system prompt
EMOTE = 2, // : text
SAY = 3, // character speaking
OBJ = 4, // at object
NOTHING = 5, // does not display
SYSTEM = 6, // text labelling an item
NOSCROLL = 7, // status msg, does not scroll
WHISPER = 8, // only those close can here
YELL = 9, // can be heard 2 screens away
ASCIITALK = 0xC0, // ASCII version of TALK, all ASCII stuff is | 0xC0'd
ASCIIPROMPT = 0xC1,
ASCIIEMOTE = 0xC2,
ASCIISAY = 0xC3,
ASCIIOBJ = 0xC4,
ASCIINOTHING = 0xC5,
ASCIISYSTEM = 0xC6,
ASCIINOSCROLL = 0xC7,
ASCIIWHISPER = 0xC8,
ASCIIYELL = 0xC9,
BROADCAST = 0xFF
};
enum FontType
{
FNT_NULL = -1,
FNT_BOLD = 0,
FNT_TEXT_WITH_SHADOW,
FNT_BOLD_PLUS_SHADOW,
FNT_NORMAL,
FNT_GOTHIC,
FNT_ITALIC,
FNT_SMALL_DARK,
FNT_COLOURFUL,
FNT_RUNIC, // Only use CAPS!
FNT_SMALL_LIGHT,
FNT_TEN, // Unicode only
FNT_ELEVEN, // Unicode only
FNT_TWELVE, // Unicode only
FNT_UNKNOWN
};
enum NameRequestSources
{
NRS_SPEECH = 0,
NRS_GUILD,
NRS_STATWINDOW_SELF,
NRS_STATWINDOW_OTHER,
NRS_TOOLTIP,
NRS_JOURNAL,
NRS_PAPERDOLL,
NRS_SINGLECLICK,
NRS_SYSTEM,
NRS_SECURETRADE,
NRS_SCRIPT
};
enum CharacterDeletionResult
{
CDR_BADPASSWORD = 0x00,
CDR_CHARNOTFOUND,
CDR_CHARISBUSY,
CDR_CHARISTOOYOUNG,
CDR_CHARISQUEUED,
CDR_BADREQUEST,
CDR_SUCCESS
};
enum PickupLocations
{
PL_NOWHERE = 0,
PL_GROUND,
PL_OWNPACK,
PL_OTHERPACK,
PL_PAPERDOLL,
PL_BANK
};
enum WeatherType
{
NONE = 0,
PHYSICAL,
LIGHT,
RAIN,
COLD,
HEAT,
LIGHTNING,
POISON,
SNOW,
STORM,
STORMBREW,
WEATHNUM
};
enum WorldType
{
WRLD_SPRING = 0,
WRLD_SUMMER,
WRLD_AUTUMN,
WRLD_WINTER,
WRLD_DESOLATION,
WRLD_UNKNOWN,
WRLD_COUNT
};
// EXIT CODES
enum ErrorCodes
{
FATAL_UOX3_SUCCESS=0,
UNKNOWN_ERROR = 666,
FATAL_UOX3_JAVASCRIPT = 50,
FATAL_UOX3_ALLOC_WORLDSTATE = 100,
FATAL_UOX3_ALLOC_MAPREGIONS,
FATAL_UOX3_ALLOC_COMBAT,
FATAL_UOX3_ALLOC_COMMANDS,
FATAL_UOX3_ALLOC_GUILDS,
FATAL_UOX3_ALLOC_ITEMS,
FATAL_UOX3_ALLOC_MAP,
FATAL_UOX3_ALLOC_NPCS,
FATAL_UOX3_ALLOC_SKILLS,
FATAL_UOX3_ALLOC_TOWNS,
FATAL_UOX3_ALLOC_WEIGHT,
FATAL_UOX3_ALLOC_NETWORK,
FATAL_UOX3_ALLOC_MAGIC,
FATAL_UOX3_ALLOC_RACES,
FATAL_UOX3_ALLOC_WEATHER,
FATAL_UOX3_ALLOC_MOVE,
FATAL_UOX3_ALLOC_WHOLIST,
FATAL_UOX3_ALLOC_DICTIONARY,
FATAL_UOX3_ALLOC_BOOKS,
FATAL_UOX3_ALLOC_PAGEVECTOR,
FATAL_UOX3_ALLOC_ACCOUNTS,
FATAL_UOX3_ALLOC_MAPREGION,
FATAL_UOX3_ALLOC_TRIGGERS,
FATAL_UOX3_ALLOC_SPEECHSYS,
FATAL_UOX3_ALLOC_SCRIPTS,
FATAL_UOX3_ALLOC_EFFECTS,
FATAL_UOX3_ALLOC_HTMLTEMPLATES,
FATAL_UOX3_ALLOC_JAILSYS,
FATAL_UOX3_CHARS = 150,
FATAL_UOX3_ITEMS = 200,
FATAL_UOX3_ORELIST = 250,
FATAL_UOX3_MAP_NOT_FOUND = 350,
FATAL_UOX3_STATICS_INDEX_NOT_FOUND,
FATAL_UOX3_STATICS_NOT_FOUND,
FATAL_UOX3_VERSION_NOT_FOUND,
FATAL_UOX3_TILEDATA_NOT_FOUND,
FATAL_UOX3_MULTI_DATA_NOT_FOUND,
FATAL_UOX3_MULTI_INDEX_NOT_FOUND,
FATAL_UOX3_DIR_NOT_FOUND = 400,
FATAL_UOX3_BAD_DEF_DICT
};
// List of skill numbers (For later implementation)
enum Skills
{
ALCHEMY = 0,
ANATOMY,
ANIMALLORE,
ITEMID,
ARMSLORE,
PARRYING,
BEGGING,
BLACKSMITHING,
BOWCRAFT,
PEACEMAKING,
CAMPING,
CARPENTRY,
CARTOGRAPHY,
COOKING,
DETECTINGHIDDEN,
ENTICEMENT,
EVALUATINGINTEL,
HEALING,
FISHING,
FORENSICS,
HERDING,
HIDING,
PROVOCATION,
INSCRIPTION,
LOCKPICKING,
MAGERY,
MAGICRESISTANCE,
TACTICS,
SNOOPING,
MUSICIANSHIP,
POISONING,
ARCHERY,
SPIRITSPEAK,
STEALING,
TAILORING,
TAMING,
TASTEID,
TINKERING,
TRACKING,
VETERINARY,
SWORDSMANSHIP,
MACEFIGHTING,
FENCING,
WRESTLING,
LUMBERJACKING,
MINING,
MEDITATION,
STEALTH,
REMOVETRAP,
NECROMANCY,
FOCUS,
CHIVALRY,
BUSHIDO,
NINJITSU,
SPELLWEAVING,
IMBUING,
MYSTICISM,
THROWING,
ALLSKILLS, // #skills+1
STRENGTH, // #skills+2
DEXTERITY, // #skills+3
INTELLECT, // #skills+4
FAME, // #skills+5
KARMA, // #skills+6
SKILLS // #skills+7
};
// Values for the skill locks
enum SkillLock
{
SKILL_INCREASE = 0,
SKILL_DECREASE,
SKILL_LOCKED
};
enum ObjectType
{
OT_CBO = 0,
OT_CHAR,
OT_ITEM,
OT_MULTI,
OT_BOAT,
OT_SPAWNER,
};
enum DEFINITIONCATEGORIES
{
items_def = 0,
npc_def,
create_def,
regions_def,
misc_def,
skills_def,
location_def,
menus_def,
spells_def,
newbie_def,
titles_def,
advance_def,
house_def,
colors_def,
spawn_def,
html_def,
race_def,
weathab_def,
hard_items_def,
command_def,
msgboard_def,
carve_def,
creatures_def,
maps_def,
NUM_DEFS
};
enum CommandLevels
{
CL_PLAYER = 0,
CL_CNS = 4,
CL_SEER = 6,
CL_GM = 8,
CL_ADMIN = 10
};
enum AITypes
{
AI_NONE = 0,
AI_HEALER_G = 1,
AI_EVIL = 2,
AI_GUARD = 4,
AI_FIGHTER = 5,
AI_ANIMAL = 6,
AI_DUMMY = 7,
AI_BANKER = 8, // handled in JS, but needed to identify NPC for context menus
AI_STABLEMASTER = 9, // handled in JS, but needed to identify NPC for context menus
AI_CASTER = 10,
AI_EVIL_CASTER = 11,
AI_ANIMAL_SCARED = 12,
AI_PLAYERVENDOR = 17,
AI_PET_GUARD = 32,
AI_CHAOTIC = 88,
AI_HEALER_E = 666
};
enum distLocs
{
DIST_SAMETILE = 1,
DIST_NEXTTILE,
DIST_NEARBY,
DIST_INRANGE = 7,
DIST_CMDRANGE = 12,
DIST_SAMESCREEN = 24, // 24 is max in clients (enhanced/classic) v7.0.55.27 and beyond, and in ClassicUO
DIST_BUILDRANGE = 31,
DIST_COMBATRESETRANGE = 35,
DIST_OUTOFRANGE = 0xFFFF
};
enum SaveStatus
{
SS_NOTSAVING = 0,
SS_SAVING,
SS_JUSTSAVED
};
enum ItemTypes
{
IT_NOTYPE = 0,
IT_CONTAINER = 1,
IT_CASTLEGATEOPENER = 2,
IT_CASTLEGATE = 3,
IT_TELEPORTITEM = 6,
IT_KEY = 7,
IT_LOCKEDCONTAINER = 8,
IT_SPELLBOOK = 9,
IT_MAP = 10,
IT_BOOK = 11,
IT_DOOR = 12,
IT_LOCKEDDOOR = 13,
IT_FOOD = 14,
IT_MAGICWAND = 15,
IT_RESURRECTOBJECT = 16,
IT_CRYSTALBALL = 18,
IT_POTION = 19,
IT_TRADEWINDOW = 20,
IT_TOWNSTONE = 35,
IT_RUNEBOOK = 49,
IT_RECALLRUNE = 50,
IT_GATE = 51,
IT_OBJTELEPORTER = 60,
IT_ITEMSPAWNER = 61,
IT_NPCSPAWNER = 62,
IT_SPAWNCONT = 63,
IT_LOCKEDSPAWNCONT = 64,
IT_UNLOCKABLESPAWNCONT = 65,
IT_AREASPAWNER = 69,
IT_ADVANCEGATE = 80,
IT_MULTIADVANCEGATE = 81,
IT_MONSTERGATE = 82,
IT_RACEGATE = 83,
IT_DAMAGEOBJECT = 85,
IT_TRASHCONT = 87,
IT_SOUNDOBJECT = 88,
IT_MAPCHANGEOBJECT = 89,
IT_WORLDCHANGEGATE = 90,
IT_MORPHOBJECT = 101,
IT_UNMORPHOBJECT = 102,
IT_DRINK = 105,
IT_STANDINGHARP = 106,
IT_SHIELD = 107,
IT_ZEROKILLSGATE = 111,
IT_PLANK = 117,
IT_FIREWORKSWAND = 118,
IT_SPELLCHANNELING = 119,
IT_ESCORTNPCSPAWNER = 125,
IT_RENAMEDEED = 186,
IT_LEATHERREPAIRTOOL = 190,
IT_BOWREPAIRTOOL = 191,
IT_TILLER = 200,
IT_HOUSEADDON = 201,
IT_GUILDSTONE = 202,
IT_HOUSESIGN = 203,
IT_TINKERTOOL = 204,
IT_METALREPAIRTOOL = 205,
IT_FORGE = 207,
IT_DYE = 208,
IT_DYEVAT = 209,
IT_MODELMULTI = 210,
IT_ARCHERYBUTTE = 211,
IT_DRUM = 212,
IT_TAMBOURINE = 213,
IT_HARP = 214,
IT_LUTE = 215,
IT_AXE = 216,
IT_PLAYERVENDORDEED = 217,
IT_SMITHYTOOL = 218,
IT_CARPENTRYTOOL = 219,
IT_MININGTOOL = 220,
IT_EMPTYVIAL = 221,
IT_UNSPUNFABRIC = 222,
IT_UNCOOKEDFISH = 223,
IT_UNCOOKEDMEAT = 224,
IT_SPUNFABRIC = 225,
IT_FLETCHINGTOOL = 226,
IT_CANNONBALL = 227,
IT_WATERPITCHER = 228,
IT_UNCOOKEDDOUGH = 229,
IT_SEWINGKIT = 230,
IT_ORE = 231,
IT_MESSAGEBOARD = 232,
IT_SWORD = 233,
IT_CAMPING = 234,
IT_MAGICSTATUE = 235,
IT_GUILLOTINE = 236,
IT_FLOURSACK = 238,
IT_OPENFLOURSACK = 239,
IT_FISHINGPOLE = 240,
IT_CLOCK = 241,
IT_MORTAR = 242,
IT_SCISSORS = 243,
IT_BANDAGE = 244,
IT_SEXTANT = 245,
IT_HAIRDYE = 246,
IT_LOCKPICK = 247,
IT_COTTONPLANT = 248,
IT_TINKERAXLE = 249,
IT_TINKERAWG = 250,
IT_TINKERCLOCK = 251,
IT_TINKERSEXTANT = 252,
IT_TRAININGDUMMY = 253,
IT_PETTRANSFERDEED = 254,
IT_COUNT = 255
};
enum ItemLayers
{
IL_NONE = 0x00,
IL_RIGHTHAND = 0x01,
IL_LEFTHAND = 0x02,
IL_FOOTWEAR = 0x03,
IL_PANTS = 0x04,
IL_INNERSHIRT = 0x05,
IL_HELM = 0x06,
IL_GLOVES = 0x07,
IL_RING = 0x08,
IL_TALISMAN = 0x09,
IL_NECK = 0x0A,
IL_HAIR = 0x0B,
IL_WAIST = 0x0C,
IL_TUNIC = 0x0D,
IL_BRACELET = 0x0E,
IL_FACE = 0x0F,
IL_FACIALHAIR = 0x10,
IL_OUTERSHIRT = 0x11,
IL_EARRINGS = 0x12,
IL_ARMS = 0x13,
IL_CLOAK = 0x14,
IL_PACKITEM = 0x15,
IL_ROBE = 0x16,
IL_OUTERLEGGINGS = 0x17,
IL_INNERLEGGINGS = 0x18,
IL_MOUNT = 0x19,
IL_SELLCONTAINER = 0x1A,
IL_BOUGHTCONTAINER = 0x1B,
IL_BUYCONTAINER = 0x1C,
IL_BANKBOX = 0x1D,
IL_UNUSED = 0x1E, // turns player invisible when used?
IL_SECURETRADE = 0x1F
};
enum TargetIds
{
TARGET_ADDSCRIPTNPC = 0,
TARGET_TELE,
TARGET_DYE,
TARGET_KEY,
TARGET_REPAIRMETAL,
TARGET_DYEALL,
TARGET_DVAT,
TARGET_FREEZE,
TARGET_UNFREEZE,
TARGET_ITEMID,
TARGET_FISH,
TARGET_INFO,
TARGET_TOWNALLY,
TARGET_SMITH,
TARGET_MINE,
TARGET_SMELTORE,
TARGET_WSTATS,
TARGET_NPCRESURRECT,
TARGET_TWEAK,
TARGET_MAKESTATUS,
TARGET_SETSCPTRIG,
TARGET_CASTSPELL,
TARGET_FOLLOW,
TARGET_ATTACK,
TARGET_TRANSFER,
TARGET_GUARD,
TARGET_RESTOCK,
TARGET_FRIEND,
TARGET_VOTEFORMAYOR,
TARGET_VIAL,
TARGET_TILING,
TARGET_STEALING,
TARGET_PLVBUY,
TARGET_HOUSEOWNER,
TARGET_HOUSEEJECT,
TARGET_HOUSEBAN,
TARGET_HOUSEFRIEND,
TARGET_HOUSEUNLIST,
TARGET_HOUSELOCKDOWN,
TARGET_HOUSERELEASE,
TARGET_HOUSESECURE,
TARGET_SMELT,
TARGET_SHOWSKILLS,
TARGET_BUILDHOUSE,
TARGET_PARTYADD,
TARGET_PARTYREMOVE,
TARGET_HOUSETRASHBARREL,
TARGET_HOUSESTRONGBOX,
TARGET_REMOVEFRIEND,
TARGET_NOFUNC
};
enum VisibleTypes
{
VT_VISIBLE = 0, // Visible to All
VT_TEMPHIDDEN, // Hidden (With Skill) / Visible To Item Owner
VT_INVISIBLE, // Magically Hidden
VT_PERMHIDDEN, // Permanent Hidden (GM Hidden)
VT_GHOSTHIDDEN // Hidden because the player is a ghost
};
enum monsterSound
{
SND_STARTATTACK = 0,
SND_IDLE,
SND_ATTACK,
SND_DEFEND,
SND_DIE,
SND_COUNT
};
enum BloodTypes
{
BLOOD_DEATH = 0,
BLOOD_BLEED,
BLOOD_CRITICAL,
};
enum FlagColors
{
FC_INNOCENT = 1,
FC_FRIEND,
FC_NEUTRAL,
FC_CRIMINAL,
FC_ENEMY,
FC_MURDERER,
FC_INVULNERABLE
};
enum WanderTypes
{
WT_NONE = 0,
WT_FOLLOW,
WT_FREE,
WT_BOX,
WT_CIRCLE,
WT_FROZEN,
WT_FLEE,
WT_PATHFIND,
WT_SCARED,
WT_COUNT
};
enum BoatMoveType
{
BOAT_ANCHORED = -1,
BOAT_STOP,
BOAT_FORWARD,
BOAT_BACKWARD,
BOAT_LEFT,
BOAT_RIGHT,
BOAT_FORWARDLEFT,
BOAT_FORWARDRIGHT,
BOAT_BACKWARDLEFT,
BOAT_BACKWARDRIGHT,
BOAT_SLOWLEFT,
BOAT_SLOWRIGHT,
BOAT_SLOWFORWARD,
BOAT_SLOWBACKWARD,
BOAT_SLOWFORWARDLEFT,
BOAT_SLOWFORWARDRIGHT,
BOAT_SLOWBACKWARDRIGHT,
BOAT_SLOWBACKWARDLEFT,
BOAT_ONELEFT,
BOAT_ONERIGHT,
BOAT_ONEFORWARD,
BOAT_ONEBACKWARD,
BOAT_ONEFORWARDLEFT,
BOAT_ONEFORWARDRIGHT,
BOAT_ONEBACKWARDLEFT,
BOAT_ONEBACKWARDRIGHT
};
enum RaceRelate
{
RACE_ENEMY = -1,
RACE_NEUTRAL = 0,
RACE_ALLY = 1
};
enum BodyType
{
BT_HUMAN = 0,
BT_ELF,
BT_GARGOYLE,
BT_OTHER,
BT_COUNT
};
enum ExpansionRuleset
{
ER_CORE,
ER_UO,
ER_T2A,
ER_UOR,
ER_TD,
ER_LBR,
ER_AOS,
ER_SE,
ER_ML,
ER_SA,
ER_HS,
ER_TOL,
ER_COUNT
};
enum HpRegenMode
{
HREG_NONE, // hp regen is disabled
HREG_LBR, // hp regen is enabled
HREG_COUNT
};
enum StaminaRegenMode
{
SREG_NONE, // Stamina regen is disabled
SREG_LBR, // Stamina regen calculations for LBR or earlier
SREG_AOS, // Stamina regen calculations for AoS and beyond
SREG_SA, // Stamina regen calculations for SA or beyond
SREG_COUNT
};
enum ManaRegenMode
{
MREG_NONE, // mana regen is disabled
MREG_LBR, // mana regen calculations for LBR or earlier
MREG_AOS1, // mana regen calculations for AoS, pre-Pub18
MREG_AOS2, // mana regen calculations for AoS, post-Pub18
MREG_ML, // mana regen calculations for ML,
MREG_KR, // mana regen calculations for KR,
MREG_COUNT
};
enum Actions // Pre-v7.0.0.0
{
ACT_WALK_UNARMED = 0x00,
// Humans, elves
ACT_WALK_ARMED = 0x01, // Walk with items equipped, while not in war mode
ACT_RUN_UNARMED = 0x02, // Run without items equipped in hands
ACT_RUN_ARMED = 0x03, // Run with items equipped in hands
ACT_IDLE = 0x04, // Stand around idle
ACT_IDLE_LOOK = 0x05, // Idle, looking around
ACT_IDLE_YAWN = 0x06, // Idle, yawning
ACT_IDLE_COMBAT_1H = 0x07, // Idle, in combat, with 1H weapon equipped
ACT_IDLE_COMBAT_2H = 0x08, // Idle, in combat, with 2H weapon equipped
ACT_ATT_1H_SLASH = 0x09, // Swing using 1H blade weapon
ACT_ATT_1H_PIERCE = 0x0A, // Stab using 1H piercing weapon
ACT_ATT_1H_BASH = 0x0B, // Bash using 1H mace weapon
ACT_ATT_2H_BASH = 0x0C, // Bash using 2H mace weapon
ACT_ATT_2H_SLASH = 0x0D, // Slash using 2H blade weapon
ACT_ATT_2H_PIERCE = 0x0E, // Stab using 2H piercing weapon
ACT_WALK_COMBAT = 0x0F, // Walk in combat mode
ACT_SPELL_TARGET = 0x10, // Cast spell at target
ACT_SPELL_AREA = 0x11, // Cast spell at area
ACT_ATT_BOW = 0x12, // Fire bow
ACT_ATT_XBOW = 0x13, // Fire crossbow
ACT_IMPACT = 0x14, // Get hit
ACT_DIE_BACKWARD = 0x15, // Die, falling backwards
ACT_DIE_FORWARD = 0x16, // Die, falling forward
ACT_BLOCK = 0x1E, // Block attack, or evade
ACT_ATT_WRESTLE = 0x1F, // Unarmed attack using fists
ACT_EMOTE_BOW = 0x20, // Bow
ACT_EMOTE_SALUTE = 0x21, // Salute
ACT_EMOTE_EAT = 0x22, // Eat or drink
// Mounted
ACT_MOUNT_RIDE_WALK = 0x17, // Walking while mounted
ACT_MOUNT_RIDE_RUN = 0x18, // Running while mounted
ACT_MOUNT_IDLE = 0x19, // Idle while mounted
ACT_MOUNT_ATT_1H = 0x1A, // Attacking with 1H weapon while mounted
ACT_MOUNT_ATT_BOW = 0x1B, // Attacking with Bow while mounted
ACT_MOUNT_ATT_XBOW = 0x1C, // Attacking with Crossbow while mounted
ACT_MOUNT_ATT_2H = 0x1D // Attacking with 2H weapon while mounted
};
enum ActionsMonsters
{
ACT_MONSTER_WALK = 0x00, // Walking animation
ACT_MONSTER_IDLE = 0x01, // Idle animation
ACT_MONSTER_DIE_1 = 0x02, // Backward
ACT_MONSTER_DIE_2 = 0x03, // Death, forward or to the side
ACT_MONSTER_ATT_K1 = 0x04, // Attack variation 1 - ALL creatures have at least this attack
ACT_MONSTER_ATT_2 = 0x05, // Attack variation 2 - swimming monsteers don't have this
ACT_MONSTER_ATT_3 = 0x06, // Attack variation 3
ACT_MONSTER_ATT_BOW = 0x07, // Attack variation 4 - air/fire elem = flail arms
ACT_MONSTER_ATT_XBOW = 0x08, // Attack variation 5 - Misc Roll over
ACT_MONSTER_ATT_THROW = 0x09, // Attack variation 6 - Throw
ACT_MONSTER_IMPACT = 0x0A, // Get hit animation
ACT_MONSTER_PILLAGE = 0x0B, // 11 = Misc, Stomp, slap ground, lich conjure
ACT_MONSTER_CAST_1 = 0x0C, // Spellcast variation 1 - Misc cast, breath fire, elem creation
ACT_MONSTER_CAST_2 = 0x0D, // Spellcast variation 2 - Trolls don't have this anim
ACT_MONSTER_CAST_3 = 0x0E, // Spellcast variation 3
ACT_MONSTER_BLOCKRIGHT = 0x0f, // Block right
ACT_MONSTER_BLOCKLEFT = 0x10, // Block left
ACT_MONSTER_IDLE_1 = 0x11, // Idle Variation 1
ACT_MONSTER_IDLE_2 = 0x12, // Idle Variation 2
ACT_MONSTER_FLY = 0x13, // Take off
ACT_MONSTER_LAND = 0x14, // Land
ACT_MONSTER_DIE_FLIGHT = 0x15 // Die in mid air
};
enum ActionsAnimals
{
ACT_ANIMAL_WALK = 0x00,
ACT_ANIMAL_RUN = 0x01,
ACT_ANIMAL_IDLE = 0x02, // Default idle animation
ACT_ANIMAL_EAT = 0x03, // Eat/Graze on food
ACT_ANIMAL_ALERT = 0x04, // Look alert and awake. Not all animals have this.
ACT_ANIMAL_ATTACK_1 = 0x05,
ACT_ANIMAL_ATTACK_2 = 0x06,
ACT_ANIMAL_GETHIT = 0x07,
ACT_ANIMAL_DIE_1 = 0x08, //
ACT_ANIMAL_IDLE_1 = 0x09, // Idle variation 1
ACT_ANIMAL_IDLE_2 = 0x0a, // Idle variation 2
ACT_ANIMAL_SLEEP = 0x0b, // Lie down and sleep (not all animals have this)
ACT_ANIMAL_DIE_2 = 0x0c
};
enum NewActions // v7.0.0.0+
{
N_ACT_ATT = 0x00, // Variations listed under SubActionsAttack enum
N_ACT_BLOCK = 0x01,
N_ACT_BLOCK2 = 0x02,
N_ACT_DIE = 0x03, // Variations listed under SubActionsDeath enum
N_ACT_IMPACT = 0x04,
N_ACT_IDLE = 0x05, // One variation available (shuffle feet) with subSubAction of 0x01?
N_ACT_EAT = 0x06,
N_ACT_EMOTE = 0x07, // Variations listed under SubActionsEmote enum
N_ACT_ANGER = 0x08,
N_ACT_TAKEOFF = 0x09,
N_ACT_LAND = 0x0A,
N_ACT_SPELL = 0x0B, // Variations listed under SubActionsSpells enum
N_ACT_UNKNOWN1 = 0x0C, // Enhanced Client only?
N_ACT_UNKNOWN2 = 0x0D, // Enhanced Client only?
N_ACT_PILLAGE = 0x0E, // Eat, pillage
N_ACT_RISE = 0x0F // Used for character creation in Enhanced Client
};
enum SubActionsAttack // Variations for attack animation, v7.0.0.0+
{
S_ACT_WRESTLE = 0x00,
S_ACT_BOW = 0x01,
S_ACT_XBOW = 0x02,
S_ACT_1H_BASH = 0x03,
S_ACT_1H_SLASH = 0x04,
S_ACT_1H_PIERCE = 0x05,
S_ACT_2H_BASH = 0x06,
S_ACT_2H_SLASH = 0x07,
S_ACT_2H_PIERCE = 0x08,
S_ACT_THROW = 0x09
};
enum SubActionsDeath // Variations for death animation, v7.0.0.0+
{
S_ACT_DEATH_FORWARD = 0x00,
S_ACT_DEATH_BACKWARD = 0x01
};
enum SubActionsEmote // Variations for emote animation, v7.0.0.0+
{
S_ACT_EMOTE_BOW = 0x00,
S_ACT_EMOTE_SALUTE = 0x01
};
enum SubActionsSpells // Variations for spellcast animation, v7.0.0.0+
{
S_ACT_SPELL_TARGET = 0x00,
S_ACT_SPELL_AREA = 0x01
};
#endif