diff options
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/Level2.cpp | 33 | ||||
| -rw-r--r-- | src/game/SpellAuras.cpp | 4 | ||||
| -rw-r--r-- | src/game/Unit.cpp | 8 | ||||
| -rw-r--r-- | src/game/WaypointMovementGenerator.cpp | 2 | ||||
| -rw-r--r-- | src/game/World.cpp | 1 | ||||
| -rw-r--r-- | src/game/World.h | 1 |
6 files changed, 41 insertions, 8 deletions
diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index db5a0b5c660..5f3b12b0eb8 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -1680,6 +1680,8 @@ bool ChatHandler::HandleNpcFactionIdCommand(const char* args) bool ChatHandler::HandleKickPlayerCommand(const char *args) { char* kickName = strtok((char*)args, " "); + char* kickReason = strtok(NULL, "\n"); + if (!kickName) { Player* player = getSelectedPlayer(); @@ -1697,12 +1699,23 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) SetSentErrorMessage(true); return false; } + + if(player->GetSession()->GetSecurity() > m_session->GetSecurity()) + { + SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); //maybe replacement string for this later on + SetSentErrorMessage(true); + return false; + } player->GetSession()->KickPlayer(); } else { std::string name = kickName; + std::string reason = "No Reason"; + if(kickReason) + reason = kickReason; + if(!normalizePlayerName(name)) { SendSysMessage(LANG_PLAYER_NOT_FOUND); @@ -1716,13 +1729,27 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) SetSentErrorMessage(true); return false; } - + + if(objmgr.GetPlayer(kickName)->GetSession()->GetSecurity() > m_session->GetSecurity()) + { + SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); //maybe replacement string for this later on + SetSentErrorMessage(true); + return false; + } + if(sWorld.KickPlayer(name)) { - PSendSysMessage(LANG_COMMAND_KICKMESSAGE,name.c_str()); + if(sWorld.getConfig(CONFIG_SHOW_KICK_IN_WORLD) == 1) + { + sWorld.SendWorldText(LANG_COMMAND_KICKMESSAGE, name.c_str(), m_session->GetPlayer()->GetName(), reason.c_str()); + } + else + { + PSendSysMessage(LANG_COMMAND_KICKMESSAGE, name.c_str(), m_session->GetPlayer()->GetName(), reason.c_str()); + } } else - PSendSysMessage(LANG_COMMAND_KICKNOTFOUNDPLAYER,name.c_str()); + PSendSysMessage(LANG_COMMAND_KICKNOTFOUNDPLAYER, name.c_str()); } return true; diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 97037976e97..26725388f7e 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1190,6 +1190,10 @@ void Aura::TriggerSpell() uint64 originalCasterGUID = GetCasterGUID(); SpellEntry const *triggeredSpellInfo = sSpellStore.LookupEntry(trigger_spell_id); + SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(triggeredSpellInfo->rangeIndex); + if(!GetSpellMaxRange(srange)) + target = caster; //for druid dispel poison + SpellEntry const *auraSpellInfo = GetSpellProto(); uint32 auraId = auraSpellInfo->Id; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index c3ff7c07f57..56a63cc5220 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -900,13 +900,13 @@ void Unit::CastSpell(Unit* Victim,SpellEntry const *spellInfo, bool triggered, I { if(spellmgr.SpellTargetType[spellInfo->EffectImplicitTargetA[i]] == TARGET_TYPE_UNIT_TARGET) { - SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex); + /*SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex); if(srange && GetSpellMaxRange(srange) == 0.0f) { Victim = this; break; } - else if(!Victim) + else */if(!Victim) { sLog.outError("CastSpell: spell id %i by caster: %s %u) does not have unit target", spellInfo->Id,(GetTypeId()==TYPEID_PLAYER ? "player (GUID:" : "creature (Entry:"),(GetTypeId()==TYPEID_PLAYER ? GetGUIDLow() : GetEntry())); return; @@ -7781,8 +7781,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB if(basepoints0) CastCustomSpell(target,trigger_spell_id,&basepoints0,NULL,NULL,true,castItem,triggeredByAura); - else if(spellmgr.GetSpellCustomAttr(trigger_spell_id) & SPELL_ATTR_CU_AURA_SPELL) - AddAura(trigger_spell_id, target); + //else if(spellmgr.GetSpellCustomAttr(trigger_spell_id) & SPELL_ATTR_CU_AURA_SPELL) + // AddAura(trigger_spell_id, target); else CastSpell(target,trigger_spell_id,true,castItem,triggeredByAura); diff --git a/src/game/WaypointMovementGenerator.cpp b/src/game/WaypointMovementGenerator.cpp index 67c56d763bc..57dacea61e3 100644 --- a/src/game/WaypointMovementGenerator.cpp +++ b/src/game/WaypointMovementGenerator.cpp @@ -41,7 +41,7 @@ WaypointMovementGenerator<Creature>::Initialize(Creature &u) waypoints = WaypointMgr.GetPath(path_id); if(waypoints && waypoints->size()) { - Traveller<Creature> traveller(unit); + Traveller<Creature> traveller(u); node = *(waypoints->at(i_currentNode)); InitTraveller(u,node); i_destinationHolder.SetDestination(traveller, node.x, node.y, node.z); diff --git a/src/game/World.cpp b/src/game/World.cpp index dd907c3e1aa..1bb4e91932a 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -1019,6 +1019,7 @@ void World::LoadConfigSettings(bool reload) if(m_configs[CONFIG_PVP_TOKEN_COUNT] < 1) m_configs[CONFIG_PVP_TOKEN_COUNT] = 1; m_configs[CONFIG_NO_RESET_TALENT_COST] = sConfig.GetBoolDefault("NoResetTalentsCost", false); + m_configs[CONFIG_SHOW_KICK_IN_WORLD] = sConfig.GetBoolDefault("ShowKickInWorld", false); std::string forbiddenmaps = sConfig.GetStringDefault("ForbiddenMaps", ""); char * forbiddenMaps = new char[forbiddenmaps.length() + 1]; diff --git a/src/game/World.h b/src/game/World.h index cc4a1bd9d63..1b4fbe6d035 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -201,6 +201,7 @@ enum WorldConfigs CONFIG_PVP_TOKEN_ID, CONFIG_PVP_TOKEN_COUNT, CONFIG_NO_RESET_TALENT_COST, + CONFIG_SHOW_KICK_IN_WORLD, CONFIG_VALUE_COUNT }; |
