--- deliantra/server/server/disease.C 2006/08/29 08:01:37 1.2 +++ deliantra/server/server/disease.C 2006/09/03 00:18:42 1.3 @@ -1,6 +1,6 @@ /* * static char *rcsid_disease_c = - * "$Id: disease.C,v 1.2 2006/08/29 08:01:37 root Exp $"; + * "$Id: disease.C,v 1.3 2006/09/03 00:18:42 root Exp $"; */ /* CrossFire, A Multiplayer game for X-windows @@ -319,10 +319,8 @@ set_owner(new_disease,disease->owner); /* Only need to update skill if different */ - if (new_disease->skill != disease->skill) { - if (new_disease->skill) free_string(new_disease->skill); - if (disease->skill) new_disease->skill = add_refcount(disease->skill); - } + if (new_disease->skill != disease->skill) + new_disease->skill = disease->skill; } else { /* for diseases which are passed by hitting, set owner and praying skill*/ if(disease->env && disease->env->type==PLAYER) { @@ -346,9 +344,9 @@ * This messages is printed in the form MESSAGE victim */ if(new_disease->title) - sprintf(buf,"%s %s!!",disease->title,victim->name); + sprintf(buf,"%s %s!!",&disease->title,&victim->name); else - sprintf(buf,"You infect %s with your disease, %s!",victim->name,new_disease->name); + sprintf(buf,"You infect %s with your disease, %s!",&victim->name,&new_disease->name); if(victim->type == PLAYER) new_draw_info(NDI_UNIQUE | NDI_RED, 0, new_disease->owner, buf); @@ -421,8 +419,9 @@ new_symptom->stats.maxsp = disease->stats.maxsp; new_symptom->stats.food = new_symptom->stats.maxgrace; - FREE_AND_COPY(new_symptom->name, disease->name); - FREE_AND_COPY(new_symptom->name_pl, disease->name); + new_symptom->name = + new_symptom->name_pl = disease->name; + new_symptom->level = disease->level; new_symptom->speed = disease->speed; new_symptom->value = 0; @@ -439,15 +438,15 @@ new_symptom->last_sp = disease->last_sp; new_symptom->stats.exp = 0; new_symptom->stats.hp = disease->stats.hp; - new_symptom->msg = add_string(disease->msg); + new_symptom->msg = disease->msg; new_symptom->attacktype = disease->attacktype; new_symptom->other_arch = disease->other_arch; set_owner(new_symptom,disease->owner); - if (new_symptom->skill != disease->skill) { - if (new_symptom->skill) free_string(new_symptom->skill); - if (disease->skill) new_symptom->skill = add_refcount(disease->skill); - } + + if (new_symptom->skill != disease->skill) + new_symptom->skill = disease->skill; + new_symptom->move_block=0; insert_ob_in_ob(new_symptom,victim); return 1; @@ -477,7 +476,7 @@ symptom->last_sp = (int) (scale*disease->last_sp); symptom->stats.exp = 0; symptom->stats.hp = (int) (scale*disease->stats.hp); - symptom->msg = add_string(disease->msg); + symptom->msg = disease->msg; symptom->attacktype = disease->attacktype; symptom->other_arch = disease->other_arch; } @@ -501,7 +500,7 @@ } } immunity = get_archetype("immunity"); - immunity->name = add_string(disease->name); + immunity->name = disease->name; immunity->level = disease->level; immunity->move_block = 0; insert_ob_in_ob(immunity,disease->env); @@ -600,7 +599,7 @@ remove_ob(disease); cure=1; if(caster) change_exp(caster,disease->stats.exp, - caster->chosen_skill?caster->chosen_skill->skill:NULL, 0); + caster->chosen_skill ? &caster->chosen_skill->skill : (const char *)0, 0); free_object(disease); } }