- [+] need a better message when sickness wakes you up.
- [+] at the moment i just get "your rest is interrupted!" - [+] incorrectly calling getlorelevel() with raceid ratehr than raceclassid. - [+] CRASH in spellresisted() when caster is null - [+] fix rest being interrupted by all flags! - [+] flagcausesinterrupt() - [+] test - get poisoned then sleep/train - [+] test - potion of elemental immunity - [+] metal armour now isn't being damaged _enough_! - [+] fixed - wasn't applying the full original damage to armour.
This commit is contained in:
parent
8186db9f5a
commit
1fb5e12386
2
attack.c
2
attack.c
|
@ -1227,7 +1227,7 @@ int attacklf(lifeform_t *lf, lifeform_t *victim, object_t *wep, flag_t *damflag)
|
||||||
// victim's armour loses hp. note that it loses the full
|
// victim's armour loses hp. note that it loses the full
|
||||||
// amount of damage dealt, not just what it reduced.
|
// amount of damage dealt, not just what it reduced.
|
||||||
if (damreducedbyarmour && !critical) {
|
if (damreducedbyarmour && !critical) {
|
||||||
applyarmourdamage(victim, wep, dam[i], damtype[i], lf);
|
applyarmourdamage(victim, wep, dam[i] + damreducedbyarmour, damtype[i], lf);
|
||||||
// train armour
|
// train armour
|
||||||
practice(victim, SK_ARMOUR, 1);
|
practice(victim, SK_ARMOUR, 1);
|
||||||
}
|
}
|
||||||
|
|
7
defs.h
7
defs.h
|
@ -719,6 +719,11 @@ enum SENSE {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum GAINORLOSS {
|
||||||
|
GL_LOSS = 0,
|
||||||
|
GL_GAIN = 1,
|
||||||
|
};
|
||||||
|
|
||||||
enum FLAGCONDITION {
|
enum FLAGCONDITION {
|
||||||
FC_NOCONDITION = 0,
|
FC_NOCONDITION = 0,
|
||||||
FC_IFPLAYER,
|
FC_IFPLAYER,
|
||||||
|
@ -3206,7 +3211,7 @@ enum FLAG {
|
||||||
F_HASNEWLEVEL, // we have a new xp lev, but haven't trained yet.
|
F_HASNEWLEVEL, // we have a new xp lev, but haven't trained yet.
|
||||||
F_STATGAINREADY, // ready to increase str/int etc. v2 is how many times
|
F_STATGAINREADY, // ready to increase str/int etc. v2 is how many times
|
||||||
// we can do it.
|
// we can do it.
|
||||||
F_INTERRUPTED, // somethign interrupted our rest. stop!
|
F_INTERRUPTED, // somethign interrupted our rest/training/eating. stop!
|
||||||
F_EATING, // lf is eating obid v0
|
F_EATING, // lf is eating obid v0
|
||||||
F_DIGGING, // v0/v1 = cell where lf is digging.
|
F_DIGGING, // v0/v1 = cell where lf is digging.
|
||||||
// v2 is how much to dig per turn.
|
// v2 is how much to dig per turn.
|
||||||
|
|
89
flag.c
89
flag.c
|
@ -234,7 +234,11 @@ flag_t *addflag_real(flagpile_t *fp, enum FLAG id, int val1, int val2, int val3,
|
||||||
if ( ((gamemode == GM_CHARGEN) && isplayer(f->pile->owner)) ||
|
if ( ((gamemode == GM_CHARGEN) && isplayer(f->pile->owner)) ||
|
||||||
((gamemode == GM_GAMESTARTED) && announceflaggain(f->pile->owner, f)) ) {
|
((gamemode == GM_GAMESTARTED) && announceflaggain(f->pile->owner, f)) ) {
|
||||||
if (gamemode == GM_GAMESTARTED) {
|
if (gamemode == GM_GAMESTARTED) {
|
||||||
// don't include flags which interrupt will kill!
|
if (flagcausesinterrupt(f, GL_GAIN)) {
|
||||||
|
addflag(f->pile, F_INTERRUPTED, B_TRUE, NA, NA, NULL);
|
||||||
|
}
|
||||||
|
// only some flags will interrupt player actions
|
||||||
|
/*
|
||||||
switch (f->id) {
|
switch (f->id) {
|
||||||
case F_RUNNING:
|
case F_RUNNING:
|
||||||
case F_TRAINING:
|
case F_TRAINING:
|
||||||
|
@ -250,6 +254,7 @@ flag_t *addflag_real(flagpile_t *fp, enum FLAG id, int val1, int val2, int val3,
|
||||||
addflag(f->pile, F_INTERRUPTED, B_TRUE, NA, NA, NULL);
|
addflag(f->pile, F_INTERRUPTED, B_TRUE, NA, NA, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
//if (gamemode == GM_GAMESTARTED) checkmapflags(player->cell->map); // debugging
|
//if (gamemode == GM_GAMESTARTED) checkmapflags(player->cell->map); // debugging
|
||||||
|
|
||||||
|
@ -528,6 +533,43 @@ int countflags(flagpile_t *fp) {
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// returns TRUE if knowingly gaining/losing this flag will
|
||||||
|
// interrupt player actions like resting, training or eating.
|
||||||
|
int flagcausesinterrupt(flag_t *f, enum GAINORLOSS gol ) {
|
||||||
|
switch (f->id) {
|
||||||
|
case F_ASLEEP:
|
||||||
|
if (f->val[2] == NA) { // ie. sleeping, not resting
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_BEINGSTONED:
|
||||||
|
case F_CONFUSED:
|
||||||
|
case F_FEIGNINGDEATH:
|
||||||
|
case F_FLYING:
|
||||||
|
case F_LEVITATING:
|
||||||
|
case F_NONCORPOREAL:
|
||||||
|
case F_PAIN:
|
||||||
|
case F_PARALYZED:
|
||||||
|
case F_POISONED:
|
||||||
|
case F_RAGE:
|
||||||
|
case F_SPRINTING:
|
||||||
|
case F_STUNNED:
|
||||||
|
return B_TRUE;
|
||||||
|
case F_BLIND:
|
||||||
|
case F_CAFFEINATED:
|
||||||
|
case F_DRUNK:
|
||||||
|
case F_FROZEN:
|
||||||
|
case F_GRABBEDBY:
|
||||||
|
case F_HOTFEET:
|
||||||
|
case F_INJURY:
|
||||||
|
case F_INVISIBLE:
|
||||||
|
if (gol == GL_GAIN) return B_TRUE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
int flagcausesloscalc(enum FLAG fid) {
|
int flagcausesloscalc(enum FLAG fid) {
|
||||||
switch (fid) {
|
switch (fid) {
|
||||||
|
@ -975,6 +1017,10 @@ void killflag(flag_t *f) {
|
||||||
|
|
||||||
// announce
|
// announce
|
||||||
if (announceflagloss(lf, f)) {
|
if (announceflagloss(lf, f)) {
|
||||||
|
if (flagcausesinterrupt(f, GL_LOSS)) {
|
||||||
|
addflag(lf->flags, F_INTERRUPTED, B_TRUE, NA, NA, NULL);
|
||||||
|
}
|
||||||
|
/*
|
||||||
// don't include flags which interrupt will kill!
|
// don't include flags which interrupt will kill!
|
||||||
switch (f->id) {
|
switch (f->id) {
|
||||||
case F_RUNNING:
|
case F_RUNNING:
|
||||||
|
@ -991,6 +1037,7 @@ void killflag(flag_t *f) {
|
||||||
addflag(lf->flags, F_INTERRUPTED, B_TRUE, NA, NA, NULL);
|
addflag(lf->flags, F_INTERRUPTED, B_TRUE, NA, NA, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// special effects after announcement
|
// special effects after announcement
|
||||||
|
@ -1194,38 +1241,38 @@ void timeeffectsflag(flag_t *f, int howlong) {
|
||||||
case F_CANWILL:
|
case F_CANWILL:
|
||||||
switch (f->val[0]) {
|
switch (f->val[0]) {
|
||||||
case OT_A_JUMP:
|
case OT_A_JUMP:
|
||||||
warn("Your ability to jump is starting to run out...");;
|
msg("Your ability to jump is starting to run out...");;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_DTIMMUNE:
|
case F_DTIMMUNE:
|
||||||
warn("Your %s immunity is starting to run out...", getdamname(f->val[0]));
|
msg("Your %s immunity is starting to run out...", getdamname(f->val[0]));
|
||||||
break;
|
break;
|
||||||
case F_DTRESIST:
|
case F_DTRESIST:
|
||||||
warn("Your %s resistance is starting to run out...", getdamname(f->val[0]));
|
msg("Your %s resistance is starting to run out...", getdamname(f->val[0]));
|
||||||
break;
|
break;
|
||||||
case F_DTVULN:
|
case F_DTVULN:
|
||||||
warn("You feel a little less vulnerable to %s...", getdamname(f->val[0]));
|
msg("You feel a little less vulnerable to %s...", getdamname(f->val[0]));
|
||||||
break;
|
break;
|
||||||
case F_INVISIBLE:
|
case F_INVISIBLE:
|
||||||
warn("Your body is starting to reappear...");
|
msg("Your body is starting to reappear...");
|
||||||
break;
|
break;
|
||||||
case F_MAGSHIELD:
|
case F_MAGSHIELD:
|
||||||
warn("Your magnetic shield is weakening...");
|
msg("Your magnetic shield is weakening...");
|
||||||
break;
|
break;
|
||||||
case F_POLYMORPHED:
|
case F_POLYMORPHED:
|
||||||
warn("You are starting to revert to your original form...");
|
msg("You are starting to revert to your original form...");
|
||||||
break;
|
break;
|
||||||
case F_LEVITATING:
|
case F_LEVITATING:
|
||||||
warn("Your levitation is starting to expire...");
|
msg("Your levitation is starting to expire...");
|
||||||
break;
|
break;
|
||||||
case F_FLYING:
|
case F_FLYING:
|
||||||
warn("Your ability to fly is starting to expire...");
|
msg("Your ability to fly is starting to expire...");
|
||||||
break;
|
break;
|
||||||
case F_SPIDERCLIMB:
|
case F_SPIDERCLIMB:
|
||||||
warn("Your skin is becoming less adhesive..."); more();
|
msg("Your skin is becoming less adhesive..."); more();
|
||||||
break;
|
break;
|
||||||
default: // no message
|
default: // no message
|
||||||
break;
|
break;
|
||||||
|
@ -1248,38 +1295,38 @@ void timeeffectsflag(flag_t *f, int howlong) {
|
||||||
case F_CANWILL:
|
case F_CANWILL:
|
||||||
switch (f->val[0]) {
|
switch (f->val[0]) {
|
||||||
case OT_A_JUMP:
|
case OT_A_JUMP:
|
||||||
warn("Your ability to jump is about to expire!"); more();
|
msg("Your ability to jump is about to expire!"); more();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_DTIMMUNE:
|
case F_DTIMMUNE:
|
||||||
warn("Your %s immunity is about to expire!", getdamname(f->val[0])); more();
|
msg("Your %s immunity is about to expire!", getdamname(f->val[0])); more();
|
||||||
break;
|
break;
|
||||||
case F_DTRESIST:
|
case F_DTRESIST:
|
||||||
warn("Your %s resistance is about to expire!", getdamname(f->val[0])); more();
|
msg("Your %s resistance is about to expire!", getdamname(f->val[0])); more();
|
||||||
break;
|
break;
|
||||||
case F_DTVULN:
|
case F_DTVULN:
|
||||||
warn("You feel a little less vulnerable to %s...", getdamname(f->val[0]));
|
msg("You feel a little less vulnerable to %s...", getdamname(f->val[0]));
|
||||||
break;
|
break;
|
||||||
case F_INVISIBLE:
|
case F_INVISIBLE:
|
||||||
warn("Your invisibility is about to expire!"); more();
|
msg("Your invisibility is about to expire!"); more();
|
||||||
break;
|
break;
|
||||||
case F_MAGSHIELD:
|
case F_MAGSHIELD:
|
||||||
warn("Your magnetic shield is about to expire!"); more();
|
msg("Your magnetic shield is about to expire!"); more();
|
||||||
break;
|
break;
|
||||||
case F_LEVITATING:
|
case F_LEVITATING:
|
||||||
warn("Your levitation is about to expire!"); more();
|
msg("Your levitation is about to expire!"); more();
|
||||||
break;
|
break;
|
||||||
case F_SPIDERCLIMB:
|
case F_SPIDERCLIMB:
|
||||||
warn("Your skin adhesion is about to expire!"); more();
|
msg("Your skin adhesion is about to expire!"); more();
|
||||||
break;
|
break;
|
||||||
case F_POLYMORPHED:
|
case F_POLYMORPHED:
|
||||||
warn("You are about to revert to your original form!"); more();
|
msg("You are about to revert to your original form!"); more();
|
||||||
break;
|
break;
|
||||||
case F_FLYING:
|
case F_FLYING:
|
||||||
warn("Your ability to fly is about to expire!"); more();
|
msg("Your ability to fly is about to expire!"); more();
|
||||||
break;
|
break;
|
||||||
default: // no message
|
default: // no message
|
||||||
break;
|
break;
|
||||||
|
|
1
flag.h
1
flag.h
|
@ -17,6 +17,7 @@ void checkflagpile(flagpile_t *fp);
|
||||||
int copyflag(flagpile_t *dst, flagpile_t *src, enum FLAG id);
|
int copyflag(flagpile_t *dst, flagpile_t *src, enum FLAG id);
|
||||||
void copyflags(flagpile_t *dst, flagpile_t *src, int lifetime);
|
void copyflags(flagpile_t *dst, flagpile_t *src, int lifetime);
|
||||||
int countflags(flagpile_t *fp);
|
int countflags(flagpile_t *fp);
|
||||||
|
int flagcausesinterrupt(flag_t *f, enum GAINORLOSS gol);
|
||||||
int flagcausesloscalc(enum FLAG fid);
|
int flagcausesloscalc(enum FLAG fid);
|
||||||
int flagcausesredraw(lifeform_t *lf, enum FLAG fid);
|
int flagcausesredraw(lifeform_t *lf, enum FLAG fid);
|
||||||
int flagcausesstatredraw(lifeform_t *lf, enum FLAG fid);
|
int flagcausesstatredraw(lifeform_t *lf, enum FLAG fid);
|
||||||
|
|
10
io.c
10
io.c
|
@ -2221,7 +2221,7 @@ int announceflagloss(lifeform_t *lf, flag_t *f) {
|
||||||
msg("%s no longer looks quite so friendly!", lfname);
|
msg("%s no longer looks quite so friendly!", lfname);
|
||||||
break;
|
break;
|
||||||
case F_POISONED:
|
case F_POISONED:
|
||||||
msg("%s %s less sick now.", lfname, isplayer(lf) ? "feel" : "looks");
|
msg("^%c%s %s less sick now.^n", getlfcol(lf, CC_VGOOD), lfname, isplayer(lf) ? "feel" : "looks");
|
||||||
donesomething = B_TRUE;
|
donesomething = B_TRUE;
|
||||||
break;
|
break;
|
||||||
case F_HEAVENARM:
|
case F_HEAVENARM:
|
||||||
|
@ -3756,7 +3756,7 @@ void describerace(enum RACE rid) {
|
||||||
// title
|
// title
|
||||||
if (gamemode == GM_GAMESTARTED) {
|
if (gamemode == GM_GAMESTARTED) {
|
||||||
enum SKILLLEVEL slev;
|
enum SKILLLEVEL slev;
|
||||||
slev = getlorelevel(player, rid);
|
slev = getlorelevel(player, r->raceclass->id);
|
||||||
snprintf(buf, BUFLEN, "Race::%s (%s level lore)",r->name, getskilllevelname(slev));
|
snprintf(buf, BUFLEN, "Race::%s (%s level lore)",r->name, getskilllevelname(slev));
|
||||||
} else {
|
} else {
|
||||||
snprintf(buf, BUFLEN, "Race::%s",r->name);
|
snprintf(buf, BUFLEN, "Race::%s",r->name);
|
||||||
|
@ -6786,10 +6786,12 @@ char *makedesc_race(enum RACE rid, char *retbuf, int showextra, int forplayersel
|
||||||
flagpile_t *doneflags;
|
flagpile_t *doneflags;
|
||||||
enum SKILLLEVEL lorelev;
|
enum SKILLLEVEL lorelev;
|
||||||
|
|
||||||
|
r = findrace(rid);
|
||||||
|
|
||||||
if (forplayersel) {
|
if (forplayersel) {
|
||||||
lorelev = PR_MASTER;
|
lorelev = PR_MASTER;
|
||||||
} else {
|
} else {
|
||||||
lorelev = getlorelevel(player, rid);
|
lorelev = getlorelevel(player, r->raceclass->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Your Lore skill for this race will determine how much information is shown.
|
// Your Lore skill for this race will determine how much information is shown.
|
||||||
|
@ -6808,8 +6810,6 @@ char *makedesc_race(enum RACE rid, char *retbuf, int showextra, int forplayersel
|
||||||
|
|
||||||
strcpy(retbuf, "");
|
strcpy(retbuf, "");
|
||||||
|
|
||||||
r = findrace(rid);
|
|
||||||
|
|
||||||
if (showextra) {
|
if (showextra) {
|
||||||
int a,n;
|
int a,n;
|
||||||
int curidx,donesomething;
|
int curidx,donesomething;
|
||||||
|
|
49
lf.c
49
lf.c
|
@ -14931,8 +14931,9 @@ int pickup(lifeform_t *lf, object_t *what, int howmany, int fromground, int want
|
||||||
getprayedgods(retgod, &nretgods);
|
getprayedgods(retgod, &nretgods);
|
||||||
for (i = 0 ; i < nretgods; i++) {
|
for (i = 0 ; i < nretgods; i++) {
|
||||||
if (lfhasflagval(retgod[i], F_GODPOISON, B_FALSE, NA, NA, NULL)) {
|
if (lfhasflagval(retgod[i], F_GODPOISON, B_FALSE, NA, NA, NULL)) {
|
||||||
// warn...
|
char warnbuf[BUFLEN];
|
||||||
godsay(retgod[i]->race->id, B_TRUE, "I hope you're not planning on using that...");
|
sprintf(warnbuf, "I hope you're not planning on using %s...", (o->amt == 1) ? "that" : "those");
|
||||||
|
godsay(retgod[i]->race->id, B_TRUE, warnbuf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18039,12 +18040,14 @@ void startlfturn(lifeform_t *lf) {
|
||||||
killflag(f);
|
killflag(f);
|
||||||
} else {
|
} else {
|
||||||
flag_t *asleep;
|
flag_t *asleep;
|
||||||
|
int ko;
|
||||||
// being asleep helps.
|
// being asleep helps.
|
||||||
asleep = hasflag(lf->flags, F_ASLEEP);
|
asleep = hasflag(lf->flags, F_ASLEEP);
|
||||||
|
ko = isunconscious(lf);
|
||||||
// chance of losing hp
|
// chance of losing hp
|
||||||
if (pctchance(pt->dampct)) {
|
if (!ko && pctchance(pt->dampct)) {
|
||||||
char buf[BUFLEN];
|
char buf[BUFLEN];
|
||||||
if (!asleep && (isplayer(lf) || cansee(player, lf))) {
|
if (isplayer(lf) || cansee(player, lf)) {
|
||||||
char *p;
|
char *p;
|
||||||
char lfname[BUFLEN],lfnameposs[BUFLEN];
|
char lfname[BUFLEN],lfnameposs[BUFLEN];
|
||||||
getlfname(lf, lfname);
|
getlfname(lf, lfname);
|
||||||
|
@ -18053,33 +18056,49 @@ void startlfturn(lifeform_t *lf) {
|
||||||
p = strdup(pt->damverb);
|
p = strdup(pt->damverb);
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
p = strrep(p, "YOUR", "Your", NULL);
|
p = strrep(p, "YOUR", "Your", NULL);
|
||||||
p = strrep(p, "YOU", "You", NULL);
|
if (asleep) {
|
||||||
|
p = strrep(p, "YOU", "You wake up and", NULL);
|
||||||
|
} else {
|
||||||
|
p = strrep(p, "YOU", "You", NULL);
|
||||||
|
}
|
||||||
p = strrep(p, "#S", "", NULL);
|
p = strrep(p, "#S", "", NULL);
|
||||||
} else {
|
} else {
|
||||||
p = strrep(p, "YOUR", lfnameposs, NULL);
|
p = strrep(p, "YOUR", lfnameposs, NULL);
|
||||||
p = strrep(p, "YOU", lfname, NULL);
|
if (asleep) {
|
||||||
|
char replacetext[BUFLEN];
|
||||||
|
sprintf(replacetext, "%s wakes and", lfname);
|
||||||
|
p = strrep(p, "YOU", replacetext, NULL);
|
||||||
|
} else {
|
||||||
|
p = strrep(p, "YOU", lfname, NULL);
|
||||||
|
}
|
||||||
p = strrep(p, "#S", "s", NULL);
|
p = strrep(p, "#S", "s", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
msg("%s", p);
|
msg("%s", p);
|
||||||
free(p);
|
free(p);
|
||||||
|
|
||||||
taketime(lf, getactspeed(lf));
|
if (asleep) {
|
||||||
|
int origborn;
|
||||||
|
origborn = lf->born;
|
||||||
|
lf->born = B_FALSE; // supress a second announcement of waking up
|
||||||
|
killflagsofid(lf->flags, F_ASLEEP);
|
||||||
|
lf->born = origborn;
|
||||||
|
} else {
|
||||||
|
taketime(lf, getactspeed(lf));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, BUFLEN, "%s^from %s",pt->name, f->text);
|
snprintf(buf, BUFLEN, "%s^from %s",pt->name, f->text);
|
||||||
losehp(lf, pt->dam * f->val[1], DT_DIRECT, NULL, buf);
|
losehp(lf, pt->dam * f->val[1], DT_DIRECT, NULL, buf);
|
||||||
|
|
||||||
if (!asleep) {
|
if (pt->vomitob != OT_NONE) {
|
||||||
if (pt->vomitob != OT_NONE) {
|
addobfast(lf->cell->obpile, pt->vomitob);
|
||||||
addobfast(lf->cell->obpile, pt->vomitob);
|
|
||||||
}
|
|
||||||
loseconcentration(lf);
|
|
||||||
}
|
}
|
||||||
|
loseconcentration(lf);
|
||||||
}
|
}
|
||||||
|
|
||||||
// extra effects
|
// extra effects
|
||||||
if (f->val[0] == P_COLD) {
|
if (!ko && (f->val[0] == P_COLD)) {
|
||||||
if (rnd(1,100) <= 10) {
|
if (rnd(1,100) <= 10) {
|
||||||
object_t *wep;
|
object_t *wep;
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
|
@ -18095,11 +18114,11 @@ void startlfturn(lifeform_t *lf) {
|
||||||
getobname(wep, wname, 1);
|
getobname(wep, wname, 1);
|
||||||
drop(wep, wep->amt);
|
drop(wep, wep->amt);
|
||||||
}
|
}
|
||||||
|
|
||||||
loseconcentration(lf);
|
loseconcentration(lf);
|
||||||
}
|
}
|
||||||
} else if (f->val[0] == P_MIGRAINE) {
|
} else if (f->val[0] == P_MIGRAINE) {
|
||||||
if (!asleep) {
|
// sleeping will avoid all migraine effects
|
||||||
|
if (!asleep && !ko) {
|
||||||
int amt;
|
int amt;
|
||||||
amt = lfproduceslight(lf);
|
amt = lfproduceslight(lf);
|
||||||
if (amt) {
|
if (amt) {
|
||||||
|
|
2
spell.c
2
spell.c
|
@ -12475,7 +12475,7 @@ int spellresisted(lifeform_t *target, lifeform_t *caster, int spellid, int power
|
||||||
if ((spellid == OT_S_SLEEP) && lfhasflag(target, F_RAGE)) {
|
if ((spellid == OT_S_SLEEP) && lfhasflag(target, F_RAGE)) {
|
||||||
bonus += 10;
|
bonus += 10;
|
||||||
}
|
}
|
||||||
if (hassubjob(caster, SJ_SCOURGE) && (spellid == OT_S_NULLIFY)) {
|
if (caster && hassubjob(caster, SJ_SCOURGE) && (spellid == OT_S_NULLIFY)) {
|
||||||
// cancel out the difficulty from NULLIFY being a level 4 spell
|
// cancel out the difficulty from NULLIFY being a level 4 spell
|
||||||
bonus += 8;
|
bonus += 8;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue