diff options
Diffstat (limited to 'src')
8 files changed, 45 insertions, 36 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 3f389d00e20..f6fb39fea75 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -225,6 +225,10 @@ void DB2Manager::LoadStores(std::string const& dataPath) // Initialize global taxinodes mask // include existed nodes that have at least single not spell base (scripted) path { + ASSERT(TaxiMaskSize >= ((sTaxiNodesStore.GetNumRows() - 1) / 8) + 1, + "TaxiMaskSize is not large enough to contain all taxi nodes! (current value %d, required %d)", + TaxiMaskSize, (((sTaxiNodesStore.GetNumRows() - 1) / 8) + 1)); + std::set<uint32> spellPaths; for (SpellEffectEntry const* sInfo : sSpellEffectStore) if (sInfo->Effect == SPELL_EFFECT_SEND_TAXI) diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 032d94425ef..6c333b70682 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -495,7 +495,7 @@ struct TaxiPathNodePtr typedef Path<TaxiPathNodePtr, TaxiPathNodeEntry const> TaxiPathNodeList; typedef std::vector<TaxiPathNodeList> TaxiPathNodesByPath; -#define TaxiMaskSize 114 +#define TaxiMaskSize 201 typedef uint8 TaxiMask[TaxiMaskSize]; #endif diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 65cf6a82dc9..3ca89bb09ea 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1457,16 +1457,16 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_COMPOUND_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FEATHER_FALL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_SPEED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_HOVER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_LAND_WALK, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_NORMAL_FALL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_PITCH_RATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_RUN_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_RUN_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_RUN_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_SWIM_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_SWIM_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_SWIM_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_TURN_RATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_VEHICLE_REC_ID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_WALK_IN_AIR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1515,15 +1515,15 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_KNOCK_BACK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_PITCH_RATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TELEPORT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TURN_RATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_WALK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TURN_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_WALK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NAME_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 5fd4b698708..88d20d41afa 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -1394,21 +1394,21 @@ enum OpcodeServer : uint32 SMSG_MOVE_SET_COLLISION_HEIGHT = 0xBADD, SMSG_MOVE_SET_COMPOUND_STATE = 0xBADD, SMSG_MOVE_SET_FEATHER_FALL = 0xBADD, - SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0xBADD, - SMSG_MOVE_SET_FLIGHT_SPEED = 0xBADD, + SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x0752, + SMSG_MOVE_SET_FLIGHT_SPEED = 0x0324, SMSG_MOVE_SET_HOVER = 0xBADD, SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0xBADD, SMSG_MOVE_SET_LAND_WALK = 0xBADD, SMSG_MOVE_SET_NORMAL_FALL = 0xBADD, - SMSG_MOVE_SET_PITCH_RATE = 0xBADD, - SMSG_MOVE_SET_RUN_BACK_SPEED = 0xBADD, - SMSG_MOVE_SET_RUN_SPEED = 0xBADD, - SMSG_MOVE_SET_SWIM_BACK_SPEED = 0xBADD, - SMSG_MOVE_SET_SWIM_SPEED = 0xBADD, - SMSG_MOVE_SET_TURN_RATE = 0xBADD, + SMSG_MOVE_SET_PITCH_RATE = 0x0D21, + SMSG_MOVE_SET_RUN_BACK_SPEED = 0x0019, + SMSG_MOVE_SET_RUN_SPEED = 0x0363, + SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x0021, + SMSG_MOVE_SET_SWIM_SPEED = 0x0432, + SMSG_MOVE_SET_TURN_RATE = 0x0E74, SMSG_MOVE_SET_VEHICLE_REC_ID = 0xBADD, SMSG_MOVE_SET_WALK_IN_AIR = 0xBADD, - SMSG_MOVE_SET_WALK_SPEED = 0xBADD, + SMSG_MOVE_SET_WALK_SPEED = 0x024A, SMSG_MOVE_SET_WATER_WALK = 0xBADD, SMSG_MOVE_SKIP_TIME = 0xBADD, SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0xBADD, @@ -1450,18 +1450,18 @@ enum OpcodeServer : uint32 SMSG_MOVE_UPDATE = 0x1514, SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE = 0xBADD, SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0xBADD, - SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0xBADD, - SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0xBADD, + SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x036B, + SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x0D72, SMSG_MOVE_UPDATE_KNOCK_BACK = 0xBADD, - SMSG_MOVE_UPDATE_PITCH_RATE = 0xBADD, - SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0xBADD, - SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0xBADD, - SMSG_MOVE_UPDATE_RUN_SPEED = 0xBADD, - SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0xBADD, - SMSG_MOVE_UPDATE_SWIM_SPEED = 0xBADD, + SMSG_MOVE_UPDATE_PITCH_RATE = 0x0372, + SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x13D1, + SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x012A, + SMSG_MOVE_UPDATE_RUN_SPEED = 0x015B, + SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x0223, + SMSG_MOVE_UPDATE_SWIM_SPEED = 0x016B, SMSG_MOVE_UPDATE_TELEPORT = 0xBADD, - SMSG_MOVE_UPDATE_TURN_RATE = 0xBADD, - SMSG_MOVE_UPDATE_WALK_SPEED = 0xBADD, + SMSG_MOVE_UPDATE_TURN_RATE = 0x084A, + SMSG_MOVE_UPDATE_WALK_SPEED = 0x0A19, SMSG_MULTIPLE_PACKETS = 0x0C33, SMSG_NAME_QUERY_RESPONSE = 0x11A9, SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0xBADD, diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index cd3b22dfa11..6fa4936ffa0 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -795,12 +795,13 @@ void Aura::SetDuration(int32 duration, bool withMods) void Aura::RefreshDuration(bool withMods) { - if (withMods) + Unit* caster = GetCaster(); + if (withMods && caster) { int32 duration = m_spellInfo->GetMaxDuration(); // Calculate duration of periodics affected by haste. - if (GetCaster()->HasAuraTypeWithAffectMask(SPELL_AURA_PERIODIC_HASTE, m_spellInfo) || m_spellInfo->HasAttribute(SPELL_ATTR5_HASTE_AFFECT_DURATION)) - duration = int32(duration * GetCaster()->GetFloatValue(UNIT_MOD_CAST_SPEED)); + if (caster->HasAuraTypeWithAffectMask(SPELL_AURA_PERIODIC_HASTE, m_spellInfo) || m_spellInfo->HasAttribute(SPELL_ATTR5_HASTE_AFFECT_DURATION)) + duration = int32(duration * caster->GetFloatValue(UNIT_MOD_CAST_SPEED)); SetMaxDuration(duration); SetDuration(duration); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index a210d87f2f8..a38e8baf024 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -543,7 +543,7 @@ class spell_rotface_mutated_infection : public SpellScriptLoader bool Validate(SpellInfo const* spellInfo) override { SpellEffectInfo const* effect = spellInfo->GetEffect(EFFECT_2); - if (!effect || sSpellMgr->GetSpellInfo(effect->CalcValue())) + if (!effect || !sSpellMgr->GetSpellInfo(uint32(effect->CalcValue()))) return false; return true; } @@ -551,7 +551,7 @@ class spell_rotface_mutated_infection : public SpellScriptLoader void HandleEffectRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->CastSpell(target, GetAura()->GetSpellEffectInfo(EFFECT_2)->CalcValue(), true, nullptr, aurEff, GetCasterGUID()); + target->CastSpell(target, uint32(GetAura()->GetSpellEffectInfo(EFFECT_2)->CalcValue()), true, nullptr, aurEff, GetCasterGUID()); } void Register() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 89ab59de1db..6757fead608 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -2396,6 +2396,7 @@ class spell_the_lich_king_defile : public SpellScriptLoader void CorrectRange(std::list<WorldObject*>& targets) { targets.remove_if(ExactDistanceCheck(GetCaster(), 10.0f * GetCaster()->GetObjectScale())); + targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HARVEST_SOUL_VALKYR)); } void ChangeDamageAndGrow() diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp index 50b77aac410..213f31b280f 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp @@ -283,7 +283,10 @@ class boss_harbinger_skyriss_illusion : public CreatureScript { boss_harbinger_skyriss_illusionAI(Creature* creature) : ScriptedAI(creature) { } - void Reset() override { } + void Reset() override + { + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + } void EnterCombat(Unit* /*who*/) override { } }; |