void CampRegion::applyHAMHealing(Object* object) { PlayerObject* player = dynamic_cast<PlayerObject*>(object); //Make sure it's a player. if(player == NULL) return; Ham* hamz = player->getHam(); //Heal the Ham int32 HealthRegenRate = hamz->getHealthRegenRate(); int32 ActionRegenRate = hamz->getActionRegenRate(); int32 MindRegenRate = hamz->getMindRegenRate(); //Because we tick every 2 seconds, we need to double this. HealthRegenRate += (int32)(HealthRegenRate * mHealingModifier) * 2; ActionRegenRate += (int32)(ActionRegenRate * mHealingModifier) * 2; MindRegenRate += (int32)(MindRegenRate * mHealingModifier) * 2; if(hamz->mHealth.getModifiedHitPoints() - hamz->mHealth.getCurrentHitPoints() > 0) { //Regen Health int32 oldVal = hamz->mHealth.getCurrentHitPoints(); hamz->updatePropertyValue(HamBar_Health,HamProperty_CurrentHitpoints, HealthRegenRate); mHealingDone += hamz->mHealth.getCurrentHitPoints() - oldVal; } if(hamz->mAction.getModifiedHitPoints() - hamz->mAction.getCurrentHitPoints() > 0) { //Regen Action int32 oldVal = hamz->mAction.getCurrentHitPoints(); hamz->updatePropertyValue(HamBar_Action,HamProperty_CurrentHitpoints, ActionRegenRate); mHealingDone += hamz->mAction.getCurrentHitPoints() - oldVal; } if(hamz->mMind.getModifiedHitPoints() - hamz->mMind.getCurrentHitPoints() > 0) { //Regen Mind int32 oldVal = hamz->mMind.getCurrentHitPoints(); hamz->updatePropertyValue(HamBar_Mind, HamProperty_CurrentHitpoints, MindRegenRate); mHealingDone += hamz->mMind.getCurrentHitPoints() - oldVal; } }