/** * Tibia GIMUD Server - a free and open-source MMORPG server emulator * Copyright (C) 2019 Sabrehaven and Mark Samman * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef FS_CONST_H_0A49B5996F074465BF44B90F4F780E8B #define FS_CONST_H_0A49B5996F074465BF44B90F4F780E8B static constexpr int32_t NETWORKMESSAGE_MAXSIZE = 24590; enum MagicEffectClasses : uint8_t { CONST_ME_NONE, CONST_ME_DRAWBLOOD = 1, CONST_ME_LOSEENERGY = 2, CONST_ME_POFF = 3, CONST_ME_BLOCKHIT = 4, CONST_ME_EXPLOSIONAREA = 5, CONST_ME_EXPLOSIONHIT = 6, CONST_ME_FIREAREA = 7, CONST_ME_YELLOW_RINGS = 8, CONST_ME_GREEN_RINGS = 9, CONST_ME_HITAREA = 10, CONST_ME_TELEPORT = 11, CONST_ME_ENERGYHIT = 12, CONST_ME_MAGIC_BLUE = 13, CONST_ME_MAGIC_RED = 14, CONST_ME_MAGIC_GREEN = 15, CONST_ME_HITBYFIRE = 16, CONST_ME_HITBYPOISON = 17, CONST_ME_MORTAREA = 18, CONST_ME_SOUND_GREEN = 19, CONST_ME_SOUND_RED = 20, CONST_ME_POISONAREA = 21, CONST_ME_SOUND_YELLOW = 22, CONST_ME_SOUND_PURPLE = 23, CONST_ME_SOUND_BLUE = 24, CONST_ME_SOUND_WHITE = 25, CONST_ME_BUBBLES = 26, CONST_ME_CRAPS = 27, }; enum ShootType_t : uint8_t { CONST_ANI_NONE, CONST_ANI_SPEAR = 1, CONST_ANI_BOLT = 2, CONST_ANI_ARROW = 3, CONST_ANI_FIRE = 4, CONST_ANI_ENERGY = 5, CONST_ANI_POISONARROW = 6, CONST_ANI_BURSTARROW = 7, CONST_ANI_THROWINGSTAR = 8, CONST_ANI_THROWINGKNIFE = 9, CONST_ANI_SMALLSTONE = 10, CONST_ANI_DEATH = 11, CONST_ANI_LARGEROCK = 12, CONST_ANI_SNOWBALL = 13, CONST_ANI_POWERBOLT = 14, CONST_ANI_POISON = 15, }; enum SpeakClasses : uint8_t { TALKTYPE_SAY = 1, TALKTYPE_WHISPER = 2, TALKTYPE_YELL = 3, TALKTYPE_PRIVATE = 4, TALKTYPE_CHANNEL_Y = 5, // Yellow TALKTYPE_RVR_CHANNEL = 6, TALKTYPE_RVR_ANSWER = 7, TALKTYPE_RVR_CONTINUE = 8, TALKTYPE_BROADCAST = 9, TALKTYPE_CHANNEL_R1 = 10, // Red - #c text TALKTYPE_PRIVATE_RED = 11, // @name@text TALKTYPE_CHANNEL_O = 12, // orange TALKTYPE_CHANNEL_R2 = 13, // red anonymous - #d text TALKTYPE_MONSTER_YELL = 0x10, TALKTYPE_MONSTER_SAY = 0x11, }; enum MessageClasses : uint8_t { MESSAGE_STATUS_CONSOLE_YELLOW = 0x01, //Yellow message in the console MESSAGE_STATUS_CONSOLE_LBLUE = 0x04, //Light blue message in the console MESSAGE_STATUS_CONSOLE_ORANGE = 0x11, //Orange message in the console MESSAGE_STATUS_WARNING = 0x12, //Red message in game window and in the console MESSAGE_EVENT_ADVANCE = 0x13, //White message in game window and in the console MESSAGE_EVENT_DEFAULT = 0x14, //White message at the bottom of the game window and in the console MESSAGE_STATUS_DEFAULT = 0x15, //White message at the bottom of the game window and in the console MESSAGE_INFO_DESCR = 0x16, //Green message in game window and in the console MESSAGE_STATUS_SMALL = 0x17, //White message at the bottom of the game window" MESSAGE_STATUS_CONSOLE_BLUE = 0x18, //Blue message in the console MESSAGE_STATUS_CONSOLE_RED = 0x19, //Red message in the console MESSAGE_CLASS_FIRST = MESSAGE_STATUS_CONSOLE_YELLOW, MESSAGE_CLASS_LAST = MESSAGE_STATUS_CONSOLE_RED, }; enum FluidTypes_t : uint8_t { FLUID_NONE = 0, FLUID_WATER, FLUID_WINE, FLUID_BEER, FLUID_MUD, FLUID_BLOOD, FLUID_SLIME, FLUID_OIL, FLUID_URINE, FLUID_MILK, FLUID_MANAFLUID, FLUID_LIFEFLUID, FLUID_LEMONADE, FLUID_RUM, FLUID_COCONUTMILK, FLUID_FRUITJUICE, }; enum FluidColor_t : uint8_t { FLUID_COLOR_NONE = 0, FLUID_COLOR_BLUE = 1, FLUID_COLOR_PURPLE = 2, FLUID_COLOR_BROWN = 3, FLUID_COLOR_BROWN1 = 4, FLUID_COLOR_RED = 5, FLUID_COLOR_GREEN = 6, FLUID_COLOR_BROWN2 = 7, FLUID_COLOR_YELLOW = 8, FLUID_COLOR_WHITE = 9, }; enum SquareColor_t : uint8_t { SQ_COLOR_BLACK = 0, }; enum TextColor_t : uint8_t { TEXTCOLOR_BLUE = 5, TEXTCOLOR_LIGHTGREEN = 30, TEXTCOLOR_LIGHTBLUE = 35, TEXTCOLOR_MAYABLUE = 95, TEXTCOLOR_DARKRED = 108, TEXTCOLOR_LIGHTGREY = 129, TEXTCOLOR_SKYBLUE = 143, TEXTCOLOR_PURPLE = 155, TEXTCOLOR_RED = 180, TEXTCOLOR_ORANGE = 198, TEXTCOLOR_YELLOW = 210, TEXTCOLOR_WHITE_EXP = 215, TEXTCOLOR_NONE = 255, }; enum Icons_t { ICON_POISON = 1 << 0, ICON_BURN = 1 << 1, ICON_ENERGY = 1 << 2, ICON_DRUNK = 1 << 3, ICON_MANASHIELD = 1 << 4, ICON_PARALYZE = 1 << 5, ICON_HASTE = 1 << 6, ICON_SWORDS = 1 << 7 }; enum WeaponType_t : uint8_t { WEAPON_NONE, WEAPON_SWORD, WEAPON_CLUB, WEAPON_AXE, WEAPON_SHIELD, WEAPON_DISTANCE, WEAPON_WAND, WEAPON_AMMO, }; enum Ammo_t : uint8_t { AMMO_NONE, AMMO_BOLT, AMMO_ARROW, AMMO_SPEAR, AMMO_THROWINGSTAR, AMMO_THROWINGKNIFE, AMMO_STONE, AMMO_SNOWBALL, }; enum WeaponAction_t : uint8_t { WEAPONACTION_NONE, WEAPONACTION_REMOVECOUNT, WEAPONACTION_REMOVECHARGE, WEAPONACTION_MOVE, }; enum WieldInfo_t { WIELDINFO_LEVEL = 1 << 0, WIELDINFO_MAGLV = 1 << 1, WIELDINFO_VOCREQ = 1 << 2, WIELDINFO_PREMIUM = 1 << 3, }; enum Skulls_t : uint8_t { SKULL_NONE = 0, SKULL_YELLOW = 1, SKULL_GREEN = 2, SKULL_WHITE = 3, SKULL_RED = 4, }; enum PartyShields_t : uint8_t { SHIELD_NONE = 0, SHIELD_WHITEYELLOW = 1, SHIELD_WHITEBLUE = 2, SHIELD_BLUE = 3, SHIELD_YELLOW = 4 }; enum item_t : uint16_t { ITEM_FIREFIELD_PVP_FULL = 2118, ITEM_FIREFIELD_PVP_MEDIUM = 2119, ITEM_FIREFIELD_PVP_SMALL = 2120, ITEM_FIREFIELD_PERSISTENT_FULL = 2123, ITEM_FIREFIELD_PERSISTENT_MEDIUM = 2124, ITEM_FIREFIELD_PERSISTENT_SMALL = 2125, ITEM_FIREFIELD_NOPVP = 2131, ITEM_POISONFIELD_PVP = 2121, ITEM_POISONFIELD_PERSISTENT = 2127, ITEM_POISONFIELD_NOPVP = 2134, ITEM_ENERGYFIELD_PVP = 2122, ITEM_ENERGYFIELD_PERSISTENT = 2126, ITEM_ENERGYFIELD_NOPVP = 2135, ITEM_MAGICWALL = 2128, ITEM_MAGICWALL_PERSISTENT = 2128, ITEM_WILDGROWTH = 2130, ITEM_WILDGROWTH_PERSISTENT = 2130, ITEM_GOLD_COIN = 3031, ITEM_PLATINUM_COIN = 3035, ITEM_CRYSTAL_COIN = 3043, ITEM_DEPOT = 3502, ITEM_LOCKER1 = 3497, ITEM_MALE_CORPSE = 4240, ITEM_FEMALE_CORPSE = 4247, ITEM_FULLSPLASH = 2886, ITEM_SMALLSPLASH = 2889, ITEM_PARCEL = 3503, ITEM_PARCEL_STAMPED = 3504, ITEM_LETTER = 3505, ITEM_LETTER_STAMPED = 3506, ITEM_LABEL = 3507, ITEM_AMULETOFLOSS = 3057, ITEM_DOCUMENT_RO = 2819, //read-only }; enum PlayerFlags : uint64_t { PlayerFlag_CannotUseCombat = 1 << 0, PlayerFlag_CannotAttackPlayer = 1 << 1, PlayerFlag_CannotAttackMonster = 1 << 2, PlayerFlag_CannotBeAttacked = 1 << 3, PlayerFlag_CanConvinceAll = 1 << 4, PlayerFlag_CanSummonAll = 1 << 5, PlayerFlag_CanIllusionAll = 1 << 6, PlayerFlag_CanSenseInvisibility = 1 << 7, PlayerFlag_IgnoredByMonsters = 1 << 8, PlayerFlag_NotGainInFight = 1 << 9, PlayerFlag_HasInfiniteMana = 1 << 10, PlayerFlag_HasInfiniteSoul = 1 << 11, PlayerFlag_HasNoExhaustion = 1 << 12, PlayerFlag_CannotUseSpells = 1 << 13, PlayerFlag_CannotPickupItem = 1 << 14, PlayerFlag_CanAlwaysLogin = 1 << 15, PlayerFlag_CanBroadcast = 1 << 16, PlayerFlag_CanEditHouses = 1 << 17, PlayerFlag_CannotBeBanned = 1 << 18, PlayerFlag_CannotBePushed = 1 << 19, PlayerFlag_HasInfiniteCapacity = 1 << 20, PlayerFlag_CanPushAllCreatures = 1 << 21, PlayerFlag_CanTalkRedPrivate = 1 << 22, PlayerFlag_CanTalkRedChannel = 1 << 23, PlayerFlag_TalkOrangeHelpChannel = 1 << 24, PlayerFlag_NotGainExperience = 1 << 25, PlayerFlag_NotGainMana = 1 << 26, PlayerFlag_NotGainHealth = 1 << 27, PlayerFlag_NotGainSkill = 1 << 28, PlayerFlag_SetMaxSpeed = 1 << 29, PlayerFlag_SpecialVIP = 1 << 30, PlayerFlag_NotGenerateLoot = static_cast(1) << 31, PlayerFlag_CanTalkRedChannelAnonymous = static_cast(1) << 32, PlayerFlag_IgnoreProtectionZone = static_cast(1) << 33, PlayerFlag_IgnoreSpellCheck = static_cast(1) << 34, PlayerFlag_IgnoreWeaponCheck = static_cast(1) << 35, PlayerFlag_CannotBeMuted = static_cast(1) << 36, PlayerFlag_IsAlwaysPremium = static_cast(1) << 37, PlayerFlag_SpecialMoveUse = static_cast(1) << 38, }; enum ReloadTypes_t : uint8_t { RELOAD_TYPE_ALL, RELOAD_TYPE_ACTIONS, RELOAD_TYPE_CHAT, RELOAD_TYPE_COMMANDS, RELOAD_TYPE_CONFIG, RELOAD_TYPE_CREATURESCRIPTS, RELOAD_TYPE_EVENTS, RELOAD_TYPE_GLOBAL, RELOAD_TYPE_GLOBALEVENTS, RELOAD_TYPE_ITEMS, RELOAD_TYPE_MONSTERS, RELOAD_TYPE_MOUNTS, RELOAD_TYPE_MOVEMENTS, RELOAD_TYPE_NPCS, RELOAD_TYPE_QUESTS, RELOAD_TYPE_RAIDS, RELOAD_TYPE_SPELLS, RELOAD_TYPE_TALKACTIONS, RELOAD_TYPE_WEAPONS, }; static constexpr int32_t CHANNEL_GUILD = 0x00; static constexpr int32_t CHANNEL_PARTY = 0x01; static constexpr int32_t CHANNEL_RULE_REP = 0x02; static constexpr int32_t CHANNEL_PRIVATE = 0xFFFF; //Reserved player storage key ranges; //[10000000 - 20000000]; static constexpr int32_t PSTRG_RESERVED_RANGE_START = 10000000; static constexpr int32_t PSTRG_RESERVED_RANGE_SIZE = 10000000; //[1000 - 1500]; static constexpr int32_t PSTRG_OUTFITS_RANGE_START = (PSTRG_RESERVED_RANGE_START + 1000); static constexpr int32_t PSTRG_OUTFITS_RANGE_SIZE = 500; #define IS_IN_KEYRANGE(key, range) (key >= PSTRG_##range##_START && ((key - PSTRG_##range##_START) <= PSTRG_##range##_SIZE)) #endif