game/src/enums.hh
2025-06-10 03:32:22 -03:00

675 lines
15 KiB
C++

#ifndef TIBIA_ENUMS_HH_
#define TIBIA_ENUMS_HH_ 1
#include "common.hh"
// TODO(fusion): Probably cleanup these names? Prefix values? Its crazy that
// there are no collision problems (possibly yet).
enum AnimationType: int {
ANIMATION_NONE = 0,
ANIMATION_SPEAR = 1,
ANIMATION_BOLT = 2,
ANIMATION_ARROW = 3,
ANIMATION_FIRE = 4,
ANIMATION_ENERGY = 5,
ANIMATION_POISON_ARROW = 6,
ANIMATION_BURST_ARROW = 7,
ANIMATION_THROWING_STAR = 8,
ANIMATION_THROWING_KNIFE = 9,
ANIMATION_SMALL_STONE = 10,
ANIMATION_DEATH = 11,
ANIMATION_SNOWBALL = 13,
ANIMATION_POWER_BOLT = 14,
ANIMATION_POISON = 15,
};
// NOTE(fusion): Not in debug symbols.
enum AttackMode: uint8 {
ATTACK_MODE_OFFENSIVE = 1,
ATTACK_MODE_BALANCED = 2,
ATTACK_MODE_DEFENSIVE = 3,
};
enum BloodType: int {
BT_BLOOD = 0,
BT_SLIME = 1,
BT_BONES = 2,
BT_FIRE = 3,
BT_ENERGY = 4,
};
// NOTE(fusion): Not in debug symbols.
enum ChaseMode: uint8 {
CHASE_MODE_NONE = 0,
CHASE_MODE_CLOSE = 1,
CHASE_MODE_RANGE = 2,
};
// NOTE(fusion): Not in debug symbols.
enum Color: int {
COLOR_BLACK = 0,
COLOR_BLUE = 5,
COLOR_LIGHTGREEN = 30,
COLOR_LIGHTBLUE = 35,
COLOR_LIGHTGRAY = 129,
COLOR_RED = 180,
COLOR_ORANGE = 198,
COLOR_WHITE = 215,
};
enum CONNECTIONSTATE: int {
CONNECTION_FREE = 0,
CONNECTION_ASSIGNED = 1,
CONNECTION_CONNECTED = 2,
CONNECTION_LOGIN = 3,
CONNECTION_GAME = 4,
CONNECTION_DEAD = 5,
CONNECTION_LOGOUT = 6,
CONNECTION_DISCONNECTED = 7,
};
enum CreatureType: int {
PLAYER = 0,
MONSTER = 1,
NPC = 2,
};
// NOTE(fusion): Not in debug symbols.
enum DamageType: int {
DAMAGE_NONE = 0x0000,
DAMAGE_PHYSICAL = 0x0001,
DAMAGE_POISON = 0x0002,
DAMAGE_FIRE = 0x0004,
DAMAGE_ENERGY = 0x0008,
DAMAGE_POISON_PERIODIC = 0x0020, // Better name?
DAMAGE_FIRE_PERIODIC = 0x0040, // Better name?
DAMAGE_ENERGY_PERIODIC = 0x0080, // Better name?
DAMAGE_LIFEDRAIN = 0x0100,
DAMAGE_MANADRAIN = 0x0200,
};
// NOTE(fusion): Not in debug symbols.
enum Direction: int {
DIRECTION_INVALID = -1,
DIRECTION_NORTH = 0,
DIRECTION_EAST = 1,
DIRECTION_SOUTH = 2,
DIRECTION_WEST = 3,
DIRECTION_SOUTHWEST = 4,
DIRECTION_SOUTHEAST = 5,
DIRECTION_NORTHWEST = 6,
DIRECTION_NORTHEAST = 7,
};
// TODO(fusion): Review these names.
enum EffectType: int {
EFFECT_NONE = 0,
EFFECT_BLOOD_HIT = 1,
EFFECT_MANA_HIT = 2,
EFFECT_POFF = 3,
EFFECT_BLOCK_HIT = 4,
EFFECT_FIRE_EXPLOSION = 5,
EFFECT_FIRE_BURST = 6, // Not sure about this one.
EFFECT_FIRE = 7,
EFFECT_POISON = 9,
EFFECT_BONE_HIT = 10,
EFFECT_ENERGY = 11,
EFFECT_ENERGY_HIT = 12,
EFFECT_MAGIC_BLUE = 13,
EFFECT_MAGIC_RED = 14,
EFFECT_MAGIC_GREEN = 15,
EFFECT_FIRE_HIT = 16,
EFFECT_POISON_HIT = 17,
EFFECT_DEATH = 18,
};
enum FLAG: int {
BANK = 0,
CLIP = 1,
BOTTOM = 2,
TOP = 3,
CONTAINER = 4,
CHEST = 5,
CUMULATIVE = 6,
USEEVENT = 7,
CHANGEUSE = 8,
FORCEUSE = 9,
MULTIUSE = 10,
DISTUSE = 11,
MOVEMENTEVENT = 12,
COLLISIONEVENT = 13,
SEPARATIONEVENT = 14,
KEY = 15,
KEYDOOR = 16,
NAMEDOOR = 17,
LEVELDOOR = 18,
QUESTDOOR = 19,
BED = 20,
FOOD = 21,
RUNE = 22,
INFORMATION = 23,
TEXT = 24,
WRITE = 25,
WRITEONCE = 26,
LIQUIDCONTAINER = 27,
LIQUIDSOURCE = 28,
LIQUIDPOOL = 29,
TELEPORTABSOLUTE = 30,
TELEPORTRELATIVE = 31,
UNPASS = 32,
UNMOVE = 33,
UNTHROW = 34,
UNLAY = 35,
AVOID = 36,
MAGICFIELD = 37,
RESTRICTLEVEL = 38,
RESTRICTPROFESSION = 39,
TAKE = 40,
HANG = 41,
HOOKSOUTH = 42,
HOOKEAST = 43,
ROTATE = 44,
DESTROY = 45,
CLOTHES = 46,
SKILLBOOST = 47,
PROTECTION = 48,
LIGHT = 49,
ROPESPOT = 50,
CORPSE = 51,
EXPIRE = 52,
EXPIRESTOP = 53,
WEAROUT = 54,
WEAPON = 55,
SHIELD = 56,
BOW = 57,
THROW = 58,
WAND = 59,
AMMO = 60,
ARMOR = 61,
HEIGHT = 62,
DISGUISE = 63,
SHOWDETAIL = 64,
SPECIALOBJECT = 65,
};
enum GAMESTATE: int {
GAME_STARTING = 0,
GAME_RUNNING = 1,
GAME_CLOSING = 2,
GAME_ENDING = 3,
};
enum INSTANCEATTRIBUTE: int {
CONTENT = 0,
CHESTQUESTNUMBER = 1,
AMOUNT = 2,
KEYNUMBER = 3,
KEYHOLENUMBER = 4,
DOORLEVEL = 5,
DOORQUESTNUMBER = 6,
DOORQUESTVALUE = 7,
CHARGES = 8,
TEXTSTRING = 9,
EDITOR = 10,
CONTAINERLIQUIDTYPE = 11,
POOLLIQUIDTYPE = 12,
ABSTELEPORTDESTINATION = 13,
RESPONSIBLE = 14,
REMAININGEXPIRETIME = 15,
SAVEDEXPIRETIME = 16,
REMAININGUSES = 17,
};
// NOTE(fusion): Not in debug symbols.
enum InventorySlot: int {
INVENTORY_ANY = 0,
INVENTORY_HEAD = 1,
INVENTORY_NECK = 2,
INVENTORY_BAG = 3,
INVENTORY_TORSO = 4,
INVENTORY_RIGHTHAND = 5,
INVENTORY_LEFTHAND = 6,
INVENTORY_LEGS = 7,
INVENTORY_FEET = 8,
INVENTORY_FINGER = 9,
INVENTORY_AMMO = 10,
// NOTE(fusion): For iterating over inventory slots.
INVENTORY_FIRST = INVENTORY_HEAD,
INVENTORY_LAST = INVENTORY_AMMO,
// NOTE(fusion): For iterating over hand slots.
INVENTORY_HAND_FIRST = INVENTORY_RIGHTHAND,
INVENTORY_HAND_LAST = INVENTORY_LEFTHAND,
// NOTE(fusion): For iterating over container slots.
CONTAINER_FIRST = 64,
CONTAINER_LAST = 79,
};
enum KNOWNCREATURESTATE: int {
KNOWNCREATURE_FREE = 0,
KNOWNCREATURE_UPTODATE = 1,
KNOWNCREATURE_OUTDATED = 2
};
// NOTE(fusion): Not in debug symbols.
enum LiquidColor: uint8 {
LIQUID_COLORLESS = 0,
LIQUID_BLUE = 1,
LIQUID_RED = 2,
LIQUID_BROWN = 3,
LIQUID_GREEN = 4,
LIQUID_YELLOW = 5,
LIQUID_WHITE = 6,
LIQUID_PURPLE = 7,
};
// NOTE(fusion): Not in debug symbols.
enum LiquidType: int {
LIQUID_NONE = 0,
LIQUID_WATER = 1,
LIQUID_WINE = 2,
LIQUID_BEER = 3,
LIQUID_MUD = 4,
LIQUID_BLOOD = 5,
LIQUID_SLIME = 6,
LIQUID_OIL = 7,
LIQUID_URINE = 8,
LIQUID_MILK = 9,
LIQUID_MANA = 10,
LIQUID_LIFE = 11,
LIQUID_LEMONADE = 12,
};
// NOTE(fusion): Not in debug symbols.
enum PROFESSION: uint8 {
PROFESSION_NONE = 0,
PROFESSION_KNIGHT = 1,
PROFESSION_PALADIN = 2,
PROFESSION_SORCERER = 3,
PROFESSION_DRUID = 4,
PROFESSION_ELITE_KNIGHT = 11,
PROFESSION_ROYAL_PALADIN = 12,
PROFESSION_MASTER_SORCERER = 13,
PROFESSION_ELDER_DRUID = 14,
};
enum RESULT: int {
ERROR = -1,
NOERROR = 0,
NOTACCESSIBLE = 1,
NOTMOVABLE = 2,
NOTTAKABLE = 3,
NOROOM = 4,
OUTOFRANGE = 5,
OUTOFHOME = 6,
CANNOTTHROW = 7,
TOOHEAVY = 8,
CROSSREFERENCE = 9,
CONTAINERFULL = 10,
WRONGPOSITION = 11,
WRONGPOSITION2 = 12,
WRONGCLOTHES = 13,
HANDSNOTFREE = 14,
HANDBLOCKED = 15,
ONEWEAPONONLY = 16,
NOMATCH = 17,
NOTCUMULABLE = 18,
TOOMANYPARTS = 19,
EMPTYCONTAINER = 20,
SPLITOBJECT = 21,
NOKEYMATCH = 22,
UPSTAIRS = 23,
DOWNSTAIRS = 24,
CREATURENOTEXISTING = 25,
PLAYERNOTEXISTING = 26,
PLAYERNOTONLINE = 27,
NAMEAMBIGUOUS = 28,
NOTUSABLE = 29,
FEDUP = 30,
DESTROYED = 31,
SPELLUNKNOWN = 32,
LOWMAGICLEVEL = 33,
MAGICITEM = 34,
NOTENOUGHMANA = 35,
NOSKILL = 36,
TARGETLOST = 37,
OUTOFAMMO = 38,
NOCREATURE = 39,
TOOLONG = 40,
TARGETOUTOFRANGE = 41,
TARGETHIDDEN = 42,
ATTACKNOTALLOWED = 43,
NOWAY = 44,
LOGINERROR = 45,
LOGINABORT = 46,
PROTECTIONZONE = 47,
ENTERPROTECTIONZONE = 48,
EXHAUSTED = 49,
NOTINVITED = 50,
NOPREMIUMACCOUNT = 51,
MOVENOTPOSSIBLE = 52,
ALREADYTRADING = 53,
PARTNERTRADING = 54,
TOOMANYOBJECTS = 55,
TOOMANYSLAVES = 56,
NOTTURNABLE = 57,
SECUREMODE = 58,
NOTENOUGHSOULPOINTS = 59,
LOWLEVEL = 60,
};
enum RIGHT: int {
PREMIUM_ACCOUNT = 0,
NOTATION = 1,
NAMELOCK = 2,
STATEMENT_REPORT = 3,
BANISHMENT = 4,
FINAL_WARNING = 5,
IP_BANISHMENT = 6,
KICK = 7,
HOME_TELEPORT = 8,
GAMEMASTER_BROADCAST = 9,
ANONYMOUS_BROADCAST = 10,
NO_BANISHMENT = 11,
ALLOW_MULTICLIENT = 12,
LOG_COMMUNICATION = 13,
READ_GAMEMASTER_CHANNEL = 14,
READ_TUTOR_CHANNEL = 15,
HIGHLIGHT_HELP_CHANNEL = 16,
SEND_BUGREPORTS = 17,
NAME_INSULTING = 18,
NAME_SENTENCE = 19,
NAME_NONSENSICAL_LETTERS = 20,
NAME_BADLY_FORMATTED = 21,
NAME_NO_PERSON = 22,
NAME_CELEBRITY = 23,
NAME_COUNTRY = 24,
NAME_FAKE_IDENTITY = 25,
NAME_FAKE_POSITION = 26,
STATEMENT_INSULTING = 27,
STATEMENT_SPAMMING = 28,
STATEMENT_ADVERT_OFFTOPIC = 29,
STATEMENT_ADVERT_MONEY = 30,
STATEMENT_NON_ENGLISH = 31,
STATEMENT_CHANNEL_OFFTOPIC = 32,
STATEMENT_VIOLATION_INCITING = 33,
CHEATING_BUG_ABUSE = 34,
CHEATING_GAME_WEAKNESS = 35,
CHEATING_MACRO_USE = 36,
CHEATING_MODIFIED_CLIENT = 37,
CHEATING_HACKING = 38,
CHEATING_MULTI_CLIENT = 39,
CHEATING_ACCOUNT_TRADING = 40,
CHEATING_ACCOUNT_SHARING = 41,
GAMEMASTER_THREATENING = 42,
GAMEMASTER_PRETENDING = 43,
GAMEMASTER_INFLUENCE = 44,
GAMEMASTER_FALSE_REPORTS = 45,
KILLING_EXCESSIVE_UNJUSTIFIED = 46,
DESTRUCTIVE_BEHAVIOUR = 47,
SPOILING_AUCTION = 48,
INVALID_PAYMENT = 49,
TELEPORT_TO_CHARACTER = 50,
TELEPORT_TO_MARK = 51,
TELEPORT_VERTICAL = 52,
TELEPORT_TO_COORDINATE = 53,
LEVITATE = 54,
SPECIAL_MOVEUSE = 55,
MODIFY_GOSTRENGTH = 56,
SHOW_COORDINATE = 57,
RETRIEVE = 58,
ENTER_HOUSES = 59,
OPEN_NAMEDOORS = 60,
INVULNERABLE = 61,
UNLIMITED_MANA = 62,
KEEP_INVENTORY = 63,
ALL_SPELLS = 64,
UNLIMITED_CAPACITY = 65,
ZERO_CAPACITY = 66,
ATTACK_EVERYWHERE = 67,
NO_ATTACK = 68,
NO_RUNES = 69,
NO_LOGOUT_BLOCK = 70,
GAMEMASTER_OUTFIT = 71,
ILLUMINATE = 72,
CHANGE_PROFESSION = 73,
IGNORED_BY_MONSTERS = 74,
SHOW_KEYHOLE_NUMBERS = 75,
CREATE_OBJECTS = 76,
CREATE_MONEY = 77,
CREATE_MONSTERS = 78,
CHANGE_SKILLS = 79,
CLEANUP_FIELDS = 80,
NO_STATISTICS = 81,
};
enum SecureMode: uint8 {
SECURE_MODE_DISABLED = 0,
SECURE_MODE_ENABLED = 1,
};
// NOTE(fusion): Not in debug symbols.
enum Skill: int {
SKILL_LEVEL = 0,
SKILL_MAGIC_LEVEL = 1,
SKILL_HITPOINTS = 2,
SKILL_MANA = 3,
SKILL_GO_STRENGTH = 4, // speed?
SKILL_CARRY_STRENGTH = 5, // capacity?
SKILL_SHIELDING = 6,
SKILL_DISTANCE = 7,
SKILL_SWORD = 8,
SKILL_CLUB = 9,
SKILL_AXE = 10,
SKILL_FIST = 11,
SKILL_MAGIC_DEFENSE = 12,
SKILL_FISHING = 13,
SKILL_FED = 14,
SKILL_LIGHT = 15,
SKILL_ILLUSION = 16,
SKILL_POISON = 17,
SKILL_BURNING = 18,
SKILL_ENERGY = 19,
SKILL_DRUNKEN = 20,
SKILL_MANASHIELD = 21,
SKILL_SOUL = 22,
};
// IMPORTANT(fusion): All `DEFAULT_*` values here were renamed from `INVENTORY_*`
// to avoid collisions with `InventorySlot`. I could also have chosen other prefix
// for inventory slots but I feel we'd be wasting them here where their meaning
// were also not clear.
enum SPECIALMEANING: int {
MONEY_ONE = 1,
MONEY_HUNDRED = 2,
MONEY_TENTHOUSAND = 3,
DEFAULT_RIGHTHAND = 10,
DEFAULT_LEFTHAND = 11,
DEFAULT_BODY_MALE = 12,
DEFAULT_BODY_FEMALE = 13,
DEFAULT_CONTAINER = 14,
DEFAULT_FOOD = 15,
DEPOT_LOCKER = 20,
DEPOT_CHEST = 21,
PARCEL_NEW = 22,
PARCEL_STAMPED = 23,
PARCEL_LABEL = 24,
LETTER_NEW = 25,
LETTER_STAMPED = 26,
BLOOD_SPLASH = 30,
BLOOD_POOL = 31,
RUNE_BLANK = 40,
MAGICFIELD_FIRE_DANGEROUS = 41,
MAGICFIELD_FIRE_HARMLESS = 42,
MAGICFIELD_POISON_DANGEROUS = 43,
MAGICFIELD_POISON_HARMLESS = 44,
MAGICFIELD_ENERGY_DANGEROUS = 45,
MAGICFIELD_ENERGY_HARMLESS = 46,
MAGICFIELD_MAGICWALL = 47,
MAGICFIELD_RUSHWOOD = 48,
};
enum SpellShapeType: int {
SHAPE_ACTOR = 0,
SHAPE_VICTIM = 1,
SHAPE_ORIGIN = 2,
SHAPE_DESTINATION = 3,
SHAPE_ANGLE = 4,
};
enum SpellImpactType: int {
IMPACT_DAMAGE = 0,
IMPACT_FIELD = 1,
IMPACT_HEALING = 2,
IMPACT_SPEED = 3,
IMPACT_DRUNKEN = 4,
IMPACT_STRENGTH = 5,
IMPACT_OUTFIT = 6,
IMPACT_SUMMON = 7,
};
enum STATE: int {
SLEEPING = 0,
IDLE = 1,
UNDERATTACK = 2,
TALKING = 3,
LEAVING = 4,
ATTACKING = 5,
PANIC = 6,
};
enum TALK_MODE: int {
TALK_SAY = 1,
TALK_WHISPER = 2,
TALK_YELL = 3,
TALK_PRIVATE_MESSAGE = 4,
TALK_CHANNEL_CALL = 5,
TALK_GAMEMASTER_REQUEST = 6,
TALK_GAMEMASTER_ANSWER = 7,
TALK_PLAYER_ANSWER = 8,
TALK_GAMEMASTER_BROADCAST = 9,
TALK_GAMEMASTER_CHANNELCALL = 10,
TALK_GAMEMASTER_MESSAGE = 11,
TALK_HIGHLIGHT_CHANNELCALL = 12,
TALK_ANONYMOUS_BROADCAST = 13,
TALK_ANONYMOUS_CHANNELCALL = 14,
TALK_ANONYMOUS_MESSAGE = 15,
TALK_ANIMAL_LOW = 16,
TALK_ANIMAL_LOUD = 17,
TALK_ADMIN_MESSAGE = 18,
TALK_EVENT_MESSAGE = 19,
TALK_LOGIN_MESSAGE = 20,
TALK_STATUS_MESSAGE = 21,
TALK_INFO_MESSAGE = 22,
TALK_FAILURE_MESSAGE = 23,
};
enum ToDoType: int {
TDWait = 0,
TDGo = 1,
TDRotate = 2,
TDMove = 3,
TDTrade = 4,
TDUse = 5,
TDTurn = 6,
TDAttack = 7,
TDTalk = 8,
TDChangeState = 9,
};
enum TOKEN: int {
ENDOFFILE = 0,
IDENTIFIER = 1,
NUMBER = 2,
STRING = 3,
BYTES = 4,
COORDINATE = 5,
SPECIAL = 6,
};
enum TYPEATTRIBUTE: int {
WAYPOINTS = 0,
CAPACITY = 1,
CHANGETARGET = 2,
KEYDOORTARGET = 3,
NAMEDOORTARGET = 4,
LEVELDOORTARGET = 5,
QUESTDOORTARGET = 6,
NUTRITION = 7,
INFORMATIONTYPE = 8,
FONTSIZE = 9,
MAXLENGTH = 10,
MAXLENGTHONCE = 11,
SOURCELIQUIDTYPE = 12,
ABSTELEPORTEFFECT = 13,
RELTELEPORTDISPLACEMENT = 14,
RELTELEPORTEFFECT = 15,
AVOIDDAMAGETYPES = 16,
MINIMUMLEVEL = 17,
PROFESSIONS = 18,
WEIGHT = 19,
ROTATETARGET = 20,
DESTROYTARGET = 21,
BODYPOSITION = 22,
SKILLNUMBER = 23,
SKILLMODIFICATION = 24,
PROTECTIONDAMAGETYPES = 25,
DAMAGEREDUCTION = 26,
BRIGHTNESS = 27,
LIGHTCOLOR = 28,
CORPSETYPE = 29,
TOTALEXPIRETIME = 30,
EXPIRETARGET = 31,
TOTALUSES = 32,
WEAROUTTARGET = 33,
WEAPONTYPE = 34,
WEAPONATTACKVALUE = 35,
WEAPONDEFENDVALUE = 36,
SHIELDDEFENDVALUE = 37,
BOWRANGE = 38,
BOWAMMOTYPE = 39,
THROWRANGE = 40,
THROWATTACKVALUE = 41,
THROWDEFENDVALUE = 42,
THROWMISSILE = 43,
THROWSPECIALEFFECT = 44,
THROWEFFECTSTRENGTH = 45,
THROWFRAGILITY = 46,
WANDRANGE = 47,
WANDMANACONSUMPTION = 48,
WANDATTACKSTRENGTH = 49,
WANDATTACKVARIATION = 50,
WANDDAMAGETYPE = 51,
WANDMISSILE = 52,
AMMOTYPE = 53,
AMMOATTACKVALUE = 54,
AMMOMISSILE = 55,
AMMOSPECIALEFFECT = 56,
AMMOEFFECTSTRENGTH = 57,
ARMORVALUE = 58,
ELEVATION = 59,
DISGUISETARGET = 60,
MEANING = 61,
};
enum TWorldType: int {
NORMAL = 0,
NON_PVP = 1,
PVP_ENFORCED = 2,
};
enum WeaponType: int {
WEAPON_NONE = 0,
WEAPON_SWORD = 1,
WEAPON_CLUB = 2,
WEAPON_AXE = 3,
WEAPON_SHIELD = 4,
WEAPON_AMMO = 5,
WEAPON_THROW = 6,
};
#endif //TIBIA_ENUMS_HH_