mirror of
https://codeberg.org/noisytoot/notnotdnethack.git
synced 2025-07-31 09:52:25 +01:00
Get monsters and items falling off of the spire and fell spawning in. Also get fell an invent and special names for spire levels.
This commit is contained in:
parent
9b54151dd2
commit
e6a5413f33
8 changed files with 48 additions and 2 deletions
|
@ -47,7 +47,7 @@ MONSTER:'@',"peasant",random,peaceful
|
|||
MONSTER:'@',"peasant",random,peaceful
|
||||
MONSTER:'@',"peasant",random,peaceful
|
||||
MONSTER:'@',"Lady of Pain",random,peaceful
|
||||
#MONSTER:'@',"Fell",random,peaceful
|
||||
MONSTER:'"',"Fell",random,peaceful
|
||||
REGION:(49,18,53,19),lit,"book shop"
|
||||
|
||||
MAZE: "stairs2",' '
|
||||
|
|
|
@ -2846,6 +2846,7 @@ E struct monst *FDECL(activate_statue_trap,
|
|||
(struct trap *,XCHAR_P,XCHAR_P,BOOLEAN_P));
|
||||
E void FDECL(dotrap, (struct trap *, unsigned));
|
||||
E void FDECL(seetrap, (struct trap *));
|
||||
E boolean FDECL(spire_fall_mon, (struct monst *));
|
||||
E int FDECL(mintrap, (struct monst *));
|
||||
E void FDECL(reward_untrap, (struct trap *, struct monst *));
|
||||
E void FDECL(rloc_trap, (struct trap *));
|
||||
|
|
|
@ -2259,6 +2259,22 @@ karemade:
|
|||
dodestruction();
|
||||
if(Mindblasting)
|
||||
domindblast_strong();
|
||||
/* Sigil item gravity */
|
||||
if(Is_sigil(&u.uz)){
|
||||
struct obj *obj, *nobj;
|
||||
for (obj = fobj; obj; obj = obj->nobj) {
|
||||
if(levl[obj->ox][obj->oy].typ == AIR){
|
||||
if(obj->otyp == AMULET_OF_YENDOR) continue;
|
||||
if(cansee(obj->ox,obj->oy)) pline("%s falls from the spire.",The(xname(obj)));
|
||||
obj_extract_self(obj);
|
||||
add_to_migration(obj);
|
||||
newsym(obj->ox,obj->oy);
|
||||
obj->ox = spire_level.dnum;
|
||||
obj->oy = spire_level.dlevel;
|
||||
obj->owornmask = (long)MIGR_RANDOM;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Clouds on Lolth's level deal damage */
|
||||
if(Is_lolth_level(&u.uz) && levl[u.ux][u.uy].typ == CLOUD){
|
||||
if (!(nonliving(youracedata) || Breathless)){
|
||||
|
|
|
@ -466,6 +466,10 @@ char *buf;
|
|||
else if (In_neu(&u.uz)){
|
||||
if(In_depths(&u.uz)) Sprintf(buf, "Depths %d ", dunlev(&u.uz)+dungeons[neutral_dnum].num_dunlevs-1);
|
||||
else Sprintf(buf, "Outlands %d ", dunlev(&u.uz));
|
||||
} else if(In_spire(&u.uz)){
|
||||
if(Is_sigil(&u.uz)) Sprintf(buf, "Sigil ");
|
||||
else Sprintf(buf, "Endless Spire ");
|
||||
|
||||
} else if (In_cha(&u.uz)){
|
||||
if(In_FF_quest(&u.uz)){
|
||||
if(dungeons[chaos_dnum].entry_lev == u.uz.dlevel) Sprintf(buf, "Ruined Temple ");
|
||||
|
|
|
@ -3136,6 +3136,16 @@ int faction;
|
|||
fix_object(otmp);
|
||||
(void) mpickobj(mtmp, otmp);
|
||||
}
|
||||
if(ptr->mtyp == PM_FELL){
|
||||
(void) mongets(mtmp, WAR_HAMMER, mkobjflags);
|
||||
(void) mongets(mtmp, CHAIN_MAIL, mkobjflags);
|
||||
(void) mongets(mtmp, HELMET, mkobjflags);
|
||||
(void) mongets(mtmp, GLOVES, mkobjflags);
|
||||
(void) mongets(mtmp, HIGH_BOOTS, mkobjflags);
|
||||
(void) mongets(mtmp, CLOAK, mkobjflags);
|
||||
(void) mongets(mtmp, SCRAP, mkobjflags);
|
||||
(void) mongets(mtmp, POTION_VAPORIZER, mkobjflags);
|
||||
}
|
||||
break;}
|
||||
case S_LAW_ANGEL:
|
||||
case S_NEU_ANGEL:
|
||||
|
|
|
@ -1628,6 +1628,7 @@ mcalcdistress()
|
|||
if (mtmp->data->mmove == 0) {
|
||||
if (vision_full_recalc) vision_recalc(0);
|
||||
if (minliquid(mtmp)) continue;
|
||||
if (spire_fall_mon(mtmp)) continue;
|
||||
}
|
||||
|
||||
if(mtmp->mtyp == PM_HEZROU && !(mtmp->mtrapped && t_at(mtmp->mx, mtmp->my) && t_at(mtmp->mx, mtmp->my)->ttyp == VIVI_TRAP)){
|
||||
|
@ -1947,6 +1948,7 @@ movemon()
|
|||
}
|
||||
|
||||
if (minliquid(mtmp)) continue;
|
||||
if (spire_fall_mon(mtmp)) continue;
|
||||
|
||||
/* continue if the monster died fighting */
|
||||
if (!mtmp->iswiz && !is_blind(mtmp)) {
|
||||
|
|
|
@ -5446,7 +5446,7 @@ struct permonst _mons2[] = {
|
|||
A(ATTK(AT_WEAP, AD_PHYS, 2, 8)),
|
||||
SIZ(WT_HUMAN, 0, MS_TATTOO, MZ_HUMAN), 0, 0,
|
||||
MM_BREATHLESS /*MM*/, MT_PEACEFUL|MT_COLLECT|MT_MAGIC /*MT*/, MF_MARTIAL_B /*MF*/,
|
||||
MB_STRONG|MB_HUMANOID /*MB*/, MG_NOWISH|MG_NOPOLY|MG_HATESHOLY|MG_HATESUNHOLY|MG_PNAME /*MG*/,
|
||||
MB_STRONG|MB_HUMANOID|MB_MALE /*MB*/, MG_NOWISH|MG_NOPOLY|MG_HATESHOLY|MG_HATESUNHOLY|MG_PNAME /*MG*/,
|
||||
MA_MINION|MA_PRIMORDIAL /*MA*/, MV_EXTRAMISSION /*MV*/, CLR_WHITE),
|
||||
MON("Adamach", S_NEU_OUTSIDER,// /* Needs encyc entry */
|
||||
LVL(100, 15, 125, 0), (G_UNIQ|G_NOCORPSE|G_NOGEN),
|
||||
|
|
13
src/trap.c
13
src/trap.c
|
@ -2040,6 +2040,19 @@ schar dx,dy;
|
|||
#endif /* OVL3 */
|
||||
#ifdef OVL1
|
||||
|
||||
boolean
|
||||
spire_fall_mon(mtmp)
|
||||
register struct monst *mtmp;
|
||||
{
|
||||
if(Is_sigil(&u.uz) && levl[mtmp->mx][mtmp->my].typ == AIR && (!mon_resistance(mtmp, FLYING) && !mon_resistance(mtmp, LEVITATION))){
|
||||
if(canseemon(mtmp)) pline("%s falls from the spire!",Monnam(mtmp));
|
||||
migrate_to_level(mtmp, ledger_no(&spire_level),
|
||||
MIGR_RANDOM, (coord *)0);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int
|
||||
mintrap(mtmp)
|
||||
struct monst *mtmp;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue