/**< * Success type can be: failure, success, and critical success. Only use at First Aid. * The coloring of the heal above head will depends on it, * where critical success is the greenest and the critical failure is an ugly dark blueish green. * Reason type can be: First Aid, Weak healing powder, Healing powder, Stimpack, Super Stimpack, Hypo. * If the reason is no reason, then only the healing value is printed. * In the header all reasons can be disabled with setting IS_HEAL_TEXT_REASON_ENABLED to false. */ void FloatingHealText(Critter& cr, int healAmount, int reason, int successType = SKILL_CHECK_SUCCESS) { string text; string reasonText = ""; uint color = 0; switch (successType) { case SKILL_CHECK_CRITICAL_FAILURE: case SKILL_CHECK_FAILURE: color = COLOR_HEAL_TEXT_FAILURE; break; case SKILL_CHECK_SUCCESS: color = COLOR_HEAL_TEXT_SUCCESS; break; case SKILL_CHECK_CRITICAL_SUCCESS: color = COLOR_HEAL_TEXT_CRIT_SUCCESS; break; } if (IS_HEAL_TEXT_REASON_ENABLED) { switch (reason) { case HEAL_TEXT_REASON_FIRSTAID: reasonText = "FA"; break; case HEAL_TEXT_REASON_WEAKHEALINGPOWDER: reasonText = "WP"; break; case HEAL_TEXT_REASON_HEALINGPOWDER: reasonText = "HP"; break; case HEAL_TEXT_REASON_STIMPACK: reasonText = "ST"; break; case HEAL_TEXT_REASON_SUPERSTIMPACK: reasonText = "SS"; break; case HEAL_TEXT_REASON_HYPO: reasonText = "Hypo"; break; case HEAL_TEXT_REASON_NOREASON: reasonText = ""; break; } } else { reasonText = ""; } // Just in case critical failure hurts later. if(healAmount >= 0) text = "+ " + healAmount + " " + reasonText; else text = "- " + healAmount + " " + reasonText; MapMessageEx(FLOAT_ENFORCED, FLOAT_MODE_ALL, cr, text, cr.HexX, cr.HexY, 150, color, true, 0, 0, -40, -70); SayEx(SAYEX_VERBOSE_ACTION, cr, text); } void FloatingHealTextByDrugPid(Critter& cr, int healAmount, uint16 drugPid) { int reason = -1; switch (drugPid) { case PID_WEAK_HEALING_POWDER: reason = HEAL_TEXT_REASON_WEAKHEALINGPOWDER; break; case PID_HEALING_POWDER: reason = HEAL_TEXT_REASON_HEALINGPOWDER; break; case PID_STIMPAK: reason = HEAL_TEXT_REASON_STIMPACK; break; case PID_SUPER_STIMPAK: reason = HEAL_TEXT_REASON_SUPERSTIMPACK; break; case PID_HYPO: reason = HEAL_TEXT_REASON_HYPO; break; default: reason = HEAL_TEXT_REASON_NOREASON; } if (reason >= 0) { FloatingHealText(cr, healAmount, reason); } }