Add shields of shock resistance and of drain resistance

These both appear as "wooden shield" when unidentified; so does the
small shield.
This commit is contained in:
Alex Smith
2026-03-18 23:27:54 +00:00
parent ea023677c7
commit 5d3a1e684b
6 changed files with 60 additions and 9 deletions
+1
View File
@@ -2904,6 +2904,7 @@ ring of stealth prevents hero from leaving tracks
the game now automatically tracks which sell prices and buy prices you have the game now automatically tracks which sell prices and buy prices you have
seen for each type of item; these are visible in the discoveries list, seen for each type of item; these are visible in the discoveries list,
and can also be shown elsewhere using the new 'price_quotes' option and can also be shown elsewhere using the new 'price_quotes' option
new shields: shield of shock resistance, shield of drain resistance
Platform- and/or Interface-Specific New Features Platform- and/or Interface-Specific New Features
+10 -4
View File
@@ -650,9 +650,15 @@ CLOAK("cloak of displacement", "piece of cloth",
CLOAK_OF_DISPLACEMENT), CLOAK_OF_DISPLACEMENT),
/* shields */ /* shields */
SHIELD("small shield", NoDes, SHIELD("small shield", "wooden shield",
1, 0, 0, 0, 6, 0, 30, 3, 9, 0, WOOD, HI_WOOD, 0, 0, 0, 0, 4, 0, 30, 3, 9, 0, WOOD, HI_WOOD,
SMALL_SHIELD), SMALL_SHIELD),
SHIELD("shield of drain resistance", "wooden shield",
0, 1, 0, DRAIN_RES, 3, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
SHIELD_OF_DRAIN_RESISTANCE),
SHIELD("shield of shock resistance", "wooden shield",
0, 1, 0, SHOCK_RES, 3, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
SHIELD_OF_SHOCK_RESISTANCE),
SHIELD("elven shield", "blue and green shield", SHIELD("elven shield", "blue and green shield",
0, 0, 0, 0, 2, 0, 40, 7, 8, 0, WOOD, CLR_GREEN, 0, 0, 0, 0, 2, 0, 40, 7, 8, 0, WOOD, CLR_GREEN,
ELVEN_SHIELD), ELVEN_SHIELD),
@@ -663,10 +669,10 @@ SHIELD("orcish shield", "red-eyed shield",
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, CLR_RED, 0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, CLR_RED,
ORCISH_SHIELD), ORCISH_SHIELD),
SHIELD("large shield", NoDes, SHIELD("large shield", NoDes,
1, 0, 1, 0, 7, 0, 100, 10, 8, 0, IRON, HI_METAL, 1, 0, 1, 0, 4, 0, 100, 10, 8, 0, IRON, HI_METAL,
LARGE_SHIELD), LARGE_SHIELD),
SHIELD("dwarvish roundshield", "large round shield", SHIELD("dwarvish roundshield", "large round shield",
0, 0, 0, 0, 4, 0, 100, 10, 8, 0, IRON, HI_METAL, 0, 0, 0, 0, 3, 0, 100, 10, 8, 0, IRON, HI_METAL,
DWARVISH_ROUNDSHIELD), DWARVISH_ROUNDSHIELD),
SHIELD("shield of reflection", "polished silver shield", SHIELD("shield of reflection", "polished silver shield",
0, 1, 0, REFLECTING, 3, 0, 50, 50, 8, 0, SILVER, HI_SILVER, 0, 1, 0, REFLECTING, 3, 0, 50, 50, 8, 0, SILVER, HI_SILVER,
+1 -1
View File
@@ -17,7 +17,7 @@
* Incrementing EDITLEVEL can be used to force invalidation of old bones * Incrementing EDITLEVEL can be used to force invalidation of old bones
* and save files. * and save files.
*/ */
#define EDITLEVEL 133 #define EDITLEVEL 134
/* /*
* Development status possibilities. * Development status possibilities.
+5 -1
View File
@@ -706,10 +706,12 @@ Shield_on(void)
{ {
/* no shield currently requires special handling when put on, but we /* no shield currently requires special handling when put on, but we
keep this uncommented in case somebody adds a new one which does keep this uncommented in case somebody adds a new one which does
[reflection is handled by setting u.uprops[REFLECTION].extrinsic [the magical shields are handled by setting u.uprops[*].extrinsic
in setworn() called by armor_or_accessory_on() before Shield_on()] */ in setworn() called by armor_or_accessory_on() before Shield_on()] */
switch (uarms->otyp) { switch (uarms->otyp) {
case SMALL_SHIELD: case SMALL_SHIELD:
case SHIELD_OF_DRAIN_RESISTANCE:
case SHIELD_OF_SHOCK_RESISTANCE:
case ELVEN_SHIELD: case ELVEN_SHIELD:
case URUK_HAI_SHIELD: case URUK_HAI_SHIELD:
case ORCISH_SHIELD: case ORCISH_SHIELD:
@@ -736,6 +738,8 @@ Shield_off(void)
keep this uncommented in case somebody adds a new one which does */ keep this uncommented in case somebody adds a new one which does */
switch (uarms->otyp) { switch (uarms->otyp) {
case SMALL_SHIELD: case SMALL_SHIELD:
case SHIELD_OF_DRAIN_RESISTANCE:
case SHIELD_OF_SHOCK_RESISTANCE:
case ELVEN_SHIELD: case ELVEN_SHIELD:
case URUK_HAI_SHIELD: case URUK_HAI_SHIELD:
case ORCISH_SHIELD: case ORCISH_SHIELD:
+4 -2
View File
@@ -603,8 +603,10 @@ knows_class(char sym)
*/ */
for (ct = svb.bases[(uchar) sym]; ct < svb.bases[(uchar) sym + 1]; ct++) { for (ct = svb.bases[(uchar) sym]; ct < svb.bases[(uchar) sym + 1]; ct++) {
/* not flagged as magic but shouldn't be pre-discovered */ /* not flagged as magic but shouldn't be pre-discovered
if (ct == CORNUTHAUM || ct == DUNCE_CAP) (small shields look the same as two types of magical shield;
cornuthaum / dunce cap look the same as each other) */
if (ct == CORNUTHAUM || ct == DUNCE_CAP || ct == SMALL_SHIELD)
continue; continue;
if (sym == WEAPON_CLASS) { if (sym == WEAPON_CLASS) {
odummy.otyp = ct; /* update 'o' */ odummy.otyp = ct; /* update 'o' */
+39 -1
View File
@@ -2938,7 +2938,45 @@ Z = (195, 195, 195)
.....PPPPPAA.... .....PPPPPAA....
.......PPAA..... .......PPAA.....
} }
# tile 152 (small shield) # tile 152 (wooden shield / small shield)
{
................
................
................
................
................
...C.CJJ.J......
...CCKKJJJA.....
...CKKKJJJA.....
...CKKJJJJA.....
...CKKJJJJA.....
....CKKJJAA.....
.....CKJAA......
......CAA.......
.......A........
................
................
}
# tile 152 (wooden shield / shield of drain resistance)
{
................
................
................
................
................
...C.CJJ.J......
...CCKKJJJA.....
...CKKKJJJA.....
...CKKJJJJA.....
...CKKJJJJA.....
....CKKJJAA.....
.....CKJAA......
......CAA.......
.......A........
................
................
}
# tile 152 (wooden shield / shield of shock resistance)
{ {
................ ................
................ ................