ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/disease.C
(Generate patch)

Comparing deliantra/server/server/disease.C (file contents):
Revision 1.2 by root, Tue Aug 29 08:01:37 2006 UTC vs.
Revision 1.3 by root, Sun Sep 3 00:18:42 2006 UTC

1/* 1/*
2 * static char *rcsid_disease_c = 2 * static char *rcsid_disease_c =
3 * "$Id: disease.C,v 1.2 2006/08/29 08:01:37 root Exp $"; 3 * "$Id: disease.C,v 1.3 2006/09/03 00:18:42 root Exp $";
4 */ 4 */
5/* 5/*
6 CrossFire, A Multiplayer game for X-windows 6 CrossFire, A Multiplayer game for X-windows
7 7
8 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 8 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
317 317
318 if(get_owner(disease)) { 318 if(get_owner(disease)) {
319 set_owner(new_disease,disease->owner); 319 set_owner(new_disease,disease->owner);
320 320
321 /* Only need to update skill if different */ 321 /* Only need to update skill if different */
322 if (new_disease->skill != disease->skill) { 322 if (new_disease->skill != disease->skill)
323 if (new_disease->skill) free_string(new_disease->skill); 323 new_disease->skill = disease->skill;
324 if (disease->skill) new_disease->skill = add_refcount(disease->skill);
325 }
326 } 324 }
327 else { /* for diseases which are passed by hitting, set owner and praying skill*/ 325 else { /* for diseases which are passed by hitting, set owner and praying skill*/
328 if(disease->env && disease->env->type==PLAYER) { 326 if(disease->env && disease->env->type==PLAYER) {
329 object *player = disease->env; 327 object *player = disease->env;
330 328
344 char buf[128]; 342 char buf[128];
345 /* if the disease has a title, it has a special infection message 343 /* if the disease has a title, it has a special infection message
346 * This messages is printed in the form MESSAGE victim 344 * This messages is printed in the form MESSAGE victim
347 */ 345 */
348 if(new_disease->title) 346 if(new_disease->title)
349 sprintf(buf,"%s %s!!",disease->title,victim->name); 347 sprintf(buf,"%s %s!!",&disease->title,&victim->name);
350 else 348 else
351 sprintf(buf,"You infect %s with your disease, %s!",victim->name,new_disease->name); 349 sprintf(buf,"You infect %s with your disease, %s!",&victim->name,&new_disease->name);
352 350
353 if(victim->type == PLAYER) 351 if(victim->type == PLAYER)
354 new_draw_info(NDI_UNIQUE | NDI_RED, 0, new_disease->owner, buf); 352 new_draw_info(NDI_UNIQUE | NDI_RED, 0, new_disease->owner, buf);
355 else 353 else
356 new_draw_info(0, 4, new_disease->owner, buf); 354 new_draw_info(0, 4, new_disease->owner, buf);
419 417
420 418
421 new_symptom->stats.maxsp = disease->stats.maxsp; 419 new_symptom->stats.maxsp = disease->stats.maxsp;
422 new_symptom->stats.food = new_symptom->stats.maxgrace; 420 new_symptom->stats.food = new_symptom->stats.maxgrace;
423 421
424 FREE_AND_COPY(new_symptom->name, disease->name); 422 new_symptom->name =
425 FREE_AND_COPY(new_symptom->name_pl, disease->name); 423 new_symptom->name_pl = disease->name;
424
426 new_symptom->level = disease->level; 425 new_symptom->level = disease->level;
427 new_symptom->speed = disease->speed; 426 new_symptom->speed = disease->speed;
428 new_symptom->value = 0; 427 new_symptom->value = 0;
429 new_symptom->stats.Str =disease->stats.Str; 428 new_symptom->stats.Str =disease->stats.Str;
430 new_symptom->stats.Dex = disease->stats.Dex; 429 new_symptom->stats.Dex = disease->stats.Dex;
437 new_symptom->stats.food =disease->last_eat; 436 new_symptom->stats.food =disease->last_eat;
438 new_symptom->stats.maxsp = disease->stats.maxsp; 437 new_symptom->stats.maxsp = disease->stats.maxsp;
439 new_symptom->last_sp = disease->last_sp; 438 new_symptom->last_sp = disease->last_sp;
440 new_symptom->stats.exp = 0; 439 new_symptom->stats.exp = 0;
441 new_symptom->stats.hp = disease->stats.hp; 440 new_symptom->stats.hp = disease->stats.hp;
442 new_symptom->msg = add_string(disease->msg); 441 new_symptom->msg = disease->msg;
443 new_symptom->attacktype = disease->attacktype; 442 new_symptom->attacktype = disease->attacktype;
444 new_symptom->other_arch = disease->other_arch; 443 new_symptom->other_arch = disease->other_arch;
445 444
446 set_owner(new_symptom,disease->owner); 445 set_owner(new_symptom,disease->owner);
446
447 if (new_symptom->skill != disease->skill) { 447 if (new_symptom->skill != disease->skill)
448 if (new_symptom->skill) free_string(new_symptom->skill); 448 new_symptom->skill = disease->skill;
449 if (disease->skill) new_symptom->skill = add_refcount(disease->skill); 449
450 }
451 new_symptom->move_block=0; 450 new_symptom->move_block=0;
452 insert_ob_in_ob(new_symptom,victim); 451 insert_ob_in_ob(new_symptom,victim);
453 return 1; 452 return 1;
454 } 453 }
455 454
475 symptom->stats.food = (int) (scale*disease->last_eat); 474 symptom->stats.food = (int) (scale*disease->last_eat);
476 symptom->stats.maxsp = (int) (scale*disease->stats.maxsp); 475 symptom->stats.maxsp = (int) (scale*disease->stats.maxsp);
477 symptom->last_sp = (int) (scale*disease->last_sp); 476 symptom->last_sp = (int) (scale*disease->last_sp);
478 symptom->stats.exp = 0; 477 symptom->stats.exp = 0;
479 symptom->stats.hp = (int) (scale*disease->stats.hp); 478 symptom->stats.hp = (int) (scale*disease->stats.hp);
480 symptom->msg = add_string(disease->msg); 479 symptom->msg = disease->msg;
481 symptom->attacktype = disease->attacktype; 480 symptom->attacktype = disease->attacktype;
482 symptom->other_arch = disease->other_arch; 481 symptom->other_arch = disease->other_arch;
483 } 482 }
484 SET_FLAG(symptom,FLAG_APPLIED); 483 SET_FLAG(symptom,FLAG_APPLIED);
485 fix_player(victim); 484 fix_player(victim);
499 walk->level = disease->level; 498 walk->level = disease->level;
500 return 1; /* just update the existing immunity. */ 499 return 1; /* just update the existing immunity. */
501 } 500 }
502 } 501 }
503 immunity = get_archetype("immunity"); 502 immunity = get_archetype("immunity");
504 immunity->name = add_string(disease->name); 503 immunity->name = disease->name;
505 immunity->level = disease->level; 504 immunity->level = disease->level;
506 immunity->move_block = 0; 505 immunity->move_block = 0;
507 insert_ob_in_ob(immunity,disease->env); 506 insert_ob_in_ob(immunity,disease->env);
508 return 1; 507 return 1;
509 508
598 597
599 remove_symptoms(disease); 598 remove_symptoms(disease);
600 remove_ob(disease); 599 remove_ob(disease);
601 cure=1; 600 cure=1;
602 if(caster) change_exp(caster,disease->stats.exp, 601 if(caster) change_exp(caster,disease->stats.exp,
603 caster->chosen_skill?caster->chosen_skill->skill:NULL, 0); 602 caster->chosen_skill ? &caster->chosen_skill->skill : (const char *)0, 0);
604 free_object(disease); 603 free_object(disease);
605 } 604 }
606 } 605 }
607 } 606 }
608 if (cure) { 607 if (cure) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines