284 if (type == 1 && data == 1)
487 uint8 ingredient = 0;
492 ingredient =
urand(0, 10);
495 ingredient =
urand(11, 15);
498 ingredient =
urand(16, 20);
555 for (
uint8 i = 0; i < 21; ++i)
568 finklestein->AI()->SetData(1, 1);
595 for (
uint8 i = 0; i < 21; ++i)
664 if (veh->GetAvailableSeatCount() != 0)
@ QUEST_STATUS_INCOMPLETE
int32 irand(int32 min, int32 max)
uint32 urand(uint32 min, uint32 max)
bool roll_chance_i(int chance)
#define RegisterCreatureAI(ai_name)
#define RegisterGameObjectAI(ai_name)
#define RegisterSpellScript(spell_script)
Creature * GetClosestCreatureWithEntry(WorldObject *source, uint32 entry, float maxSearchRange, bool alive=true)
void CloseGossipMenuFor(Player *player)
@ EMOTE_STATE_USE_STANDING_NO_SHEATHE
@ SPELL_EFFECT_SCRIPT_EFFECT
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DUMMY
#define SpellEffectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectUpdatePeriodicFn(F, I, N)
#define AuraEffectCalcPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
void CalculatePeriodic(Unit *caster, bool resetPeriodicTimer=true, bool load=false)
HookList< EffectCalcPeriodicHandler > DoEffectCalcPeriodic
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
HookList< EffectUpdatePeriodicHandler > OnEffectUpdatePeriodic
HookList< EffectApplyHandler > OnEffectRemove
HookList< EffectApplyHandler > OnEffectApply
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static Unit * ToUnit(Object *o)
static ObjectGuid GetGUID(Object const *o)
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
uint32 DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Player * GetHitPlayer() const
HookList< HitHandler > AfterHit
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
SpellInfo const * GetSpellInfo() const
SpellCastResult DoCast(uint32 spellId)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
float GetCombatReach() const override
void RemoveNpcFlag(NPCFlags flags)
void SetEmoteState(Emote emote)
void SetNpcFlag(NPCFlags flags)
bool SetWalk(bool enable)
void SetFacingTo(float const ori, bool force=true)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Vehicle * GetVehicleKit() const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float relAngle=0) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleScriptEffect(SpellEffIndex)
void RemoveItems(Player *player)
void PeriodicTick(AuraEffect const *)
bool Validate(SpellInfo const *) override
void HandleScriptEffect(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
void CalcPeriodic(AuraEffect const *, bool &isPeriodic, int32 &litude)
void HandleDummyTick(AuraEffect const *)
void HandleUpdatePeriodic(AuraEffect *aurEff)
void RemoveEffect(AuraEffect const *, AuraEffectHandleModes)
void ApplyEffect(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
go_finklesteins_cauldron(GameObject *go)
bool OnGossipHello(Player *player) override
void UpdateAI(uint32 diff) override
void SetData(uint32 type, uint32 data) override
npc_alchemist_finklestein(Creature *creature)
bool OnGossipSelect(Player *player, uint32, uint32) override
void UpdateAI(uint32 diff) override
npc_crusade_recruit(Creature *creature)
bool OnGossipSelect(Player *player, uint32, uint32) override
npc_released_offspring_harkoa(Creature *creature)
void MovementInform(uint32 Type, uint32) override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
npc_storm_cloud(Creature *creature)
void JustAppeared() override
@ SPELL_HAVE_WITHERED_BATWING
@ SPELL_FETCH_FROZEN_SPIDER_ICHOR
@ SPELL_FETCH_ICECROWN_BOTTLED_WATER
@ SPELL_RANDOM_INGREDIENT_HARD
@ SAY_PULVERIZED_GARGOYLE_TEETH
@ SPELL_FETCH_WASPS_WINGS
@ SPELL_HAVE_HAIRY_HERRING_HEAD
@ SPELL_HAVE_SPIKY_SPIDER_EGG
@ SAY_SEASONED_SLIDER_CIDER
@ ITEM_ICECROWN_BOTTLED_WATER
@ SPELL_HAVE_PRISMATIC_MOJO
@ ITEM_SHRUNKEN_DRAGONS_CLAW
@ ITEM_PUTRID_PIRATE_PERSPIRATION
@ SPELL_HAVE_MUDDY_MIRE_MAGGOT
@ ITEM_CRUSHED_BASILISK_CRYSTALS
@ SPELL_FETCH_MUDDY_MIRE_MAGGOT
@ ITEM_PULVERIZED_GARGOYLE_TEETH
@ SPELL_HAVE_PUTRID_PIRATE_PERSPIRATION
@ SPELL_HAVE_SPECKLED_GUANO
@ SPELL_FETCH_WITHERED_BATWING
@ SAY_CRYSTALLIZED_HOGSNOT
@ SPELL_RANDOM_INGREDIENT_HARD_AURA
@ ITEM_CRYSTALLIZED_HOGSNOT
@ SPELL_FETCH_RAPTOR_CLAW
@ SPELL_HAVE_CRUSHED_BASILISK_CRYSTALS
@ SPELL_FETCH_CRYSTALLIZED_HOGSNOT
@ SAY_SHRUNKEN_DRAGONS_CLAW
@ SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH
@ SPELL_FETCH_SPECKLED_GUANO
@ SPELL_HAVE_CRYSTALLIZED_HOGSNOT
@ SPELL_RANDOM_INGREDIENT_EASY
@ SPELL_RANDOM_INGREDIENT_MEDIUM
@ SAY_CHILLED_SERPENT_MUCUS
@ SAY_PUTRID_PIRATE_PERSPIRATION
@ SPELL_FETCH_SEASONED_SLIDER_CIDER
@ SAY_CRUSHED_BASILISK_CRYSTALS
@ SPELL_HAVE_FROZEN_SPIDER_ICHOR
@ SPELL_RANDOM_INGREDIENT_EASY_AURA
@ SPELL_HAVE_PULVERIZED_GARGOYLE_TEETH
@ ITEM_CHILLED_SERPENT_MUCUS
@ ITEM_FROZEN_SPIDER_ICHOR
@ SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS
@ SPELL_FETCH_HAIRY_HERRING_HEAD
@ SPELL_ALCHEMIST_APPRENTICE_INVISBUFF
@ SPELL_FETCH_SPIKY_SPIDER_EGG
@ SPELL_HAVE_SHRUNKEN_DRAGONS_CLAW
@ SPELL_HAVE_ICECROWN_BOTTLED_WATER
@ ITEM_SEASONED_SLIDER_CIDER
@ SPELL_FETCH_PICKLED_EAGLE_EGG
@ SPELL_HAVE_PICKLED_EAGLE_EGG
@ SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW
@ SPELL_HAVE_CHILLED_SERPENT_MUCUS
@ SAY_ICECROWN_BOTTLED_WATER
@ QUEST_THE_ALCHEMIST_APPRENTICE_DAILY
@ SPELL_FETCH_CHILLED_SERPENT_MUCUS
@ SPELL_FETCH_PRISMATIC_MOJO
@ ITEM_HAIRY_HERRING_HEAD
@ SPELL_RANDOM_INGREDIENT_MEDIUM_AURA
@ SAY_FROZEN_SPIDER_ICHOR
@ SPELL_HAVE_SEASONED_SLIDER_CIDER
@ SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION
@ QUEST_TROLL_PATROL_INTESTINAL_FORTITUDE
@ SPELL_SCOURGE_DISGUISE_INSTABILITY
@ SPELL_SCOURGE_DISGUISE_EXPIRING
@ SPELL_EXPLODE_SCOURGEWAGON_GRILL
@ SPELL_EXPLODE_SCOURGEWAGON_FRAME
@ SPELL_EXPLODE_SCOURGEWAGON_ROLLER
@ SPELL_EXPLODE_SCOURGEWAGON_WHEEL
@ SPELL_SUMMON_SCOURGED_CAPTIVE
@ SPELL_SUMMON_CAPTIVE_FOOTMAN
uint32 const FetchIngredients[21][4]