Tidy up code around modification of player stats by god piety.
This commit is contained in:
parent
bbc539c449
commit
e4c3716387
12
god.c
12
god.c
|
@ -36,6 +36,7 @@ extern condset_t ccwalkable;
|
||||||
lifeform_t *godlf[MAXGODS];
|
lifeform_t *godlf[MAXGODS];
|
||||||
int ngodlfs = 0;
|
int ngodlfs = 0;
|
||||||
|
|
||||||
|
|
||||||
void angergod(enum RACE rid, int amt, enum GODANGERREASON why) {
|
void angergod(enum RACE rid, int amt, enum GODANGERREASON why) {
|
||||||
lifeform_t *god;
|
lifeform_t *god;
|
||||||
int piety;
|
int piety;
|
||||||
|
@ -795,6 +796,17 @@ lifeform_t *findgod(enum RACE rid) {
|
||||||
return lf;
|
return lf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *getgodname(enum RACE rid, char *buf) {
|
||||||
|
lifeform_t *god;
|
||||||
|
god = findgod(rid);
|
||||||
|
if (god) {
|
||||||
|
sprintf(buf, "%s", god->race->name);
|
||||||
|
} else {
|
||||||
|
sprintf(buf, "(unknowngod)");
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
enum RACE getopposinggod(enum RACE rid) {
|
enum RACE getopposinggod(enum RACE rid) {
|
||||||
switch (rid) {
|
switch (rid) {
|
||||||
//case R_GODPURITY: return R_GODCHAOS;
|
//case R_GODPURITY: return R_GODCHAOS;
|
||||||
|
|
1
god.h
1
god.h
|
@ -6,6 +6,7 @@ void askforworship(enum RACE rid);
|
||||||
void checkgodbonus(enum RACE rid, enum PIETYLEV newlev, enum PIETYLEV oldlev);
|
void checkgodbonus(enum RACE rid, enum PIETYLEV newlev, enum PIETYLEV oldlev);
|
||||||
void dooffer(void);
|
void dooffer(void);
|
||||||
lifeform_t *findgod(enum RACE rid);
|
lifeform_t *findgod(enum RACE rid);
|
||||||
|
char *getgodname(enum RACE rid, char *buf);
|
||||||
enum RACE getopposinggod(enum RACE rid);
|
enum RACE getopposinggod(enum RACE rid);
|
||||||
enum OBTYPE getopposinggodstone(enum RACE rid);
|
enum OBTYPE getopposinggodstone(enum RACE rid);
|
||||||
int getpiety(enum RACE rid);
|
int getpiety(enum RACE rid);
|
||||||
|
|
25
io.c
25
io.c
|
@ -13745,8 +13745,9 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
y += headinglines;
|
y += headinglines;
|
||||||
count = 0;
|
count = 0;
|
||||||
|
|
||||||
// gods angry?
|
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
|
//enum ATTRIB a;
|
||||||
|
// gods angry?
|
||||||
if (godprayedto(R_GODLIFE)) {
|
if (godprayedto(R_GODLIFE)) {
|
||||||
enum PIETYLEV plev;
|
enum PIETYLEV plev;
|
||||||
plev = getpietylev(R_GODLIFE, NULL, NULL);
|
plev = getpietylev(R_GODLIFE, NULL, NULL);
|
||||||
|
@ -13768,6 +13769,28 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
effectline(&stopnow, &count, offset, &nextoffset, headinglines, mainwin, &y, &x, 0, "The Goddess of Nature has cursed you with a rotting touch.", you(lf));
|
effectline(&stopnow, &count, offset, &nextoffset, headinglines, mainwin, &y, &x, 0, "The Goddess of Nature has cursed you with a rotting touch.", you(lf));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// stats being modified by gods?
|
||||||
|
/*
|
||||||
|
for (a = 0; a < MAXATTS; a++) {
|
||||||
|
enum RACE godid = R_NONE;
|
||||||
|
int mod;
|
||||||
|
mod = getattrgodmod(a, &godid);
|
||||||
|
if (mod) {
|
||||||
|
char godname[BUFLEN];
|
||||||
|
char attrname[BUFLEN];
|
||||||
|
getgodname(godid, godname);
|
||||||
|
sprintf(attrname, getattrname(a));
|
||||||
|
capitalise(attrname);
|
||||||
|
|
||||||
|
effectline(&stopnow, &count, offset, &nextoffset,
|
||||||
|
headinglines, mainwin, &y, &x, 0,
|
||||||
|
"%s is %s your %s by %s%d.",
|
||||||
|
godname, (mod > 0) ? "boosting" : "lowering", attrname,
|
||||||
|
(mod > 0) ? "+" : "", mod );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
// ready to gain a level?
|
// ready to gain a level?
|
||||||
if (lfhasflag(lf, F_STATGAINREADY)) {
|
if (lfhasflag(lf, F_STATGAINREADY)) {
|
||||||
|
|
104
lf.c
104
lf.c
|
@ -8053,46 +8053,7 @@ int real_getattr(lifeform_t *lf, enum ATTRIB attr, int ignoreattrset) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((gamemode == GM_GAMESTARTED) && isplayer(lf)) {
|
if ((gamemode == GM_GAMESTARTED) && isplayer(lf)) {
|
||||||
// worshipping yumi increases wisdom based on piety
|
val += getattrgodmod(attr, NULL);
|
||||||
if ((attr == A_WIS) && godprayedto(R_GODMERCY)) {
|
|
||||||
enum PIETYLEV plev;
|
|
||||||
plev = getpietylev(R_GODMERCY, NULL, NULL);
|
|
||||||
switch (plev) {
|
|
||||||
case PL_ENRAGED: val -= 25; break;
|
|
||||||
case PL_FURIOUS: val -= 10; break;
|
|
||||||
case PL_ANGRY: val -= 5; break;
|
|
||||||
case PL_TOLERATED: break;
|
|
||||||
case PL_INDIFFERENT: val += 10; break;
|
|
||||||
case PL_PLEASED: val += 20 ; break;
|
|
||||||
case PL_DELIGHTED: val += 35 ; break;
|
|
||||||
case PL_ECSTATIC: val += 50 ; break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
} else if ((attr == A_CON) && godprayedto(R_GODLIFE)) {
|
|
||||||
enum PIETYLEV plev;
|
|
||||||
plev = getpietylev(R_GODLIFE, NULL, NULL);
|
|
||||||
switch (plev) {
|
|
||||||
case PL_INDIFFERENT: val += 5; break;
|
|
||||||
case PL_PLEASED: val += 10 ; break;
|
|
||||||
case PL_DELIGHTED: val += 15 ; break;
|
|
||||||
case PL_ECSTATIC: val += 20 ; break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
} else if ((attr == A_IQ) && godprayedto(R_GODMAGIC)) {
|
|
||||||
enum PIETYLEV plev;
|
|
||||||
plev = getpietylev(R_GODMAGIC, NULL, NULL);
|
|
||||||
switch (plev) {
|
|
||||||
case PL_ENRAGED: val -= 20; break;
|
|
||||||
case PL_FURIOUS: val -= 10; break;
|
|
||||||
case PL_ANGRY: val -= 5; break;
|
|
||||||
case PL_TOLERATED: break;
|
|
||||||
case PL_INDIFFERENT: val += 10; break;
|
|
||||||
case PL_PLEASED: val += 20 ; break;
|
|
||||||
case PL_DELIGHTED: val += 30 ; break;
|
|
||||||
case PL_ECSTATIC: val += 50 ; break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (val < 0) val = 0;
|
if (val < 0) val = 0;
|
||||||
|
@ -8100,6 +8061,69 @@ int real_getattr(lifeform_t *lf, enum ATTRIB attr, int ignoreattrset) {
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// returns how much the given attrib is being modified by god piety.
|
||||||
|
// if provided, populates 'retgod' with the id of the god modifying it (or R_NONE).
|
||||||
|
int getattrgodmod(enum ATTRIB attr, enum RACE *retgodid) {
|
||||||
|
int mod = 0;
|
||||||
|
enum RACE whichgod = R_NONE;
|
||||||
|
if ((attr == A_WIS) && godprayedto(R_GODMERCY)) {
|
||||||
|
// worshipping yumi increases wisdom based on piety
|
||||||
|
enum PIETYLEV plev;
|
||||||
|
plev = getpietylev(R_GODMERCY, NULL, NULL);
|
||||||
|
switch (plev) {
|
||||||
|
case PL_ENRAGED: mod -= 25; break;
|
||||||
|
case PL_FURIOUS: mod -= 10; break;
|
||||||
|
case PL_ANGRY: mod -= 5; break;
|
||||||
|
case PL_TOLERATED: break;
|
||||||
|
case PL_INDIFFERENT: mod += 10; break;
|
||||||
|
case PL_PLEASED: mod += 20 ; break;
|
||||||
|
case PL_DELIGHTED: mod += 35 ; break;
|
||||||
|
case PL_ECSTATIC: mod += 50 ; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
if (mod != 0) {
|
||||||
|
whichgod = R_GODMERCY;
|
||||||
|
}
|
||||||
|
} else if ((attr == A_CON) && godprayedto(R_GODLIFE)) {
|
||||||
|
enum PIETYLEV plev;
|
||||||
|
plev = getpietylev(R_GODLIFE, NULL, NULL);
|
||||||
|
switch (plev) {
|
||||||
|
case PL_INDIFFERENT: mod += 5; break;
|
||||||
|
case PL_PLEASED: mod += 10 ; break;
|
||||||
|
case PL_DELIGHTED: mod += 15 ; break;
|
||||||
|
case PL_ECSTATIC: mod += 20 ; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
if (mod != 0) {
|
||||||
|
whichgod = R_GODLIFE;
|
||||||
|
}
|
||||||
|
} else if ((attr == A_IQ) && godprayedto(R_GODMAGIC)) {
|
||||||
|
enum PIETYLEV plev;
|
||||||
|
plev = getpietylev(R_GODMAGIC, NULL, NULL);
|
||||||
|
switch (plev) {
|
||||||
|
case PL_ENRAGED: mod -= 20; break;
|
||||||
|
case PL_FURIOUS: mod -= 10; break;
|
||||||
|
case PL_ANGRY: mod -= 5; break;
|
||||||
|
case PL_TOLERATED: break;
|
||||||
|
case PL_INDIFFERENT: mod += 10; break;
|
||||||
|
case PL_PLEASED: mod += 20 ; break;
|
||||||
|
case PL_DELIGHTED: mod += 30 ; break;
|
||||||
|
case PL_ECSTATIC: mod += 50 ; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
if (mod != 0) {
|
||||||
|
whichgod = R_GODMAGIC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retgodid) {
|
||||||
|
*retgodid = whichgod;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mod;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// returns average damage per turn, modified by accuracy
|
// returns average damage per turn, modified by accuracy
|
||||||
int getavgdam(lifeform_t *lf, int forxp) {
|
int getavgdam(lifeform_t *lf, int forxp) {
|
||||||
obpile_t *op;
|
obpile_t *op;
|
||||||
|
|
1
lf.h
1
lf.h
|
@ -174,6 +174,7 @@ int getattpoints(lifeform_t *lf);
|
||||||
int getattr(lifeform_t *lf, enum ATTRIB attr);
|
int getattr(lifeform_t *lf, enum ATTRIB attr);
|
||||||
enum ATTRBRACKET getattrbracket(int attrval, enum ATTRIB whichatt, /*@null@*/char *buf);
|
enum ATTRBRACKET getattrbracket(int attrval, enum ATTRIB whichatt, /*@null@*/char *buf);
|
||||||
int real_getattr(lifeform_t *lf, enum ATTRIB attr, int ignoreattrset);
|
int real_getattr(lifeform_t *lf, enum ATTRIB attr, int ignoreattrset);
|
||||||
|
int getattrgodmod(enum ATTRIB attr, enum RACE *retgodid);
|
||||||
int getavgdam(lifeform_t *lf, int forxp);
|
int getavgdam(lifeform_t *lf, int forxp);
|
||||||
enum CASTTYPE getcasttype(lifeform_t *lf, enum OBTYPE sid);
|
enum CASTTYPE getcasttype(lifeform_t *lf, enum OBTYPE sid);
|
||||||
int getdistspotmod(lifeform_t *lf, cell_t *c);
|
int getdistspotmod(lifeform_t *lf, cell_t *c);
|
||||||
|
|
Loading…
Reference in New Issue