bool ConditionDamage::unserializeProp(ConditionAttr_t attr, PropStream& propStream) { if(attr == CONDITIONATTR_DELAYED){ uint8_t value = 0; if(!propStream.GET_UINT8(value)){ return false; } delayed = value != 0; return true; } else if(attr == CONDITIONATTR_PERIODDAMAGE){ int32_t value = 0; if(!propStream.GET_INT32(value)){ return false; } periodDamage = value; return true; } else if(attr == CONDITIONATTR_OWNER){ uint32_t value = 0; if(!propStream.GET_UINT32(value)){ return false; } owner = value; return true; } else if(attr == CONDITIONATTR_INTERVALDATA){ IntervalInfo damageInfo; if( !propStream.GET_INT32(damageInfo.timeLeft) || !propStream.GET_INT32(damageInfo.value) || !propStream.GET_INT32(damageInfo.interval)) { return false; } damageList.push_back(damageInfo); if(getTicks() != -1){ setTicks(getTicks() + damageInfo.interval); } return true; } return Condition::unserializeProp(attr, propStream); }
bool ConditionAttributes::unserializeProp(const ConditionAttr_t& attr, PropStream& propStream) { if (attr == CONDITIONATTR_SKILLS) { int32_t value = 0; if (!propStream.GET_INT32(value)) { return false; } skills[currentSkill] = value; ++currentSkill; return true; } else if (attr == CONDITIONATTR_SKILLSPERCENT) { int32_t value = 0; if (!propStream.GET_INT32(value)) { return false; } skills[currentSkill] = value; ++currentSkill; return true; } else if (attr == CONDITIONATTR_STATS) { int32_t value = 0; if (!propStream.GET_INT32(value)) { return false; } stats[currentStat] = value; ++currentStat; return true; } return Condition::unserializeProp(attr, propStream); }
bool ConditionSpeed::unserializeProp(ConditionAttr_t attr, PropStream& propStream) { if(attr == CONDITIONATTR_SPEEDDELTA){ int32_t value = 0; if(!propStream.GET_INT32(value)){ return false; } speedDelta = value; return true; } else if(attr == CONDITIONATTR_FORMULA_MINA){ float value = 0; if(!propStream.GET_FLOAT(value)){ return false; } mina = value; return true; } else if(attr == CONDITIONATTR_FORMULA_MINB){ float value = 0; if(!propStream.GET_FLOAT(value)){ return false; } minb = value; return true; } else if(attr == CONDITIONATTR_FORMULA_MAXA){ float value = 0; if(!propStream.GET_FLOAT(value)){ return false; } maxa = value; return true; } else if(attr == CONDITIONATTR_FORMULA_MAXB){ float value = 0; if(!propStream.GET_FLOAT(value)){ return false; } maxb = value; return true; } return Condition::unserializeProp(attr, propStream); }
bool Condition::unserializeProp(ConditionAttr_t attr, PropStream& propStream) { switch(attr){ case CONDITIONATTR_TYPE: { int32_t value = 0; if(!propStream.GET_INT32(value)){ return false; } conditionType = (ConditionType_t)value; return true; break; } case CONDITIONATTR_ID: { int32_t value = 0; if(!propStream.GET_INT32(value)){ return false; } id = (ConditionId_t)value; return true; break; } case CONDITIONATTR_TICKS: { int32_t value = 0; if(!propStream.GET_INT32(value)){ return false; } ticks = value; return true; break; } case CONDITIONATTR_ISBUFF: { int8_t value = 0; if(!propStream.GET_INT8(value)){ return false; } isBuff = value != 0; return true; break; } case CONDITIONATTR_SUBID: { int32_t value = 0; if(!propStream.GET_INT32(value)){ return false; } subId = value; return true; break; } case CONDITIONATTR_END: { return true; break; } default: return false; } }