Skip to content

Commit 1132316

Browse files
committed
Attempt to make Wizards less reliant on weapons, focus more on spellcasting (round one).
This is my initial attempt to make Wizards want to be more reliant on their spells instead of being forced to 'tank' and melee most times. Playing Dungeons & Dragons, Wizards (Magic-Users as they're called in ad&d) would almost never melee. The combat arms types in the group would handle that aspect of battle, while they stayed back and cast spells in support of the rest of the group. As the Wizard increased in experience and abilities, they got to the point where they didn't need the 'support staff' nearly as often, if at all. Granted, Wizards in NetHack don't have a party of warriors and healers to rely on starting out. However, they wind up fighting melee style quite a bit, even at higher levels. This commit is an attempt to change that a bit. The changes: * Wizards casting the spell 'force bolt' will only cost them one point of spell power per cast, instead of the usual five points * Wizards will not start with any weapons at all * Wizards will start with an extra wand, and that wand will always be a wand of magic missile Player monster Wizards are changed in the same way (no weapon, extra wand of magic missile). These are very simple changes, but the effect could be profound. Definitely want to play test thoroughly before the release of this version.
1 parent fa18830 commit 1132316

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

doc/evilhack-changelog.md

+2
Original file line numberDiff line numberDiff line change
@@ -3403,4 +3403,6 @@ The following changes to date are:
34033403
- Lolth will be peaceful towards Drow players under the right
34043404
circumstances
34053405
- Penalty for a chaotic Drow killing Lolth
3406+
- Attempt to make Wizards less reliant on weapons, focus more
3407+
on spellcasting
34063408

src/makemon.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,8 @@ struct trobj giantSamurai[] = {
311311
};
312312

313313
struct trobj giantWizard[] = {
314-
{ QUARTERSTAFF, 1, WEAPON_CLASS, 1, 1 },
315314
{ AMULET_OF_MAGIC_RESISTANCE, 0, AMULET_CLASS, 1, UNDEF_BLESS },
315+
{ WAN_MAGIC_MISSILE, UNDEF_SPE, WAND_CLASS, 1, UNDEF_BLESS },
316316
{ UNDEF_TYP, UNDEF_SPE, WAND_CLASS, 1, UNDEF_BLESS },
317317
{ UNDEF_TYP, UNDEF_SPE, RING_CLASS, 2, UNDEF_BLESS },
318318
{ UNDEF_TYP, UNDEF_SPE, POTION_CLASS, 3, UNDEF_BLESS },
@@ -418,9 +418,9 @@ struct trobj tortleTourist[] = {
418418
};
419419

420420
struct trobj tortleWizard[] = {
421-
{ QUARTERSTAFF, 1, WEAPON_CLASS, 1, 1 },
422421
{ GLOVES, 0, ARMOR_CLASS, 1, UNDEF_BLESS },
423422
{ AMULET_OF_MAGIC_RESISTANCE, 0, AMULET_CLASS, 1, UNDEF_BLESS },
423+
{ WAN_MAGIC_MISSILE, UNDEF_SPE, WAND_CLASS, 1, UNDEF_BLESS },
424424
{ UNDEF_TYP, UNDEF_SPE, WAND_CLASS, 1, UNDEF_BLESS },
425425
{ UNDEF_TYP, UNDEF_SPE, RING_CLASS, 2, UNDEF_BLESS },
426426
{ UNDEF_TYP, UNDEF_SPE, POTION_CLASS, 3, UNDEF_BLESS },
@@ -631,8 +631,12 @@ unsigned short chance;
631631
&& mtmp->mnum == PM_MONK)
632632
|| (otyp == SPE_FORCE_BOLT
633633
&& mtmp->mnum == PM_WIZARD)
634+
|| (otyp == WAN_MAGIC_MISSILE
635+
&& mtmp->mnum == PM_WIZARD)
634636
|| (otyp == SPE_DRAIN_LIFE
635637
&& mtmp->mnum == PM_INFIDEL)
638+
|| (otyp == SPE_CLAIRVOYANCE
639+
&& mtmp->mnum == PM_INFIDEL)
636640
|| (obj->oclass == SPBOOK_CLASS
637641
&& objects[otyp].oc_level > 3)) {
638642
dealloc_obj(obj);

src/spell.c

+8-1
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,7 @@ boolean wiz_cast;
10061006
}
10071007

10081008
if (wiz_cast) {
1009+
;
10091010
} else if (u.uhunger <= 10 && spellid(spell) != SPE_DETECT_FOOD) {
10101011
You("are too hungry to cast that spell.");
10111012
return 0;
@@ -1156,7 +1157,13 @@ boolean wiz_cast;
11561157
losehp(energy, killer.name, KILLED_BY);
11571158
}
11581159
} else {
1159-
u.uen -= energy;
1160+
if (Role_if(PM_WIZARD) && spellid(spell) == SPE_FORCE_BOLT) {
1161+
/* wizards power use for force bolt is only
1162+
one point of power per cast */
1163+
u.uen -= energy / 5;
1164+
} else {
1165+
u.uen -= energy;
1166+
}
11601167
}
11611168

11621169
/* successful casting increases the amount of time the cast

src/u_init.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ struct trobj Valkyrie[] = {
222222
struct trobj Wizard[] = {
223223
#define W_MULTSTART 2
224224
#define W_MULTEND 6
225-
{ QUARTERSTAFF, 1, WEAPON_CLASS, 1, 1 },
226225
{ CLOAK_OF_MAGIC_RESISTANCE, 0, ARMOR_CLASS, 1, UNDEF_BLESS },
226+
{ WAN_MAGIC_MISSILE, UNDEF_SPE, WAND_CLASS, 1, UNDEF_BLESS },
227227
{ UNDEF_TYP, UNDEF_SPE, WAND_CLASS, 1, UNDEF_BLESS },
228228
{ UNDEF_TYP, UNDEF_SPE, RING_CLASS, 2, UNDEF_BLESS },
229229
{ UNDEF_TYP, UNDEF_SPE, POTION_CLASS, 3, UNDEF_BLESS },
@@ -1524,6 +1524,7 @@ register struct trobj *origtrop;
15241524
|| (otyp == SCR_ENCHANT_WEAPON && Role_if(PM_MONK))
15251525
/* wizard patch -- they already have one */
15261526
|| (otyp == SPE_FORCE_BOLT && Role_if(PM_WIZARD))
1527+
|| (otyp == WAN_MAGIC_MISSILE && Role_if(PM_WIZARD))
15271528
/* same for infidels */
15281529
|| (otyp == SPE_DRAIN_LIFE && Role_if(PM_INFIDEL))
15291530
/* infidels already have auto-clairvoyance

0 commit comments

Comments
 (0)