--- deliantra/server/server/disease.C 2006/12/12 20:53:03 1.8 +++ deliantra/server/server/disease.C 2006/12/12 21:39:57 1.9 @@ -172,10 +172,10 @@ { /* we're outside of someone */ if (disease->stats.maxhp > 0) disease->value--; + if (disease->value == 0) { - disease->remove (); - disease->destroy (0); + disease->destroy (); return 1; } } @@ -186,16 +186,17 @@ if (disease->stats.food > 0) { disease->stats.food--; + if (disease->stats.food == 0) { remove_symptoms (disease); /* remove the symptoms of this disease */ grant_immunity (disease); - disease->remove (); - disease->destroy (0); + disease->destroy (); return 1; } } } + /* check to see if we infect others */ check_infection (disease); @@ -222,9 +223,10 @@ { if (!victim) victim = symptom->env; - symptom->remove (); - symptom->destroy (0); + + symptom->destroy (); } + if (victim) fix_player (victim); return 0; @@ -333,8 +335,8 @@ } /* If we've gotten this far, go ahead and infect the victim. */ - new_disease = get_object (); - copy_object (disease, new_disease); + new_disease = object::create (); + disease->copy_to (new_disease); new_disease->stats.food = disease->stats.maxgrace; new_disease->value = disease->stats.maxhp; new_disease->stats.wc -= disease->last_grace; /* self-limiting factor */ @@ -570,8 +572,7 @@ if (victim == NULL || victim->map == NULL) { /* outside a monster/player, die immediately */ - symptom->remove (); - symptom->destroy (0); + symptom->destroy (); return 0; } @@ -671,11 +672,12 @@ { remove_symptoms (disease); - disease->remove (); cure = 1; + if (caster) change_exp (caster, disease->stats.exp, caster->chosen_skill ? &caster->chosen_skill->skill : (const char *) 0, 0); - disease->destroy (0); + + disease->destroy (); } } }