From edc1a6a210515d73e7f28c33408d436ad83c0618 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 16 Oct 2023 08:06:54 +0200 Subject: [PATCH 1/5] The souleater tech requires an edged non-missile weapon to work. --- src/tech.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/tech.c b/src/tech.c index b39063866..ddbfda5f1 100644 --- a/src/tech.c +++ b/src/tech.c @@ -3627,7 +3627,8 @@ tech_souleater() struct monst *mtmp; int tech_no = get_tech_no(T_SOULEATER); int weapon_modifier, num = Upolyd ? (u.mhmax / 2) : (u.uhpmax / 2); - + boolean isweapon, isedged; + if ((!Upolyd && u.uhp <= num) || (Upolyd && u.mh <= num)) { You("don't have the strength to invoke Souleater! Requires at least %i HP!", num + 1); @@ -3637,6 +3638,13 @@ tech_souleater() You("need a weapon to channel your dark energy into!"); return 0; } + isweapon = (uwep->oclass == WEAPON_CLASS || is_weptool(uwep)); + isedged = (is_pick(uwep) || (objects[uwep->otyp].oc_dir & (PIERCE | SLASH))); + + if (is_missile(uwep) || (!isweapon && !isedged)) { + You("need a proper weapon to channel your dark energy into!"); + return 0; + } You("unleash a burst of dark energy!"); /* Works against anything in line of sight...except flan */ From 1919240c5baa6f99c5fd758cd47676aea004da49 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 16 Oct 2023 11:52:48 +0200 Subject: [PATCH 2/5] Fix a couple of missed version number updates. --- include/patchlevel.h | 2 +- sys/unix/sysconf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/patchlevel.h b/include/patchlevel.h index 5ff4b9518..d00ce1204 100644 --- a/include/patchlevel.h +++ b/include/patchlevel.h @@ -39,7 +39,7 @@ * to individual level files matter; changes to general game state don't) * but the extra complexity to support that is not worth the effort.] */ -#define VERSION_COMPATIBILITY 0x10201000L +#define VERSION_COMPATIBILITY 0x01020100L /****************************************************************************/ /* Version 3.6.x */ diff --git a/sys/unix/sysconf b/sys/unix/sysconf index c9548cbd7..2c96864a8 100644 --- a/sys/unix/sysconf +++ b/sys/unix/sysconf @@ -128,7 +128,7 @@ LLC_TURNS=3000 # Only available if NetHack was compiled with DUMPLOG # Allows following placeholders: # %% literal '%' -# %v version (eg. "1.2.0-0") +# %v version (eg. "1.2.1-0") # %u game UID # %t game start time, UNIX timestamp format # %T current time, UNIX timestamp format From 93587cc70e358a2ec76b8ee28cfd87417b272e31 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 16 Oct 2023 11:57:44 +0200 Subject: [PATCH 3/5] Fire and ice mages can't receive opposite elemental minions as gifts from their gods. --- src/pray.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pray.c b/src/pray.c index d64151fb7..50bbbf828 100644 --- a/src/pray.c +++ b/src/pray.c @@ -1702,7 +1702,11 @@ aligntyp alignment; mnum = ndemon(A_NONE); break; } - if (mnum == NON_PM) { + if (mnum == NON_PM + || (Role_if(PM_ICE_MAGE) + && (mnum == PM_FIRE_ELEMENTAL || mnum == PM_MAGMA_ELEMENTAL)) + || (Role_if(PM_FLAME_MAGE) + && (mnum == PM_ICE_ELEMENTAL || mnum == PM_WATER_ELEMENTAL))) { You("feel a powerful presence gather, but it suddenly recedes!"); return; } From 63ad017b0ab13826feeda9291e3d6400f5815c94 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 16 Oct 2023 12:26:06 +0200 Subject: [PATCH 4/5] Bring ring prices back to normal. --- src/shk.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/shk.c b/src/shk.c index 78fb096dd..c051cf82d 100644 --- a/src/shk.c +++ b/src/shk.c @@ -2656,9 +2656,10 @@ register struct monst *shkp; /* if angry, impose a surcharge */ } } /* adjust for different material */ - multiplier *= matprices[obj->material]; - divisor *= matprices[objects[obj->otyp].oc_material]; - + if (obj->oclass != RING_CLASS) { + multiplier *= matprices[obj->material]; + divisor *= matprices[objects[obj->otyp].oc_material]; + } if (uarmh && uarmh->otyp == DUNCE_CAP) multiplier *= 4L, divisor *= 3L; else if ((Role_if(PM_TOURIST) && u.ulevel < (MAXULEV / 2)) @@ -2890,9 +2891,10 @@ register struct monst *shkp; tmp = get_pricing_units(obj) * unit_price; /* adjust for different material */ - multiplier *= matprices[obj->material]; - divisor *= matprices[objects[obj->otyp].oc_material]; - + if (obj->oclass != RING_CLASS) { + multiplier *= matprices[obj->material]; + divisor *= matprices[objects[obj->otyp].oc_material]; + } if (obj->globby) goto end; From 8dc6d32c4f0bec74948a12a7b04854fde74f59aa Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 16 Oct 2023 12:56:10 +0200 Subject: [PATCH 5/5] Amulet prices are also not affected by their material. --- src/shk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shk.c b/src/shk.c index c051cf82d..e61241d65 100644 --- a/src/shk.c +++ b/src/shk.c @@ -2656,7 +2656,7 @@ register struct monst *shkp; /* if angry, impose a surcharge */ } } /* adjust for different material */ - if (obj->oclass != RING_CLASS) { + if (obj->oclass != RING_CLASS && obj->oclass != AMULET_CLASS) { multiplier *= matprices[obj->material]; divisor *= matprices[objects[obj->otyp].oc_material]; } @@ -2891,7 +2891,7 @@ register struct monst *shkp; tmp = get_pricing_units(obj) * unit_price; /* adjust for different material */ - if (obj->oclass != RING_CLASS) { + if (obj->oclass != RING_CLASS && obj->oclass != AMULET_CLASS) { multiplier *= matprices[obj->material]; divisor *= matprices[objects[obj->otyp].oc_material]; }