1
0
Fork 0
mirror of https://codeberg.org/noisytoot/notnotdnethack.git synced 2025-07-28 08:22:24 +01:00
This commit is contained in:
demogorgon22 2022-08-18 20:50:11 -04:00
commit 0e6a75fbcb
17 changed files with 188 additions and 42 deletions

View file

@ -505,6 +505,7 @@ struct obj {
otmp->oartifact == ART_HOLY_MOONLIGHT_SWORD || \
otmp->oartifact == ART_BLOODLETTER || \
otmp->oartifact == ART_LASH_OF_THE_COLD_WASTE || \
(otmp->oartifact == ART_PEN_OF_THE_VOID && otmp->ovar1&SEAL_OSE) ||\
otmp->obj_material == MERCURIAL || \
is_mercy_blade(otmp) || \
otmp->otyp == ISAMUSEI ||\

View file

@ -1837,7 +1837,7 @@ moveloop()
mtmp->mpeaceful = TRUE;
}
//Remove after testing (can cause "re-trapping" of untrapped monsters)
if(!mtmp->mtrapped && t_at(mtmp->mx, mtmp->my) && t_at(mtmp->mx, mtmp->my)->ttyp == VIVI_TRAP && !DEADMONSTER(mtmp)){
if(!mtmp->mtrapped && t_at(mtmp->mx, mtmp->my) && t_at(mtmp->mx, mtmp->my)->ttyp == VIVI_TRAP && !DEADMONSTER(mtmp) && mtmp != u.usteed && !(u.uswallow && mtmp == u.ustuck)){
impossible("Re-trapping mon %s in vivi trap",noit_mon_nam(mtmp));
mtmp->mtrapped = TRUE;
}
@ -3460,7 +3460,12 @@ do_inheritor_menu()
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int inherited = selected[0].item.a_int;
free(selected);
return inherited;
}
return 0;
}
/* show "welcome [back] to nethack" message at program startup */

View file

@ -3359,7 +3359,12 @@ sensorMenu()
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return ( n > 0 ) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
STATIC_OVL int
@ -4530,7 +4535,12 @@ struct obj *pole;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return ( n > 0 ) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
static const char
@ -5642,7 +5652,12 @@ do_candle_menu()
n = select_menu(tmpwin, how, &selected);
} while (n <= 0);
destroy_nhwindow(tmpwin);
return selected[0].item.a_int;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
int
@ -5677,7 +5692,12 @@ do_demon_lord_summon_menu()
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
boolean
@ -6683,6 +6703,7 @@ struct obj *obj;
obj->altmode = ENG_MODE_ENR;
break;
}
free(selected);
return TRUE;
}
@ -6846,15 +6867,19 @@ boolean describe;
destroy_nhwindow(tmpwin);
if (n > 0 && selected[0].item.a_int == -1){
free(selected);
return pick_rune(!describe);
}
if (n > 0 && describe){
describe_rune(selected[0].item.a_int);
free(selected);
return pick_rune(describe);
}
if (n > 0 && !describe){
return selected[0].item.a_int;
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
@ -6953,7 +6978,12 @@ pick_carvee()
if(count) n = select_menu(tmpwin, how, &selected);
else You("don't have any carvable items.");
destroy_nhwindow(tmpwin);
return ( n > 0 ) ? selected[0].item.a_char : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
STATIC_OVL boolean
@ -7049,7 +7079,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return ( n > 0 ) ? &mons[selected[0].item.a_int] : (struct permonst *) 0;
if(n > 0){
struct permonst * picked = &mons[selected[0].item.a_int];
free(selected);
return picked;
}
return (struct permonst *) 0;
}
STATIC_OVL int
@ -7316,7 +7351,12 @@ upgradeMenu()
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return ( n > 0 ) ? 0x1L<<(selected[0].item.a_int - 1) : 0;
if(n > 0){
long picked = 0x1L<<(selected[0].item.a_int - 1);
free(selected);
return picked;
}
return 0;
}
STATIC_OVL int
@ -8557,7 +8597,12 @@ dotrephination_menu()
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? (int)selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
STATIC_OVL int
@ -8598,7 +8643,12 @@ dotrephination_options()
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? (int)selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
//Returns 0 if this is the first time its called this round, 1 otherwise.

View file

@ -10385,7 +10385,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n < SELECT_STUDY && n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return (n < SELECT_STUDY) ? picked : 0;
}
return 0;
}
int
@ -10458,7 +10463,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
int
@ -10690,7 +10700,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
int
@ -10862,7 +10877,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
int
@ -10912,7 +10932,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
int
@ -10947,7 +10972,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
int
@ -11042,7 +11072,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
int
@ -11192,7 +11227,12 @@ struct obj *obj;
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return (n > 0) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
STATIC_PTR int

View file

@ -697,7 +697,10 @@ boolean you_abilities;
if(n <= 0) return MOVE_CANCELLED;
switch (selected[0].item.a_int) {
int picked = selected[0].item.a_int;
free(selected);
switch (picked) {
/* Player abilities */
case MATTK_U_WORD: return dowords(SPELLMENU_CAST);
case MATTK_U_SPELLS: return docast();
@ -802,7 +805,9 @@ boolean you_abilities;
You("gyre and gimble into the %s.", surface(u.ux,u.uy));
if (typ != ROOM) {
lev->typ = typ;
if (ttmp) (void) delfloortrap(ttmp);
if (ttmp) {
if(delfloortrap(ttmp)) ttmp = (struct trap *)0;
}
/* if any objects were frozen here, they're released now */
unearth_objs(u.ux, u.uy);
@ -1132,9 +1137,11 @@ doMysticForm()
destroy_nhwindow(tmpwin);
if(n <= 0){
free(selected);
return MOVE_CANCELLED;
} else {
toggle_monk_style(selected[0].item.a_int);
free(selected);
return MOVE_INSTANT;
}
@ -1317,9 +1324,11 @@ dofightingform()
destroy_nhwindow(tmpwin);
if(n <= 0 || selectedFightingForm(selected[0].item.a_int)){
if(n>0) free(selected);
return MOVE_CANCELLED;
} else {
setFightingForm(selected[0].item.a_int);
free(selected);
return MOVE_INSTANT;
}
}
@ -1369,6 +1378,7 @@ dounmaintain()
pline("You cease to maintain %s.",
OBJ_NAME(objects[selected[0].item.a_int]));
spell_unmaintain(selected[0].item.a_int);
free(selected);
return MOVE_INSTANT;
}
}
@ -3141,7 +3151,8 @@ register char *cmd;
prefix_seen = TRUE;
} else if (*cmd == '0' && iflags.num_pad) {
(void)ddoinv(); /* a convenience borrowed from the PC */
flags.move |= MOVE_INSTANT;
if(flags.move != MOVE_CANCELLED)
flags.move |= MOVE_INSTANT;
multi = 0;
} else if (*cmd == CMD_TRAVEL && iflags.travelcmd) {
flags.travel = 1;

View file

@ -4843,7 +4843,12 @@ clockwork_eat_menu(dry,mgc)
how = PICK_ONE;
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
return ( n > 0 ) ? selected[0].item.a_int : 0;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
#endif /* OVLB */

View file

@ -185,8 +185,12 @@ static const char *haluMesg[] = {
"If you have time to read this, you should get to the down stairs immediately!", /* Zelda 3 */
"Gary was here! Ash is a loser!", /* Pokemon */
"Oh, I get it. The real treasure was the people I had executed along the way!", /* A Practical Guide To Evil */
"I don't care if it compiles / Or makes your head explode / I want a messy makefile / I want a billion lines of code", /* Scope Creep by Radiohead by qt */
"the cake is a lie", /* Portal */
"Beware the Wheelers", /* Ozma of Oz */
"The words of the prophets are written on the subway walls and tenement halls", /* The Sound of Silence, Simon and Garfunkel */
"I don't care if it compiles / Or makes your head explode / I want a messy makefile / I want a billion lines of code", /* Scope Creep by Radiohead by qt */
"I see you...",
"...do you see me?",
"That was a mistake.",
@ -341,6 +345,9 @@ static const char *haluMesg[] = {
"Sand stays. All else changes.",
"We will remember you when you are sand too.",
"That is a lesson I will never learn, for I do not believe it.", /* Knights of the Old Republic II */
"The one who left his name in the people's souls.",
"The one who lived protecting a small happiness with his name known to no one.",
"Even on journeys of different ways, people live out their days the best they can.", /* Lunar Legend */
"Do not call up any that you can not put down.", /*HP Lovecraft*/
"That is not dead, that can eternal lie,",
"for with strange aeons even death may die.",
@ -760,6 +767,7 @@ const char * haluWard[] = {
"a Sharuan Mindharp", /* Star Wars expanded universe */
"a winged blade of light", /* Jedi Order symbol */
"an inverted scarab beetle", /* Worm */
"a stylized eye formed from the letters V, F, and D", /* A Series of Unfortunate Events */
/* webcomics */
"a Court symbol", "a Forest symbol", "the sign of the Wandering Eye", /* Gunnerkrigg Court */
@ -3399,14 +3407,18 @@ int describe;
if (n > 0 && selected[0].item.a_int == -1){
describe = !describe;
free(selected);
continue;
}
if (n > 0 && describe){
describe_ward(selected[0].item.a_int);
free(selected);
continue;
}
if (n > 0 && !describe){
return selected[0].item.a_int;
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
/* else end menu; no selection made */
break;
@ -3821,8 +3833,11 @@ pick_seal()
n = select_menu(tmpwin, how, &selected);
destroy_nhwindow(tmpwin);
if (n > 0)
return selected[0].item.a_int;
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
/* else end menu, no selection made */
break;
}while (TRUE);

View file

@ -346,7 +346,12 @@ minimal_enlightenment()
end_menu(tmpwin, "Base Attributes");
n = select_menu(tmpwin, PICK_ONE, &selected);
destroy_nhwindow(tmpwin);
return (n>0 ? selected[0].item.a_int : 0);
if(n > 0){
int picked = selected[0].item.a_int;
free(selected);
return picked;
}
return 0;
}
@ -844,6 +849,8 @@ boolean dumping;
if(flags.warntypeg & MG_PRINCE) you_are("aware of the presence of rulers");
if(flags.warntypea & MV_TELEPATHIC) you_are("aware of the presence of telepaths");
if(flags.warntypea & MA_WERE) you_are("aware of the presence of werecreatures");
if(flags.warntypea & MA_G_O_O) you_are("aware of the presence of great old ones");
if(flags.warntypea & MA_XORN) you_are("aware of the presence of xorns");
}
if (Searching) you_have("automatic searching");
if (Clairvoyant) you_are("clairvoyant");

View file

@ -3834,12 +3834,11 @@ boolean goodequip;
}
STATIC_OVL void
elemental_initweap(mtmp, mkobjflags, faction, goodequip, mmflags)
elemental_initweap(mtmp, mkobjflags, faction, goodequip)
register struct monst *mtmp;
int mkobjflags;
int faction;
boolean goodequip;
int mmflags;
{
int mm = mtmp->mtyp;
int chance;

View file

@ -1757,7 +1757,9 @@ register struct monst *mtmp;
pline("%s gyres and gimbles into the %s.", Monnam(mtmp),surface(mtmp->mx,mtmp->my));
if (typ != ROOM) {
lev->typ = typ;
if (ttmp) (void) delfloortrap(ttmp);
if (ttmp) {
if (delfloortrap(ttmp)) ttmp = (struct trap *)0;
}
/* if any objects were frozen here, they're released now */
unearth_objs(mtmp->mx, mtmp->my);

View file

@ -331,8 +331,8 @@ WEAPON(("scimitar", "curved sword"),
DMG(D(8)), DMG(D(8)),
0, 0, MZ_MEDIUM, 14, 40, 15, 0, S, P_SCIMITAR, IRON, FALSE, HI_METAL),
WEAPON(("high-elven warsword", "runed curved sword"), /*Needs encyc entry*/
DMG(D(10)), DMG(D(10)),
0, 0, MZ_MEDIUM, 1, 20,150, 2, S, P_SCIMITAR, MITHRIL, UNIDED, HI_MITHRIL),
DMG(D(10), D(6)), DMG(D(10), D(6)),
0, 0, MZ_HUGE, 1, 75,150, 2, S, P_SCIMITAR, MITHRIL, UNIDED, HI_MITHRIL),
WEAPON(("rapier"), /*Needs encyc entry*/
DMG(D(6)), DMG(D(4)),
1, 0, MZ_MEDIUM, 5, 28, 20, 2, P, P_SABER, METAL, FALSE, HI_METAL),
@ -812,13 +812,13 @@ SUIT(("plasteel armor", "hard white armor", "armor"), /*Needs encyc entry*//*Nee
SUIT(("splint mail"),
1, 0, MZ_HUGE, ARMSZ_HEAVY, 62, 5, 200, 80, 6, 5, 2, IRON, HI_METAL),
SUIT(("barnacle armor", "giant shell armor"),
0, 1, MZ_HUGE, ARMSZ_HEAVY, 0, 10, 150, 1000, 8, 4, 1, SHELL_MAT, CLR_GRAY),
0, 1, MZ_HUGE, ARMSZ_HEAVY, 0, 10, 150, 1000, 6, 5, 1, SHELL_MAT, CLR_GRAY),
SUIT(("banded mail"),
1, 0, MZ_HUGE, ARMSZ_MEDIUM, 72, 5, 175, 90, 7, 3, 1, IRON, HI_METAL),
SUIT(("dwarvish mithril-coat"),
1, 0, MZ_LARGE, ARMSZ_LIGHT, 10, 1, 40, 240, 7, 3, 3, MITHRIL, HI_MITHRIL),
1, 0, MZ_LARGE, ARMSZ_LIGHT, 10, 1, 40, 240, 6, 3, 3, MITHRIL, HI_MITHRIL),
SUIT(("elven mithril-coat"),
1, 0, MZ_LARGE, ARMSZ_LIGHT, 15, 1, 20, 240, 7, 2, 3, MITHRIL, HI_MITHRIL),
1, 0, MZ_LARGE, ARMSZ_LIGHT, 15, 1, 20, 240, 6, 2, 3, MITHRIL, HI_MITHRIL),
SUIT(("chain mail"),
1, 0, MZ_LARGE, ARMSZ_HEAVY, 72, 5, 150, 75, 7, 4, 1, IRON, HI_METAL),
SUIT(("droven chain mail", "crested black mail", "crested mail"), /*Needs encyc entry*/
@ -922,7 +922,7 @@ CLOAK(("cloak of displacement", "piece of cloth"),
/* shields */
SHIELD(("buckler"),
1, 0, MZ_SMALL, 6, 0, 30, 3, 9, 0, 0, WOOD, HI_WOOD),
1, 0, MZ_SMALL, 6, 0, 25, 3, 9, 0, 0, WOOD, HI_WOOD),
SHIELD(("elven shield", "blue and green shield", "shield"),
0, 0, MZ_MEDIUM, 2, 0, 30, 7, 8, 0, 2, WOOD, CLR_GREEN),
SHIELD(("Uruk-hai shield", "white-handed shield", "shield"),

View file

@ -1777,6 +1777,8 @@ get_ma_description_of_monster_type(struct monst * mtmp, char * description)
many = append(description, (ptr->mflagsa & MA_MINION) , "minion of a deity" , many);
many = append(description, (ptr->mflagsa & MA_PRIMORDIAL) , "primordial" , many);
many = append(description, (ptr->mflagsa & MA_ET) , "alien" , many);
many = append(description, (ptr->mflagsa & MA_G_O_O) , "great old one" , many);
many = append(description, (ptr->mflagsa & MA_XORN) , "xorn" , many);
strcat(description, ". ");
return description;
}

View file

@ -387,12 +387,17 @@ const char * const hallu_alignments[] = {
"Spam",
"tastes like orange Tang",
"doesn't taste like orange Tang",
"butterscotch",
"cinnamon",
"currently not available",
"gone swimming",
"not listening",
"smashing things",
"thinking",
"jumble",
"crossword",
"yellow",
"purple",

View file

@ -1741,7 +1741,9 @@ asGuardian:
if((levl[ix][iy].typ <= SCORR || levl[ix][iy].typ == CORR || levl[ix][iy].typ == ROOM) && levl[ix][iy].typ != STONE){
levl[ix][iy].typ = CORR;
if(!does_block(ix,iy,&levl[ix][iy])) unblock_point(ix,iy); /* vision: can see through */
if(ttmp) delfloortrap(ttmp);
if(ttmp) {
if (delfloortrap(ttmp)) ttmp = (struct trap *)0;
}
levl[ix][iy].typ = CORR;
trycount = 0;
}

View file

@ -5415,6 +5415,7 @@ int *spell_no;
}
} // switch(splaction)
} // doing something allowable
free(selected);
} // menu item was selected
/* else end menu, nothing was selected */
break;

