mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 10:26:28 +01:00
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/game/Entities/Item/Item.cpp src/server/game/Entities/Player/Player.cpp src/server/game/Entities/Player/Player.h
This commit is contained in:
@@ -31,10 +31,10 @@ enum Spells
|
||||
SPELL_REJOIN_VISCIDUS = 25896,
|
||||
SPELL_VISCIDUS_EXPLODE = 25938,
|
||||
SPELL_VISCIDUS_SUICIDE = 26003,
|
||||
SPELL_VISCIDUS_SHRINKS = 25893, // Removed from client, in world.spell_dbc
|
||||
|
||||
SPELL_MEMBRANE_VISCIDUS = 25994, // damage reduction spell - removed from DBC
|
||||
SPELL_VISCIDUS_WEAKNESS = 25926, // aura which procs at damage - should trigger the slow spells - removed from DBC
|
||||
SPELL_VISCIDUS_SHRINKS = 25893, // (6) Apply Aura #61: Mod Scale Value: -4 - removed from DBC
|
||||
SPELL_VISCIDUS_GROWS = 25897, // removed from DBC
|
||||
SPELL_SUMMON_GLOBS = 25885, // summons npc 15667 using spells from 25865 to 25884; All spells have target coords - removed from DBC
|
||||
SPELL_VISCIDUS_TELEPORT = 25904, // removed from DBC
|
||||
@@ -54,19 +54,26 @@ enum Phases
|
||||
PHASE_GLOB = 3
|
||||
};
|
||||
|
||||
enum Emotes
|
||||
{
|
||||
EMOTE_SLOW = 0,
|
||||
EMOTE_FREEZE = 1,
|
||||
EMOTE_FROZEN = 2,
|
||||
|
||||
EMOTE_CRACK = 3,
|
||||
EMOTE_SHATTER = 4,
|
||||
EMOTE_EXPLODE = 5
|
||||
};
|
||||
|
||||
enum HitCounter
|
||||
{
|
||||
HITCOUNTER_SLOW = 100, // "Viscidus begins to slow."
|
||||
HITCOUNTER_SLOW_MORE = 150, // "Viscidus begins to freeze."
|
||||
HITCOUNTER_FREEZE = 200, // "Viscidus is frozen solid."
|
||||
HITCOUNTER_SLOW = 100,
|
||||
HITCOUNTER_SLOW_MORE = 150,
|
||||
HITCOUNTER_FREEZE = 200,
|
||||
|
||||
// 4.3.4 data
|
||||
HITCOUNTER_CRACK = 50, // "Viscidus begins to crack."
|
||||
HITCOUNTER_SHATTER = 100, // "Viscidus looks ready to shatter."
|
||||
HITCOUNTER_EXPLODE = 150, // "Viscidus explodes."
|
||||
|
||||
// 1.12 data
|
||||
// HITCOUNTER_EXPLODE = 75
|
||||
HITCOUNTER_CRACK = 50,
|
||||
HITCOUNTER_SHATTER = 100,
|
||||
HITCOUNTER_EXPLODE = 150,
|
||||
};
|
||||
|
||||
enum MovePoints
|
||||
@@ -74,7 +81,7 @@ enum MovePoints
|
||||
ROOM_CENTER = 1
|
||||
};
|
||||
|
||||
Position const ViscidusCoord = { -7992.36f, 908.19f, -52.62f, 1.68f }; // TODO: Visci ain't room middle
|
||||
Position const ViscidusCoord = { -7992.36f, 908.19f, -52.62f, 1.68f }; // TODO: Visci isn't in room middle
|
||||
float const RoomRadius = 40.0f; // TODO: Not sure if its correct
|
||||
|
||||
class boss_viscidus : public CreatureScript
|
||||
@@ -102,6 +109,7 @@ class boss_viscidus : public CreatureScript
|
||||
|
||||
if (attacker->HasUnitState(UNIT_STATE_MELEE_ATTACKING) && _hitcounter >= HITCOUNTER_EXPLODE)
|
||||
{
|
||||
Talk(EMOTE_EXPLODE);
|
||||
events.Reset();
|
||||
_phase = PHASE_GLOB;
|
||||
DoCast(me, SPELL_VISCIDUS_EXPLODE);
|
||||
@@ -125,6 +133,10 @@ class boss_viscidus : public CreatureScript
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_hitcounter == HITCOUNTER_SHATTER)
|
||||
Talk(EMOTE_SHATTER);
|
||||
else if (_hitcounter == HITCOUNTER_CRACK)
|
||||
Talk(EMOTE_CRACK);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
|
||||
@@ -135,6 +147,8 @@ class boss_viscidus : public CreatureScript
|
||||
|
||||
if (_hitcounter >= HITCOUNTER_FREEZE)
|
||||
{
|
||||
_hitcounter = 0;
|
||||
Talk(EMOTE_FROZEN);
|
||||
_phase = PHASE_MELEE;
|
||||
DoCast(me, SPELL_VISCIDUS_FREEZE);
|
||||
me->RemoveAura(SPELL_VISCIDUS_SLOWED_MORE);
|
||||
@@ -142,11 +156,15 @@ class boss_viscidus : public CreatureScript
|
||||
}
|
||||
else if (_hitcounter >= HITCOUNTER_SLOW_MORE)
|
||||
{
|
||||
Talk(EMOTE_FREEZE);
|
||||
me->RemoveAura(SPELL_VISCIDUS_SLOWED);
|
||||
DoCast(me, SPELL_VISCIDUS_SLOWED_MORE);
|
||||
}
|
||||
else if (_hitcounter >= HITCOUNTER_SLOW)
|
||||
{
|
||||
Talk(EMOTE_SLOW);
|
||||
DoCast(me, SPELL_VISCIDUS_SLOWED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,6 +201,7 @@ class boss_viscidus : public CreatureScript
|
||||
|
||||
if (_phase == PHASE_GLOB && summons.empty())
|
||||
{
|
||||
DoResetThreat();
|
||||
me->NearTeleportTo(ViscidusCoord.GetPositionX(),
|
||||
ViscidusCoord.GetPositionY(),
|
||||
ViscidusCoord.GetPositionZ(),
|
||||
@@ -260,7 +279,7 @@ class npc_glob_of_viscidus : public CreatureScript
|
||||
else
|
||||
{
|
||||
Viscidus->SetHealth(Viscidus->GetHealth() - Viscidus->GetMaxHealth() / 20);
|
||||
Viscidus->SetObjectScale(Viscidus->GetFloatValue(OBJECT_FIELD_SCALE_X) - 0.05f); // TODO: Not sure if blizzlike
|
||||
Viscidus->GetAI()->DoCast(Viscidus, SPELL_VISCIDUS_SHRINKS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ public:
|
||||
}
|
||||
|
||||
void IsSummonedBy(Unit* /*summoner*/)
|
||||
{
|
||||
{
|
||||
std::list<Player*> playerOnQuestList;
|
||||
Trinity::AnyPlayerInObjectRangeCheck checker(me, 5.0f);
|
||||
Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(me, playerOnQuestList, checker);
|
||||
|
||||
@@ -62,6 +62,9 @@ enum Spells
|
||||
SPELL_INCITE_TERROR = 73070,
|
||||
SPELL_BLOODBOLT_WHIRL = 71772,
|
||||
SPELL_ANNIHILATE = 71322,
|
||||
|
||||
// Blood Infusion
|
||||
SPELL_BLOOD_INFUSION_CREDIT = 72934
|
||||
};
|
||||
|
||||
enum Shadowmourne
|
||||
@@ -182,6 +185,10 @@ class boss_blood_queen_lana_thel : public CreatureScript
|
||||
{
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
if (Is25ManRaid() && me->HasAura(SPELL_SHADOWS_FATE))
|
||||
DoCastAOE(SPELL_BLOOD_INFUSION_CREDIT, true);
|
||||
|
||||
CleanAuras();
|
||||
// Blah, credit the quest
|
||||
if (_creditBloodQuickening)
|
||||
|
||||
@@ -1218,6 +1218,12 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
|
||||
if (targetsAtRange < minTargets)
|
||||
targetsAtRange = std::min<uint32>(targets.size() - 1, minTargets);
|
||||
|
||||
if (!targetsAtRange)
|
||||
{
|
||||
targets.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
std::list<WorldObject*>::const_iterator itr = targets.begin();
|
||||
std::advance(itr, urand(0, targetsAtRange));
|
||||
target = *itr;
|
||||
@@ -1228,10 +1234,10 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
|
||||
// use the same target for first and second effect
|
||||
void FilterTargetsSubsequent(std::list<WorldObject*>& unitList)
|
||||
{
|
||||
unitList.clear();
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
unitList.clear();
|
||||
unitList.push_back(target);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,62 +51,65 @@ enum ScriptTexts
|
||||
enum Spells
|
||||
{
|
||||
// Festergut
|
||||
SPELL_RELEASE_GAS_VISUAL = 69125,
|
||||
SPELL_GASEOUS_BLIGHT_LARGE = 69157,
|
||||
SPELL_GASEOUS_BLIGHT_MEDIUM = 69162,
|
||||
SPELL_GASEOUS_BLIGHT_SMALL = 69164,
|
||||
SPELL_MALLABLE_GOO_H = 70852,
|
||||
SPELL_RELEASE_GAS_VISUAL = 69125,
|
||||
SPELL_GASEOUS_BLIGHT_LARGE = 69157,
|
||||
SPELL_GASEOUS_BLIGHT_MEDIUM = 69162,
|
||||
SPELL_GASEOUS_BLIGHT_SMALL = 69164,
|
||||
SPELL_MALLABLE_GOO_H = 70852,
|
||||
|
||||
// Rotface
|
||||
SPELL_VILE_GAS_H = 69240,
|
||||
SPELL_VILE_GAS_H = 69240,
|
||||
|
||||
// Professor Putricide
|
||||
SPELL_SLIME_PUDDLE_TRIGGER = 70341,
|
||||
SPELL_MALLEABLE_GOO = 70852,
|
||||
SPELL_UNSTABLE_EXPERIMENT = 70351,
|
||||
SPELL_TEAR_GAS = 71617, // phase transition
|
||||
SPELL_TEAR_GAS_CREATURE = 71618,
|
||||
SPELL_TEAR_GAS_CANCEL = 71620,
|
||||
SPELL_TEAR_GAS_PERIODIC_TRIGGER = 73170,
|
||||
SPELL_CREATE_CONCOCTION = 71621,
|
||||
SPELL_GUZZLE_POTIONS = 71893,
|
||||
SPELL_OOZE_TANK_PROTECTION = 71770, // protects the tank
|
||||
SPELL_CHOKING_GAS_BOMB = 71255,
|
||||
SPELL_OOZE_VARIABLE = 74118,
|
||||
SPELL_GAS_VARIABLE = 74119,
|
||||
SPELL_UNBOUND_PLAGUE = 70911,
|
||||
SPELL_UNBOUND_PLAGUE_SEARCHER = 70917,
|
||||
SPELL_PLAGUE_SICKNESS = 70953,
|
||||
SPELL_UNBOUND_PLAGUE_PROTECTION = 70955,
|
||||
SPELL_MUTATED_PLAGUE = 72451,
|
||||
SPELL_MUTATED_PLAGUE_CLEAR = 72618,
|
||||
SPELL_SLIME_PUDDLE_TRIGGER = 70341,
|
||||
SPELL_MALLEABLE_GOO = 70852,
|
||||
SPELL_UNSTABLE_EXPERIMENT = 70351,
|
||||
SPELL_TEAR_GAS = 71617, // phase transition
|
||||
SPELL_TEAR_GAS_CREATURE = 71618,
|
||||
SPELL_TEAR_GAS_CANCEL = 71620,
|
||||
SPELL_TEAR_GAS_PERIODIC_TRIGGER = 73170,
|
||||
SPELL_CREATE_CONCOCTION = 71621,
|
||||
SPELL_GUZZLE_POTIONS = 71893,
|
||||
SPELL_OOZE_TANK_PROTECTION = 71770, // protects the tank
|
||||
SPELL_CHOKING_GAS_BOMB = 71255,
|
||||
SPELL_OOZE_VARIABLE = 74118,
|
||||
SPELL_GAS_VARIABLE = 74119,
|
||||
SPELL_UNBOUND_PLAGUE = 70911,
|
||||
SPELL_UNBOUND_PLAGUE_SEARCHER = 70917,
|
||||
SPELL_PLAGUE_SICKNESS = 70953,
|
||||
SPELL_UNBOUND_PLAGUE_PROTECTION = 70955,
|
||||
SPELL_MUTATED_PLAGUE = 72451,
|
||||
SPELL_MUTATED_PLAGUE_CLEAR = 72618,
|
||||
|
||||
// Slime Puddle
|
||||
SPELL_GROW_STACKER = 70345,
|
||||
SPELL_GROW = 70347,
|
||||
SPELL_SLIME_PUDDLE_AURA = 70343,
|
||||
SPELL_GROW_STACKER = 70345,
|
||||
SPELL_GROW = 70347,
|
||||
SPELL_SLIME_PUDDLE_AURA = 70343,
|
||||
|
||||
// Gas Cloud
|
||||
SPELL_GASEOUS_BLOAT_PROC = 70215,
|
||||
SPELL_GASEOUS_BLOAT = 70672,
|
||||
SPELL_GASEOUS_BLOAT_PROTECTION = 70812,
|
||||
SPELL_EXPUNGED_GAS = 70701,
|
||||
SPELL_GASEOUS_BLOAT_PROC = 70215,
|
||||
SPELL_GASEOUS_BLOAT = 70672,
|
||||
SPELL_GASEOUS_BLOAT_PROTECTION = 70812,
|
||||
SPELL_EXPUNGED_GAS = 70701,
|
||||
|
||||
// Volatile Ooze
|
||||
SPELL_OOZE_ERUPTION = 70492,
|
||||
SPELL_VOLATILE_OOZE_ADHESIVE = 70447,
|
||||
SPELL_OOZE_ERUPTION_SEARCH_PERIODIC = 70457,
|
||||
SPELL_VOLATILE_OOZE_PROTECTION = 70530,
|
||||
SPELL_OOZE_ERUPTION = 70492,
|
||||
SPELL_VOLATILE_OOZE_ADHESIVE = 70447,
|
||||
SPELL_OOZE_ERUPTION_SEARCH_PERIODIC = 70457,
|
||||
SPELL_VOLATILE_OOZE_PROTECTION = 70530,
|
||||
|
||||
// Choking Gas Bomb
|
||||
SPELL_CHOKING_GAS_BOMB_PERIODIC = 71259,
|
||||
SPELL_CHOKING_GAS_EXPLOSION_TRIGGER = 71280,
|
||||
SPELL_CHOKING_GAS_BOMB_PERIODIC = 71259,
|
||||
SPELL_CHOKING_GAS_EXPLOSION_TRIGGER = 71280,
|
||||
|
||||
// Mutated Abomination vehicle
|
||||
SPELL_ABOMINATION_VEHICLE_POWER_DRAIN = 70385,
|
||||
SPELL_MUTATED_TRANSFORMATION = 70311,
|
||||
SPELL_MUTATED_TRANSFORMATION_DAMAGE = 70405,
|
||||
SPELL_MUTATED_TRANSFORMATION_NAME = 72401,
|
||||
SPELL_ABOMINATION_VEHICLE_POWER_DRAIN = 70385,
|
||||
SPELL_MUTATED_TRANSFORMATION = 70311,
|
||||
SPELL_MUTATED_TRANSFORMATION_DAMAGE = 70405,
|
||||
SPELL_MUTATED_TRANSFORMATION_NAME = 72401,
|
||||
|
||||
// Unholy Infusion
|
||||
SPELL_UNHOLY_INFUSION_CREDIT = 71518
|
||||
};
|
||||
|
||||
#define SPELL_GASEOUS_BLOAT_HELPER RAID_MODE<uint32>(70672, 72455, 72832, 72833)
|
||||
@@ -293,6 +296,10 @@ class boss_professor_putricide : public CreatureScript
|
||||
{
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
if (Is25ManRaid() && me->HasAura(SPELL_SHADOWS_FATE))
|
||||
DoCastAOE(SPELL_UNHOLY_INFUSION_CREDIT, true);
|
||||
|
||||
DoCast(SPELL_MUTATED_PLAGUE_CLEAR);
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,9 @@ enum Spells
|
||||
SPELL_FOCUS_FIRE = 71350,
|
||||
SPELL_ORDER_WHELP = 71357,
|
||||
SPELL_CONCUSSIVE_SHOCK = 71337,
|
||||
|
||||
// Frost Infusion
|
||||
SPELL_FROST_INFUSION_CREDIT = 72289
|
||||
};
|
||||
|
||||
enum Events
|
||||
@@ -231,8 +234,12 @@ class boss_sindragosa : public CreatureScript
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
BossAI::JustDied(killer);
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
if (Is25ManRaid() && me->HasAura(SPELL_SHADOWS_FATE))
|
||||
DoCastAOE(SPELL_FROST_INFUSION_CREDIT, true);
|
||||
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* victim)
|
||||
|
||||
@@ -54,6 +54,9 @@ enum SharedSpells
|
||||
// The Lich King
|
||||
SPELL_ARTHAS_TELEPORTER_CEREMONY = 72915,
|
||||
SPELL_FROSTMOURNE_TELEPORT_VISUAL = 73078,
|
||||
|
||||
// Shadowmourne questline
|
||||
SPELL_SHADOWS_FATE = 71169
|
||||
};
|
||||
|
||||
enum TeleporterSpells
|
||||
|
||||
@@ -208,7 +208,7 @@ class boss_ignis : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_JET:
|
||||
me->MonsterTextEmote(EMOTE_JETS, 0, true);
|
||||
Talk(EMOTE_JETS);
|
||||
DoCast(me, SPELL_FLAME_JETS);
|
||||
events.ScheduleEvent(EVENT_JET, urand(35000, 40000));
|
||||
break;
|
||||
|
||||
@@ -1084,7 +1084,7 @@ class achievement_quick_shave : public AchievementCriteriaScript
|
||||
|
||||
bool OnCheck(Player* /*source*/, Unit* target)
|
||||
{
|
||||
if (target)
|
||||
if (target)
|
||||
if (Creature* razorscale = target->ToCreature())
|
||||
if (razorscale->AI()->GetData(DATA_QUICK_SHAVE))
|
||||
return true;
|
||||
|
||||
@@ -1418,7 +1418,7 @@ class spell_gen_luck_of_the_draw : public SpellScriptLoader
|
||||
if (group->isLFGGroup())
|
||||
if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true))
|
||||
if (LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(dungeonId))
|
||||
if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == uint32(map->GetDifficulty()))
|
||||
if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == map->GetDifficulty())
|
||||
if (randomDungeon && randomDungeon->type == LFG_TYPE_RANDOM)
|
||||
return; // in correct dungeon
|
||||
|
||||
|
||||
Reference in New Issue
Block a user