diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 4 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.h | 13 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/BattlegroundMgr.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Guilds/Guild.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 9 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 8 | ||||
-rw-r--r-- | src/server/game/World/World.h | 6 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_guild.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_quest.cpp | 7 | ||||
-rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 23 |
17 files changed, 95 insertions, 60 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index a1862c07d14..a56d0f94f2d 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -699,6 +699,10 @@ void SmartAI::InitializeAI() void SmartAI::OnCharmed(bool apply) { GetScript()->ProcessEventsFor(SMART_EVENT_CHARMED, NULL, 0, 0, apply); + + if (!apply && !me->IsInEvadeMode() && me->GetUInt64Value(UNIT_FIELD_CHARMEDBY)) + if (Unit* charmer = ObjectAccessor::GetUnit(*me, me->GetUInt64Value(UNIT_FIELD_CHARMEDBY))) + AttackStart(charmer); } void SmartAI::DoAction(int32 param) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index f94a3e79066..3a14e8946eb 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1447,7 +1447,6 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!einfo) { TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript: SMART_ACTION_EQUIP uses non-existent equipment info id %u for creature %u", equipId, npc->GetEntry()); - delete targets; break; } @@ -1991,13 +1990,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u e.GetTargetType() == SMART_TARGET_OWNER_OR_SUMMONER || e.GetTargetType() == SMART_TARGET_ACTION_INVOKER || e.GetTargetType() == SMART_TARGET_CLOSEST_ENEMY || e.GetTargetType() == SMART_TARGET_CLOSEST_FRIENDLY) { - if (ObjectList* targets = GetTargets(e, unit)) - { - if (WorldObject* target = targets->front()) - (*itr)->ToCreature()->SetHomePosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation()); - - delete targets; - } + (*itr)->ToCreature()->SetHomePosition((*itr)->GetPositionX(), (*itr)->GetPositionY(), (*itr)->GetPositionZ(), (*itr)->GetOrientation()); } else TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript: Action target for SMART_ACTION_SET_HOME_POS is invalid, skipping"); @@ -2509,8 +2502,15 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* case SMART_TARGET_OWNER_OR_SUMMONER: { if (me) - if (Unit* owner = ObjectAccessor::GetUnit(*me, me->GetCharmerOrOwnerGUID())) + { + uint64 charmerOrOwnerGuid = me->GetCharmerOrOwnerGUID(); + + if (!charmerOrOwnerGuid) + charmerOrOwnerGuid = me->GetCreatorGUID(); + + if (Unit* owner = ObjectAccessor::GetUnit(*me, charmerOrOwnerGuid)) l->push_back(owner); + } break; } case SMART_TARGET_THREAT_LIST: diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index c134e47d007..e6012313c68 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -923,8 +923,8 @@ void Battleground::EndBattleground(uint32 winner) } } - uint32 winner_kills = player->GetRandomWinner() ? BG_REWARD_WINNER_HONOR_LAST : BG_REWARD_WINNER_HONOR_FIRST; - uint32 loser_kills = player->GetRandomWinner() ? BG_REWARD_LOSER_HONOR_LAST : BG_REWARD_LOSER_HONOR_FIRST; + uint32 winnerKills = player->GetRandomWinner() ? sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_HONOR_LAST) : sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_HONOR_FIRST); + uint32 loserKills = player->GetRandomWinner() ? sWorld->getIntConfig(CONFIG_BG_REWARD_LOSER_HONOR_LAST) : sWorld->getIntConfig(CONFIG_BG_REWARD_LOSER_HONOR_FIRST); // remove temporary currency bonus auras before rewarding player player->RemoveAura(SPELL_HONORABLE_DEFENDER_25Y); @@ -935,16 +935,16 @@ void Battleground::EndBattleground(uint32 winner) { if (IsRandom() || BattlegroundMgr::IsBGWeekend(GetTypeID())) { - UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(winner_kills)); + UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(winnerKills)); if (!player->GetRandomWinner()) { // 100cp awarded for the first random battleground won each day - player->ModifyCurrency(CURRENCY_TYPE_CONQUEST_META_ARENA, BG_REWARD_WINNER_CONQUEST_FIRST); + player->ModifyCurrency(CURRENCY_TYPE_CONQUEST_META_ARENA, sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_CONQUEST_FIRST)); player->SetRandomWinner(true); } } else // 50cp awarded for each non-rated battleground won - player->ModifyCurrency(CURRENCY_TYPE_CONQUEST_META_ARENA, BG_REWARD_WINNER_CONQUEST_LAST); + player->ModifyCurrency(CURRENCY_TYPE_CONQUEST_META_ARENA, sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_CONQUEST_LAST)); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_BG, 1); if (!guildAwarded) @@ -962,7 +962,7 @@ void Battleground::EndBattleground(uint32 winner) else { if (IsRandom() || BattlegroundMgr::IsBGWeekend(GetTypeID())) - UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(loser_kills)); + UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(loserKills)); } player->ResetAllPowers(); diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 6cac44d65fc..7f166b92f80 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -145,18 +145,7 @@ enum BattlegroundBuffObjects BG_OBJECTID_BERSERKERBUFF_ENTRY = 179905 }; -/// Battleground currency rewards. Should be with precision mod. -enum BattlegroundRandomRewards -{ - BG_REWARD_WINNER_HONOR_FIRST = 27000, - BG_REWARD_WINNER_CONQUEST_FIRST = 10000, - BG_REWARD_WINNER_HONOR_LAST = 13500, - BG_REWARD_WINNER_CONQUEST_LAST = 5000, - BG_REWARD_LOSER_HONOR_FIRST = 4500, - BG_REWARD_LOSER_HONOR_LAST = 3500 -}; - -const uint32 Buff_Entries[3] = { BG_OBJECTID_SPEEDBUFF_ENTRY, BG_OBJECTID_REGENBUFF_ENTRY, BG_OBJECTID_BERSERKERBUFF_ENTRY }; +uint32 const Buff_Entries[3] = { BG_OBJECTID_SPEEDBUFF_ENTRY, BG_OBJECTID_REGENBUFF_ENTRY, BG_OBJECTID_BERSERKERBUFF_ENTRY }; enum BattlegroundStatus { diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index f3df064cb77..f6a3148edc3 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -1127,22 +1127,22 @@ void BattlegroundMgr::BuildBattlegroundListPacket(WorldPacket* data, uint64 guid if (!bracketEntry) return; - uint32 winner_conquest = (player->GetRandomWinner() ? BG_REWARD_WINNER_CONQUEST_FIRST : BG_REWARD_WINNER_CONQUEST_LAST) / CURRENCY_PRECISION; - uint32 winner_honor = (player->GetRandomWinner() ? BG_REWARD_WINNER_HONOR_FIRST : BG_REWARD_WINNER_HONOR_LAST) / CURRENCY_PRECISION; - uint32 loser_honor = (!player->GetRandomWinner() ? BG_REWARD_LOSER_HONOR_FIRST : BG_REWARD_LOSER_HONOR_LAST) / CURRENCY_PRECISION; + uint32 winnerConquest = (player->GetRandomWinner() ? sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_CONQUEST_FIRST) : sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_CONQUEST_LAST)) / CURRENCY_PRECISION; + uint32 winnerHonor = (player->GetRandomWinner() ? sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_HONOR_FIRST) : sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_HONOR_LAST)) / CURRENCY_PRECISION; + uint32 loserHonor = (!player->GetRandomWinner() ? sWorld->getIntConfig(CONFIG_BG_REWARD_LOSER_HONOR_FIRST) : sWorld->getIntConfig(CONFIG_BG_REWARD_LOSER_HONOR_LAST)) / CURRENCY_PRECISION; ObjectGuid guidBytes = guid; data->Initialize(SMSG_BATTLEFIELD_LIST); - *data << uint32(winner_conquest) // Winner Conquest Reward or Random Winner Conquest Reward - << uint32(winner_conquest) // Winner Conquest Reward or Random Winner Conquest Reward - << uint32(loser_honor) // Loser Honor Reward or Random Loser Honor Reward - << uint32(bgTypeId) // battleground id - << uint32(loser_honor) // Loser Honor Reward or Random Loser Honor Reward - << uint32(winner_honor) // Winner Honor Reward or Random Winner Honor Reward - << uint32(winner_honor) // Winner Honor Reward or Random Winner Honor Reward - << uint8(bracketEntry->maxLevel) // max level - << uint8(bracketEntry->minLevel); // min level + *data << uint32(winnerConquest) // Winner Conquest Reward or Random Winner Conquest Reward + << uint32(winnerConquest) // Winner Conquest Reward or Random Winner Conquest Reward + << uint32(loserHonor) // Loser Honor Reward or Random Loser Honor Reward + << uint32(bgTypeId) // battleground id + << uint32(loserHonor) // Loser Honor Reward or Random Loser Honor Reward + << uint32(winnerHonor) // Winner Honor Reward or Random Winner Honor Reward + << uint32(winnerHonor) // Winner Honor Reward or Random Winner Honor Reward + << uint8(bracketEntry->maxLevel) // max level + << uint8(bracketEntry->minLevel); // min level data->WriteBit(guidBytes[0]); data->WriteBit(guidBytes[1]); diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index d92a77d51b6..4bc55679c71 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -129,7 +129,7 @@ enum ConditionSourceType CONDITION_SOURCE_TYPE_SMART_EVENT = 22, CONDITION_SOURCE_TYPE_NPC_VENDOR = 23, CONDITION_SOURCE_TYPE_SPELL_PROC = 24, - CONDITION_SOURCE_TYPE_PHASE_DEFINITION = 25, + CONDITION_SOURCE_TYPE_PHASE_DEFINITION = 25, // only 4.3.4 CONDITION_SOURCE_TYPE_MAX = 26 // MAX }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index fcdc59da9c6..db22cce794a 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -4759,7 +4759,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC if (uint32 guildId = GetGuildIdFromDB(playerguid)) if (Guild* guild = sGuildMgr->GetGuildById(guildId)) - guild->DeleteMember(guid); + guild->DeleteMember(guid, false, false, true); // remove from arena teams LeaveAllArenaTeams(playerguid); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index af8e7255603..2a689515568 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1859,6 +1859,8 @@ void Guild::HandleAcceptMember(WorldSession* session) void Guild::HandleLeaveMember(WorldSession* session) { Player* player = session->GetPlayer(); + bool disband = false; + // If leader is leaving if (_IsLeader(player)) { @@ -1868,7 +1870,11 @@ void Guild::HandleLeaveMember(WorldSession* session) else if (GetLevel() >= sWorld->getIntConfig(CONFIG_GUILD_UNDELETABLE_LEVEL)) SendCommandResult(session, GUILD_COMMAND_QUIT, ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL); else - Disband(); // Guild is disbanded if leader leaves. + { + // Guild is disbanded if leader leaves. + Disband(); + disband = true; + } } else { @@ -1881,6 +1887,9 @@ void Guild::HandleLeaveMember(WorldSession* session) } sCalendarMgr->RemovePlayerGuildEventsAndSignups(player->GetGUID(), GetId()); + + if (disband) + delete this; } void Guild::HandleRemoveMember(WorldSession* session, uint64 guid) @@ -2123,6 +2132,7 @@ void Guild::HandleDisband(WorldSession* session) { Disband(); TC_LOG_DEBUG(LOG_FILTER_GUILD, "Guild Successfully Disbanded"); + delete this; } } @@ -2706,7 +2716,7 @@ bool Guild::AddMember(uint64 guid, uint8 rankId) return true; } -void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked) +void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked, bool canDeleteGuild) { uint32 lowguid = GUID_LOPART(guid); Player* player = ObjectAccessor::FindPlayer(guid); @@ -2728,6 +2738,8 @@ void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked) if (!newLeader) { Disband(); + if (canDeleteGuild) + delete this; return; } diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 9f6503fcf21..cd4b3fe5252 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -842,7 +842,7 @@ public: // Members // Adds member to guild. If rankId == GUILD_RANK_NONE, lowest rank is assigned. bool AddMember(uint64 guid, uint8 rankId = GUILD_RANK_NONE); - void DeleteMember(uint64 guid, bool isDisbanding = false, bool isKicked = false); + void DeleteMember(uint64 guid, bool isDisbanding = false, bool isKicked = false, bool canDeleteGuild = false); bool ChangeMemberRank(uint64 guid, uint8 newRank); bool IsMember(uint64 guid) const; uint32 GetMembersCount() { return m_members.size(); } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 341a1a89403..81bf31dcf3a 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -2032,7 +2032,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData) PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) if (Guild* guild = sGuildMgr->GetGuildById((result->Fetch()[0]).GetUInt32())) - guild->DeleteMember(MAKE_NEW_GUID(lowGuid, 0, HIGHGUID_PLAYER)); + guild->DeleteMember(MAKE_NEW_GUID(lowGuid, 0, HIGHGUID_PLAYER), false, false, true); } if (!HasPermission(RBAC_PERM_TWO_SIDE_ADD_FRIEND)) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index b678b2334b5..6ebd872b24b 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3578,15 +3578,6 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) npc->LoadEquipment(); return; } - // Emblazon Runeblade - case 51770: - { - if (!m_originalCaster) - return; - - m_originalCaster->CastSpell(m_originalCaster, damage, false); - break; - } // Deathbolt from Thalgran Blightbringer // reflected by Freya's Ward // Retribution by Sevenfold Retribution diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 377446f210d..4cd91c58edc 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1231,6 +1231,14 @@ void World::LoadConfigSettings(bool reload) // Accountpassword Secruity m_int_configs[CONFIG_ACC_PASSCHANGESEC] = sConfigMgr->GetIntDefault("Account.PasswordChangeSecurity", 0); + // Random Battleground Rewards + m_int_configs[CONFIG_BG_REWARD_WINNER_HONOR_FIRST] = sConfigMgr->GetIntDefault("Battleground.RewardWinnerHonorFirst", 27000); + m_int_configs[CONFIG_BG_REWARD_WINNER_CONQUEST_FIRST] = sConfigMgr->GetIntDefault("Battleground.RewardWinnerConquestFirst", 10000); + m_int_configs[CONFIG_BG_REWARD_WINNER_HONOR_LAST] = sConfigMgr->GetIntDefault("Battleground.RewardWinnerHonorLast", 13500); + m_int_configs[CONFIG_BG_REWARD_WINNER_CONQUEST_LAST] = sConfigMgr->GetIntDefault("Battleground.RewardWinnerConquestLast", 5000); + m_int_configs[CONFIG_BG_REWARD_LOSER_HONOR_FIRST] = sConfigMgr->GetIntDefault("Battleground.RewardLoserHonorFirst", 4500); + m_int_configs[CONFIG_BG_REWARD_LOSER_HONOR_LAST] = sConfigMgr->GetIntDefault("Battleground.RewardLoserHonorLast", 3500); + // Max instances per hour m_int_configs[CONFIG_MAX_INSTANCES_PER_HOUR] = sConfigMgr->GetIntDefault("AccountInstancesPerHour", 5); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index b375e2cedfd..7e012e7da07 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -347,6 +347,12 @@ enum WorldIntConfigs CONFIG_PACKET_SPOOF_BANMODE, CONFIG_PACKET_SPOOF_BANDURATION, CONFIG_ACC_PASSCHANGESEC, + CONFIG_BG_REWARD_WINNER_HONOR_FIRST, + CONFIG_BG_REWARD_WINNER_HONOR_LAST, + CONFIG_BG_REWARD_LOSER_HONOR_FIRST, + CONFIG_BG_REWARD_LOSER_HONOR_LAST, + CONFIG_BG_REWARD_WINNER_CONQUEST_FIRST, + CONFIG_BG_REWARD_WINNER_CONQUEST_LAST, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp index 390594ac57b..04276016fff 100644 --- a/src/server/scripts/Commands/cs_guild.cpp +++ b/src/server/scripts/Commands/cs_guild.cpp @@ -119,6 +119,7 @@ public: return false; targetGuild->Disband(); + delete targetGuild; return true; } @@ -165,7 +166,7 @@ public: if (!targetGuild) return false; - targetGuild->DeleteMember(targetGuid, false, true); + targetGuild->DeleteMember(targetGuid, false, true, true); return true; } diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp index 54a1ccece51..8b233901608 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp @@ -306,7 +306,7 @@ class instance_blood_furnace : public InstanceMapScript void ResetPrisoners(const std::set<uint64>& prisoners) { - for (std::set<uint64>::iterator i = prisoners.begin(); i != prisoners.end(); ++i) + for (std::set<uint64>::const_iterator i = prisoners.begin(); i != prisoners.end(); ++i) if (Creature* prisoner = instance->GetCreature(*i)) ResetPrisoner(prisoner); } @@ -400,7 +400,7 @@ class instance_blood_furnace : public InstanceMapScript void ActivatePrisoners(const std::set<uint64>& prisoners) { - for (std::set<uint64>::iterator i = prisoners.begin(); i != prisoners.end(); ++i) + for (std::set<uint64>::const_iterator i = prisoners.begin(); i != prisoners.end(); ++i) if (Creature* prisoner = instance->GetCreature(*i)) { prisoner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE); diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 85f655372c6..6b56c51d6e1 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -2118,12 +2118,13 @@ class spell_q12619_emblazon_runeblade : public SpellScriptLoader void HandleEffectPeriodic(AuraEffect const* aurEff) { PreventDefaultAction(); - GetCaster()->CastSpell(GetCaster(), GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true); + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, NULL, aurEff); } void Register() OVERRIDE { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_q12619_emblazon_runeblade_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_HEAL); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_q12619_emblazon_runeblade_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; @@ -2145,7 +2146,7 @@ class spell_q12619_emblazon_runeblade_effect : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), false); } void Register() OVERRIDE diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 3076447b0a8..194186c2d9a 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2106,6 +2106,29 @@ Battleground.GiveXPForKills = 0 Battleground.Random.ResetHour = 6 # +# Battleground.RewardWinnerHonorFirst +# Battleground.RewardWinnerConquestFirst +# Battleground.RewardWinnerHonorLast +# Battleground.RewardWinnerConquestLast +# Battleground.RewardLoserHonorFirst +# Battleground.RewardLoserHonorLast +# Description: Random Battlegrounds / call to the arms rewards +# Default: 30 - Battleground.RewardWinnerHonorFirst +# 25 - Battleground.RewardWinnerArenaFirst +# 15 - Battleground.RewardWinnerHonorLast +# 0 - Battleground.RewardWinnerArenaLast +# 5 - Battleground.RewardLoserHonorFirst +# 5 - Battleground.RewardLoserHonorLast +# + +Battleground.RewardWinnerHonorFirst = 27000 +Battleground.RewardWinnerConquestFirst = 10000 +Battleground.RewardWinnerHonorLast = 13500 +Battleground.RewardWinnerConquestLast = 5000 +Battleground.RewardLoserHonorFirst = 4500 +Battleground.RewardLoserHonorLast = 3500 + +# ################################################################################################### ################################################################################################### |