Todo List
Member account_commandscript::HandleAccountDeleteCommand (ChatHandler *handler, std::string accountName)
This function has to be enhanced to respect the login/realm split (delete char, delete account chars in realm then delete account)
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
: Has to be implemented
Member AreaTrigger::InitOrbit (AreaTriggerOrbitInfo const &orbit, uint32 timeToTarget)
: research the right value, in sniffs both timers are nearly identical
Member ArenaTeam::GetRatingMod (uint32 ownRating, uint32 opponentRating, bool won)
Replace this hack with using the confidence factor (limiting the factor to 2.0f)
Member Aura::_UnapplyForTarget (Unit *target, Unit *caster, AuraApplication *auraApp)
Figure out why this happens
Member Aura::GetProcEffectMask (AuraApplication *aurApp, ProcEventInfo &eventInfo, TimePoint now) const

this needs to be unified for all kinds of auras

Member Aura::UpdateTargetMap (Unit *caster, bool apply=true)
There is a crash caused by shadowfiend load addon
: Add all other buffs here
: Not confirmed yet
: get out if there comes a sound when neutral team captures mine
Member Battlefield::HandlePlayerEnterZone (Player *player, uint32 zone)
Send a packet to announce it to player
Member Battlefield::InvitePlayerToWar (Player *player)
needed ?
Member Battleground::_ProcessJoin (uint32 diff)
add arena sound PlaySoundToAll(SOUND_ARENA_START);
Member Battleground::BgObjects
make this protected:
Member BattlegroundAV::EndBattleground (Team winner) override
add enterevademode for all attacking creatures
Member BattlegroundAV::HandleQuestComplete (uint32 questid, Player *player) override
add reputation, events (including quest not available anymore, next quest available, go/npc de/spawning)and maybe honor
Member BattlegroundAV::RemovePlayer (Player *player, ObjectGuid guid, uint32 team) override
search more buffs
Class BfWGCoordGY

Implement proper support for vehicle+player teleportation

Use spell victory/defeat in wg instead of RewardMarkOfHonor() && RewardHonor

Add proper implement of achievement

Member boss_elder_nadox::UpdateAI (uint32 diff) override

: summoned by egg

: summoned by egg

Member boss_eregos::SummonedCreatureDespawn (Creature *summon) override
: See why the spell is not cast
Member boss_gatewatcher_iron_hand::UpdateAI (uint32 diff) override
expect cast this about 5 times in a row (?), announce it by emote only once
Member boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI::DoTauntPeons ()
kill the peons first
Member boss_gruul::boss_gruulAI::SpellHitTarget (WorldObject *target, SpellInfo const *spellInfo) override
use eventmap to kill this stuff
Member boss_gruul::boss_gruulAI::UpdateAI (uint32 diff) override
: convert this shit to eventmap
Member boss_hungarfen::JustEngagedWith (Unit *who) override
cast here SPELL_PUTRID_MUSHROOM_PRIMER and do it in spell script
Member boss_kiljaeden::boss_kiljaedenAI::UpdateAI (uint32 diff) override
Member boss_koralon::JustEngagedWith (Unit *who) override

check timer

check timer

Member boss_krick::UpdateAI (uint32 diff) override
Tyrannus starts killing Krick.
Member boss_laj::UpdateAI (uint32 diff) override
: Don't apply same aura twice in a row and don't transform to shadow if the event is executed first time
Member boss_lieutenant_drake::UpdateAI (uint32 diff) override
make this work
Member boss_onyxia::UpdateAI (uint32 diff) override
: In what cases is this null? What should we do?
Member boss_sapphiron::UpdateAI (uint32 diff) override
: at this point it should already despawn, probably that spell is used in another place
Member boss_sjonnir::EnterEvadeMode (EvadeReason) override
: Despawn Brann too but respawn his pre-fight version (
Member boss_sjonnir::JustEngagedWith (Unit *who) override
: Schedule both in combat and out of combat
Member boss_twinemperorsAI::JustEngagedWith (Unit *who) override
we should activate the other boss location so he can start attackning even if nobody
Class boss_viscidus
Not sure if its correct
Member ByteBuffer::read< std::string > ()
Make a ByteBuffer.cpp and move all this inlining to it.
Member Creature::CanStartAttack (Unit const *u, bool force) const
should switch to range attack
Member Creature::DoFleeToGetAssistance ()
use 31365
Member Creature::isCanInteractWithBattleMaster (Player *player, bool msg) const
Rename these properly
Member Creature::SelectVictim ()
a vehicle may eat some mob, so mob should not evade
Member DatabaseWorkerPool< T >::DirectCommitTransaction (SQLTransaction< T > &transaction)
More elegant way
convert in simple system
Member EscortAI::Start (bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false)
get rid of this many variables passed in function.
Member FollowerAI::JustDied (Unit *) override
need a better check for quests with time limit.
Member GameEventMgr::GameEventSpawn (int16 event_id)
find out when it is add to map
Member GameEventMgr::LoadFromDB ()
Change to uint8
Member GameObject::Update (uint32 p_time) override

nullptr target won't work for target type 1

This is activation radius. Casting radius must be selected from spell data.

Member GameObject::Use (Unit *user)

I do not understand this hack. Need some explanation.

find reasonable value for fishing hole search

Member Garments
get text for each NPC
Member go_tablet_of_the_seven::go_tablet_of_the_sevenAI::OnGossipHello (Player *player) override
use gossip option ("Transcript the Tablet") instead, if Trinity adds support.
Member gobject_commandscript::HandleGameObjectAddCommand (ChatHandler *handler, GameObjectEntry objectId, Optional< int32 > spawnTimeSecs)
is it really necessary to add both the real and DB table guid here ?
Class Group
uninvite people that not accepted invite
Member Guardian::InitStatsForLevel (uint8 level)
Move stat mods code to pet passive auras
Member Guild::BankMoveItemData::LogAction (MoveItemData *pFrom) const override
Move this to scripts
Member Guild::HandleGuildRequestChallengeUpdate (WorldSession *session) const
current count
Member instance_eye_of_eternity::instance_eye_of_eternity_InstanceMapScript::SpawnGameObject (uint32 entry, Position const &pos)
this should be handled in map, maybe add a summon function in map
Member instance_karazhan::instance_karazhan_InstanceMapScript::OnGameObjectCreate (GameObject *go) override
Set Object visibilities for Opera based on performance
Member lfg::LFGGroupScript::OnRemoveMember (Group *group, ObjectGuid guid, RemoveMethod method, ObjectGuid kicker, char const *reason) override
- Update internal kick cooldown of kicker
Member lfg::LFGPlayerScript::OnLogin (Player *player, bool loginFirst) override
- Restore LfgPlayerData and send proper status to player if it was in a group
Member LootTemplate::LootGroup::Verify (LootStore const &lootstore, uint32 id, uint8 group_id) const
replace with 100% when DBs will be ready
Member LootTemplate::Verify (LootStore const &store, uint32 Id) const
References validity checks
Member Map::AddToMap (T *)
Needs clean up. An object should not be added to map twice.
Member Map::DeleteFromWorld (Player *player)
I do not know why we need this, it should be removed in ~Object anyway
Member Map::MoveAllCreaturesInMoveList ()
pets will disappear if this is outside CreatureRespawnRelocation
Member Minion::Minion (SummonPropertiesEntry const *properties, Unit *owner, bool isWorldObject)
: Find correct way
Member Movement::MoveSpline::init_spline (MoveSplineInitArgs const &args)
what to do in such cases? problem is in input data (all points are at same coords)
if needed: add more flags to this masks that are exclusive to players
Class npc_cairne_bloodhoof
verify abilities/timers
Member npc_commandscript::HandleNpcAddWeaponCommand (ChatHandler *handler, uint32 SlotID, ItemTemplate const *tmpItem)
NpcCommands that need to be fixed :
Class npc_daegarn
make prisoners help (unclear if summoned or using npc's from surrounding cages (summon inside small cages?))
Member npc_death_knight_initiate::npc_death_knight_initiateAI::UpdateAI (uint32 uiDiff) override
Member npc_dkc1_gothik::npc_dkc1_gothikAI::MoveInLineOfSight (Unit *who) override
Creatures must not be removed, but, must instead
Member npc_earthmender_wilda::npc_earthmender_wildaAI::UpdateAI (uint32 uiDiff) override
add more abilities
Class npc_grimstone
implement quest part of event (different end boss)
Member npc_grimstone::npc_grimstoneAI::SummonRingBoss ()
move them to center
Member npc_grimstone::npc_grimstoneAI::SummonRingMob ()
move them to center
Member npc_hand_of_the_deceiver::npc_hand_of_the_deceiverAI::Initialize ()
Member npc_jaina_or_sylvanas_intro_hor::npc_jaina_or_sylvanas_intro_horAI::UpdateAI (uint32 diff) override
: needs some improvements
Member npc_lorekeeper::npc_lorekeeperAI::OnGossipSelect (Player *player, uint32 menuId, uint32 gossipListId) override
delorah->AI()->Talk(xxxx, brann->GetGUID()); when reached at branz
Member npc_medivh_bm::UpdateAI (uint32 diff) override
start the post-event here
Member npc_prince_taldaram_flame_sphere::UpdateAI (uint32 diff) override

: find correct values

: correct speed

Member npc_thrall_old_hillsbrad::JustSummoned (Creature *summoned) override
make Scarloc start into event instead, and not start attack directly
Member npc_thrall_old_hillsbrad::UpdateAI (uint32 diff) override
add his abilities'n-crap here
Member npc_verdisa_beglaristrasz_eternos::StoreEssence (Player *player, uint32 itemId)
: implement with spells
Member npc_weegli_blastfuse::npc_weegli_blastfuseAI::MovementInform (uint32, uint32) override
leave the area...
This number is completly random!
Member ObjectGridUnloader::Visit (GridRefManager< T > &m)
Check if that script has the correct logic. Do we really need to summons something before deleting?
Class ObjectWorldLoader
to implement npc on transport, also need to load npcs at grid loading
Member OutdoorPvPNASpells
"sometimes" set to neutral
Member OutdoorPvPSI::HandleAreaTrigger (Player *player, uint32 trigger, bool entered) override

: confirm this text

: confirm this text

Class OutdoorPvPZM
flag carrier death/leave/mount/activitychange should give back the gossip options
Member PathGenerator::BuildPointPath (float const *startPoint, float const *endPoint)
check the exact cases
Member PathGenerator::BuildPolyPath (G3D::Vector3 const &startPos, G3D::Vector3 const &endPos)

play with the values here

we can merge it with getPathPolyByPosition() loop

Member Player::AddItem (uint32 itemId, uint32 count)
Send to mailbox if no space
Member Player::AddSpellMod (SpellModifier *mod, bool apply)
Implement sending of bulk modifiers instead of single
Member Player::CanUninviteFromGroup (ObjectGuid guidMember, Optional< uint8 > partyIndex) const
Should also be sent when anyone has recently left combat, with an aprox ~5 seconds timer.
Member Player::CanUseItem (Item *pItem, bool not_loading=true) const
when you right-click already equipped item it throws EQUIP_ERR_PROFICIENCY_NEEDED.
Member Player::Create (ObjectGuid::LowType guidlow, WorldPackets::Character::CharacterCreateInfo const *createInfo)
need more checks against packet modifications
Member Player::duel
: maybe move UpdateDuelFlag+DuelComplete to independent DuelHandler
Member Player::GiveLevel (uint8 level)

Poor design of mail system

find some better solution

Member Player::Regenerate (Powers power)
possible use of miscvalueb instead of amount
Member Player::RewardQuest (Quest const *quest, LootItemType rewardType, uint32 rewardId, Object *questGiver, bool announce=true)
Poor design of mail system
Member Player::SaveToDB (LoginDatabaseTransaction loginTransaction, CharacterDatabaseTransaction trans, bool create=false)
: Filter out more redundant fields that can take their default value at player create
Member Player::SendInitialPacketsBeforeAddToMap ()

Member Player::SendPreparedQuest (WorldObject *source)
verify if check for !quest->IsDaily() is really correct (possibly not)
Member Player::UpdatePvPState (bool onlyFFA=false)
should we always synchronize UNIT_FIELD_BYTES_2, 1 of controller and controlled?
Member PlayerDumpWriter::GetDump (ObjectGuid::LowType guid, std::string &dump)

Add a dump level option to skip some non-important tables

Add instance/group..

Member Puppet::Update (uint32 time) override
why long distance .die does not remove it
Member ReputationMgr::SendInitialReputations ()
faction bonus
Member RoomRadius
Visci isn't in room middle
Member ScriptMgr::CreateBattleground (BattlegroundTypeId typeId)
Implement script-side battlegrounds.
Member send_commandscript::HandleSendMailCommand (ChatHandler *handler, char const *args)
Fix poor design
Member SmartAI::WaypointPathEnded (uint32 nodeId, uint32 pathId) override
move escort related logic
Member Spell::AddUnitTarget (Unit *target, uint32 effectMask, bool checkIfValid=true, bool implicit=true, Position const *losPosition=nullptr)
this is a hack
Member Spell::CheckCast (bool strict, int32 *param1=nullptr, int32 *param2=nullptr)
determine if there is some flag to enable/disable the check
Member Spell::CheckEffectTarget (Unit const *target, SpellEffectInfo const &spellEffectInfo, Position const *losPosition) const
shit below shouldn't be here, but it's temporary
Member Spell::CheckItems (int32 *param1, int32 *param2) const
Needs review
Member Spell::DoTriggersOnSpellHit (Unit *unit)
remove/cleanup this, as this table is not documented and people are doing stupid things with it
Member Spell::EffectCreateItem2 ()
ExecuteLogEffectCreateItem(i, m_spellInfo->Effects[i].ItemType);
Member Spell::EffectCreateRandomItem ()
ExecuteLogEffectCreateItem(i, m_spellInfo->Effects[i].ItemType);
Member Spell::EffectFeedPet ()
fix crash when a spell has two effects, both pointed at the same item target
Member Spell::EffectHeal ()
: move this to scripts
Member Spell::EffectInterruptCast ()
not all spells that used this effect apply cooldown at school spells
Member Spell::EffectOpenLock ()
Add script for spell 41920 - Filling, becouse server it freze when use this spell
Member Spell::EffectScriptEffect ()

we must implement hunter pet summon at login there (spell 6962)

: move this to scripts

a hack, range = 11, should after some time cast, otherwise too far

Member Spell::EffectSendEvent ()
there should be a possibility to pass dest target to event script
Member Spell::EffectTriggerSpell ()
move those to spell scripts
Member Spell::SelectImplicitCasterDestTargets (SpellEffectInfo const &spellEffectInfo, SpellImplicitTargetInfo const &targetType, SpellTargetIndex targetIndex)
fix this check
: make use of this spell...
Class spell_gen_despawn_self
: migrate spells to spell_gen_despawn_target, then remove this
Member spell_gen_restoration::PeriodicTick (AuraEffect const *)
: should proc other auras?
Member spell_gen_vehicle_scaling::CalculateAmount (AuraEffect const *, int32 &amount, bool &)

Research possibility of scaling down

Reserach coeffs for different vehicles

Member spell_intense_cold::HandlePeriodicTick (AuraEffect const *)
the caster should be boss but not the player
Cast every 3 seconds during Frostmourne phase, targets a Wicked Spirit amd activates it
Class spell_mage_polymorph_visual
move out of here and rename - not a mage spell
Member spell_murmur_sonic_boom_effect::CalcDamage ()
: find correct value
Member spell_q12589_shoot_rjr::HandleDummy (SpellEffIndex)
Make crunchy perform emote eat when he reaches the bird
Member spell_thorim_blizzard_effect::spell_thorim_blizzard_effect_AuraScript::CheckAreaTarget (Unit *target)
: fix this for all dynobj auras
Figure out a more accurate name for the following familyflag(s)
Member SpellMgr::LoadSpellInfoCorrections ()
: remove this when basepoints of all Ride Vehicle auras are calculated correctly
Class SpellTargetSelector
Add more checks from Spell::CheckCast
Member SwarmerPos
These below are probably incorrect, taken from SD2
: sound is missing
: sound is missing
Member trollmodel []
generalize these models with race from dbc
Member TurretAI::CanAIAttack (Unit const *who) const override
use one function to replace it
Member Unit::CalculateMeleeDamage (Unit *victim, CalcDamageInfo *damageInfo, WeaponAttackType attackType=BASE_ATTACK)
for melee need create structure as in
Member Unit::DealDamage (Unit *attacker, Unit *victim, uint32 damage, CleanDamage const *cleanDamage=nullptr, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=nullptr, bool durabilityLoss=true)
check packets if damage is done by victim, or by attacker of victim
Member Unit::IsMagnet () const
: find a more generic solution
Member Unit::RemoveAllGroupBuffsFromCaster (ObjectGuid casterGUID)
: once we support variadic templates use them here
Member Unit::RemoveCharmedBy (Unit *charmer)
Handle SLOT_IDLE motion resume
Member Unit::SendPeriodicAuraLog (SpellPeriodicAuraLogInfo *pInfo)
: implement debug info
Member Unit::SetCharm (Unit *target, bool apply)
maybe we can use this flag to check if controlled by player
Member Unit::SetFacingToObject (WorldObject const *object, bool force=true)
figure out under what conditions creature will move towards object instead of facing it where it currently is.
Member Unit::SetFacingToPoint (Position const &point, bool force=true)
figure out under what conditions creature will move towards object instead of facing it where it currently is.
Member Unit::SetPower (Powers power, int32 val, bool withPowerUpdate=true)
: Support multiple counts ?
Member Unit::UpdateSpeed (UnitMoveType mtype)
possible affect only on MOVE_RUN
Member WardenWin::HandleCheckResult (ByteBuffer &buff) override
test it.
Member World::getAllowMovement () const
Actions on m_allowMovement still to be implemented Is movement allowed?
Member World::LoadConfigSettings (bool reload=false)
Add MonsterSight (with meaning) in worldserver.conf or put them as define
Member World::SetInitialWorldSettings ()
Get rid of magic numbers
Member World::~World ()
free addSessQueue
Member WorldObject::DestroyForNearbyPlayers ()
this is for puppet
Member WorldObject::GetMagicHitRedirectTarget (Unit *victim, SpellInfo const *spellInfo)
handle this charge drop by proc in cast phase on explicit target
Member WorldObject::SpellHitResult (Unit *victim, SpellInfo const *spellInfo, bool canReflect=false) const
client not show miss log for this spells - so need find info for this in dbc and use it!
Member WorldPackets::Auth::AuthResponse::AuthSuccessInfo::CurrencyID
Member WorldPackets::Auth::AuthResponse::AuthSuccessInfo::ForceCharacterTemplate
Member WorldPackets::Auth::AuthResponse::AuthSuccessInfo::NumPlayersAlliance
Member WorldPackets::Auth::AuthResponse::AuthSuccessInfo::NumPlayersHorde
Member WorldPackets::Auth::AuthResponse::AuthSuccessInfo::TimeSecondsUntilPCKick
Member WorldPackets::Auth::AuthResponse::AuthSuccessInfo::VirtualRealms
Member WorldPackets::Auth::AuthWaitInfo::HasFCM
Member WorldPackets::Auth::VirtualRealmNameInfo::IsInternalRealm
Member WorldPackets::Character::CharacterUndeleteInfo::ClientToken
: research
Class WorldPackets::Character::CharRaceOrFactionChange
: CharCustomizeResult
Member WorldPackets::Character::EnumCharactersResult::CharacterInfo::BoostInProgress
Member WorldPackets::Character::EnumCharactersResult::CharacterInfo::Flags3
Member WorldPackets::Character::EnumCharactersResult::CharacterInfo::ProfessionIds [2]
Member WorldPackets::Inspect::InspectItemData::InspectItemData (Item const *item, uint8 index)
Member WorldPackets::Reputation::InitializeFactions::FactionHasBonus
: implement faction bonus
Member WorldPackets::WorldState::UpdateWorldState::Hidden
: research
Member WorldSession::HandleCharCreateOpcode (WorldPackets::Character::CreateCharacter &charCreate)

check if cinematic already shown? (already logged in?; cinematic field)

what to if account already has characters of both races?

Member WorldSession::HandleCharCustomizeCallback (std::shared_ptr< WorldPackets::Character::CharCustomizeInfo > customizeInfo, PreparedQueryResult result)
: make async
Member WorldSession::HandleCharUndeleteOpcode (WorldPackets::Character::UndeleteCharacter &undeleteInfo)
: add more safety checks
  • max char count per account
  • max death knight count
  • max demon hunter count
  • team violation
Member WorldSession::HandleChatAddonMessage (ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target="", Optional< ObjectGuid > channelGuid={})
implement cross realm whispers (someday)
Member WorldSession::HandleChatMessage (ChatMsg type, Language lang, std::string msg, std::string target="", Optional< ObjectGuid > channelGuid={})
implement cross realm whispers (someday)
Member WorldSession::HandleCommerceTokenGetLog (WorldPackets::Token::CommerceTokenGetLog &updateListedAuctionableTokens)
: 6.x fix implementation
Member WorldSession::HandleCommerceTokenGetMarketPrice (WorldPackets::Token::CommerceTokenGetMarketPrice &requestWowTokenMarketPrice)
: 6.x fix implementation
Member WorldSession::HandleDelFriendOpcode (WorldPackets::Social::DelFriend &packet)
: handle VirtualRealmAddress
Member WorldSession::HandleDelIgnoreOpcode (WorldPackets::Social::DelIgnore &packet)
: handle VirtualRealmAddress
Member WorldSession::HandleMovementOpcode (OpcodeClient opcode, MovementInfo &movementInfo)
discard movement packets after the player is rooted
Member WorldSession::HandlePetAction (WorldPackets::Pet::PetAction &packet)
allow control charmed player?
Member WorldSession::HandlePetActionHelper (Unit *pet, ObjectGuid guid1, uint32 spellid, uint16 flag, ObjectGuid guid2, Position const &pos)

: confirm this check

Send proper error message to client

Member WorldSession::HandleReadItem (WorldPackets::Item::ReadItem &readItem)
: 6.x research new values
Member WorldSession::HandleRequestWorldQuestUpdate (WorldPackets::Quest::RequestWorldQuestUpdate &packet)
: 7.x Has to be implemented
Member WorldSession::HandleSetContactNotesOpcode (WorldPackets::Social::SetContactNotes &packet)
: handle VirtualRealmAddress
Member WorldSession::HandleSpellClick (WorldPackets::Spells::SpellClick &spellClick)
Unit::SetCharmedBy: 28782 is not in world but 0 is trying to charm it! -> crash
Member WorldSession::HandleWhoOpcode (WorldPackets::Who::WhoRequestPkt &whoRequest)
: handle following packet values VirtualRealmNames ShowEnemies ShowArenaPlayers ExactName ServerInfo
Member WorldSession::HandleWrapItem (WorldPackets::Item::WrapItem &packet)
: 6.x find better way for read
Member Yells
rewrite Armageddon