284 if (type == 1 && data == 1)
491 uint8 ingredient = 0;
496 ingredient =
urand(0, 10);
499 ingredient =
urand(11, 15);
502 ingredient =
urand(16, 20);
561 for (
uint8 i = 0; i < 21; ++i)
574 finklestein->AI()->SetData(1, 1);
601 for (
uint8 i = 0; i < 21; ++i)
672 if (veh->GetAvailableSeatCount() != 0)
1111 Position const offset = { 0.0f, 0.0f, 30.0f, 0.0f };
1146 basilisk->DespawnOrUnsummon();
1209 passenger->ExitVehicle();
@ 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)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ TARGET_DEST_CASTER_BACK
@ EMOTE_STATE_USE_STANDING_NO_SHEATHE
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_PERIODIC_DUMMY
@ TRIGGERED_FULL_MASK
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
#define SpellEffectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectUpdatePeriodicFn(F, I, N)
#define SpellDestinationTargetSelectFn(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< EffectApplyHandler > AfterEffectApply
HookList< EffectUpdatePeriodicHandler > OnEffectUpdatePeriodic
HookList< EffectApplyHandler > OnEffectRemove
HookList< EffectApplyHandler > OnEffectApply
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
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) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
Creature * GetHitCreature() const
Player * GetHitPlayer() const
HookList< HitHandler > AfterHit
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
Aura * GetHitAura(bool dynObjAura=false) const
SpellInfo const * GetSpellInfo() const
SpellCastResult DoCast(uint32 spellId)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
MotionMaster * GetMotionMaster()
float GetCombatReach() const override
void RemoveNpcFlag(NPCFlags flags)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
void SetFacingToObject(WorldObject const *object, bool force=true, uint32 movementId=EVENT_FACE)
void SetEmoteState(Emote emote)
void SetNpcFlag(NPCFlags flags)
bool SetWalk(bool enable)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetFacingTo(float ori, bool force=true, uint32 movementId=EVENT_FACE)
Vehicle * GetVehicleKit() const
Unit * GetPassenger(int8 seatId) const
Gets a passenger on specified seat.
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={ })
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_fetch_ingredient_aura)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_pot_check)
void HandleScriptEffect(SpellEffIndex)
void RemoveItems(Player *player)
void PeriodicTick(AuraEffect const *)
PrepareAuraScript(spell_random_ingredient_aura)
bool Validate(SpellInfo const *) override
void HandleScriptEffect(SpellEffIndex)
PrepareSpellScript(spell_random_ingredient)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_zuldrak_akalis_stun)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
PrepareSpellScript(spell_zuldrak_breaking_through_summon_zulaman_gods_master)
PrepareSpellScript(spell_zuldrak_chains_of_the_scourge)
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
PrepareSpellScript(spell_zuldrak_cocooned_not_on_quest)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_zuldrak_cocooned_on_quest)
void HandleDummy(SpellEffIndex)
PrepareSpellScript(spell_zuldrak_drop_disguise)
PrepareSpellScript(spell_zuldrak_gymers_grab)
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_zuldrak_gymers_throw)
void HandleScript(SpellEffIndex)
PrepareAuraScript(spell_zuldrak_have_ingredient)
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEffectPeriodic(AuraEffect const *)
PrepareAuraScript(spell_zuldrak_quenching_mist)
PrepareSpellScript(spell_zuldrak_rampage_summon_zulaman_gods_master)
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_zuldrak_remove_akalis_stun)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_zuldrak_scourge_disguise_expiring)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
void CalcPeriodic(AuraEffect const *, bool &isPeriodic, int32 &litude)
void HandleDummyTick(AuraEffect const *)
PrepareAuraScript(spell_zuldrak_scourge_disguise_instability)
void HandleUpdatePeriodic(AuraEffect *aurEff)
void RemoveEffect(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_zuldrak_scourge_disguise)
void ApplyEffect(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
PrepareSpellScript(spell_zuldrak_scourgewagon_explosion)
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_zuldrak_summon_escort_aura)
bool Validate(SpellInfo const *) override
@ SPELL_SCOURGE_DISGUISE_ESCORT
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_zuldrak_summon_nass)
void SetDest(SpellDestination &dest)
PrepareSpellScript(spell_zuldrak_summon_stefan)
PrepareSpellScript(spell_zuldrak_zuldrak_rat)
void HandleScriptEffect(SpellEffIndex)
bool Validate(SpellInfo const *) override
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const
void RelocateOffset(Position const &offset)
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_FLICKERING_FLAMES
@ 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_SUMMON_GORGED_LURKING_BASILISK
@ SPELL_RAMPAGE_SUMMON_AKILZON
@ SPELL_RAMPAGE_SUMMON_JANALAI
@ SPELL_RAMPAGE_SUMMON_HALAZZI
@ SPELL_RAMPAGE_SUMMON_NALORAKK
@ SPELL_EXPLODE_SCOURGEWAGON_GRILL
@ SPELL_EXPLODE_SCOURGEWAGON_FRAME
@ SPELL_EXPLODE_SCOURGEWAGON_ROLLER
@ SPELL_EXPLODE_SCOURGEWAGON_WHEEL
@ SPELL_SUMMON_SCOURGED_CAPTIVE
@ SPELL_SUMMON_CAPTIVE_FOOTMAN
@ SPELL_BREAKING_THROUGH_SUMMON_AKILZON
@ SPELL_BREAKING_THROUGH_SUMMON_JANALAI
@ SPELL_BREAKING_THROUGH_SUMMON_NALORAKK
@ SPELL_BREAKING_THROUGH_SUMMON_HALAZZI
@ SPELL_LAB_WORK_HAVE_CHILLED_SERPENT_MUCUS
@ SPELL_LAB_WORK_HAVE_MUDDY_MIRE_MAGGOT
@ SPELL_LAB_WORK_HAVE_AMBERSEED
@ SPELL_LAB_WORK_HAVE_WITHERED_BATWING
@ SPELL_WITHERED_BATWING_KILL_CREDIT
@ SPELL_MUDDY_MIRE_MAGGOT_KILL_CREDIT
@ SPELL_AMBERSEED_KILL_CREDIT
@ SPELL_CHILLED_SERPENT_MUCUS_KILL_CREDIT
uint32 const FetchIngredients[21][4]