void Creature::removeCondition(ConditionType_t type, ConditionId_t id, bool force/* = false*/) { ConditionList::iterator it = conditions.begin(); while (it != conditions.end()) { Condition* condition = *it; if (condition->getType() != type || condition->getId() != id) { ++it; continue; } if (!force && condition->getType() == CONDITION_PARALYZE) { int64_t walkDelay = getWalkDelay(); if (walkDelay > 0) { g_scheduler.addEvent(createSchedulerTask(walkDelay, boost::bind(&Game::forceRemoveCondition, &g_game, getID(), type))); return; } } it = conditions.erase(it); condition->endCondition(this, CONDITIONEND_ABORT); delete condition; onEndCondition(type); } }
/** * Checks if the given condition (right hand side) is greater than this condition (left hand side). * * @param _condition The condition to compare with (rhs). * * @return true ,if the given substitution is greater than this substitution; * false ,otherwise. */ bool Condition::operator<( const Condition& _condition ) const { return mId < _condition.getId(); }
/** * Checks the equality of a given condition (right hand side) with this condition (left hand side). * * @param _condition The condition to compare with (rhs). * * @return true ,if the given condition is equal to this condition; * false ,otherwise. */ bool Condition::operator==( const Condition& _condition ) const { return mId == _condition.getId(); }