mirror of
https://github.com/mangosfour/server.git
synced 2025-12-22 04:37:01 +00:00
[12656m] Updated some enums and structures. Thanks R2/TC
This commit is contained in:
parent
c8194124df
commit
93a3a9214b
10 changed files with 120 additions and 27 deletions
|
|
@ -539,8 +539,8 @@ bool VehicleInfo::IsUsableSeatForPlayer(uint32 seatFlags, uint32 seatFlagsB) con
|
|||
return seatFlags & SEAT_FLAG_CAN_EXIT ||
|
||||
seatFlags & SEAT_FLAG_UNCONTROLLED ||
|
||||
seatFlagsB &
|
||||
(SEAT_FLAG_B_USABLE_FORCED | SEAT_FLAG_B_USABLE_FORCED_2 |
|
||||
SEAT_FLAG_B_USABLE_FORCED_3 | SEAT_FLAG_B_USABLE_FORCED_4);
|
||||
(VEHICLE_SEAT_FLAG_B_USABLE_FORCED | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 |
|
||||
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3 | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4);
|
||||
}
|
||||
|
||||
/// Add control and such modifiers to a passenger if required
|
||||
|
|
|
|||
|
|
@ -37,11 +37,6 @@
|
|||
// Server side limitation. Base at used code requirements.
|
||||
// also see MAX_LEVEL and GT_MAX_LEVEL define
|
||||
#define STRONG_MAX_LEVEL 255
|
||||
enum MountFlags
|
||||
{
|
||||
MOUNT_FLAG_CAN_PITCH = 0x4,
|
||||
MOUNT_FLAG_CAN_SWIM = 0x8
|
||||
};
|
||||
|
||||
enum BattleGroundBracketId // bracketId for level ranges
|
||||
{
|
||||
|
|
@ -70,7 +65,7 @@ enum AchievementFlags
|
|||
{
|
||||
ACHIEVEMENT_FLAG_NONE = 0x00000000,
|
||||
ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // ACHIEVEMENT_FLAG_STATISTIC Just count statistic (never stop and complete)
|
||||
ACHIEVEMENT_FLAG_UNK2 = 0x00000002, // ACHIEVEMENT_FLAG_HIDDEN not used
|
||||
ACHIEVEMENT_FLAG_HIDDEN = 0x00000002, // ACHIEVEMENT_FLAG_HIDDEN Not show in client
|
||||
ACHIEVEMENT_FLAG_STORE_MAX_VALUE = 0x00000004, // ACHIEVEMENT_FLAG_HIDDEN_TILL_AWARDED Store only max value? used only in "Reach level xx"
|
||||
ACHIEVEMENT_FLAG_SUMM = 0x00000008, // ACHIEVEMENT_FLAG_CUMULATIVE Use summ criteria value from all requirements (and calculate max value)
|
||||
ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // ACHIEVEMENT_FLAG_DISPLAY_HIGHEST Show max criteria (and calculate max value ??)
|
||||
|
|
@ -325,7 +320,7 @@ enum Difficulty
|
|||
|
||||
DUNGEON_DIFFICULTY_NORMAL = 0,
|
||||
DUNGEON_DIFFICULTY_HEROIC = 1,
|
||||
// DUNGEON_DIFFICULTY_EPIC = 2, // not used, but exists
|
||||
DUNGEON_DIFFICULTY_CHALLENGE = 2, // 5.x Challenge mode dungeons
|
||||
|
||||
RAID_DIFFICULTY_10MAN_NORMAL = 0,
|
||||
RAID_DIFFICULTY_25MAN_NORMAL = 1,
|
||||
|
|
@ -333,7 +328,7 @@ enum Difficulty
|
|||
RAID_DIFFICULTY_25MAN_HEROIC = 3,
|
||||
};
|
||||
|
||||
#define MAX_DUNGEON_DIFFICULTY 2
|
||||
#define MAX_DUNGEON_DIFFICULTY 3
|
||||
#define MAX_RAID_DIFFICULTY 4
|
||||
#define MAX_DIFFICULTY 4
|
||||
|
||||
|
|
@ -343,7 +338,8 @@ enum SpawnMask
|
|||
|
||||
SPAWNMASK_DUNGEON_NORMAL = (1 << DUNGEON_DIFFICULTY_NORMAL),
|
||||
SPAWNMASK_DUNGEON_HEROIC = (1 << DUNGEON_DIFFICULTY_HEROIC),
|
||||
SPAWNMASK_DUNGEON_ALL = (SPAWNMASK_DUNGEON_NORMAL | SPAWNMASK_DUNGEON_HEROIC),
|
||||
SPAWNMASK_DUNGEON_CHALLENGE = (1 << DUNGEON_DIFFICULTY_CHALLENGE),
|
||||
SPAWNMASK_DUNGEON_ALL = (SPAWNMASK_DUNGEON_NORMAL | SPAWNMASK_DUNGEON_HEROIC | SPAWNMASK_DUNGEON_CHALLENGE),
|
||||
|
||||
SPAWNMASK_RAID_10MAN_NORMAL = (1 << RAID_DIFFICULTY_10MAN_NORMAL),
|
||||
SPAWNMASK_RAID_25MAN_NORMAL = (1 << RAID_DIFFICULTY_25MAN_NORMAL),
|
||||
|
|
@ -377,7 +373,22 @@ enum MapTypes // Lua_IsInInstance
|
|||
MAP_INSTANCE = 1, // party
|
||||
MAP_RAID = 2, // raid
|
||||
MAP_BATTLEGROUND = 3, // pvp
|
||||
MAP_ARENA = 4 // arena
|
||||
MAP_ARENA = 4, // arena
|
||||
MAP_SCENARIO = 5 // scenario
|
||||
};
|
||||
|
||||
enum MapFlags // Map flags (need more research)
|
||||
{
|
||||
MAP_FLAG_NONE = 0x00000000, // none specific
|
||||
MAP_FLAG_INSTANCEABLE = 0x00000001, // or possible splittable for continent maps
|
||||
MAP_FLAG_DEVELOPMENT = 0x00000002, // testing or development maps only
|
||||
MAP_FLAG_UNK3 = 0x00000004, //
|
||||
MAP_FLAG_UNK4 = 0x00000008, //
|
||||
MAP_FLAG_UNK5 = 0x00000010, //
|
||||
MAP_FLAG_UNK6 = 0x00000020, //
|
||||
MAP_FLAG_UNK7 = 0x00000040, //
|
||||
MAP_FLAG_UNK8 = 0x00000080, //
|
||||
MAP_FLAG_VARIABLE_DIFFICULTY = 0x00000100, // maps, where has changeable difficulty
|
||||
};
|
||||
|
||||
enum AbilytyLearnType
|
||||
|
|
@ -441,6 +452,12 @@ enum ItemLimitCategory
|
|||
ITEM_LIMIT_CATEGORY_MANA_GEM = 4,
|
||||
};
|
||||
|
||||
enum MountFlags
|
||||
{
|
||||
MOUNT_FLAG_CAN_PITCH = 0x4, // client checks MOVEMENTFLAG2_FULL_SPEED_PITCHING
|
||||
MOUNT_FLAG_CAN_SWIM = 0x8, // client checks MOVEMENTFLAG_SWIMMING
|
||||
};
|
||||
|
||||
enum TalentTreeRole
|
||||
{
|
||||
TALENT_ROLE_TANK = 0x2,
|
||||
|
|
@ -616,6 +633,7 @@ enum VehicleFlags
|
|||
|
||||
enum VehicleSeatFlags
|
||||
{
|
||||
SEAT_FLAG_NONE = 0x00000000, //
|
||||
SEAT_FLAG_UNK1 = 0x00000001, // "HasLowerAnimForEnter"
|
||||
SEAT_FLAG_UNK2 = 0x00000002, // "HasLowerAnimForRide"
|
||||
SEAT_FLAG_UNK3 = 0x00000004,
|
||||
|
|
@ -626,12 +644,12 @@ enum VehicleSeatFlags
|
|||
SEAT_FLAG_UNK8 = 0x00000080,
|
||||
SEAT_FLAG_UNK9 = 0x00000100,
|
||||
SEAT_FLAG_HIDE_PASSENGER = 0x00000200, // Passenger is hidden
|
||||
SEAT_FLAG_UNK10 = 0x00000400, // "AllowsTurning"
|
||||
SEAT_FLAG_FREE_ACTION = 0x00000400, // "AllowsTurning"
|
||||
SEAT_FLAG_CAN_CONTROL = 0x00000800, // Lua_UnitInVehicleControlSeat
|
||||
SEAT_FLAG_UNK11 = 0x00001000, // "Can Cast Mount Spell"
|
||||
SEAT_FLAG_UNCONTROLLED = 0x00002000, // "Uncontrolled"
|
||||
SEAT_FLAG_CAN_ATTACK = 0x00004000, // Can attack, cast spells and use items from vehicle?
|
||||
SEAT_FLAG_UNK13 = 0x00008000, // "ShouldUseVehicleSeatExitAnimationOnForcedExit"
|
||||
SEAT_FLAG_UNATTACKABLE = 0x00008000, // "ShouldUseVehicleSeatExitAnimationOnForcedExit"
|
||||
SEAT_FLAG_UNK14 = 0x00010000,
|
||||
SEAT_FLAG_UNK15 = 0x00020000,
|
||||
SEAT_FLAG_UNK16 = 0x00040000, // "HasVehicleExitAnimForVoluntaryExit"
|
||||
|
|
@ -652,14 +670,26 @@ enum VehicleSeatFlags
|
|||
|
||||
enum VehicleSeatFlagsB
|
||||
{
|
||||
SEAT_FLAG_B_USABLE_FORCED = 0x00000002,
|
||||
SEAT_FLAG_B_TARGETS_IN_RAIDUI = 0x00000008, // Lua_UnitTargetsVehicleInRaidUI
|
||||
SEAT_FLAG_B_EJECTABLE = 0x00000020, // Ejectable
|
||||
SEAT_FLAG_B_USABLE_FORCED_2 = 0x00000040,
|
||||
SEAT_FLAG_B_USABLE_FORCED_3 = 0x00000100,
|
||||
SEAT_FLAG_B_USABLE_FORCED_4 = 0x02000000,
|
||||
SEAT_FLAG_B_CAN_SWITCH = 0x04000000,
|
||||
SEAT_FLAG_B_PLAYERFRAME_UI = 0x80000000 // Lua_UnitHasVehiclePlayerFrameUI
|
||||
VEHICLE_SEAT_FLAG_B_NONE = 0x00000000,
|
||||
VEHICLE_SEAT_FLAG_B_UNK1 = 0x00000001,
|
||||
VEHICLE_SEAT_FLAG_B_USABLE_FORCED = 0x00000002,
|
||||
VEHICLE_SEAT_FLAG_B_UNK2 = 0x00000004,
|
||||
VEHICLE_SEAT_FLAG_B_TARGETS_IN_RAIDUI = 0x00000008, // Lua_UnitTargetsVehicleInRaidUI
|
||||
VEHICLE_SEAT_FLAG_B_UNK3 = 0x00000010,
|
||||
VEHICLE_SEAT_FLAG_B_EJECTABLE = 0x00000020, // ejectable
|
||||
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 = 0x00000040,
|
||||
VEHICLE_SEAT_FLAG_B_UNK6 = 0x00000080,
|
||||
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3 = 0x00000100,
|
||||
VEHICLE_SEAT_FLAG_B_EJECTABLE_FORCED = 0x00200000, // seats for forced eject? 27 seats at 3.3.5a
|
||||
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4 = 0x02000000,
|
||||
VEHICLE_SEAT_FLAG_B_CANSWITCH = 0x04000000, // can switch seats
|
||||
VEHICLE_SEAT_FLAG_B_VEHICLE_PLAYERFRAME_UI = 0x80000000, // Lua_UnitHasVehiclePlayerFrameUI - actually checked for flagsb &~ 0x80000000
|
||||
};
|
||||
|
||||
enum MapDifficultyFlags
|
||||
{
|
||||
MAP_DIFFICULTY_FLAG_NONE = 0x00000001, // Not used in 3.3.5
|
||||
MAP_DIFFICULTY_FLAG_CONDITION = 0x00000002, // This map difficulty has condition
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -219,6 +219,13 @@ struct AchievementCriteriaEntry
|
|||
uint32 castCount; // 4
|
||||
} cast_spell;
|
||||
|
||||
// ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30
|
||||
struct
|
||||
{
|
||||
uint32 captureID; // 3
|
||||
uint32 captureCount; // 4
|
||||
} objective_capture;
|
||||
|
||||
// ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
|
||||
struct
|
||||
{
|
||||
|
|
@ -230,6 +237,7 @@ struct AchievementCriteriaEntry
|
|||
struct
|
||||
{
|
||||
uint32 mapID; // 3 Reference to Map.dbc
|
||||
uint32 count; // 4
|
||||
} win_arena;
|
||||
|
||||
// ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33
|
||||
|
|
@ -1399,9 +1407,10 @@ struct MapEntry
|
|||
// Helpers
|
||||
uint32 Expansion() const { return addon; }
|
||||
|
||||
bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID; }
|
||||
bool IsNonRaidDungeon() const { return map_type == MAP_INSTANCE; }
|
||||
bool Instanceable() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA; }
|
||||
bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_SCENARIO; }
|
||||
bool IsNonRaidDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_SCENARIO; }
|
||||
bool Instanceable() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA || map_type == MAP_SCENARIO; }
|
||||
bool IsScenario() const { return map_type == MAP_SCENARIO; }
|
||||
bool IsRaid() const { return map_type == MAP_RAID; }
|
||||
bool IsBattleGround() const { return map_type == MAP_BATTLEGROUND; }
|
||||
bool IsBattleArena() const { return map_type == MAP_ARENA; }
|
||||
|
|
@ -1428,6 +1437,13 @@ struct MapEntry
|
|||
{
|
||||
return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571 || MapID == 870;
|
||||
}
|
||||
|
||||
bool IsTransport() const
|
||||
{
|
||||
if (IsContinent())
|
||||
return false;
|
||||
return map_type == MAP_COMMON && mapFlags == MAP_FLAG_INSTANCEABLE;
|
||||
}
|
||||
};
|
||||
|
||||
struct MapDifficultyEntry
|
||||
|
|
@ -2478,6 +2494,15 @@ struct VehicleSeatEntry
|
|||
//uint32 unk[6]; // 58-63
|
||||
//uint32 unk2; // 64 4.0.0
|
||||
//uint32 unk3; // 65 4.0.1
|
||||
|
||||
bool IsUsable() const { return
|
||||
(m_flags & SEAT_FLAG_CAN_EXIT) ||
|
||||
(m_flags & SEAT_FLAG_CAN_CONTROL) ||
|
||||
(m_flags & SEAT_FLAG_UNCONTROLLED) ||
|
||||
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED) ||
|
||||
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2) ||
|
||||
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3) ||
|
||||
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4); }
|
||||
};
|
||||
|
||||
struct WMOAreaTableEntry
|
||||
|
|
|
|||
|
|
@ -1122,8 +1122,10 @@ void WorldSession::ReadAddonsInfo(ByteBuffer &data)
|
|||
addonInfo >> unk2;
|
||||
|
||||
if (addonInfo.rpos() != addonInfo.size())
|
||||
{
|
||||
DEBUG_LOG("packet under read!");
|
||||
}
|
||||
}
|
||||
else
|
||||
sLog.outError("Addon packet uncompress error!");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -610,6 +610,15 @@ void AchievementMgr::LoadFromDB(QueryResult* achievementResult, QueryResult* cri
|
|||
progress.timedCriteriaFailed = false;
|
||||
|
||||
AchievementEntry const* achievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
|
||||
|
||||
if (!achievement)
|
||||
{
|
||||
// we will remove nonexistent referred achievement for all characters
|
||||
sLog.outError("Nonexistent achievement criteria %u (referred achievement %u) data removed from table `character_achievement_progress`.",id, criteria->referredAchievement);
|
||||
CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE criteria = %u",id);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Checked in LoadAchievementCriteriaList
|
||||
|
||||
// A failed achievement will be removed on next tick - TODO: Possible that timer 2 is reseted
|
||||
|
|
@ -650,6 +659,10 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
|
|||
|
||||
DEBUG_FILTER_LOG(LOG_FILTER_ACHIEVEMENT_UPDATES, "AchievementMgr::SendAchievementEarned(%u)", achievement->ID);
|
||||
|
||||
// Not broadcast a hidden achievement
|
||||
if(achievement->flags & ACHIEVEMENT_FLAG_HIDDEN)
|
||||
return;
|
||||
|
||||
if (Guild* guild = sGuildMgr.GetGuildById(GetPlayer()->GetGuildId()))
|
||||
{
|
||||
MaNGOS::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID);
|
||||
|
|
@ -2680,6 +2693,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaRequirements()
|
|||
default:
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
||||
break; // any cases
|
||||
|
|
|
|||
|
|
@ -2197,7 +2197,9 @@ bool ChatHandler::isValidChatMessage(const char* message)
|
|||
|
||||
// check if every opened sequence was also closed properly
|
||||
if (validSequence != validSequenceIterator)
|
||||
{
|
||||
DEBUG_LOG("ChatHandler::isValidChatMessage EOF in active sequence");
|
||||
}
|
||||
|
||||
return validSequence == validSequenceIterator;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2014,8 +2014,10 @@ InstanceGroupBind* Group::BindToInstance(DungeonPersistentState* state, bool per
|
|||
bind.state = state;
|
||||
bind.perm = permanent;
|
||||
if (!load)
|
||||
{
|
||||
DEBUG_LOG("Group::BindToInstance: Group (Id: %d) is now bound to map %d, instance %d, difficulty %d",
|
||||
GetId(), state->GetMapId(), state->GetInstanceId(), state->GetDifficulty());
|
||||
}
|
||||
return &bind;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1437,7 +1437,9 @@ void WorldSession::HandleTimeSyncResp(WorldPacket& recv_data)
|
|||
DEBUG_LOG("WORLD: Received opcode CMSG_TIME_SYNC_RESP: counter %u, client ticks %u, time since last sync %u", counter, clientTicks, clientTicks - _player->m_timeSyncClient);
|
||||
|
||||
if (counter != _player->m_timeSyncCounter - 1)
|
||||
{
|
||||
DEBUG_LOG(" WORLD: Opcode CMSG_TIME_SYNC_RESP -- Wrong time sync counter from %s (cheater?)", _player->GetGuidStr().c_str());
|
||||
}
|
||||
|
||||
uint32 ourTicks = clientTicks + (WorldTimer::getMSTime() - _player->m_timeSyncServer);
|
||||
|
||||
|
|
|
|||
|
|
@ -4697,19 +4697,27 @@ void Spell::EffectTriggerMissileSpell(SpellEffectEntry const* effect)
|
|||
m_caster->GetMap()->ScriptsStart(DBS_ON_SPELL, m_spellInfo->Id, m_caster, unitTarget);
|
||||
}
|
||||
else
|
||||
{
|
||||
sLog.outError("EffectTriggerMissileSpell of spell %u (eff: %u): triggering unknown spell id %u",
|
||||
m_spellInfo->Id, effect->EffectIndex, triggered_spell_id);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_CastItem)
|
||||
{
|
||||
DEBUG_FILTER_LOG(LOG_FILTER_SPELL_CAST, "WORLD: cast Item spellId - %i", spellInfo->Id);
|
||||
}
|
||||
|
||||
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
||||
{
|
||||
m_caster->CastSpell(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ, spellInfo, true, m_CastItem, NULL, m_originalCasterGUID, m_spellInfo);
|
||||
}
|
||||
else if (unitTarget)
|
||||
{
|
||||
m_caster->CastSpell(unitTarget, spellInfo, true, m_CastItem, NULL, m_originalCasterGUID, m_spellInfo);
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::EffectJump(SpellEffectEntry const* effect)
|
||||
{
|
||||
|
|
@ -5024,8 +5032,10 @@ void Spell::EffectUnlearnSpecialization(SpellEffectEntry const* effect)
|
|||
_player->removeSpell(spellToUnlearn);
|
||||
|
||||
if (WorldObject const* caster = GetCastingObject())
|
||||
{
|
||||
DEBUG_LOG("Spell: %s has unlearned spell %u at %s", _player->GetGuidStr().c_str(), spellToUnlearn, caster->GetGuidStr().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::EffectPowerDrain(SpellEffectEntry const* effect)
|
||||
{
|
||||
|
|
@ -6583,8 +6593,10 @@ void Spell::EffectLearnSpell(SpellEffectEntry const* effect)
|
|||
player->learnSpell(spellToLearn, false);
|
||||
|
||||
if (WorldObject const* caster = GetCastingObject())
|
||||
{
|
||||
DEBUG_LOG("Spell: %s has learned spell %u from %s", player->GetGuidStr().c_str(), spellToLearn, caster->GetGuidStr().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::EffectDispel(SpellEffectEntry const* effect)
|
||||
{
|
||||
|
|
@ -6852,8 +6864,10 @@ void Spell::EffectLearnSkill(SpellEffectEntry const* effect)
|
|||
((Player*)unitTarget)->SetSkill(skillid, skillval ? skillval : 1, damage * 75, damage);
|
||||
|
||||
if (WorldObject const* caster = GetCastingObject())
|
||||
{
|
||||
DEBUG_LOG("Spell: %s has learned skill %u (to maxlevel %u) from %s", unitTarget->GetGuidStr().c_str(), skillid, damage * 75, caster->GetGuidStr().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::EffectTradeSkill(SpellEffectEntry const* /*effect*/)
|
||||
{
|
||||
|
|
@ -7346,8 +7360,10 @@ void Spell::EffectLearnPetSpell(SpellEffectEntry const* effect)
|
|||
_player->PetSpellInitialize();
|
||||
|
||||
if (WorldObject const* caster = GetCastingObject())
|
||||
{
|
||||
DEBUG_LOG("Spell: %s has learned spell %u from %s", pet->GetGuidStr().c_str(), learn_spellproto->Id, caster->GetGuidStr().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::EffectTaunt(SpellEffectEntry const* /*effect*/)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ void WorldSession::HandleEjectPassenger(WorldPacket& recvPacket)
|
|||
|
||||
// Check for eject flag
|
||||
if (VehicleSeatEntry const* seatEntry = vehicleInfo->GetSeatEntry(passenger->GetTransportInfo()->GetTransportSeat()))
|
||||
if (seatEntry->m_flagsB & SEAT_FLAG_B_EJECTABLE)
|
||||
if (seatEntry->m_flagsB & VEHICLE_SEAT_FLAG_B_EJECTABLE)
|
||||
_player->RemoveSpellsCausingAura(SPELL_AURA_CONTROL_VEHICLE, passengerGuid);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue