Restore some commits from trinitycore2 3.1.3
--HG-- branch : trunk
This commit is contained in:
+12
-11
@@ -1708,16 +1708,6 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
|
||||
{
|
||||
Item* item = reward->itemId ? Item::CreateItem(reward->itemId,1,GetPlayer ()) : NULL;
|
||||
|
||||
MailItemsInfo mi;
|
||||
if(item)
|
||||
{
|
||||
// save new item before send
|
||||
item->SaveToDB(); // save for prevent lost at next mail load, if send fail then item will deleted
|
||||
|
||||
// item
|
||||
mi.AddItem(item->GetGUIDLow(), item->GetEntry(), item);
|
||||
}
|
||||
|
||||
int loc_idx = GetPlayer()->GetSession()->GetSessionDbLocaleIndex();
|
||||
|
||||
// subject and text
|
||||
@@ -1736,7 +1726,18 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
|
||||
|
||||
uint32 itemTextId = objmgr.CreateItemText( text );
|
||||
|
||||
WorldSession::SendMailTo(GetPlayer(), MAIL_CREATURE, MAIL_STATIONERY_NORMAL, reward->sender, GetPlayer()->GetGUIDLow(), subject, itemTextId , &mi, 0, 0, MAIL_CHECK_MASK_NONE);
|
||||
MailDraft draft(subject, itemTextId);
|
||||
|
||||
if(item)
|
||||
{
|
||||
// save new item before send
|
||||
item->SaveToDB(); // save for prevent lost at next mail load, if send fail then item will deleted
|
||||
|
||||
// item
|
||||
draft.AddItem(item);
|
||||
}
|
||||
|
||||
draft.SendMailTo(GetPlayer(), MailSender(MAIL_CREATURE, reward->sender));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -922,10 +922,6 @@ void BattleGround::SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count)
|
||||
// save new item before send
|
||||
markItem->SaveToDB(); // save for prevent lost at next mail load, if send fail then item will deleted
|
||||
|
||||
// item
|
||||
MailItemsInfo mi;
|
||||
mi.AddItem(markItem->GetGUIDLow(), markItem->GetEntry(), markItem);
|
||||
|
||||
// subject: item name
|
||||
std::string subject = markProto->Name1;
|
||||
int loc_idx = plr->GetSession()->GetSessionDbLocaleIndex();
|
||||
@@ -940,7 +936,9 @@ void BattleGround::SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count)
|
||||
snprintf(textBuf,300,textFormat.c_str(),GetName(),GetName());
|
||||
uint32 itemTextId = objmgr.CreateItemText( textBuf );
|
||||
|
||||
WorldSession::SendMailTo(plr, MAIL_CREATURE, MAIL_STATIONERY_NORMAL, bmEntry, plr->GetGUIDLow(), subject, itemTextId , &mi, 0, 0, MAIL_CHECK_MASK_NONE);
|
||||
MailDraft(subject, itemTextId)
|
||||
.AddItem(markItem)
|
||||
.SendMailTo(plr, MailSender(MAIL_CREATURE, bmEntry));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "Opcodes.h"
|
||||
|
||||
// Temporal fix to wintergrasp spirit guides till 3.2
|
||||
#include "Wintergrasp.h"
|
||||
#include "OutdoorPvPWG.h"
|
||||
#include "OutdoorPvPMgr.h"
|
||||
// WG end
|
||||
|
||||
@@ -604,7 +604,7 @@ void WorldSession::HandleAreaSpiritHealerQueryOpcode( WorldPacket & recv_data )
|
||||
{ // Wintergrasp Hack till 3.2 and it's implemented as BG
|
||||
if (GetPlayer()->GetZoneId() == 4197)
|
||||
{
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
if (pvpWG && pvpWG->isWarTime())
|
||||
pvpWG->SendAreaSpiritHealerQueryOpcode(_player, guid);
|
||||
}
|
||||
@@ -635,7 +635,7 @@ void WorldSession::HandleAreaSpiritHealerQueueOpcode( WorldPacket & recv_data )
|
||||
{ // Wintergrasp Hack till 3.2 and it's implemented as BG
|
||||
if (GetPlayer()->GetZoneId() == 4197)
|
||||
{
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
if (pvpWG && pvpWG->isWarTime())
|
||||
pvpWG->AddPlayerToResurrectQueue(guid, _player->GetGUID());
|
||||
}
|
||||
|
||||
+8
-8
@@ -40,7 +40,7 @@
|
||||
#include <fstream>
|
||||
#include <map>
|
||||
#include "GlobalEvents.h"
|
||||
#include "Wintergrasp.h"
|
||||
#include "OutdoorPvPWG.h"
|
||||
#include "OutdoorPvPMgr.h"
|
||||
|
||||
#include "TargetedMovementGenerator.h" // for HandleNpcUnFollowCommand
|
||||
@@ -4240,7 +4240,7 @@ bool ChatHandler::HandleNpcSetLinkCommand(const char* args)
|
||||
|
||||
bool ChatHandler::HandleWintergraspStatusCommand(const char* args)
|
||||
{
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
|
||||
if (!pvpWG || !sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_ENABLED))
|
||||
{
|
||||
@@ -4260,7 +4260,7 @@ bool ChatHandler::HandleWintergraspStatusCommand(const char* args)
|
||||
|
||||
bool ChatHandler::HandleWintergraspStartCommand(const char* args)
|
||||
{
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
|
||||
if (!pvpWG || !sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_ENABLED))
|
||||
{
|
||||
@@ -4275,7 +4275,7 @@ bool ChatHandler::HandleWintergraspStartCommand(const char* args)
|
||||
|
||||
bool ChatHandler::HandleWintergraspStopCommand(const char* args)
|
||||
{
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
|
||||
if (!pvpWG || !sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_ENABLED))
|
||||
{
|
||||
@@ -4293,7 +4293,7 @@ bool ChatHandler::HandleWintergraspEnableCommand(const char* args)
|
||||
if(!*args)
|
||||
return false;
|
||||
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
|
||||
if (!pvpWG || !sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_ENABLED))
|
||||
{
|
||||
@@ -4335,7 +4335,7 @@ bool ChatHandler::HandleWintergraspTimerCommand(const char* args)
|
||||
if(!*args)
|
||||
return false;
|
||||
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
|
||||
if (!pvpWG)
|
||||
{
|
||||
@@ -4368,7 +4368,7 @@ bool ChatHandler::HandleWintergraspTimerCommand(const char* args)
|
||||
|
||||
bool ChatHandler::HandleWintergraspSwitchTeamCommand(const char* args)
|
||||
{
|
||||
OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
OutdoorPvPWG *pvpWG = (OutdoorPvPWG*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197);
|
||||
|
||||
if (!pvpWG)
|
||||
{
|
||||
@@ -4379,6 +4379,6 @@ bool ChatHandler::HandleWintergraspSwitchTeamCommand(const char* args)
|
||||
uint32 timer = pvpWG->GetTimer();
|
||||
pvpWG->forceChangeTeam();
|
||||
pvpWG->setTimer(timer);
|
||||
PSendSysMessage(LANG_BG_WG_SWITCH_FACTION, GetTrinityString(pvpWG->GetTeam() == TEAM_ALLIANCE ? LANG_BG_AB_ALLY : LANG_BG_AB_HORDE));
|
||||
PSendSysMessage(LANG_BG_WG_SWITCH_FACTION, GetTrinityString(pvpWG->getDefenderTeam() == TEAM_ALLIANCE ? LANG_BG_AB_ALLY : LANG_BG_AB_HORDE));
|
||||
return true;
|
||||
}
|
||||
|
||||
+22
-15
@@ -560,6 +560,7 @@ bool ChatHandler::HandleReloadAllCommand(const char*)
|
||||
HandleReloadAllLocalesCommand("");
|
||||
|
||||
HandleReloadAccessRequirementCommand("");
|
||||
HandleReloadMailLevelRewardCommand("");
|
||||
HandleReloadCommandCommand("");
|
||||
HandleReloadReservedNameCommand("");
|
||||
HandleReloadTrinityStringCommand("");
|
||||
@@ -881,12 +882,12 @@ bool ChatHandler::HandleReloadLootTemplatesProspectingCommand(const char*)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleReloadLootTemplatesQuestMailCommand(const char*)
|
||||
bool ChatHandler::HandleReloadLootTemplatesMailCommand(const char*)
|
||||
{
|
||||
sLog.outString( "Re-Loading Loot Tables... (`quest_mail_loot_template`)" );
|
||||
LoadLootTemplates_QuestMail();
|
||||
LootTemplates_QuestMail.CheckLootRefs();
|
||||
SendGlobalGMSysMessage("DB table `quest_mail_loot_template` reloaded.");
|
||||
sLog.outString( "Re-Loading Loot Tables... (`mail_loot_template`)" );
|
||||
LoadLootTemplates_Mail();
|
||||
LootTemplates_Mail.CheckLootRefs();
|
||||
SendGlobalSysMessage("DB table `mail_loot_template` reloaded.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1366,6 +1367,14 @@ bool ChatHandler::HandleReloadLocalesQuestCommand(const char* /*arg*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleReloadMailLevelRewardCommand(const char* /*arg*/)
|
||||
{
|
||||
sLog.outString( "Re-Loading Player level dependent mail rewards..." );
|
||||
objmgr.LoadMailLevelRewards();
|
||||
SendGlobalSysMessage("DB table `mail_level_reward` reloaded.");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleLoadScriptsCommand(const char *args)
|
||||
{
|
||||
if(!LoadScriptingModule(args)) return true;
|
||||
@@ -7100,25 +7109,23 @@ bool ChatHandler::HandleSendItemsCommand(const char *args)
|
||||
}
|
||||
|
||||
// from console show not existed sender
|
||||
uint32 sender_guidlo = m_session ? m_session->GetPlayer()->GetGUIDLow() : 0;
|
||||
MailSender sender(MAIL_NORMAL,m_session ? m_session->GetPlayer()->GetGUIDLow() : 0, MAIL_STATIONERY_GM);
|
||||
|
||||
uint32 messagetype = MAIL_NORMAL;
|
||||
uint32 stationery = MAIL_STATIONERY_GM;
|
||||
uint32 itemTextId = !text.empty() ? objmgr.CreateItemText( text ) : 0;
|
||||
|
||||
// fill mail
|
||||
MailItemsInfo mi; // item list preparing
|
||||
MailDraft draft(subject, itemTextId);
|
||||
|
||||
for (ItemPairs::const_iterator itr = items.begin(); itr != items.end(); ++itr)
|
||||
{
|
||||
if(Item* item = Item::CreateItem(itr->first,itr->second,m_session ? m_session->GetPlayer() : 0))
|
||||
{
|
||||
item->SaveToDB(); // save for prevent lost at next mail load, if send fail then item will deleted
|
||||
mi.AddItem(item->GetGUIDLow(), item->GetEntry(), item);
|
||||
draft.AddItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
WorldSession::SendMailTo(receiver,messagetype, stationery, sender_guidlo, GUID_LOPART(receiver_guid), subject, itemTextId, &mi, 0, 0, MAIL_CHECK_MASK_NONE);
|
||||
draft.SendMailTo(MailReceiver(receiver,GUID_LOPART(receiver_guid)), sender);
|
||||
|
||||
std::string nameLink = playerLink(receiver_name);
|
||||
PSendSysMessage(LANG_MAIL_SENT, nameLink.c_str());
|
||||
@@ -7162,13 +7169,13 @@ bool ChatHandler::HandleSendMoneyCommand(const char *args)
|
||||
std::string text = msgText;
|
||||
|
||||
// from console show not existed sender
|
||||
uint32 sender_guidlo = m_session ? m_session->GetPlayer()->GetGUIDLow() : 0;
|
||||
MailSender sender(MAIL_NORMAL,m_session ? m_session->GetPlayer()->GetGUIDLow() : 0, MAIL_STATIONERY_GM);
|
||||
|
||||
uint32 messagetype = MAIL_NORMAL;
|
||||
uint32 stationery = MAIL_STATIONERY_GM;
|
||||
uint32 itemTextId = !text.empty() ? objmgr.CreateItemText( text ) : 0;
|
||||
|
||||
WorldSession::SendMailTo(receiver,messagetype, stationery, sender_guidlo, GUID_LOPART(receiver_guid), subject, itemTextId, NULL, money, 0, MAIL_CHECK_MASK_NONE);
|
||||
MailDraft(subject, itemTextId)
|
||||
.AddMoney(money)
|
||||
.SendMailTo(MailReceiver(receiver,GUID_LOPART(receiver_guid)),sender);
|
||||
|
||||
std::string nameLink = playerLink(receiver_name);
|
||||
PSendSysMessage(LANG_MAIL_SENT, nameLink.c_str());
|
||||
|
||||
+36
-72
@@ -2572,6 +2572,9 @@ void Player::GiveLevel(uint8 level)
|
||||
if (Pet* pet = GetPet())
|
||||
pet->SynchronizeLevelWithOwner();
|
||||
|
||||
if (MailLevelReward const* mailReward = objmgr.GetMailLevelReward(level,getRaceMask()))
|
||||
MailDraft(mailReward->mailTemplateId).SendMailTo(this,MailSender(MAIL_CREATURE,mailReward->senderEntry));
|
||||
|
||||
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL);
|
||||
}
|
||||
|
||||
@@ -4152,27 +4155,38 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
// remove signs from petitions (also remove petitions if owner);
|
||||
RemovePetitionsAndSigns(playerguid, 10);
|
||||
|
||||
// return back all mails with COD and Item 0 1 2 3 4 5 6
|
||||
QueryResult *resultMail = CharacterDatabase.PQuery("SELECT id,mailTemplateId,sender,subject,itemTextId,money,has_items FROM mail WHERE receiver='%u' AND has_items<>0 AND cod<>0", guid);
|
||||
// return back all mails with COD and Item 0 1 2 3 4 5 6 7
|
||||
QueryResult *resultMail = CharacterDatabase.PQuery("SELECT id,messageType,mailTemplateId,sender,subject,itemTextId,money,has_items FROM mail WHERE receiver='%u' AND has_items<>0 AND cod<>0", guid);
|
||||
if(resultMail)
|
||||
{
|
||||
do
|
||||
{
|
||||
Field *fields = resultMail->Fetch();
|
||||
|
||||
uint32 mail_id = fields[0].GetUInt32();
|
||||
uint16 mailTemplateId= fields[1].GetUInt16();
|
||||
uint32 sender = fields[2].GetUInt32();
|
||||
std::string subject = fields[3].GetCppString();
|
||||
uint32 itemTextId = fields[4].GetUInt32();
|
||||
uint32 money = fields[5].GetUInt32();
|
||||
bool has_items = fields[6].GetBool();
|
||||
uint16 mailType = fields[1].GetUInt16();
|
||||
uint16 mailTemplateId= fields[2].GetUInt16();
|
||||
uint32 sender = fields[3].GetUInt32();
|
||||
std::string subject = fields[4].GetCppString();
|
||||
uint32 itemTextId = fields[5].GetUInt32();
|
||||
uint32 money = fields[6].GetUInt32();
|
||||
bool has_items = fields[7].GetBool();
|
||||
|
||||
//we can return mail now
|
||||
//so firstly delete the old one
|
||||
CharacterDatabase.PExecute("DELETE FROM mail WHERE id = '%u'", mail_id);
|
||||
|
||||
MailItemsInfo mi;
|
||||
// mail not from player
|
||||
if (mailType != MAIL_NORMAL)
|
||||
{
|
||||
if(has_items)
|
||||
CharacterDatabase.PExecute("DELETE FROM mail_items WHERE mail_id = '%u'", mail_id);
|
||||
continue;
|
||||
}
|
||||
|
||||
MailDraft draft(subject, itemTextId);
|
||||
if (mailTemplateId)
|
||||
draft = MailDraft(mailTemplateId,false); // itesm already included
|
||||
|
||||
if(has_items)
|
||||
{
|
||||
// data needs to be at first place for Item::LoadFromDB
|
||||
@@ -4201,7 +4215,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
continue;
|
||||
}
|
||||
|
||||
mi.AddItem(item_guidlow, item_template, pItem);
|
||||
draft.AddItem(pItem);
|
||||
}
|
||||
while (resultItems->NextRow());
|
||||
|
||||
@@ -4213,7 +4227,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
|
||||
uint32 pl_account = objmgr.GetPlayerAccountIdByGUID(MAKE_NEW_GUID(guid, 0, HIGHGUID_PLAYER));
|
||||
|
||||
WorldSession::SendReturnToSender(MAIL_NORMAL, pl_account, guid, sender, subject, itemTextId, &mi, money, mailTemplateId);
|
||||
draft.AddMoney(money).SendReturnToSender(pl_account, guid, sender);
|
||||
}
|
||||
while (resultMail->NextRow());
|
||||
|
||||
@@ -7897,7 +7911,7 @@ void Player::SendLoot(uint64 guid, LootType loot_type)
|
||||
{
|
||||
sLog.outDebug(" if(lootid)");
|
||||
loot->clear();
|
||||
loot->FillLoot(lootid, LootTemplates_Gameobject, this, false, go->GetLootMode());
|
||||
loot->FillLoot(lootid, LootTemplates_Gameobject, this, false, false, go->GetLootMode());
|
||||
}
|
||||
|
||||
if (loot_type == LOOT_FISHING)
|
||||
@@ -8026,7 +8040,7 @@ void Player::SendLoot(uint64 guid, LootType loot_type)
|
||||
loot->clear();
|
||||
|
||||
if (uint32 lootid = creature->GetCreatureInfo()->lootid)
|
||||
loot->FillLoot(lootid, LootTemplates_Creature, recipient, false, creature->GetLootMode());
|
||||
loot->FillLoot(lootid, LootTemplates_Creature, recipient, false, false, creature->GetLootMode());
|
||||
|
||||
loot->generateMoneyLoot(creature->GetCreatureInfo()->mingold,creature->GetCreatureInfo()->maxgold);
|
||||
|
||||
@@ -13379,56 +13393,8 @@ void Player::RewardQuest( Quest const *pQuest, uint32 reward, Object* questGiver
|
||||
}
|
||||
|
||||
// Send reward mail
|
||||
if (pQuest->GetRewMailTemplateId())
|
||||
{
|
||||
MailMessageType mailType;
|
||||
uint32 senderGuidOrEntry;
|
||||
switch(questGiver->GetTypeId())
|
||||
{
|
||||
case TYPEID_UNIT:
|
||||
mailType = MAIL_CREATURE;
|
||||
senderGuidOrEntry = questGiver->GetEntry();
|
||||
break;
|
||||
case TYPEID_GAMEOBJECT:
|
||||
mailType = MAIL_GAMEOBJECT;
|
||||
senderGuidOrEntry = questGiver->GetEntry();
|
||||
break;
|
||||
case TYPEID_ITEM:
|
||||
mailType = MAIL_ITEM;
|
||||
senderGuidOrEntry = questGiver->GetEntry();
|
||||
break;
|
||||
case TYPEID_PLAYER:
|
||||
mailType = MAIL_NORMAL;
|
||||
senderGuidOrEntry = questGiver->GetGUIDLow();
|
||||
break;
|
||||
default:
|
||||
mailType = MAIL_NORMAL;
|
||||
senderGuidOrEntry = GetGUIDLow();
|
||||
break;
|
||||
}
|
||||
|
||||
Loot questMailLoot;
|
||||
|
||||
questMailLoot.FillLoot(pQuest->GetQuestId(), LootTemplates_QuestMail, this,true);
|
||||
|
||||
// fill mail
|
||||
MailItemsInfo mi; // item list preparing
|
||||
|
||||
uint32 max_slot = questMailLoot.GetMaxSlotInLootFor(this);
|
||||
for (uint32 i = 0; mi.size() < MAX_MAIL_ITEMS && i < max_slot; ++i)
|
||||
{
|
||||
if (LootItem* lootitem = questMailLoot.LootItemInSlot(i,this))
|
||||
{
|
||||
if (Item* item = Item::CreateItem(lootitem->itemid,lootitem->count,this))
|
||||
{
|
||||
item->SaveToDB(); // save for prevent lost at next mail load, if send fail then item will deleted
|
||||
mi.AddItem(item->GetGUIDLow(), item->GetEntry(), item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WorldSession::SendMailTo(this, mailType, MAIL_STATIONERY_NORMAL, senderGuidOrEntry, GetGUIDLow(), "", 0, &mi, 0, 0, MAIL_CHECK_MASK_NONE,pQuest->GetRewMailDelaySecs(),pQuest->GetRewMailTemplateId());
|
||||
}
|
||||
if (uint32 mail_template_id = pQuest->GetRewMailTemplateId())
|
||||
MailDraft(mail_template_id).SendMailTo(this, questGiver, MAIL_CHECK_MASK_NONE, pQuest->GetRewMailDelaySecs());
|
||||
|
||||
if (pQuest->IsDaily())
|
||||
{
|
||||
@@ -15728,20 +15694,20 @@ void Player::_LoadInventory(QueryResult *result, uint32 timediff)
|
||||
// send by mail problematic items
|
||||
while (!problematicItems.empty())
|
||||
{
|
||||
std::string subject = GetSession()->GetMangosString(LANG_NOT_EQUIPPED_ITEM);
|
||||
|
||||
// fill mail
|
||||
MailItemsInfo mi; // item list preparing
|
||||
MailDraft draft(subject);
|
||||
|
||||
for (uint8 i = 0; !problematicItems.empty() && i < MAX_MAIL_ITEMS; ++i)
|
||||
{
|
||||
Item* item = problematicItems.front();
|
||||
problematicItems.pop_front();
|
||||
|
||||
mi.AddItem(item->GetGUIDLow(), item->GetEntry(), item);
|
||||
draft.AddItem(item);
|
||||
}
|
||||
|
||||
std::string subject = GetSession()->GetTrinityString(LANG_NOT_EQUIPPED_ITEM);
|
||||
|
||||
WorldSession::SendMailTo(this, MAIL_NORMAL, MAIL_STATIONERY_GM, GetGUIDLow(), GetGUIDLow(), subject, 0, &mi, 0, 0, MAIL_CHECK_MASK_NONE);
|
||||
draft.SendMailTo(this, MailSender(this, MAIL_STATIONERY_GM));
|
||||
}
|
||||
}
|
||||
//if(isAlive())
|
||||
@@ -20172,8 +20138,6 @@ void Player::AutoUnequipOffhandIfNeed(bool force /*= false*/)
|
||||
}
|
||||
else
|
||||
{
|
||||
MailItemsInfo mi;
|
||||
mi.AddItem(offItem->GetGUIDLow(), offItem->GetEntry(), offItem);
|
||||
MoveItemFromInventory(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND, true);
|
||||
CharacterDatabase.BeginTransaction();
|
||||
offItem->DeleteFromInventoryDB(); // deletes item from character's inventory
|
||||
@@ -20181,7 +20145,7 @@ void Player::AutoUnequipOffhandIfNeed(bool force /*= false*/)
|
||||
CharacterDatabase.CommitTransaction();
|
||||
|
||||
std::string subject = GetSession()->GetMangosString(LANG_NOT_EQUIPPED_ITEM);
|
||||
WorldSession::SendMailTo(this, MAIL_NORMAL, MAIL_STATIONERY_GM, GetGUIDLow(), GetGUIDLow(), subject, 0, &mi, 0, 0, MAIL_CHECK_MASK_NONE);
|
||||
MailDraft(subject).AddItem(offItem).SendMailTo(this, MailSender(this, MAIL_STATIONERY_GM));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3609,6 +3609,7 @@ void AuraEffect::HandleAuraModShapeshift(bool apply, bool Real, bool changeAmoun
|
||||
case FORM_MOONKIN:
|
||||
case FORM_FLIGHT_EPIC:
|
||||
case FORM_METAMORPHOSIS:
|
||||
case FORM_MASTER_ANGLER:
|
||||
case FORM_AMBIENT:
|
||||
case FORM_SHADOW:
|
||||
case FORM_STEALTH:
|
||||
|
||||
+57
-34
@@ -1378,6 +1378,25 @@ void Spell::EffectDummy(uint32 i)
|
||||
m_caster->CastSpell(m_caster, 54586, true);
|
||||
return;
|
||||
}
|
||||
// Great Feast
|
||||
case 57337:
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget, 58067, true);
|
||||
break;
|
||||
}
|
||||
//Fish Feast
|
||||
case 57397:
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget, 58648, true);
|
||||
unitTarget->CastSpell(unitTarget, 57398, true);
|
||||
break;
|
||||
}
|
||||
case 58418: // Portal to Orgrimmar
|
||||
case 58420: // Portal to Stormwind
|
||||
return; // implemented in EffectScript[0]
|
||||
@@ -2787,6 +2806,21 @@ void Spell::SpellDamageHeal(uint32 /*i*/)
|
||||
//addhealth += tickheal * tickcount;
|
||||
//addhealth = caster->SpellHealingBonus(m_spellInfo, addhealth,HEAL, unitTarget);
|
||||
}
|
||||
// Glyph of Nourish
|
||||
else if (m_spellInfo->SpellFamilyName == SPELLFAMILY_DRUID && m_spellInfo->SpellFamilyFlags[1] & 0x2000000)
|
||||
{
|
||||
addhealth = caster->SpellHealingBonus(unitTarget, m_spellInfo, addhealth, HEAL);
|
||||
|
||||
if (AuraEffect const* aurEff = m_caster->GetAuraEffect(62971, 0))
|
||||
{
|
||||
Unit::AuraEffectList const& Periodic = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_HEAL);
|
||||
for (Unit::AuraEffectList::const_iterator i = Periodic.begin(); i != Periodic.end(); ++i)
|
||||
{
|
||||
if (m_caster->GetGUID() == (*i)->GetCasterGUID())
|
||||
addhealth += addhealth * (*i)->GetParentAura()->GetStackAmount() * aurEff->GetAmount() / 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Riptide - increase healing done by Chain Heal
|
||||
else if (m_spellInfo->SpellFamilyName==SPELLFAMILY_SHAMAN && m_spellInfo->SpellFamilyFlags[0] & 0x100)
|
||||
{
|
||||
@@ -5463,6 +5497,26 @@ void Spell::EffectScriptEffect(uint32 effIndex)
|
||||
|
||||
return;
|
||||
}
|
||||
// Gigantic Feast
|
||||
case 58466:
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget, 58648, true);
|
||||
unitTarget->CastSpell(unitTarget, 58467, true);
|
||||
break;
|
||||
}
|
||||
// Small Feast
|
||||
case 58475:
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget, 58648, true);
|
||||
unitTarget->CastSpell(unitTarget, 58477, true);
|
||||
break;
|
||||
}
|
||||
case 58941: // Rock Shards
|
||||
if(unitTarget && m_originalCaster)
|
||||
{
|
||||
@@ -5529,12 +5583,15 @@ void Spell::EffectScriptEffect(uint32 effIndex)
|
||||
return;
|
||||
}
|
||||
case 62428: // Load into Catapult
|
||||
{
|
||||
if(Vehicle *seat = m_caster->GetVehicleKit())
|
||||
if(Unit *passenger = seat->GetPassenger(0))
|
||||
if(Unit *demolisher = m_caster->GetVehicleBase())
|
||||
passenger->CastSpell(demolisher, damage, true);
|
||||
return;
|
||||
}
|
||||
case 62482: // Grab Crate
|
||||
{
|
||||
if(unitTarget)
|
||||
{
|
||||
if(Vehicle *seat = m_caster->GetVehicleKit())
|
||||
@@ -5547,40 +5604,6 @@ void Spell::EffectScriptEffect(uint32 effIndex)
|
||||
}
|
||||
}
|
||||
return;
|
||||
case 57337: //Great Feast
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget,58067,true);
|
||||
break;
|
||||
}
|
||||
case 57397: //Fish Feast
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget,58648,true);
|
||||
unitTarget->CastSpell(unitTarget,57398,true);
|
||||
break;
|
||||
}
|
||||
case 58466: //Gigantic Feast
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget,58648,true);
|
||||
unitTarget->CastSpell(unitTarget,58467,true);
|
||||
break;
|
||||
}
|
||||
case 58475: //Small Feast
|
||||
{
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
unitTarget->CastSpell(unitTarget,58648,true);
|
||||
unitTarget->CastSpell(unitTarget,58477,true);
|
||||
break;
|
||||
}
|
||||
case 60123: // Lightwell
|
||||
{
|
||||
|
||||
@@ -15248,6 +15248,8 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form)
|
||||
return 21244;
|
||||
case FORM_METAMORPHOSIS:
|
||||
return 25277;
|
||||
case FORM_MASTER_ANGLER:
|
||||
return 15234;
|
||||
case FORM_TREE:
|
||||
return 864;
|
||||
case FORM_SPIRITOFREDEMPTION:
|
||||
|
||||
@@ -206,6 +206,7 @@ enum ShapeshiftForm
|
||||
FORM_ZOMBIE = 0x15,
|
||||
FORM_METAMORPHOSIS = 0x16,
|
||||
FORM_UNDEAD = 0x19,
|
||||
FORM_MASTER_ANGLER = 0x1A,
|
||||
FORM_FLIGHT_EPIC = 0x1B,
|
||||
FORM_SHADOW = 0x1C,
|
||||
FORM_FLIGHT = 0x1D,
|
||||
|
||||
@@ -1475,6 +1475,9 @@ void World::SetInitialWorldSettings()
|
||||
sLog.outString("Loading Player Corpses...");
|
||||
objmgr.LoadCorpses();
|
||||
|
||||
sLog.outString( "Loading Player level dependent mail rewards..." );
|
||||
objmgr.LoadMailLevelRewards();
|
||||
|
||||
sLog.outString("Loading Disabled Spells...");
|
||||
objmgr.LoadSpellDisabledEntrys();
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#include "Common.h"
|
||||
#include "SharedDefines.h"
|
||||
|
||||
class MailItemsInfo;
|
||||
struct ItemPrototype;
|
||||
struct AuctionEntry;
|
||||
struct DeclinedName;
|
||||
@@ -42,7 +41,6 @@ class Unit;
|
||||
class GameObject;
|
||||
class WorldPacket;
|
||||
class WorldSocket;
|
||||
class WorldSession;
|
||||
class QueryResult;
|
||||
class LoginQueryHolder;
|
||||
class CharacterHandler;
|
||||
@@ -225,13 +223,8 @@ class TRINITY_DLL_SPEC WorldSession
|
||||
m_TutorialsChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
//mail
|
||||
//used with item_page table
|
||||
//used with item_page table
|
||||
bool SendItemInfo( uint32 itemid, WorldPacket data );
|
||||
static void SendReturnToSender(uint8 messageType, uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, const std::string& subject, uint32 itemTextId, MailItemsInfo *mi, uint32 money, uint16 mailTemplateId = 0);
|
||||
static void SendMailTo(Player* receiver, uint8 messageType, uint8 stationery, uint32 sender_guidlow_or_entry, uint32 received_guidlow, std::string subject, uint32 itemTextId, MailItemsInfo* mi, uint32 money, uint32 COD, uint32 checked, uint32 deliver_delay = 0, uint16 mailTemplateId = 0);
|
||||
|
||||
//auction
|
||||
void SendAuctionHello( uint64 guid, Creature * unit );
|
||||
void SendAuctionCommandResult( uint32 auctionId, uint32 Action, uint32 ErrorCode, uint32 bidError = 0);
|
||||
|
||||
Reference in New Issue
Block a user