- [+] glorana should accept scarifice of undead corpses.
- [+] babayagahut stay in vault not working. am i allowing it to pursue out ? - [+] babayagahut shoud ahve nobleed - [+] scourge shouldn't get heavy blow etc - [+] problem - scourge was able to learn allomancy. - [+] rats should squeak - [+] bug: anticipate spell lasting forever. - [+] time announcements if you have a watch - [+] night is falling - [+] undead will be stronger - [+] sun is rising outside - [+] undead weaker
This commit is contained in:
parent
042ade4ca6
commit
2603d35bc7
16
attack.c
16
attack.c
|
@ -1355,7 +1355,7 @@ int attacklf(lifeform_t *lf, lifeform_t *victim, object_t *wep, flag_t *damflag)
|
|||
killflag(magicarm);
|
||||
} else {
|
||||
if (cansee(player, victim)) {
|
||||
msg("^%c%s%s %s pulses!^n",
|
||||
msg("^%d%s%s %s pulses!^n",
|
||||
CC_GOOD,
|
||||
victimname, getpossessive(victimname),
|
||||
magicarm->text);
|
||||
|
@ -1522,10 +1522,8 @@ int attacklf(lifeform_t *lf, lifeform_t *victim, object_t *wep, flag_t *damflag)
|
|||
buf, getpossessive(buf));
|
||||
}
|
||||
} else {
|
||||
int anticipated = B_FALSE;
|
||||
if (lfhasflagval(victim, F_ANTICIPATE, lf->id, NA, NA, NULL)) {
|
||||
anticipated = B_TRUE;
|
||||
}
|
||||
flag_t *anticipated = NULL;
|
||||
anticipated = lfhasflagval(victim, F_ANTICIPATE, lf->id, NA, NA, NULL);
|
||||
if (isplayer(lf)) {
|
||||
msg("You %smiss %s.", anticipated ? "wildly " : "", victimname);
|
||||
} else {
|
||||
|
@ -1562,6 +1560,14 @@ int attacklf(lifeform_t *lf, lifeform_t *victim, object_t *wep, flag_t *damflag)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// anticipated spells lose power
|
||||
if (anticipated) {
|
||||
if (--anticipated->val[1] <= 0) {
|
||||
killflag(anticipated);
|
||||
anticipated = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
16
data.c
16
data.c
|
@ -5346,12 +5346,14 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_TECHLEVEL, PR_NOVICE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_HOLDCONFER, F_KNOWSTIME, B_FALSE, IFKNOWN, NULL);
|
||||
addot(OT_DIGITALWATCH, "digital watch", "An electronic timekeeping device which shows the time as a number.", MT_METAL, 0.1, OC_TECH, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 85, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 50, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_TECHLEVEL, PR_NOVICE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_HOLDCONFER, F_KNOWSTIME, B_TRUE, IFKNOWN, NULL);
|
||||
addot(OT_INSECTICIDE, "can of insecticide", "A spraycan containing poisonous chemicals.", MT_METAL, 0.5, OC_TECH, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_SWAMP, 85, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 85, RR_UNCOMMON, NULL);
|
||||
|
@ -8868,6 +8870,7 @@ void initrace(void) {
|
|||
addbodypart(lastrace, BP_FEET, "feet");
|
||||
addflag(lastrace->flags, F_NAME, NA, NA, NA, "Baba Yaga's hut");
|
||||
addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "wooden hut");
|
||||
addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, NA, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUGE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, 5, NA, NA, NULL);
|
||||
|
@ -8885,7 +8888,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_STARTATT, A_WIS, AT_EXLOW, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_CHA, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STAYINROOM, NA, B_MAYCHASE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STAYINROOM, NA, B_NOCHASE, NA, NULL);
|
||||
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_A_JUMP, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 2, NA, "^clucking");
|
||||
|
@ -9967,6 +9970,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "attacking peaceful creatures");
|
||||
addflag(lastrace->flags, F_HATESRACECLASS, RC_UNDEAD, NA, NA, NULL);
|
||||
// sacrifices
|
||||
addflag(lastrace->flags, F_SACRIFICEOB, OT_CORPSE, RC_UNDEAD, 30, "OB IS consumed by a shaft of holy light.");
|
||||
addflag(lastrace->flags, F_SACRIFICEOB, OT_POT_HEALINGMIN, NA, 10, "OB IS consumed by a shaft of holy light.");
|
||||
addflag(lastrace->flags, F_SACRIFICEOB, OT_POT_HEALING, NA, 20, "OB IS consumed by a shaft of holy light.");
|
||||
addflag(lastrace->flags, F_SACRIFICEOB, OT_POT_HEALINGMAJ, NA, 30, "OB IS consumed by a shaft of holy light.");
|
||||
|
@ -13687,7 +13691,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 2, NA, NULL);
|
||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 2, NA, NULL);
|
||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 6, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "roars^a roar");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "growls^growling");
|
||||
addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 6, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_A_JUMP, NA, NA, "stamcost:0;");
|
||||
|
@ -13770,7 +13774,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_CANWILL, OT_A_JUMP, NA, NA, "stamcost:0;");
|
||||
addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CASTCHANCE, 50, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "roars^a roar");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "growls^growling");
|
||||
addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 6, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
||||
|
@ -14752,6 +14756,8 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_WALKVERB, NA, NA, NA, "scuttle");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^squeaking");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 1, NA, "squeaks^squeaking");
|
||||
|
||||
addrace(R_RATDIRE, "dire rat", 3, 'r', C_MAGENTA, MT_FLESH, RC_ANIMAL, "Dire rats are massive rats, larger than most dogs. Unlike dogs, dire rats are equipped with razor sharp shark-like teeth and their bite is very much worse than their bark.");
|
||||
setbodytype(lastrace, BT_QUADRAPED);
|
||||
|
@ -14783,6 +14789,8 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 4, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_WALKVERB, NA, NA, NA, "scuttle");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^squeaking");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 1, NA, "squeaks^squeaking");
|
||||
|
||||
addrace(R_RATPLAGUE, "plague rat", 3, 'r', C_GREEN, MT_FLESH, RC_ANIMAL, "Plague rats are named both for their infectious bite as well as the great speed at which they run.");
|
||||
setbodytype(lastrace, BT_QUADRAPED);
|
||||
|
@ -14815,6 +14823,8 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_WALKVERB, NA, NA, NA, "scuttle");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^squeaking");
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 1, NA, "squeaks^squeaking");
|
||||
addflag(lastrace->flags, F_POISONCORPSE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_FILLPOT, OT_POT_POISON, NA, NA, NULL);
|
||||
|
||||
|
|
BIN
data/hiscores.db
BIN
data/hiscores.db
Binary file not shown.
|
@ -32,5 +32,6 @@ mayrotate
|
|||
tag:forestboss
|
||||
maintainedge
|
||||
nostairs
|
||||
monstersstay
|
||||
@end
|
||||
|
||||
|
|
3
defs.h
3
defs.h
|
@ -3582,6 +3582,9 @@ enum FLAG {
|
|||
F_INVISIBLE, // lifeform is invisible
|
||||
F_INVULNERABLE,// immune to most damage
|
||||
// this can apply to objects too!
|
||||
F_KNOWSTIME, // this lf knows what time it is.
|
||||
// v0 = false means you know 12 hour time
|
||||
// v1 = true means you know 24 hour time
|
||||
F_GRAVBOOSTED,// cannot walk or throw stuff
|
||||
F_GRAVLESSENED,// knockback maeks you go further, can jump further
|
||||
// your current load is reduce by v0 * 15kg.
|
||||
|
|
2
god.c
2
god.c
|
@ -2069,7 +2069,7 @@ int prayto(lifeform_t *lf, lifeform_t *god) {
|
|||
if (isinbattle(lf, B_INCLUDEDISTANT, B_FALSE)) {
|
||||
if (plev >= PL_INDIFFERENT) {
|
||||
int pow;
|
||||
pow = plev + 2;
|
||||
pow = plev + 1;
|
||||
limit(&pow, 1, getspellmaxpower(OT_S_HEAVENARM));
|
||||
dospelleffects(NULL, OT_S_HEAVENARM, pow, player, NULL, player->cell, B_UNCURSED, NULL, B_FALSE, NULL);
|
||||
donesomething = B_TRUE;
|
||||
|
|
9
io.c
9
io.c
|
@ -1321,7 +1321,7 @@ int announceflaggain(lifeform_t *lf, flag_t *f) {
|
|||
lf2 = findlf(NULL, f->val[0]);
|
||||
if (lf2) {
|
||||
getlfname(lf2, buf);
|
||||
msg("%s%s intentions enter your mind!", buf, getpossessive(buf));
|
||||
msg("^%d%s%s intentions enter your mind!", getlfcol(lf, CC_GOOD), buf, getpossessive(buf));
|
||||
donesomething = B_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -2102,7 +2102,7 @@ int announceflagloss(lifeform_t *lf, flag_t *f) {
|
|||
lf2 = findlf(NULL, f->val[0]);
|
||||
if (lf2) {
|
||||
getlfname(lf2, buf);
|
||||
msg("You no longer know %s%s intentions.", buf, getpossessive(buf));
|
||||
msg("^%dYou no longer know %s%s intentions.", getlfcol(lf, CC_BAD), buf, getpossessive(buf));
|
||||
donesomething = B_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -2390,7 +2390,10 @@ int announceflagloss(lifeform_t *lf, flag_t *f) {
|
|||
msg("^%dYour %s vanishes!", getlfcol(lf, CC_BAD), f->text);
|
||||
donesomething = B_TRUE;
|
||||
} else {
|
||||
msg("^%d%s%s %s vanishes!", getlfcol(lf, CC_BAD), lfname, getpossessive(lfname), f->text);
|
||||
char text[BUFLEN];
|
||||
sprintf(text,"%s%s %s vanishes!", lfname, getpossessive(lfname), f->text);
|
||||
capitalise(text);
|
||||
msg("^%d%s", getlfcol(lf, CC_BAD), text);
|
||||
donesomething = B_TRUE;
|
||||
}
|
||||
break;
|
||||
|
|
31
lf.c
31
lf.c
|
@ -10786,8 +10786,11 @@ void givesubjob(lifeform_t *lf, enum SUBJOB sj) {
|
|||
}
|
||||
break;
|
||||
case SJ_SCOURGE:
|
||||
// remove warrior's level abilities
|
||||
killflagsofid(lf->flags, F_LEVABIL);
|
||||
// magic resistance at level 5
|
||||
addtempflag(lf->flags, F_RESISTMAG, 5, NA, NA, NULL, FROMJOB);
|
||||
// no mp other other magic.
|
||||
// no mp or other magic.
|
||||
killflagsofid(lf->flags, F_MPDICE);
|
||||
killflagsofid(lf->flags, F_CANCAST);
|
||||
f = lfhasflagval(lf, F_HASSKILL, SK_SS_ALLOMANCY, NA, NA, NULL);
|
||||
|
@ -10804,19 +10807,19 @@ void givesubjob(lifeform_t *lf, enum SUBJOB sj) {
|
|||
addtempflag(lf->flags, F_LEVABIL, 16, OT_S_NULLIFY, NA, "pw:8;", FROMJOB);
|
||||
addtempflag(lf->flags, F_LEVABIL, 18, OT_S_NULLIFY, NA, "pw:9;", FROMJOB);
|
||||
addtempflag(lf->flags, F_LEVABIL, 20, OT_S_NULLIFY, NA, "pw:10;", FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_ALLOMANCY, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_MENTAL, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_NATURE, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_AIR, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_DEATH, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_DIVINATION, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_FIRE, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_COLD, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_LIFE, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_MODIFICATION, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_SUMMONING, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_TRANSLOCATION, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lastrace->flags, F_NOSKILL, SK_SS_WILD, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_ALLOMANCY, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_MENTAL, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_NATURE, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_AIR, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_DEATH, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_DIVINATION, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_FIRE, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_COLD, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_LIFE, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_MODIFICATION, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_SUMMONING, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_TRANSLOCATION, NA, NA, NULL,FROMJOB);
|
||||
addtempflag(lf->flags, F_NOSKILL, SK_SS_WILD, NA, NA, NULL,FROMJOB);
|
||||
|
||||
break;
|
||||
//
|
||||
|
|
2
map.c
2
map.c
|
@ -7676,7 +7676,7 @@ int isnewcellok(cell_t *cell, char *err) {
|
|||
int isnighttime(void) {
|
||||
int hours,mins,secs;
|
||||
splittime(&hours,&mins,&secs);
|
||||
if ((hours < 7) || (hours >= 19)) {
|
||||
if ((hours < 6) || (hours >= 20)) {
|
||||
return B_TRUE;
|
||||
}
|
||||
return B_FALSE;
|
||||
|
|
46
nexus.c
46
nexus.c
|
@ -1891,18 +1891,46 @@ void timeeffectsworld(map_t *map, int updategametime) {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// if it's the player's turn, announce sun set/rise
|
||||
if (isplayer(map->lf) && isoutdoors(map)) {
|
||||
int h,m,s;
|
||||
splittime(&h, &m, &s);
|
||||
if (h == 6) {
|
||||
msg("The sun is rising.");
|
||||
} else if (h == 18) {
|
||||
msg("The sun is setting.");
|
||||
if (isplayer(map->lf)) {
|
||||
flag_t *f;
|
||||
f = lfhasflag(map->lf, F_KNOWSTIME);
|
||||
if (f) {
|
||||
int h,m,s;
|
||||
splittime(&h, &m, &s);
|
||||
if (m <= 10) {
|
||||
if (f->val[1] == B_TRUE) {
|
||||
if (h == 6) {
|
||||
msg("The sun is rising.");
|
||||
} else if (h == 8) {
|
||||
msg("It is now daytime.");
|
||||
if (getskill(player, SK_LORE_UNDEAD) >= PR_ADEPT) {
|
||||
real_warnabout("The undead will be less dangerous now.", 200, B_FALSE);
|
||||
}
|
||||
} else if (h == 12) {
|
||||
msg("It is now Noon.");
|
||||
} else if (h == 18) {
|
||||
msg("The sun is setting.");
|
||||
} else if (h == 20) {
|
||||
msg("It is now nighttime.");
|
||||
if (getskill(player, SK_LORE_UNDEAD) >= PR_ADEPT) {
|
||||
real_warnabout("The undead will be more dangerous!", 200, B_FALSE);
|
||||
}
|
||||
} else if (h == 0) {
|
||||
msg("It is now Midnight.");
|
||||
}
|
||||
} else {
|
||||
if ((h == 0) || (h == 12)) {
|
||||
msg("It is now 12 o'clock.");
|
||||
} else if ((h == 6) || (h == 18)) {
|
||||
msg("It is now 6 o'clock.");
|
||||
} else if ((h == 8) || (h == 20)) {
|
||||
msg("It is now 8 o'clock.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if (db) dblog("cur time is %ld\n",curtime);
|
||||
}
|
||||
|
|
4
vault.c
4
vault.c
|
@ -411,7 +411,9 @@ int addvaultthing(cell_t *c, vault_t *v, enum VAULTTHING vt, char *what) {
|
|||
}
|
||||
*/
|
||||
if (lf && hasflag(v->flags, F_MONSTERSSTAY)) {
|
||||
addflag(lf->flags, F_STAYINROOM, getroomid(c), B_MAYCHASE, NA, NULL);
|
||||
if (!lfhasflag(lf, F_STAYINROOM)) {
|
||||
addflag(lf->flags, F_STAYINROOM, getroomid(c), B_MAYCHASE, NA, NULL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case VT_CELL:
|
||||
|
|
Loading…
Reference in New Issue