From 9d910773d0a5421a259a228f638f87a04ef2d7a0 Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Sat, 2 Dec 2023 03:59:29 +0000 Subject: [PATCH] Make starting inventory magic markers more likely, but fewer charges In particular, Wizards now get a magic marker guaranteed (but with fewer charges than magic markers naturally generate with). This is intended to improve the game in two ways: it reduces the incentive for startscumming, and it gives Wizards a method to gain an additional low-level spell early if they wish (but the marker does not have enough charges to get higher-level spells quickly using this method). --- doc/fixes3-7-0.txt | 2 ++ src/u_init.c | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 01195bd5f..66f9c3d20 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1296,6 +1296,8 @@ mimics sometimes woke up and came out of hiding when they shouldn't have if Wizards no longer have a bonus to writing unknown spellbooks, but now learn what spellbooks look like as they gain skill in their spell schools (allowing a guaranteed write with enough skill) +Starting inventory: magic markers are more likely (guaranteed for + Wizards), but have fewer charges Fixes to 3.7.0-x General Problems Exposed Via git Repository diff --git a/src/u_init.c b/src/u_init.c index da653e3c1..85291b817 100644 --- a/src/u_init.c +++ b/src/u_init.c @@ -167,6 +167,7 @@ static struct trobj Wizard[] = { { UNDEF_TYP, UNDEF_SPE, SCROLL_CLASS, 3, UNDEF_BLESS }, { SPE_FORCE_BOLT, 0, SPBOOK_CLASS, 1, 1 }, { UNDEF_TYP, UNDEF_SPE, SPBOOK_CLASS, 1, UNDEF_BLESS }, + { MAGIC_MARKER, 19, TOOL_CLASS, 1, 0 }, /* actually spe = 18 + d4 */ { 0, 0, 0, 0, 0 } }; @@ -176,8 +177,7 @@ static struct trobj Wizard[] = { static struct trobj Tinopener[] = { { TIN_OPENER, 0, TOOL_CLASS, 1, 0 }, { 0, 0, 0, 0, 0 } }; -static struct trobj Magicmarker[] = { { MAGIC_MARKER, UNDEF_SPE, TOOL_CLASS, - 1, 0 }, +static struct trobj Magicmarker[] = { { MAGIC_MARKER, 19, TOOL_CLASS, 1, 0 }, { 0, 0, 0, 0, 0 } }; static struct trobj Lamp[] = { { OIL_LAMP, 1, TOOL_CLASS, 1, 0 }, { 0, 0, 0, 0, 0 } }; @@ -695,7 +695,7 @@ u_init(void) ini_inv(Tinopener); else if (!rn2(4)) ini_inv(Lamp); - else if (!rn2(10)) + else if (!rn2(5)) ini_inv(Magicmarker); knows_object(SACK); knows_object(TOUCHSTONE); @@ -741,7 +741,7 @@ u_init(void) Monk[M_BOOK].trotyp = M_spell[rn2(90) / 30]; /* [0..2] */ ini_inv(Monk); - if (!rn2(5)) + if (!rn2(4)) ini_inv(Magicmarker); else if (!rn2(10)) ini_inv(Lamp); @@ -753,7 +753,7 @@ u_init(void) } case PM_CLERIC: /* priest/priestess */ ini_inv(Priest); - if (!rn2(10)) + if (!rn2(5)) ini_inv(Magicmarker); else if (!rn2(10)) ini_inv(Lamp); @@ -811,7 +811,7 @@ u_init(void) ini_inv(Leash); else if (!rn2(25)) ini_inv(Towel); - else if (!rn2(25)) + else if (!rn2(20)) ini_inv(Magicmarker); skill_init(Skill_T); break; @@ -825,8 +825,6 @@ u_init(void) break; case PM_WIZARD: ini_inv(Wizard); - if (!rn2(5)) - ini_inv(Magicmarker); if (!rn2(5)) ini_inv(Blindfold); skill_init(Skill_W); @@ -1140,8 +1138,11 @@ ini_inv(struct trobj *trop) && obj->otyp != FLINT) { obj->quan = 1L; } - if (trop->trspe != UNDEF_SPE) + if (trop->trspe != UNDEF_SPE) { obj->spe = trop->trspe; + if (trop->trotyp == MAGIC_MARKER && obj->spe < 96) + obj->spe += rn2(4); + } if (trop->trbless != UNDEF_BLESS) obj->blessed = trop->trbless; }