|
Crossfire Server, Branch 1.12
R12190
|
This file contains all the code implementing diseases, except for odds and ends in attack.c and in living.c. More...
#include <global.h>#include <object.h>#include <living.h>#include <sproto.h>#include <spells.h>#include <sounds.h>#include <skills.h>#include <assert.h>
Go to the source code of this file.
Functions | |
| static void | check_infection (object *disease) |
| Searches around for more victims to infect. | |
| void | check_physically_infect (object *victim, object *hitter) |
| Possibly infect due to direct physical contact i.e., AT_PHYSICAL. | |
| int | cure_disease (object *sufferer, object *caster) |
| Do the cure disease stuff, from the spell "cure disease". | |
| static void | do_symptoms (object *disease) |
| This function monitors the symptoms caused by the disease (if any), causes symptoms, and modifies existing symptoms in the case of existing diseases. | |
| static object * | find_symptom (object *disease) |
| Find a symptom for a disease in disease's env. | |
| static void | grant_immunity (object *disease) |
| Grants immunity to a disease. | |
| int | infect_object (object *victim, object *disease, int force) |
| Try to infect something with a disease. | |
| static int | is_susceptible_to_disease (object *victim, object *disease) |
| Check if victim is susceptible to disease. | |
| int | move_disease (object *disease) |
| Ticks the clock for disease: infect, aggravate symptoms, ... | |
| void | move_symptom (object *symptom) |
| Make the symptom do the nasty things it does. | |
| static void | remove_symptoms (object *disease) |
| Remove any symptoms of disease. | |
This file contains all the code implementing diseases, except for odds and ends in attack.c and in living.c.
Definition in file disease.c.
| static void check_infection | ( | object * | disease | ) | [static] |
Searches around for more victims to infect.
| disease | disease infecting. Can be either on a map or inside another object. |
Definition at line 285 of file disease.c.
References get_map_flags(), GET_MAP_OB, infect_object(), P_IS_ALIVE, and P_OUT_OF_MAP.
Referenced by move_disease().


| void check_physically_infect | ( | object * | victim, |
| object * | hitter | ||
| ) |
Possibly infect due to direct physical contact i.e., AT_PHYSICAL.
| victim | potential victim. |
| hitter | who is hitting. |
Definition at line 694 of file disease.c.
References DISEASE, and infect_object().
Referenced by hit_with_one_attacktype().


| int cure_disease | ( | object * | sufferer, |
| object * | caster | ||
| ) |
Do the cure disease stuff, from the spell "cure disease".
| sufferer | who is getting cured. |
| caster | spell object used for curing. If NULL all diseases are removed, else only those of lower level than caster or randomly chosen. |
| 0 | no disease was cured. |
| 1 | at least one disease was cured. |
Definition at line 715 of file disease.c.
References change_exp(), DISEASE, draw_ext_info(), draw_ext_info_format(), FLAG_STARTEQUIP, free_object(), MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_END, MSG_TYPE_SPELL, MSG_TYPE_SPELL_HEAL, NDI_UNIQUE, PREFER_LOW, QUERY_FLAG, random_roll(), remove_ob(), and remove_symptoms().
Referenced by cast_heal(), and kill_player().


| static void do_symptoms | ( | object * | disease | ) | [static] |
This function monitors the symptoms caused by the disease (if any), causes symptoms, and modifies existing symptoms in the case of existing diseases.
| disease | disease acting. Should be in a living object. |
Definition at line 452 of file disease.c.
References add_refcount(), add_string(), create_archetype(), FABS, find_symptom(), fix_object(), FLAG_APPLIED, FLAG_WIZ, FREE_AND_COPY, free_string(), insert_ob_in_ob(), is_susceptible_to_disease(), PREFER_LOW, QUERY_FLAG, random_roll(), SET_FLAG, set_owner(), and SIGN.
Referenced by move_disease().


| static object * find_symptom | ( | object * | disease | ) | [static] |
Find a symptom for a disease in disease's env.
| disease | disease to search symptom of. Must be in another object. |
Definition at line 267 of file disease.c.
References SYMPTOM.
Referenced by do_symptoms(), and remove_symptoms().

| static void grant_immunity | ( | object * | disease | ) | [static] |
Grants immunity to a disease.
| disease | disease to grant immunity to. Must be in another object. |
Definition at line 584 of file disease.c.
References add_string(), create_archetype(), insert_ob_in_ob(), and SIGN.
Referenced by move_disease().


| int infect_object | ( | object * | victim, |
| object * | disease, | ||
| int | force | ||
| ) |
Try to infect something with a disease.
Rules:
| victim | potential victim to infect. |
| disease | what could infect. |
| force | don't do a random check for infection. Other checks (susceptible to disease, not immune, and so on) are still done. |
| 0 | victim wasn't infected. |
| 1 | victim was infected. |
Definition at line 336 of file disease.c.
References add_refcount(), copy_object(), DISEASE, draw_ext_info(), FLAG_MONSTER, free_string(), get_object(), get_owner(), insert_ob_in_ob(), is_susceptible_to_disease(), MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_DID_HIT, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, NDI_RED, NDI_UNIQUE, op_on_battleground(), PLAYER, PREFER_HIGH, QUERY_FLAG, random_roll(), set_owner(), SIGN, and snprintf().
Referenced by cast_cause_disease(), check_infection(), check_physically_infect(), and rune_attack().


| static int is_susceptible_to_disease | ( | object * | victim, |
| object * | disease | ||
| ) | [static] |
Check if victim is susceptible to disease.
Does not check for immunity.
| victim | potential victim. |
| disease | disease to check. |
| 1 | victim can be infected |
| 0 | victim doesn't care for the disease. |
Definition at line 165 of file disease.c.
References FLAG_ALIVE, FLAG_UNDEAD, FLAG_WIZ, QUERY_FLAG, and undead_name.
Referenced by do_symptoms(), infect_object(), and move_disease().

| int move_disease | ( | object * | disease | ) |
Ticks the clock for disease: infect, aggravate symptoms, ...
| disease | disease to move. Can be removed during processing. |
| 1 | if disease was removed. |
| 0 | disease just moved. |
Definition at line 192 of file disease.c.
References check_infection(), do_symptoms(), FLAG_WIZ, free_object(), grant_immunity(), is_susceptible_to_disease(), QUERY_FLAG, remove_ob(), and remove_symptoms().
Referenced by legacy_ob_process().


| void move_symptom | ( | object * | symptom | ) |
Make the symptom do the nasty things it does.
| symptom | symptom to move. |
Definition at line 615 of file disease.c.
References arch_to_object(), draw_ext_info(), FLAG_FREED, FREE_AND_COPY, free_object(), hit_player(), insert_ob_in_map(), llevError, LOG(), MAX, MAX_BUF, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, NDI_RED, NDI_UNIQUE, QUERY_FLAG, remove_ob(), and snprintf().
Referenced by legacy_ob_process().


| static void remove_symptoms | ( | object * | disease | ) | [static] |
Remove any symptoms of disease.
Modified by MSW 2003-03-28 do try to find all the symptom the player may have - I think through some odd interactoins with disease level and player level and whatnot, a player could get more than one symtpom to a disease.
| disease | disease to remove. Must be in a living object. |
Definition at line 244 of file disease.c.
References find_symptom(), fix_object(), free_object(), and remove_ob().
Referenced by cure_disease(), and move_disease().


1.7.6.1