Add invocation effect to Fire and Frost Brand

Casts fireball or cone of cold at expert level
This commit is contained in:
Pasi Kallinen
2025-04-13 13:13:54 +03:00
parent 652f8576c0
commit 85de51a69a
4 changed files with 17 additions and 2 deletions
+1
View File
@@ -1511,6 +1511,7 @@ if a tree and a boulder or statue were at the same location, applying an axe
avoid premapping outside Sokoban map to prevent showing stone glyphs avoid premapping outside Sokoban map to prevent showing stone glyphs
Grimtooth is permanently poisoned, protects from poison, and can fling poison Grimtooth is permanently poisoned, protects from poison, and can fling poison
cursed magic whistle can teleport you to your pet cursed magic whistle can teleport you to your pet
Fire and Frost Brand can be invoked for expert level fireball or cone of cold
Fixes to 3.7.0-x General Problems Exposed Via git Repository Fixes to 3.7.0-x General Problems Exposed Via git Repository
+2
View File
@@ -68,6 +68,8 @@ enum invoke_prop_types {
CREATE_AMMO, CREATE_AMMO,
BANISH, BANISH,
FLING_POISON, FLING_POISON,
FIRESTORM,
SNOWSTORM,
BLINDING_RAY BLINDING_RAY
}; };
+2 -2
View File
@@ -147,11 +147,11 @@ static NEARDATA struct artifact artilist[] = {
0, 7, 3500L, NO_COLOR, MAGICBANE), 0, 7, 3500L, NO_COLOR, MAGICBANE),
A("Frost Brand", LONG_SWORD, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN), 0, 0, A("Frost Brand", LONG_SWORD, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN), 0, 0,
COLD(5, 0), COLD(0, 0), NO_CARY, 0, A_NONE, NON_PM, NON_PM, COLD(5, 0), COLD(0, 0), NO_CARY, SNOWSTORM, A_NONE, NON_PM, NON_PM,
0, 9, 3000L, NO_COLOR, FROST_BRAND), 0, 9, 3000L, NO_COLOR, FROST_BRAND),
A("Fire Brand", LONG_SWORD, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN), 0, 0, A("Fire Brand", LONG_SWORD, (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN), 0, 0,
FIRE(5, 0), FIRE(0, 0), NO_CARY, 0, A_NONE, NON_PM, NON_PM, FIRE(5, 0), FIRE(0, 0), NO_CARY, FIRESTORM, A_NONE, NON_PM, NON_PM,
0, 5, 3000L, NO_COLOR, FIRE_BRAND), 0, 5, 3000L, NO_COLOR, FIRE_BRAND),
A("Dragonbane", BROADSWORD, A("Dragonbane", BROADSWORD,
+12
View File
@@ -2024,6 +2024,18 @@ arti_invoke(struct obj *obj)
obj->age = svm.moves; obj->age = svm.moves;
} }
break; break;
case SNOWSTORM:
case FIRESTORM:
{
int storm = oart->inv_prop == SNOWSTORM ? SPE_CONE_OF_COLD : SPE_FIREBALL;
int skill = spell_skilltype(storm);
int expertise = P_SKILL(skill);
P_SKILL(skill) = P_EXPERT;
(void) spelleffects(storm, FALSE, TRUE);
P_SKILL(skill) = expertise;
}
break;
case BLINDING_RAY: case BLINDING_RAY:
if (getdir((char *) 0)) { if (getdir((char *) 0)) {
if (u.dx || u.dy) { if (u.dx || u.dy) {