diff --git a/zone/trap.cpp b/zone/trap.cpp index 7d205e563..b490f5c8d 100644 --- a/zone/trap.cpp +++ b/zone/trap.cpp @@ -24,6 +24,7 @@ #include "entity.h" #include "mob.h" #include "trap.h" +#include "../common/repositories/criteria/content_filter_criteria.h" /* @@ -104,7 +105,7 @@ bool Trap::Process() reset_timer.Disable(); charid = 0; } - + if (respawn_timer.Enabled() && respawn_timer.Check()) { detected = false; @@ -225,13 +226,13 @@ void Trap::Trigger(Mob* trigger) safe_delete(outapp); } } - + if (trigger && trigger->IsClient()) { trigger->CastToClient()->trapid = trap_id; charid = trigger->CastToClient()->CharacterID(); } - + bool update = false; if (despawn_when_triggered) { @@ -242,16 +243,16 @@ void Trap::Trigger(Mob* trigger) { reset_timer.Start(5000); } - + if (triggered_number > 0) ++times_triggered; - + if (triggered_number > 0 && triggered_number <= times_triggered) { Log(Logs::General, Logs::Traps, "Triggered number for trap %d reached. %d/%d", trap_id, times_triggered, triggered_number); update = true; } - + if (update) { UpdateTrap(); @@ -290,7 +291,7 @@ Trap* EntityList::FindNearbyTrap(Mob* searcher, float max_dist, float &trap_curd } else trap_curdist = INVALID_INDEX; - + return current_trap; } @@ -399,9 +400,14 @@ void EntityList::ClearTrapPointers() bool ZoneDatabase::LoadTraps(const char* zonename, int16 version) { - std::string query = StringFormat("SELECT id, x, y, z, effect, effectvalue, effectvalue2, skill, " + std::string query = StringFormat( + "SELECT id, x, y, z, effect, effectvalue, effectvalue2, skill, " "maxzdiff, radius, chance, message, respawn_time, respawn_var, level, " - "`group`, triggered_number, despawn_when_triggered, undetectable FROM traps WHERE zone='%s' AND version=%u", zonename, version); + "`group`, triggered_number, despawn_when_triggered, undetectable FROM traps WHERE zone='%s' AND version=%u %s", + zonename, + version, + ContentFilterCriteria::apply().c_str() + ); auto results = QueryDatabase(query); if (!results.Success()) {