- [+] change how poison works
- [+] poisontype_t - [+] define them all - [+] ie. each poison type has a fixed damage amount. - [+] check poisonisfatal() - [+] check F_POISONED bit in startlfturn - [+] salmonella. like food poisoning but causes more damage. - [+] small chance of getting sick from raw meat? - [+] FIT check to avoid. - [+] raw meat = gastroenteritis. - [+] raw chicken = salmonella - [+] rotting food = either gastro (66%) or salmonella (33%) - [+] new monster-only jobs - [+] guard - [+] has lots of armour and f_noflee and f_stayinroom - [+] set climbing difficulty based on cell type as well as material
This commit is contained in:
parent
f0e64851d3
commit
5d7b3dedc6
22
data.c
22
data.c
|
@ -15,6 +15,7 @@ extern map_t *firstmap;
|
||||||
extern race_t *firstrace, *lastrace;
|
extern race_t *firstrace, *lastrace;
|
||||||
extern raceclass_t *firstraceclass, *lastraceclass;
|
extern raceclass_t *firstraceclass, *lastraceclass;
|
||||||
extern job_t *firstjob, *lastjob;
|
extern job_t *firstjob, *lastjob;
|
||||||
|
extern poisontype_t *firstpoisontype,*lastpoisontype;
|
||||||
extern skill_t *firstskill, *lastskill;
|
extern skill_t *firstskill, *lastskill;
|
||||||
extern objecttype_t *objecttype;
|
extern objecttype_t *objecttype;
|
||||||
extern objectclass_t *objectclass,*lastobjectclass;
|
extern objectclass_t *objectclass,*lastobjectclass;
|
||||||
|
@ -856,6 +857,16 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
addflag(lastjob->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
||||||
|
|
||||||
// non-player jobs
|
// non-player jobs
|
||||||
|
addjob(J_GUARD, "Guard", "Guards are paid mercenaries employed to protect a certain area. Accordingly, they are generally outfitetd with high quality armour.");
|
||||||
|
addflag(lastjob->flags, F_NOPLAYER, B_TRUE, NA, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "random good armour");
|
||||||
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "random good armour");
|
||||||
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "random good armour");
|
||||||
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "random good armour");
|
||||||
|
addflag(lastjob->flags, F_STAYINROOM, NA, NA, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, PR_SKILLED, NA, NULL);
|
||||||
|
// 50% of guards are bribable
|
||||||
|
f = addflag(lastjob->flags, F_WANTS, OT_GOLD, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 50);
|
||||||
/*
|
/*
|
||||||
addjob(J_SHOPKEEPER, "Shopkeeper", "Shopkeepers make a living by selling goods to others. Always wary of thieves, most of them keep a shotgun under the counter.");
|
addjob(J_SHOPKEEPER, "Shopkeeper", "Shopkeepers make a living by selling goods to others. Always wary of thieves, most of them keep a shotgun under the counter.");
|
||||||
addflag(lastjob->flags, F_NOPLAYER, B_TRUE, NA, NA, NULL);
|
addflag(lastjob->flags, F_NOPLAYER, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -871,6 +882,14 @@ void initobjects(void) {
|
||||||
flag_t *f;
|
flag_t *f;
|
||||||
int i,n;
|
int i,n;
|
||||||
|
|
||||||
|
// init poison types
|
||||||
|
addpoisontype(P_COLD, "hypothermia", "Sick", "cough", B_FALSE, 1, 25, PS_DISEASE);
|
||||||
|
addpoisontype(P_FOOD, "gastroenteritis", "Poisoned", "vomit", B_TRUE, 1, 25, PS_POISON);
|
||||||
|
addpoisontype(P_FOODBAD, "salmonella poisoning", "Poisoned", "vomit", B_TRUE, 2, 33, PS_POISON);
|
||||||
|
addpoisontype(P_GAS, "gas inhalation", "Poisoned", "cough", B_FALSE, 1, 25, PS_POISON);
|
||||||
|
addpoisontype(P_VENOM, "venom poisoning", "Poisoned", "vomit", B_TRUE, 1, 25, PS_POISON);
|
||||||
|
addpoisontype(P_WEAKNESS, "weakening poison", "Poisoned", "cough", B_FALSE, 0, 0, PS_POISON);
|
||||||
|
|
||||||
// generate hidden name text
|
// generate hidden name text
|
||||||
for (n = 0; strlen(colour[n].name); n++) {
|
for (n = 0; strlen(colour[n].name); n++) {
|
||||||
char buf[BUFLEN];
|
char buf[BUFLEN];
|
||||||
|
@ -8492,6 +8511,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANINE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANINE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_FATALFOOD, OT_CHOCOLATE, NA, NA, NULL);
|
addflag(lastrace->flags, F_FATALFOOD, OT_CHOCOLATE, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_STARTJOB, 33, J_GUARD, NA, NULL);
|
||||||
|
|
||||||
addrace(R_GNOLLHM, "gnoll hunter", 130, 'h', C_BROWN, MT_FLESH, RC_HUMANOID, "Hunters are gnolls tasked with obtaining food, but can also turn their ranged skills to combat.");
|
addrace(R_GNOLLHM, "gnoll hunter", 130, 'h', C_BROWN, MT_FLESH, RC_HUMANOID, "Hunters are gnolls tasked with obtaining food, but can also turn their ranged skills to combat.");
|
||||||
setbodytype(lastrace, BT_HUMANOID);
|
setbodytype(lastrace, BT_HUMANOID);
|
||||||
|
@ -8765,6 +8785,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_STARTJOB, 33, J_GUARD, NA, NULL);
|
||||||
|
|
||||||
addrace(R_HOBGOBLINWAR, "hobgoblin elite", 90, 'g', C_GREEN, MT_FLESH, RC_HUMANOID, "An exceptional hobgoblin commander who has achieved command of its own unit.");
|
addrace(R_HOBGOBLINWAR, "hobgoblin elite", 90, 'g', C_GREEN, MT_FLESH, RC_HUMANOID, "An exceptional hobgoblin commander who has achieved command of its own unit.");
|
||||||
setbodytype(lastrace, BT_HUMANOID);
|
setbodytype(lastrace, BT_HUMANOID);
|
||||||
|
@ -9067,6 +9088,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTJOB, 25, J_WARRIOR, NA, NULL);
|
addflag(lastrace->flags, F_STARTJOB, 25, J_WARRIOR, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_STARTJOB, 25, J_GUARD, NA, NULL);
|
||||||
|
|
||||||
addrace(R_ORK, "ork", 90, 'o', C_BROWN, MT_FLESH, RC_HUMANOID, "Orcs who have become fascinated with technology tend to become shunned by their peers, and have taken the name 'Orks' for themselves.");
|
addrace(R_ORK, "ork", 90, 'o', C_BROWN, MT_FLESH, RC_HUMANOID, "Orcs who have become fascinated with technology tend to become shunned by their peers, and have taken the name 'Orks' for themselves.");
|
||||||
setbodytype(lastrace, BT_HUMANOID);
|
setbodytype(lastrace, BT_HUMANOID);
|
||||||
|
|
15
defs.h
15
defs.h
|
@ -1096,6 +1096,8 @@ enum JOB {
|
||||||
J_ROGUE,
|
J_ROGUE,
|
||||||
//J_SHOPKEEPER,
|
//J_SHOPKEEPER,
|
||||||
J_WIZARD,
|
J_WIZARD,
|
||||||
|
// monster jobs
|
||||||
|
J_GUARD,
|
||||||
};
|
};
|
||||||
#define J_RANDOM J_NONE
|
#define J_RANDOM J_NONE
|
||||||
|
|
||||||
|
@ -2047,6 +2049,7 @@ enum POISONSEVERITY {
|
||||||
enum POISONTYPE {
|
enum POISONTYPE {
|
||||||
P_COLD,
|
P_COLD,
|
||||||
P_FOOD,
|
P_FOOD,
|
||||||
|
P_FOODBAD,
|
||||||
P_GAS,
|
P_GAS,
|
||||||
P_VENOM,
|
P_VENOM,
|
||||||
P_WEAKNESS,
|
P_WEAKNESS,
|
||||||
|
@ -3556,6 +3559,18 @@ typedef struct habitat_s {
|
||||||
struct habitat_s *next, *prev;
|
struct habitat_s *next, *prev;
|
||||||
} habitat_t;
|
} habitat_t;
|
||||||
|
|
||||||
|
typedef struct poisontype_s {
|
||||||
|
enum POISONTYPE id;
|
||||||
|
char *name;
|
||||||
|
char *desc;
|
||||||
|
char *damverb;
|
||||||
|
int causesvomit;
|
||||||
|
int dam;
|
||||||
|
int dampct;
|
||||||
|
enum POISONSEVERITY severity;
|
||||||
|
struct poisontype_s *next, *prev;
|
||||||
|
} poisontype_t;
|
||||||
|
|
||||||
typedef struct room_s {
|
typedef struct room_s {
|
||||||
int id;
|
int id;
|
||||||
int x1,y1,x2,y2;
|
int x1,y1,x2,y2;
|
||||||
|
|
20
io.c
20
io.c
|
@ -1173,6 +1173,7 @@ int announceflaggain(lifeform_t *lf, flag_t *f) {
|
||||||
char buf[BUFLEN];
|
char buf[BUFLEN];
|
||||||
char *buf2;
|
char *buf2;
|
||||||
char *p;
|
char *p;
|
||||||
|
poisontype_t *pt;
|
||||||
|
|
||||||
if (player && isdead(player)) {
|
if (player && isdead(player)) {
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
|
@ -1554,11 +1555,12 @@ int announceflaggain(lifeform_t *lf, flag_t *f) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_POISONED:
|
case F_POISONED:
|
||||||
|
pt = findpoisontype(f->val[0]);
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
if (streq(getpoisondesc(f->val[0]), "Sick")) {
|
if (streq(pt->desc, "Sick")) {
|
||||||
msg("^%cYou have contracted %s.", getlfcol(lf, CC_VBAD), getpoisonname(f->val[0]));
|
msg("^%cYou have contracted %s.", getlfcol(lf, CC_VBAD), pt->name);
|
||||||
} else {
|
} else {
|
||||||
msg("^%cYou are sick with %s.", getlfcol(lf, CC_VBAD), getpoisonname(f->val[0]));
|
msg("^%cYou are sick with %s.", getlfcol(lf, CC_VBAD), pt->name);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
msg("^%c%s looks very sick.", getlfcol(lf, CC_VBAD), lfname);
|
msg("^%c%s looks very sick.", getlfcol(lf, CC_VBAD), lfname);
|
||||||
|
@ -9982,20 +9984,22 @@ void drawstatus(void) {
|
||||||
|
|
||||||
f = ispoisoned(player);
|
f = ispoisoned(player);
|
||||||
if (f) {
|
if (f) {
|
||||||
|
poisontype_t *pt;
|
||||||
|
pt = findpoisontype(f->val[0]);
|
||||||
// find highest amount of poison
|
// find highest amount of poison
|
||||||
if (getskill(player, SK_FIRSTAID) >= PR_ADEPT) {
|
if (getskill(player, SK_FIRSTAID) >= PR_ADEPT) {
|
||||||
if (poisonthreatenslife(player, f)) {
|
if (poisonthreatenslife(player, f)) {
|
||||||
setcol(statwin, C_RED);
|
setcol(statwin, C_RED);
|
||||||
wprintw(statwin, " %s(bad)", getpoisondesc(f->val[0]));
|
wprintw(statwin, " %s(bad)", pt->desc);
|
||||||
unsetcol(statwin, C_RED);
|
unsetcol(statwin, C_RED);
|
||||||
} else {
|
} else {
|
||||||
setcol(statwin, C_BROWN);
|
setcol(statwin, C_BROWN);
|
||||||
wprintw(statwin, " %s(mild)", getpoisondesc(f->val[0]));
|
wprintw(statwin, " %s(mild)", pt->desc);
|
||||||
unsetcol(statwin, C_BROWN);
|
unsetcol(statwin, C_BROWN);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setcol(statwin, C_RED);
|
setcol(statwin, C_RED);
|
||||||
wprintw(statwin, " %s", getpoisondesc(f->val[0]));
|
wprintw(statwin, " %s", pt->desc);
|
||||||
unsetcol(statwin, C_RED);
|
unsetcol(statwin, C_RED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12148,6 +12152,8 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
for (f = lf->flags->first ; f ; f = f->next ){
|
for (f = lf->flags->first ; f ; f = f->next ){
|
||||||
if (f->known && (f->id == F_POISONED)) {
|
if (f->known && (f->id == F_POISONED)) {
|
||||||
int knownfatal = B_FALSE;
|
int knownfatal = B_FALSE;
|
||||||
|
poisontype_t *pt;
|
||||||
|
pt = findpoisontype(f->val[0]);
|
||||||
|
|
||||||
if (getskill(player, SK_FIRSTAID) >= PR_ADEPT) {
|
if (getskill(player, SK_FIRSTAID) >= PR_ADEPT) {
|
||||||
if (poisonthreatenslife(lf, f)) {
|
if (poisonthreatenslife(lf, f)) {
|
||||||
|
@ -12156,7 +12162,7 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, BUFLEN, "%s %s sick with %s%s.", you(lf), is(lf),
|
snprintf(buf, BUFLEN, "%s %s sick with %s%s.", you(lf), is(lf),
|
||||||
getpoisonname(f->val[0]),
|
pt->name,
|
||||||
knownfatal ? ", potentially fatally" : "");
|
knownfatal ? ", potentially fatally" : "");
|
||||||
if (lfhasflag(lf, F_EXTRAINFO) || lfhasflag(lf, F_OMNIPOTENT) ||
|
if (lfhasflag(lf, F_EXTRAINFO) || lfhasflag(lf, F_OMNIPOTENT) ||
|
||||||
(getskill(player, SK_FIRSTAID) >= PR_ADEPT) ) {
|
(getskill(player, SK_FIRSTAID) >= PR_ADEPT) ) {
|
||||||
|
|
192
lf.c
192
lf.c
|
@ -32,6 +32,7 @@ extern race_t *firstrace, *lastrace;
|
||||||
extern raceclass_t *firstraceclass, *lastraceclass;
|
extern raceclass_t *firstraceclass, *lastraceclass;
|
||||||
extern job_t *firstjob, *lastjob;
|
extern job_t *firstjob, *lastjob;
|
||||||
extern skill_t *firstskill, *lastskill;
|
extern skill_t *firstskill, *lastskill;
|
||||||
|
extern poisontype_t *firstpoisontype,*lastpoisontype;
|
||||||
extern objecttype_t *objecttype;
|
extern objecttype_t *objecttype;
|
||||||
extern lifeform_t *player;
|
extern lifeform_t *player;
|
||||||
|
|
||||||
|
@ -3510,9 +3511,10 @@ int eat(lifeform_t *lf, object_t *o) {
|
||||||
addflag(lf->flags, F_EATING, NA, NA, NA, buf);
|
addflag(lf->flags, F_EATING, NA, NA, NA, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isrotting(o)) {
|
if (!isimmuneto(lf->flags, DT_POISON, B_FALSE)) {
|
||||||
if (!isimmuneto(lf->flags, DT_POISON, B_FALSE)) {
|
if (isrotting(o)) {
|
||||||
char dambuf[BUFLEN];
|
char dambuf[BUFLEN];
|
||||||
|
enum POISONTYPE ptid;
|
||||||
// lose hp
|
// lose hp
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
msg("^BThat %s was bad!", drinking ? "liquid" : "food");
|
msg("^BThat %s was bad!", drinking ? "liquid" : "food");
|
||||||
|
@ -3523,7 +3525,44 @@ int eat(lifeform_t *lf, object_t *o) {
|
||||||
} else {
|
} else {
|
||||||
snprintf(dambuf, BUFLEN, "a bad %s",noprefix(obname));
|
snprintf(dambuf, BUFLEN, "a bad %s",noprefix(obname));
|
||||||
}
|
}
|
||||||
poison(lf, rnd(20,40), P_FOOD, 1, dambuf);
|
if (onein(3)) {
|
||||||
|
ptid = P_FOODBAD;
|
||||||
|
} else {
|
||||||
|
ptid = P_FOOD;
|
||||||
|
}
|
||||||
|
poison(lf, rnd(20,40), ptid, 1, dambuf);
|
||||||
|
} else if (!drinking) {
|
||||||
|
char dambuf[BUFLEN];
|
||||||
|
snprintf(dambuf, BUFLEN, "a bad %s",noprefix(obname));
|
||||||
|
|
||||||
|
// raw meat?
|
||||||
|
if (hasflag(o->flags, F_ISMEAT) && !hasflag(o->flags, F_PREPARED) && !lfhasflag(lf, F_CANEATRAW)) {
|
||||||
|
flag_t *cf;
|
||||||
|
race_t *corpserace = NULL;
|
||||||
|
cf = hasflag(o->flags, F_CORPSEOF);
|
||||||
|
if (cf) {
|
||||||
|
corpserace = findrace(cf->val[0]);
|
||||||
|
}
|
||||||
|
if (corpserace) {
|
||||||
|
int checkdiff;
|
||||||
|
enum POISONTYPE ptid;
|
||||||
|
int timemin,timemax;
|
||||||
|
if (hasflag(corpserace->flags, F_AVIAN)) {
|
||||||
|
checkdiff = 30;
|
||||||
|
ptid = P_FOODBAD;
|
||||||
|
timemin = 30;
|
||||||
|
timemax = 50;
|
||||||
|
} else {
|
||||||
|
checkdiff = 20;
|
||||||
|
ptid = P_FOOD;
|
||||||
|
timemin = 20;
|
||||||
|
timemax = 40;
|
||||||
|
}
|
||||||
|
if (!skillcheck(lf, SC_POISON, checkdiff, 0)) {
|
||||||
|
poison(lf, rnd(timemin,timemax), ptid, 1, dambuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4537,6 +4576,17 @@ lifeform_t *findlfunique(enum RACE rid) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
poisontype_t *findpoisontype(enum POISONTYPE id) {
|
||||||
|
poisontype_t *pt;
|
||||||
|
for (pt = firstpoisontype; pt ; pt = pt->next) {
|
||||||
|
if (pt->id == id) {
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
race_t *findrace(enum RACE id) {
|
race_t *findrace(enum RACE id) {
|
||||||
race_t *r;
|
race_t *r;
|
||||||
for (r = firstrace; r ; r = r->next) {
|
for (r = firstrace; r ; r = r->next) {
|
||||||
|
@ -4547,6 +4597,7 @@ race_t *findrace(enum RACE id) {
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
race_t *findracebyname(char *name) {
|
race_t *findracebyname(char *name) {
|
||||||
race_t *r;
|
race_t *r;
|
||||||
raceclass_t *rc;
|
raceclass_t *rc;
|
||||||
|
@ -7758,35 +7809,6 @@ char *getplayernamefull(char *buf) {
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int getpoisondamchance(enum POISONTYPE ptype) {
|
|
||||||
int chance = 0;
|
|
||||||
switch (ptype) {
|
|
||||||
case P_FOOD:
|
|
||||||
case P_GAS:
|
|
||||||
case P_VENOM:
|
|
||||||
case P_COLD:
|
|
||||||
chance = 25;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
chance = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return chance;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
enum POISONSEVERITY getpoisonseverity(enum POISONTYPE ptype) {
|
|
||||||
switch (ptype) {
|
|
||||||
case P_COLD:
|
|
||||||
return PS_DISEASE;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// default is not too bad.
|
|
||||||
return PS_POISON;
|
|
||||||
}
|
|
||||||
|
|
||||||
int getraceclass(lifeform_t *lf) {
|
int getraceclass(lifeform_t *lf) {
|
||||||
return lf->race->raceclass->id;
|
return lf->race->raceclass->id;
|
||||||
}
|
}
|
||||||
|
@ -11450,6 +11472,37 @@ object_t *isstuck(lifeform_t *lf) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
poisontype_t *addpoisontype(enum POISONTYPE id, char *name, char *desc, char *damverb, int causesvomit, int dam, int dampct, enum POISONSEVERITY severity) {
|
||||||
|
poisontype_t *a;
|
||||||
|
|
||||||
|
// add to the end of the list
|
||||||
|
if (firstpoisontype == NULL) {
|
||||||
|
firstpoisontype = malloc(sizeof(poisontype_t));
|
||||||
|
a = firstpoisontype;
|
||||||
|
a->prev = NULL;
|
||||||
|
} else {
|
||||||
|
// go to end of list
|
||||||
|
a = lastpoisontype;
|
||||||
|
a->next = malloc(sizeof(poisontype_t));
|
||||||
|
a->next->prev = a;
|
||||||
|
a = a->next;
|
||||||
|
}
|
||||||
|
lastpoisontype = a;
|
||||||
|
a->next = NULL;
|
||||||
|
|
||||||
|
// props
|
||||||
|
a->id = id;
|
||||||
|
a->name = strdup(name);
|
||||||
|
a->desc = strdup(desc);
|
||||||
|
a->damverb = strdup(desc);
|
||||||
|
a->causesvomit = causesvomit;
|
||||||
|
a->dam = dam;
|
||||||
|
a->dampct = dampct;
|
||||||
|
a->severity = severity;
|
||||||
|
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
job_t *addjob(enum JOB id, char *name, char *desc) {
|
job_t *addjob(enum JOB id, char *name, char *desc) {
|
||||||
job_t *a;
|
job_t *a;
|
||||||
|
|
||||||
|
@ -12642,6 +12695,34 @@ void killjob(job_t *job) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void killpoisontype(poisontype_t *pt) {
|
||||||
|
poisontype_t *nextone, *lastone;
|
||||||
|
|
||||||
|
// free mem
|
||||||
|
free(pt->name);
|
||||||
|
free(pt->desc);
|
||||||
|
free(pt->damverb);
|
||||||
|
|
||||||
|
// remove from list
|
||||||
|
nextone = pt->next;
|
||||||
|
if (nextone != NULL) {
|
||||||
|
nextone->prev = pt->prev;
|
||||||
|
} else { /* last */
|
||||||
|
lastpoisontype = pt->prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pt->prev == NULL) {
|
||||||
|
/* first */
|
||||||
|
nextone = pt->next;
|
||||||
|
free(firstpoisontype);
|
||||||
|
firstpoisontype = nextone;
|
||||||
|
} else {
|
||||||
|
lastone = pt->prev;
|
||||||
|
free (lastone->next );
|
||||||
|
lastone->next = nextone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void killrace(race_t *r) {
|
void killrace(race_t *r) {
|
||||||
race_t *nextone, *lastone;
|
race_t *nextone, *lastone;
|
||||||
|
|
||||||
|
@ -14292,9 +14373,15 @@ void poison(lifeform_t *lf, int howlong, enum POISONTYPE ptype, int power, char
|
||||||
enum POISONSEVERITY psev;
|
enum POISONSEVERITY psev;
|
||||||
flag_t *retflag[MAXCANDIDATES];
|
flag_t *retflag[MAXCANDIDATES];
|
||||||
int nretflags;
|
int nretflags;
|
||||||
|
poisontype_t *pt;
|
||||||
|
pt = findpoisontype(ptype);
|
||||||
|
|
||||||
|
if (isimmuneto(lf->flags, DT_POISON, B_FALSE)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// are you immune to disease?
|
// are you immune to disease?
|
||||||
psev = getpoisonseverity(ptype);
|
psev = pt->severity;
|
||||||
if ((psev == PS_DISEASE) && hasflag(lf->flags, F_DISEASEIMMUNE)) {
|
if ((psev == PS_DISEASE) && hasflag(lf->flags, F_DISEASEIMMUNE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -14346,27 +14433,21 @@ void poison(lifeform_t *lf, int howlong, enum POISONTYPE ptype, int power, char
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int poisoncausesvomit(enum POISONTYPE ptype) {
|
|
||||||
switch (ptype) {
|
|
||||||
case P_FOOD:
|
|
||||||
case P_VENOM:
|
|
||||||
return B_TRUE;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return B_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int poisonthreatenslife(lifeform_t *lf, flag_t *f) {
|
int poisonthreatenslife(lifeform_t *lf, flag_t *f) {
|
||||||
float time,dam,totaldam;
|
float time,dam,totaldam;
|
||||||
|
poisontype_t *pt;
|
||||||
|
|
||||||
if (!f) return B_FALSE;
|
if (!f) return B_FALSE;
|
||||||
|
|
||||||
|
pt = findpoisontype(f->val[0]);
|
||||||
|
|
||||||
time = f->lifetime;
|
time = f->lifetime;
|
||||||
dam = f->val[1];
|
dam = pt->dam * f->val[1];
|
||||||
|
|
||||||
|
|
||||||
totaldam = time * dam;
|
totaldam = time * dam;
|
||||||
totaldam = pctof(getpoisondamchance(f->val[0]), totaldam);
|
totaldam = pctof(pt->dampct, totaldam);
|
||||||
|
|
||||||
if (totaldam >= lf->hp) {
|
if (totaldam >= lf->hp) {
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
|
@ -14935,12 +15016,13 @@ int startclimbing(lifeform_t *lf) {
|
||||||
|
|
||||||
// climbing down a pit?
|
// climbing down a pit?
|
||||||
if (pit) {
|
if (pit) {
|
||||||
int mod;
|
int diff;
|
||||||
// move there.
|
// move there.
|
||||||
movelf(lf, where);
|
movelf(lf, where);
|
||||||
// make a skill check.
|
// make a skill check.
|
||||||
mod = (countadjwalls(where)+1)/2;
|
//mod = (countadjwalls(where)+1)/2;
|
||||||
if (skillcheck(lf, SC_CLIMB, 20, mod)) {
|
diff = getcellclimbdifficultyavg(where);
|
||||||
|
if (skillcheck(lf, SC_CLIMB, diff, 0)) {
|
||||||
// if you pass, safely move down the pit.
|
// if you pass, safely move down the pit.
|
||||||
// usestairs() will announce this.
|
// usestairs() will announce this.
|
||||||
usestairs(lf, pit, B_TRUE, B_TRUE);
|
usestairs(lf, pit, B_TRUE, B_TRUE);
|
||||||
|
@ -17272,13 +17354,15 @@ void startlfturn(lifeform_t *lf) {
|
||||||
|
|
||||||
f = hasflag(lf->flags, F_POISONED);
|
f = hasflag(lf->flags, F_POISONED);
|
||||||
if (f) {
|
if (f) {
|
||||||
|
poisontype_t *pt;
|
||||||
|
pt = findpoisontype(f->val[0]);
|
||||||
// chance of fighting it off - gets easier over time.
|
// chance of fighting it off - gets easier over time.
|
||||||
//
|
//
|
||||||
if (skillcheck(lf, SC_POISON, (f->lifetime * 9), 0 )) {
|
if (skillcheck(lf, SC_POISON, (f->lifetime * 9), 0 )) {
|
||||||
killflag(f);
|
killflag(f);
|
||||||
} else {
|
} else {
|
||||||
// chance of losing hp
|
// chance of losing hp
|
||||||
if (rnd(1,100) <= getpoisondamchance(f->val[0])) {
|
if (pctchance(pt->dampct)) {
|
||||||
char buf[BUFLEN];
|
char buf[BUFLEN];
|
||||||
flag_t *asleep;
|
flag_t *asleep;
|
||||||
// being asleep helps.
|
// being asleep helps.
|
||||||
|
@ -17286,20 +17370,20 @@ void startlfturn(lifeform_t *lf) {
|
||||||
asleep = hasflag(lf->flags, F_ASLEEP);
|
asleep = hasflag(lf->flags, F_ASLEEP);
|
||||||
if (!asleep) {
|
if (!asleep) {
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
msg("^bYou %s violently.", getpoisondamverb(f->val[0]));
|
msg("^bYou %s violently.", pt->damverb);
|
||||||
} else if (cansee(player, lf)) {
|
} else if (cansee(player, lf)) {
|
||||||
char lfname[BUFLEN];
|
char lfname[BUFLEN];
|
||||||
getlfname(lf, lfname);
|
getlfname(lf, lfname);
|
||||||
msg("^%c%s %ss violently.",getlfcol(lf, CC_BAD), lfname, getpoisondamverb(f->val[0]));
|
msg("^%c%s %ss violently.",getlfcol(lf, CC_BAD), lfname, pt->damverb);
|
||||||
}
|
}
|
||||||
taketime(lf, getactspeed(lf));
|
taketime(lf, getactspeed(lf));
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, BUFLEN, "%s^from %s",getpoisonname(f->val[0]), f->text);
|
snprintf(buf, BUFLEN, "%s^from %s",pt->name, f->text);
|
||||||
losehp(lf, f->val[1], DT_DIRECT, NULL, buf);
|
losehp(lf, pt->dam * f->val[1], DT_DIRECT, NULL, buf);
|
||||||
|
|
||||||
if (!asleep) {
|
if (!asleep) {
|
||||||
if (poisoncausesvomit(f->val[0])) {
|
if (pt->causesvomit) {
|
||||||
addobfast(lf->cell->obpile, OT_VOMITPOOL);
|
addobfast(lf->cell->obpile, OT_VOMITPOOL);
|
||||||
}
|
}
|
||||||
loseconcentration(lf);
|
loseconcentration(lf);
|
||||||
|
|
5
lf.h
5
lf.h
|
@ -3,6 +3,7 @@
|
||||||
void addbodypart(race_t *r, enum BODYPART bp, char *name);
|
void addbodypart(race_t *r, enum BODYPART bp, char *name);
|
||||||
lifeform_t *addlf(cell_t *cell, enum RACE rid, int level);
|
lifeform_t *addlf(cell_t *cell, enum RACE rid, int level);
|
||||||
lifeform_t *real_addlf(cell_t *cell, enum RACE rid, int level, int controller);
|
lifeform_t *real_addlf(cell_t *cell, enum RACE rid, int level, int controller);
|
||||||
|
poisontype_t *addpoisontype(enum POISONTYPE id, char *name, char *desc, char *damverb, int causesvomit, int dam, int dampct, enum POISONSEVERITY severity);
|
||||||
job_t *addjob(enum JOB id, char *name, char *desc);
|
job_t *addjob(enum JOB id, char *name, char *desc);
|
||||||
race_t *addrace(enum RACE id, char *name, float weight, char glyph, int glyphcolour, enum MATERIAL mat, enum RACECLASS raceclass, char *desc);
|
race_t *addrace(enum RACE id, char *name, float weight, char glyph, int glyphcolour, enum MATERIAL mat, enum RACECLASS raceclass, char *desc);
|
||||||
raceclass_t *addraceclass(enum RACECLASS id, char *name, char *pluralname, enum SKILL skill);
|
raceclass_t *addraceclass(enum RACECLASS id, char *name, char *pluralname, enum SKILL skill);
|
||||||
|
@ -101,6 +102,7 @@ job_t *findjob(enum JOB jobid);
|
||||||
job_t *findjobbyname(char *name);
|
job_t *findjobbyname(char *name);
|
||||||
lifeform_t *findlf(map_t *m, int lfid);
|
lifeform_t *findlf(map_t *m, int lfid);
|
||||||
lifeform_t *findlfunique(enum RACE rid);
|
lifeform_t *findlfunique(enum RACE rid);
|
||||||
|
poisontype_t *findpoisontype(enum POISONTYPE id);
|
||||||
race_t *findrace(enum RACE id);
|
race_t *findrace(enum RACE id);
|
||||||
race_t *findracebyname(char *name);
|
race_t *findracebyname(char *name);
|
||||||
raceclass_t *findraceclass(enum RACECLASS id);
|
raceclass_t *findraceclass(enum RACECLASS id);
|
||||||
|
@ -216,11 +218,13 @@ int getstamina(lifeform_t *lf);
|
||||||
float getstamregen(lifeform_t *lf);
|
float getstamregen(lifeform_t *lf);
|
||||||
char *getplayername(char *buf);
|
char *getplayername(char *buf);
|
||||||
char *getplayernamefull(char *buf);
|
char *getplayernamefull(char *buf);
|
||||||
|
/*
|
||||||
int getpoisondamchance(enum POISONTYPE ptype);
|
int getpoisondamchance(enum POISONTYPE ptype);
|
||||||
char *getpoisondamverb(enum POISONTYPE ptype);
|
char *getpoisondamverb(enum POISONTYPE ptype);
|
||||||
char *getpoisondesc(enum POISONTYPE ptype);
|
char *getpoisondesc(enum POISONTYPE ptype);
|
||||||
char *getpoisonname(enum POISONTYPE ptype);
|
char *getpoisonname(enum POISONTYPE ptype);
|
||||||
enum POISONSEVERITY getpoisonseverity(enum POISONTYPE ptype);
|
enum POISONSEVERITY getpoisonseverity(enum POISONTYPE ptype);
|
||||||
|
*/
|
||||||
int getraceclass(lifeform_t *lf);
|
int getraceclass(lifeform_t *lf);
|
||||||
int getracerarity(map_t *map, enum RACE rid, enum RARITY *rr);
|
int getracerarity(map_t *map, enum RACE rid, enum RARITY *rr);
|
||||||
object_t *getrandomarmour(lifeform_t *lf, lifeform_t *attacker);
|
object_t *getrandomarmour(lifeform_t *lf, lifeform_t *attacker);
|
||||||
|
@ -335,6 +339,7 @@ int isweaponskill(enum SKILL skid);
|
||||||
enum FLAG iswoozy(lifeform_t *lf);
|
enum FLAG iswoozy(lifeform_t *lf);
|
||||||
void killjob(job_t *job);
|
void killjob(job_t *job);
|
||||||
void killlf(lifeform_t *lf);
|
void killlf(lifeform_t *lf);
|
||||||
|
void killpoisontype(poisontype_t *pt);
|
||||||
void killrace(race_t *race);
|
void killrace(race_t *race);
|
||||||
flag_t *levelabilityready(lifeform_t *lf);
|
flag_t *levelabilityready(lifeform_t *lf);
|
||||||
int loadfirearm(lifeform_t *lf, object_t *gun, object_t *ammo);
|
int loadfirearm(lifeform_t *lf, object_t *gun, object_t *ammo);
|
||||||
|
|
34
map.c
34
map.c
|
@ -272,7 +272,11 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
|
|
||||||
if (wantjob == J_NONE) {
|
if (wantjob == J_NONE) {
|
||||||
if (jobok) {
|
if (jobok) {
|
||||||
for (f = lf->flags->first ; f ; f = f->next) {
|
int nretflags,i;
|
||||||
|
flag_t *retflag[MAXCANDIDATES];
|
||||||
|
getflags(lf->flags, retflag, &nretflags, F_STARTJOB, F_NONE);
|
||||||
|
for (i = 0; i < nretflags; i++) {
|
||||||
|
f = retflag[i];
|
||||||
// has a job?
|
// has a job?
|
||||||
if (f->id == F_STARTJOB) {
|
if (f->id == F_STARTJOB) {
|
||||||
if (rnd(1,100) <= f->val[0]) {
|
if (rnd(1,100) <= f->val[0]) {
|
||||||
|
@ -1500,14 +1504,42 @@ int getcellclimbdifficulty(cell_t *c) {
|
||||||
case MT_GLASS: diff = 26; break;
|
case MT_GLASS: diff = 26; break;
|
||||||
case MT_DRAGONWOOD: diff = 20; break;
|
case MT_DRAGONWOOD: diff = 20; break;
|
||||||
case MT_METAL: diff = 20; break;
|
case MT_METAL: diff = 20; break;
|
||||||
|
case MT_STONE: diff = 15; break;
|
||||||
case MT_WAX: diff = 10; break;
|
case MT_WAX: diff = 10; break;
|
||||||
case MT_WOOD: diff = 8; break;
|
case MT_WOOD: diff = 8; break;
|
||||||
case MT_PLANT: diff = 8; break;
|
case MT_PLANT: diff = 8; break;
|
||||||
default: diff = 12; break;
|
default: diff = 12; break;
|
||||||
}
|
}
|
||||||
|
// modify for celltype
|
||||||
|
switch (c->type->id) {
|
||||||
|
case CT_WALLBRICK: diff -= 5; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
limit(&diff, 0, NA);
|
||||||
return diff;
|
return diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getcellclimbdifficultyavg(cell_t *c) {
|
||||||
|
int d;
|
||||||
|
int diff = 0;
|
||||||
|
int nwalls = 0;
|
||||||
|
|
||||||
|
for (d = DC_N; d <= DC_NW; d++) {
|
||||||
|
cell_t *newcell;
|
||||||
|
newcell = getcellindir(c, d);
|
||||||
|
if (newcell && newcell->type->solid) {
|
||||||
|
diff += getcellclimbdifficulty(newcell);
|
||||||
|
} else {
|
||||||
|
diff += 30; // ie. v.high
|
||||||
|
}
|
||||||
|
nwalls++;
|
||||||
|
}
|
||||||
|
diff /= nwalls;
|
||||||
|
return diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int getcelldist(cell_t *src, cell_t *dst) {
|
int getcelldist(cell_t *src, cell_t *dst) {
|
||||||
double xd,yd;
|
double xd,yd;
|
||||||
// use pythag
|
// use pythag
|
||||||
|
|
1
map.h
1
map.h
|
@ -26,6 +26,7 @@ int fix_unreachable_cell(cell_t *badcell);
|
||||||
void floodfill(cell_t *startcell);
|
void floodfill(cell_t *startcell);
|
||||||
cell_t *getcellat(map_t *map, int x, int y);
|
cell_t *getcellat(map_t *map, int x, int y);
|
||||||
int getcellclimbdifficulty(cell_t *c);
|
int getcellclimbdifficulty(cell_t *c);
|
||||||
|
int getcellclimbdifficultyavg(cell_t *c);
|
||||||
int getcelldist(cell_t *src, cell_t *dst);
|
int getcelldist(cell_t *src, cell_t *dst);
|
||||||
int getcelldistorth(cell_t *src, cell_t *dst);
|
int getcelldistorth(cell_t *src, cell_t *dst);
|
||||||
void getcellglyph(glyph_t *g, cell_t *c, lifeform_t *viewer);
|
void getcellglyph(glyph_t *g, cell_t *c, lifeform_t *viewer);
|
||||||
|
|
3
nexus.c
3
nexus.c
|
@ -33,6 +33,7 @@ race_t *firstrace = NULL,*lastrace = NULL;
|
||||||
raceclass_t *firstraceclass = NULL,*lastraceclass = NULL;
|
raceclass_t *firstraceclass = NULL,*lastraceclass = NULL;
|
||||||
recipe_t *firstrecipe = NULL,*lastrecipe = NULL;
|
recipe_t *firstrecipe = NULL,*lastrecipe = NULL;
|
||||||
job_t *firstjob = NULL,*lastjob = NULL;
|
job_t *firstjob = NULL,*lastjob = NULL;
|
||||||
|
poisontype_t *firstpoisontype = NULL,*lastpoisontype = NULL;
|
||||||
skill_t *firstskill = NULL,*lastskill = NULL;
|
skill_t *firstskill = NULL,*lastskill = NULL;
|
||||||
habitat_t *firsthabitat = NULL,*lasthabitat = NULL;
|
habitat_t *firsthabitat = NULL,*lasthabitat = NULL;
|
||||||
map_t *firstmap = NULL,*lastmap = NULL;
|
map_t *firstmap = NULL,*lastmap = NULL;
|
||||||
|
@ -718,6 +719,8 @@ void cleanup(void) {
|
||||||
while (material) killmaterial(material);
|
while (material) killmaterial(material);
|
||||||
// free races
|
// free races
|
||||||
while (firstrace) killrace(firstrace);
|
while (firstrace) killrace(firstrace);
|
||||||
|
// free posiontypes
|
||||||
|
while (firstpoisontype) killpoisontype(firstpoisontype);
|
||||||
// free celltypes
|
// free celltypes
|
||||||
while (firstcelltype) killcelltype(firstcelltype);
|
while (firstcelltype) killcelltype(firstcelltype);
|
||||||
/*
|
/*
|
||||||
|
|
4
spell.c
4
spell.c
|
@ -8969,6 +8969,8 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
|
||||||
|
|
||||||
for (f = target->flags->first ; f ; f = f->next) {
|
for (f = target->flags->first ; f ; f = f->next) {
|
||||||
if (f->id == F_POISONED) {
|
if (f->id == F_POISONED) {
|
||||||
|
poisontype_t *pt;
|
||||||
|
pt = findpoisontype(f->val[0]);
|
||||||
// slightly lower time
|
// slightly lower time
|
||||||
if (f->lifetime > 1) {
|
if (f->lifetime > 1) {
|
||||||
f->lifetime--;
|
f->lifetime--;
|
||||||
|
@ -8976,7 +8978,7 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
|
||||||
// cut power in half
|
// cut power in half
|
||||||
f->val[1] /= 2; if (f->val[1] < 1) f->val[1] = 1;
|
f->val[1] /= 2; if (f->val[1] < 1) f->val[1] = 1;
|
||||||
if (isplayer(target)) {
|
if (isplayer(target)) {
|
||||||
msg("Your %s seems less intense.",getpoisonname(f->val[0]));
|
msg("Your %s seems less intense.",pt->name);
|
||||||
}
|
}
|
||||||
ndone++;
|
ndone++;
|
||||||
}
|
}
|
||||||
|
|
48
text.c
48
text.c
|
@ -850,54 +850,6 @@ char *getkillverb(lifeform_t *victim, object_t *wep, enum DAMTYPE damtype, int d
|
||||||
return "kill";
|
return "kill";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char *getpoisondamverb(enum POISONTYPE ptype) {
|
|
||||||
switch (ptype) {
|
|
||||||
case P_FOOD:
|
|
||||||
case P_VENOM:
|
|
||||||
return "vomit";
|
|
||||||
case P_GAS:
|
|
||||||
case P_COLD:
|
|
||||||
return "cough";
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
char *getpoisondesc(enum POISONTYPE ptype) {
|
|
||||||
switch (ptype) {
|
|
||||||
case P_FOOD:
|
|
||||||
case P_VENOM:
|
|
||||||
case P_GAS:
|
|
||||||
case P_WEAKNESS:
|
|
||||||
return "Poisoned";
|
|
||||||
case P_COLD:
|
|
||||||
return "Sick";
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return "Poisoned";
|
|
||||||
}
|
|
||||||
|
|
||||||
char *getpoisonname(enum POISONTYPE ptype) {
|
|
||||||
switch (ptype) {
|
|
||||||
case P_COLD:
|
|
||||||
return "hypothermia";
|
|
||||||
case P_FOOD:
|
|
||||||
return "food poisoning";
|
|
||||||
case P_GAS:
|
|
||||||
return "gas inhalation";
|
|
||||||
case P_VENOM:
|
|
||||||
return "venom poisoning";
|
|
||||||
case P_WEAKNESS:
|
|
||||||
return "weakening poison";
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
char *getpossessive(char *text) {
|
char *getpossessive(char *text) {
|
||||||
char lastchar;
|
char lastchar;
|
||||||
// you -> your
|
// you -> your
|
||||||
|
|
4
text.h
4
text.h
|
@ -20,8 +20,8 @@ char *getflagsourcetext(flag_t *f);
|
||||||
int gethitconferlifetime(char *text, int *min, int *max);
|
int gethitconferlifetime(char *text, int *min, int *max);
|
||||||
char *getkillverb(lifeform_t *victim, object_t *wep, enum DAMTYPE damtype, int dam, int maxhp);
|
char *getkillverb(lifeform_t *victim, object_t *wep, enum DAMTYPE damtype, int dam, int maxhp);
|
||||||
char *getpoisondamverb(enum POISONTYPE ptype);
|
char *getpoisondamverb(enum POISONTYPE ptype);
|
||||||
char *getpoisondesc(enum POISONTYPE ptype);
|
//char *getpoisondesc(enum POISONTYPE ptype);
|
||||||
char *getpoisonname(enum POISONTYPE ptype);
|
//char *getpoisonname(enum POISONTYPE ptype);
|
||||||
char *getpossessive(char *text);
|
char *getpossessive(char *text);
|
||||||
char *getdrunktext(flag_t *drunkflag);
|
char *getdrunktext(flag_t *drunkflag);
|
||||||
char *getinjuredbpname(enum BODYPART bp);
|
char *getinjuredbpname(enum BODYPART bp);
|
||||||
|
|
Loading…
Reference in New Issue