diff options
| author | Rat <gmstreetrat@gmail.com> | 2015-03-16 07:28:49 +0100 | 
|---|---|---|
| committer | Rat <gmstreetrat@gmail.com> | 2015-03-16 07:28:49 +0100 | 
| commit | 8f3a80c1cf39978056979a0bcbcb7321e510c101 (patch) | |
| tree | fb935f44c86ea9ae84a232f499757b97728e86c4 /src/server/game/Conditions/ConditionMgr.cpp | |
| parent | 8366ed5a720047102fc44a7ae89adc8ed83f9076 (diff) | |
Core/Phases: Ported new phasing system from 4.3.4 branch and fixed some map swap logic
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 62 | 
1 files changed, 18 insertions, 44 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 6fce1b9f97f..e34b7df0c54 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -416,6 +416,11 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)                  condMeets = creature->GetCreatureTemplate()->type == ConditionValue1;              break;          } +        case CONDITION_TERRAIN_SWAP: +        { +            condMeets = object->IsInTerrainSwap(ConditionValue1); +            break; +        }          default:              condMeets = false;              break; @@ -585,6 +590,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition()          case CONDITION_CREATURE_TYPE:              mask |= GRID_MAP_TYPE_MASK_CREATURE;              break; +        case CONDITION_TERRAIN_SWAP: +            mask |= GRID_MAP_TYPE_MASK_ALL; +            break;          default:              ASSERT(false && "Condition::GetSearcherTypeMaskForCondition - missing condition handling!");              break; @@ -784,7 +792,6 @@ bool ConditionMgr::CanHaveSourceGroupSet(ConditionSourceType sourceType)              sourceType == CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET ||              sourceType == CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT ||              sourceType == CONDITION_SOURCE_TYPE_SMART_EVENT || -            sourceType == CONDITION_SOURCE_TYPE_PHASE_DEFINITION ||              sourceType == CONDITION_SOURCE_TYPE_NPC_VENDOR);  } @@ -860,22 +867,6 @@ ConditionList ConditionMgr::GetConditionsForSmartEvent(int64 entryOrGuid, uint32      return cond;  } -ConditionList const* ConditionMgr::GetConditionsForPhaseDefinition(uint32 zone, uint32 entry) -{ -    PhaseDefinitionConditionContainer::const_iterator itr = PhaseDefinitionsConditionStore.find(zone); -    if (itr != PhaseDefinitionsConditionStore.end()) -    { -        ConditionTypeContainer::const_iterator i = itr->second.find(entry); -        if (i != itr->second.end()) -        { -            TC_LOG_DEBUG("condition", "GetConditionsForPhaseDefinition: found conditions for zone %u entry %u", zone, entry); -            return &i->second; -        } -    } - -    return NULL; -} -  ConditionList ConditionMgr::GetConditionsForNpcVendorEvent(uint32 creatureId, uint32 itemId)  {      ConditionList cond; @@ -1115,13 +1106,6 @@ void ConditionMgr::LoadConditions(bool isReload)                      ++count;                      continue;                  } -                case CONDITION_SOURCE_TYPE_PHASE_DEFINITION: -                { -                    PhaseDefinitionsConditionStore[cond->SourceGroup][cond->SourceEntry].push_back(cond); -                    valid = true; -                    ++count; -                    continue; -                }                  case CONDITION_SOURCE_TYPE_NPC_VENDOR:                  {                      NpcVendorConditionContainerStore[cond->SourceGroup][cond->SourceEntry].push_back(cond); @@ -1650,13 +1634,6 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond)                  return false;              }              break; -        case CONDITION_SOURCE_TYPE_PHASE_DEFINITION: -            /*if (!PhaseMgr::IsConditionTypeSupported(cond->ConditionType)) -            { -                TC_LOG_ERROR("sql.sql", "Condition source type `CONDITION_SOURCE_TYPE_PHASE_DEFINITION` does not support condition type %u, ignoring.", cond->ConditionType); -                return false; -            }*/ -            break;          case CONDITION_SOURCE_TYPE_NPC_VENDOR:          {              if (!sObjectMgr->GetCreatureTemplate(cond->SourceGroup)) @@ -1676,6 +1653,8 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond)          case CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION:          case CONDITION_SOURCE_TYPE_SMART_EVENT:          case CONDITION_SOURCE_TYPE_NONE: +        case CONDITION_SOURCE_TYPE_TERRAIN_SWAP: +        case CONDITION_SOURCE_TYPE_PHASE:          default:              break;      } @@ -2075,6 +2054,14 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)              }              break;          } +        case CONDITION_TERRAIN_SWAP: +        { +            if (cond->ConditionValue2) +                TC_LOG_ERROR("sql.sql", "Terrain swap condition has useless data in value2 (%u)!", cond->ConditionValue2); +            if (cond->ConditionValue3) +                TC_LOG_ERROR("sql.sql", "Terrain swap condition has useless data in value3 (%u)!", cond->ConditionValue3); +            break; +        }          case CONDITION_TITLE:          {              CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(cond->ConditionValue1); @@ -2198,19 +2185,6 @@ void ConditionMgr::Clean()      SpellClickEventConditionStore.clear(); -    for (PhaseDefinitionConditionContainer::iterator itr = PhaseDefinitionsConditionStore.begin(); itr != PhaseDefinitionsConditionStore.end(); ++itr) -    { -        for (ConditionTypeContainer::iterator it = itr->second.begin(); it != itr->second.end(); ++it) -        { -            for (ConditionList::const_iterator i = it->second.begin(); i != it->second.end(); ++i) -                delete *i; -            it->second.clear(); -        } -        itr->second.clear(); -    } - -    PhaseDefinitionsConditionStore.clear(); -      for (NpcVendorConditionContainer::iterator itr = NpcVendorConditionContainerStore.begin(); itr != NpcVendorConditionContainerStore.end(); ++itr)      {          for (ConditionTypeContainer::iterator it = itr->second.begin(); it != itr->second.end(); ++it)  | 