View file

@ -1642,6 +1642,7 @@ static const NEARDATA short hwep[] = {
SET_OF_CROW_TALONS/*2d4/2d3/+6 study*/,
TSURUGI/*1d16/1d8+2d6*/,
MOON_AXE/*variable, 2d6 to 2d12*/,
HIGH_ELVEN_WARSWORD/*1d10+1d6/1d10+1d6*/,
RUNESWORD/*1d10+1d4/1d10+1*/,
BATTLE_AXE/*1d8+1d4/1d6+2d4*/,
TWO_HANDED_SWORD/*1d12/3d6*/,
@ -1652,7 +1653,6 @@ static const NEARDATA short hwep[] = {
RAKUYO/*1d8+1d4/1d8+1d3*/,
ELVEN_BROADSWORD/*1d6+1d4/1d6+2*/,
KATANA/*1d10/1d12*/,
HIGH_ELVEN_WARSWORD/*1d10/1d10*/,
CRYSKNIFE/*1d10/1d10*/,
BESTIAL_CLAW/*1d10/1d8*/,
VIPERWHIP/*2d4/2d3/poison*/,
@ -1746,6 +1746,7 @@ static const NEARDATA short hpwep[] = {
SET_OF_CROW_TALONS/*2d4/2d3/+6 study*/,
TSURUGI/*1d16/1d8+2d6*/,
MOON_AXE/*variable, 2d6 to 2d12*/,
HIGH_ELVEN_WARSWORD/*1d10+1d6/1d10+1d6*/,
RUNESWORD/*1d10+1d4/1d10+1*/,
BATTLE_AXE/*1d8+1d4/1d6+2d4*/,
TWO_HANDED_SWORD/*1d12/3d6*/,
@ -1759,7 +1760,6 @@ static const NEARDATA short hpwep[] = {
HALBERD, /*1d10/2d6*/
KATANA/*1d10/1d12*/,
DROVEN_LANCE, /*1d10/1d10*/
HIGH_ELVEN_WARSWORD/*1d10/1d10*/,
CRYSKNIFE/*1d10/1d10*/,
BESTIAL_CLAW/*1d10/1d8*/,
VIPERWHIP/*2d4/2d3/poison*/,

View file

@ -3567,7 +3567,8 @@ int *shield_margin;
if (launcher->oartifact){
wepn_acc += spec_abon(launcher, mdef, youagr);
}
if (is_insight_weapon(launcher) && (youagr ? Role_switch : monsndx(magr->data)) == PM_MADMAN){
if (is_insight_weapon(launcher) && (youagr ? (Role_if(PM_MADMAN) || u.sealsActive&SEAL_OSE) : insightful(magr->data))){
if(youagr){
if(u.uinsight)
wepn_acc += rnd(min(u.uinsight, mlev(magr)));