diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index d8a514797..2c5d5f5f6 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -13712,6 +13712,11 @@ void Client::Handle_OP_Taunt(const EQApplicationPacket *app) if (GetTarget() == nullptr || !GetTarget()->IsNPC()) return; + if (!zone->CanDoCombat()) { + Message(13, "You cannot taunt in a no combat zone."); + return; + } + Taunt(GetTarget()->CastToNPC(), false); return; } diff --git a/zone/forage.cpp b/zone/forage.cpp index 81dd264bd..7adb245ee 100644 --- a/zone/forage.cpp +++ b/zone/forage.cpp @@ -279,21 +279,26 @@ void Client::GoFish() //check for add NPC if (npc_chance > 0 && npc_id) { if (zone->random.Roll(npc_chance)) { - const NPCType *tmp = database.LoadNPCTypesData(npc_id); - if (tmp != nullptr) { - auto positionNPC = GetPosition(); - positionNPC.x = positionNPC.x + 3; - auto npc = new NPC(tmp, nullptr, positionNPC, FlyMode3); - npc->AddLootTable(); - if (npc->DropsGlobalLoot()) - npc->CheckGlobalLootTables(); + if (zone->CanDoCombat()) { + const NPCType *tmp = database.LoadNPCTypesData(npc_id); + if (tmp != nullptr) { + auto positionNPC = GetPosition(); + positionNPC.x = positionNPC.x + 3; + auto npc = new NPC(tmp, nullptr, positionNPC, FlyMode3); + npc->AddLootTable(); + if (npc->DropsGlobalLoot()) + npc->CheckGlobalLootTables(); - npc->AddToHateList(this, 1, 0, false); // no help yelling + npc->AddToHateList(this, 1, 0, false); // no help yelling - entity_list.AddNPC(npc); + entity_list.AddNPC(npc); - Message(MT_Emote, - "You fish up a little more than you bargained for..."); + Message(MT_Emote, + "You fish up a little more than you bargained for..."); + } + } + else { + Message(MT_Emote, "You notice something lurking just below the water's surface..."); } } } diff --git a/zone/npc.cpp b/zone/npc.cpp index edd6e5673..96df168ff 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -1534,7 +1534,8 @@ void NPC::PickPocket(Client* thief) } if(zone->random.Roll(5)) { - AddToHateList(thief, 50); + if (zone->CanDoCombat()) + AddToHateList(thief, 50); Say("Stop thief!"); thief->Message(13, "You are noticed trying to steal!"); thief->SendPickPocketResponse(this, 0, PickPocketFailed);