/* * Copyright (C) 2012-2020 CypherCore * * 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 3 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, see . */ using System; namespace Framework.Constants { public enum QuestObjectiveType { Monster = 0, Item = 1, GameObject = 2, TalkTo = 3, Currency = 4, LearnSpell = 5, MinReputation = 6, MaxReputation = 7, Money = 8, PlayerKills = 9, AreaTrigger = 10, WinPetBattleAgainstNpc = 11, DefeatBattlePet = 12, WinPvpPetBattles = 13, CriteriaTree = 14, ProgressBar = 15, HaveCurrency = 16, // requires the player to have X currency when turning in but does not consume it ObtainCurrency = 17, // requires the player to gain X currency after starting the quest but not required to keep it until the end (does not consume) IncreaseReputation = 18,// requires the player to gain X reputation with a faction AreaTriggerEnter = 19, AreaTriggerExit = 20, Max } public enum QuestObjectiveFlags { TrackedOnMinimap = 0x01, // Client Displays Large Yellow Blob On Minimap For Creature/Gameobject Sequenced = 0x02, // Client Will Not See The Objective Displayed Until All Previous Objectives Are Completed Optional = 0x04, // Not Required To Complete The Quest Hidden = 0x08, // Never Displayed In Quest Log HideCreditMsg = 0x10, // Skip Showing Item Objective Progress PreserveQuestItems = 0x20, PartOfProgressBar = 0x40, // Hidden Objective Used To Calculate Progress Bar Percent (Quests Are Limited To A Single Progress Bar Objective) KillPlayersSameFaction = 0x80 } public struct QuestSlotOffsets { public const int Id = 0; public const int State = 1; public const int Counts = 2; public const int Time = 14; public const int Max = 16; } public enum QuestSlotStateMask { None = 0x0000, Complete = 0x0001, Fail = 0x0002 } public enum QuestType { AutoComplete= 0, Disabled = 1, Normal = 2, Task = 3, Max = 4 } public enum QuestInfos { Group = 1, Class = 21, Pvp = 41, Raid = 62, Dungeon = 81, WorldEvent = 82, Legendary = 83, Escort = 84, Heroic = 85, Raid10 = 88, Raid25 = 89, Scenario = 98, Account = 102, SideQuest = 104, Artifact = 107, WorldQuest = 109, EpicWorldQuest = 110, EliteWorldQuest = 111, EpicEliteWorldQuest = 112, PvpWorldQuest = 113, FirstAidWorldQuest = 114, BattlePetWorldQuest = 115, BlacksmithingWorldQuest = 116, LeatherworkingWorldQuest = 117, AlchemyWorldQuest = 118, HerbalismWorldQuest = 119, MiningWorldQuest = 120, TailoringWorldQuest = 121, EngineeringWorldQuest = 122, EnchantingWorldQuest = 123, SkinningWorldQuest = 124, JewelcraftingWorldQuest = 125, InscriptionWorldQuest = 126, EmissaryQuest = 128, ArcheologyWorldQuest = 129, FishingWorldQuest = 130, CookingWorldQuest = 131, RareWorldQuest = 135, RareEliteWorldQuest = 136, DungeonWorldQuest = 137, LegionInvasionWorldQuest = 139, RatedReward = 140, RaidWorldQuest = 141, LegionInvasionEliteWorldQuest = 142, LegionfallContribution = 143, LegionfallWorldQuest = 144, LegionfallDungeonWorldQuest = 145, LegionInvasionWorldQuestWrapper = 146, WarfrontBarrens = 147, Pickpocketing = 148, MagniWorldQuestAzerite = 151, TortollanWorldQuest = 152, WarfrontContribution = 153, IslandQuest = 254, WarMode = 255, PvpConquest = 256, FactionAssaultWorldQuest = 259, FactionAssaultEliteWorldQuest = 260, IslandWeeklyQuest = 261, PublicQuest = 263, ThreatObjective = 264, HiddenQuest = 265, CombatAllyQuest = 266, Professions = 267, ThreatWrapper = 268, ThreatEmissaryQuest = 270, CallingQuest = 271, VenthyrPartyQuest = 272, MawSoulSpawnTracker = 273 } public enum QuestSort { Epic = 1, HallowsEnd = 21, Seasonal = 22, Cataclysm = 23, Herbalism = 24, Battlegrounds = 25, DayOfTheDead = 41, Warlock = 61, Warrior = 81, Shaman = 82, Fishing = 101, Blacksmithing = 121, Paladin = 141, Mage = 161, Rogue = 162, Alchemy = 181, Leatherworking = 182, Engineering = 201, TreasureMap = 221, Tournament = 241, Hunter = 261, Priest = 262, Druid = 263, Tailoring = 264, Special = 284, Cooking = 304, FirstAid = 324, Legendary = 344, DarkmoonFaire = 364, AhnQirajWar = 365, LunarFestival = 366, Reputation = 367, Invasion = 368, Midsummer = 369, Brewfest = 370, Inscription = 371, DeathKnight = 372, Jewelcrafting = 373, Noblegarden = 374, PilgrimsBounty = 375, LoveIsInTheAir = 376, Archaeology = 377, ChildrensWeek = 378, FirelandsInvasion = 379, TheZandalari = 380, ElementalBonds = 381, PandarenBrewmaster = 391, Scenario = 392, BattlePets = 394, Monk = 395, Landfall = 396, PandarenCampaign = 397, Riding = 398, BrawlersGuild = 399, ProvingGrounds = 400, GarrisonCampaign = 401, AssaultOnTheDarkPortal = 402, GarrisonSupport = 403, Logging = 404, Pickpocketing = 405, Artifact = 406, DemonHunter = 407, Mining = 408, WeekendEvent = 409, Enchanting = 410, Skinning = 411, WorldQuest = 412, DeathKnightCampaign = 413, DemonHunterCampaign = 416, DruidCampaign = 417, HunterCampaign = 418, MonkCampaign = 419, MageCampaign = 420, PriestCampaign = 421, PaladinCampaign = 422, ShamanCampaign = 423, RogueCampaign = 424, WarlockCampaign = 425, WarriorCampaign = 426, OrderHall = 427, LegionfallCampaign = 428, TheHuntForIllidanStormrage = 429, PiratesDay = 430, ArgusExpedition = 431, Warfronts = 432, MoonkinFestival = 433, TheKingsPath = 434, TheDeathsOfChromie = 435, RocketChicken = 436, LightforgedDraenei = 437, HighmountainTauren = 438, VoidElf = 439, Nightborne = 440, Dungeon = 441, Raid = 442, AlliedRaces = 444, TheWarchiefsAgenda = 445, AdventureJourney = 446, AllianceWarCampaign = 447, HordeWarCampaign = 448, DarkIronDwarf = 449, MagharOrc = 450, TheShadowHunter = 451, IslandExpeditions = 453, WorldPvp = 555, ThePrideOfKulTiras = 556, RatedPvp = 557, ZandalariTroll = 559, Heritage = 560, Questfall = 561, TyrandesVengeance = 562, TheFateOfSaurfang = 563, FreeTshirtDay = 564, CrucibleOfStorms = 565, KulTiran = 566, Assault = 567, HeartOfAzeroth = 569, Professions = 571, NazjatarFollowers = 573, Sinfall = 574, KorraksRevenge = 575, CovenantSanctum = 576, ReferAFriend = 579, VisionsOfNzoth = 580, Vulpera = 582, Mechagnome = 583, BlackEmpireCampaign = 584, EmberCourt = 586, ThroughTheShatteredSky = 587, DeathRising = 588, KyrianCallings = 589, NightFaeCallings = 590, NecrolordCallings = 591, VenthyrCallings = 592, AbominableStitching = 593, TimewalkingCampaign = 594, PathOfAscension = 595, LegendaryCrafting = 596 } public enum QuestFailedReasons { None = 0, FailedLowLevel = 1, // "You Are Not High Enough Level For That Quest."" FailedWrongRace = 6, // "That Quest Is Not Available To Your Race." AlreadyDone = 7, // "You Have Completed That Daily Quest Today." OnlyOneTimed = 12, // "You Can Only Be On One Timed Quest At A Time" AlreadyOn1 = 13, // "You Are Already On That Quest" FailedExpansion = 16, // "This Quest Requires An Expansion Enabled Account." AlreadyOn2 = 18, // "You Are Already On That Quest" FailedMissingItems = 21, // "You Don'T Have The Required Items With You. Check Storage." FailedNotEnoughMoney = 23, // "You Don'T Have Enough Money For That Quest" FailedCais = 24, // "You Cannot Complete Quests Once You Have Reached Tired Time" AlreadyDoneDaily = 26, // "You Have Completed That Daily Quest Today." FailedSpell = 28, // "You Haven'T Learned The Required Spell." HasInProgress = 30 // "Progress Bar Objective Not Completed" } public enum QuestPushReason { Success = 0, Invalid = 1, Accepted = 2, Declined = 3, Busy = 4, Dead = 5, LogFull = 6, OnQuest = 7, AlreadyDone = 8, NotDaily = 9, TimerExpired = 10, NotInParty = 11, DifferentServerDaily = 12, NotAllowed = 13 } public enum QuestTradeSkill { None = 0, Alchemy = 1, Blacksmithing = 2, Cooking = 3, Enchanting = 4, Engineering = 5, Firstaid = 6, Herbalism = 7, Leatherworking = 8, Poisons = 9, Tailoring = 10, Mining = 11, Fishing = 12, Skinning = 13, Jewelcrafting = 14 } public enum QuestStatus { None = 0, Complete = 1, //Unavailable = 2, Incomplete = 3, //Available = 4, Failed = 5, Rewarded = 6, // Not Used In Db Max } public enum QuestGiverStatus : uint { None = 0x00, Future = 0x02, Trivial = 0x04, TrivialRepeatableTurnin = 0x08, TrivialDailyQuest = 0x10, Reward = 0x20, JourneyReward = 0x40, CovenantCallingReward = 0x80, RepeatableTurnin = 0x100, DailyQuest = 0x200, Quest = 0x400, RewardCompleteNoPOI = 0x800, RewardCompletePOI = 0x1000, LegendaryQuest = 0x2000, LegendaryRewardCompleteNoPOI = 0x4000, LegendaryRewardCompletePOI = 0x8000, JourneyQuest = 0x10000, JourneyRewardCompleteNoPOI = 0x20000, JourneyRewardCompletePOI = 0x40000, CovenantCallingQuest = 0x80000, CovenantCallingRewardCompleteNoPOI = 0x100000, CovenantCallingRewardCompletePOI = 0x200000, } [Flags] public enum QuestFlags : uint { None = 0x00, StayAlive = 0x01, // Not Used Currently PartyAccept = 0x02, // Not Used Currently. If Player In Party, All Players That Can Accept This Quest Will Receive Confirmation Box To Accept Quest Cmsg_Quest_Confirm_Accept/Smsg_Quest_Confirm_Accept Exploration = 0x04, // Not Used Currently Sharable = 0x08, // Can Be Shared: Player.Cansharequest() HasCondition = 0x10, // Not Used Currently HideRewardPoi = 0x20, // Not Used Currently: Unsure Of Content Raid = 0x40, // Can be completed while in raid WarModeRewardsOptIn = 0x80, // Not Used Currently NoMoneyFromXp = 0x100, // Not Used Currently: Experience Is Not Converted To Gold At Max Level HiddenRewards = 0x200, // Items And Money Rewarded Only Sent In Smsg_Questgiver_Offer_Reward (Not In Smsg_Questgiver_Quest_Details Or In Client Quest Log(Smsg_Quest_Query_Response)) Tracking = 0x400, // These Quests Are Automatically Rewarded On Quest Complete And They Will Never Appear In Quest Log Client Side. DeprecateReputation = 0x800, // Not Used Currently Daily = 0x1000, // Used To Know Quest Is Daily One Pvp = 0x2000, // Having This Quest In Log Forces Pvp Flag Unavailable = 0x4000, // Used On Quests That Are Not Generically Available Weekly = 0x8000, AutoComplete = 0x10000, // Quests with this flag player submit automatically by special button in player gui DisplayItemInTracker = 0x20000, // Displays Usable Item In Quest Tracker ObjText = 0x40000, // Use Objective Text As Complete Text AutoAccept = 0x80000, // The client recognizes this flag as auto-accept. PlayerCastOnAccept = 0x100000, PlayerCastOnComplete = 0x200000, UpdatePhaseShift = 0x400000, SorWhitelist = 0x800000, LaunchGossipComplete = 0x1000000, RemoveExtraGetItems = 0x2000000, HideUntilDiscovered = 0x4000000, PortraitInQuestLog = 0x8000000, ShowItemWhenCompleted = 0x10000000, LaunchGossipAccept = 0x20000000, ItemsGlowWhenDone = 0x40000000, FailOnLogout = 0x80000000 } [Flags] public enum QuestFlagsEx : uint { None = 0x00, KeepAdditionalItems = 0x01, SuppressGossipComplete = 0x02, SuppressGossipAccept = 0x04, DisallowPlayerAsQuestgiver = 0x08, DisplayClassChoiceRewards = 0x10, DisplaySpecChoiceRewards = 0x20, RemoveFromLogOnPeriodicReset = 0x40, AccountLevelQuest = 0x80, LegendaryQuest = 0x100, NoGuildXp = 0x200, ResetCacheOnAccept = 0x400, NoAbandonOnceAnyObjectiveComplete = 0x800, RecastAcceptSpellOnLogin = 0x1000, UpdateZoneAuras = 0x2000, NoCreditForProxy = 0x4000, DisplayAsDailyQuest = 0x8000, PartOfQuestLine = 0x10000, QuestForInternalBuildsOnly = 0x20000, SuppressSpellLearnTextLine = 0x40000, DisplayHeaderAsObjectiveForTasks = 0x80000, GarrisonNonOwnersAllowed = 0x100000, RemoveQuestOnWeeklyReset = 0x200000, SuppressFarewellAudioAfterQuestAccept = 0x400000, RewardsBypassWeeklyCapsAndSeasonTotal = 0x800000, IsWorldQuest = 0x1000000, NotIgnorable = 0x2000000, AutoPush = 0x4000000, NoSpellCompleteEffects = 0x8000000, DoNotToastHonorReward = 0x10000000, KeepRepeatableQuestOnFactionChange = 0x20000000, KeepProgressOnFactionChange = 0x40000000, PushTeamQuestUsingMapController = 0x80000000 } public enum QuestFlagsEx2 { ResetOnGameMilestone = 0x01, NoWarModeBonus = 0x02, AwardHighestProfession = 0x04, NotReplayable = 0x08, NoReplayRewards = 0x10, DisableWaypointPathing = 0x20, ResetOnMythicPlusSeason = 0x40, ResetOnPvpSeason = 0x80, EnableOverrideSortOrder = 0x100, ForceStartingLocOnZoneMap = 0x200, BonusLootNever = 0x400, BonusLootAlways = 0x800, HideTaskOnMainMap = 0x1000, HideTaskInTracker = 0x2000, SkipDisabledCheck = 0x4000, EnforceMaximumQuestLevel = 0x8000 } public enum QuestSpecialFlags { None = 0x00, // Flags For Set Specialflags In Db If Required But Used Only At Server Repeatable = 0x001, ExplorationOrEvent = 0x002, // If Required Area Explore, Spell Spell_Effect_Quest_Complete Casting, Table `*_Script` Command Script_Command_Quest_Explored Use, Set From Script) AutoAccept = 0x004, // Quest Is To Be Auto-Accepted. DfQuest = 0x008, // Quest Is Used By Dungeon Finder. Monthly = 0x010, // Quest Is Reset At The Begining Of The Month // Room For More Custom Flags DbAllowed = Repeatable | ExplorationOrEvent | AutoAccept | DfQuest | Monthly, SequencedObjectives = 0x20 // Internal flag computed only } public enum QuestSaveType { Default = 0, Delete, ForceDelete } public enum QuestTagType { Tag, Profession, Normal, Pvp, PetBattle, Bounty, Dungeon, Invasion, Raid, Contribution, RatedRreward, InvasionWrapper, FactionAssault, Islands, Threat, CovenantCalling } }