bool psServerVitals::SendStatDRMessage(uint32_t clientnum, EID eid, int flags, csRef<PlayerGroup> group) { bool backup=0; if (flags) { backup = statsDirty ? true : false; statsDirty = flags; } else if (version % 10 == 0) // every 10th msg to this person, send everything statsDirty = DIRTY_VITAL_ALL; if (!statsDirty) return false; csArray<float> fVitals; csArray<uint32_t> uiVitals; if (statsDirty & DIRTY_VITAL_HP) fVitals.Push(PERCENT_VALUE(VITAL_HITPOINTS)); if (statsDirty & DIRTY_VITAL_HP_RATE) fVitals.Push(PERCENT_RATE(VITAL_HITPOINTS)); if (statsDirty & DIRTY_VITAL_MANA) fVitals.Push(PERCENT_VALUE(VITAL_MANA)); if (statsDirty & DIRTY_VITAL_MANA_RATE) fVitals.Push(PERCENT_RATE(VITAL_MANA)); // Physical Stamina if (statsDirty & DIRTY_VITAL_PYSSTAMINA) fVitals.Push(PERCENT_VALUE(VITAL_PYSSTAMINA)); if (statsDirty & DIRTY_VITAL_PYSSTAMINA_RATE) fVitals.Push(PERCENT_RATE(VITAL_PYSSTAMINA)); // Mental Stamina if (statsDirty & DIRTY_VITAL_MENSTAMINA) fVitals.Push(PERCENT_VALUE(VITAL_MENSTAMINA)); if (statsDirty & DIRTY_VITAL_MENSTAMINA_RATE) fVitals.Push(PERCENT_RATE(VITAL_MENSTAMINA)); if (statsDirty & DIRTY_VITAL_EXPERIENCE) uiVitals.Push(GetExp()); if (statsDirty & DIRTY_VITAL_PROGRESSION) uiVitals.Push(GetPP()); psStatDRMessage msg(clientnum, eid, fVitals, uiVitals, ++version, statsDirty); if (group == NULL) msg.SendMessage(); else group->Broadcast(msg.msg); statsDirty = backup; return true; }