summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/edit/a_info.txt10
-rw-r--r--lib/edit/k_info.txt4
-rw-r--r--lib/mods/theme/edit/a_info.txt6
-rw-r--r--lib/mods/theme/edit/k_info.txt4
-rw-r--r--src/cmd6.cc246
-rw-r--r--src/defines.h11
-rw-r--r--src/init1.cc12
-rw-r--r--src/spell_type.cc26
-rw-r--r--src/spell_type.hpp3
-rw-r--r--src/spells3.cc172
-rw-r--r--src/spells3.hpp13
-rw-r--r--src/spells5.cc66
12 files changed, 256 insertions, 317 deletions
diff --git a/lib/edit/a_info.txt b/lib/edit/a_info.txt
index 427d5060..36316f94 100644
--- a/lib/edit/a_info.txt
+++ b/lib/edit/a_info.txt
@@ -2111,7 +2111,7 @@ W:10:10:5:20000
P:0:0d0:20:0:0
F:INFRA | SEARCH | HIDE_TYPE |
F:XTRA_SHOTS | SHOW_MODS | ACTIVATE | SPECIAL_GENE
-a:SPELL=Artifact Maggot
+a:HARDCORE=MAGGOT
D:This ordinary seeming leather sling has been raised to legendary
D:status amongst generations of hobbit children. Farmer Maggot's
D:ability to notice and strike any mushroom thief anywhere within
@@ -2326,8 +2326,8 @@ N:165:'Lebohaum'
I:32:6:0
W:20:15:15:25000
P:20:0d0:0:0:80
-F:ACTIVATE
-a:SPELL=Artifact Lebauhaum
+F:ACTIVATE | EASY_USE
+a:HARDCORE=LEBOHAUM
D:With the Helm 'Lebohaum' your head is safe!
@@ -2595,8 +2595,8 @@ I:23:17:3
W:5:10:130:500
P:0:2d5:5:6:0
F:RES_FEAR | LUCK
-F:ACTIVATE | SHOW_MODS
-a:SPELL=Artifact Durandil
+F:ACTIVATE | EASY_USE | SHOW_MODS
+a:HARDCORE=DURANDIL
D:Don't go adventuring without your Durandil sword!
diff --git a/lib/edit/k_info.txt b/lib/edit/k_info.txt
index aba86074..361c2bb4 100644
--- a/lib/edit/k_info.txt
+++ b/lib/edit/k_info.txt
@@ -2775,9 +2775,9 @@ W:127:0:4:0
A:127/255
P:0:1d1:0:0:0
T:39:2
-F:NORM_ART | FULL_NAME | SPECIAL_GENE
+F:NORM_ART | FULL_NAME | SPECIAL_GENE | EASY_USE
F:ACTIVATE | ACTIVATE_NO_WIELD
-a:SPELL=Artifact Eternal Flame
+a:HARDCORE=ETERNAL_FLAME
D:An impossibly bright, flickering living flame. It can be used
D:once to imbue an object with the power of Eru Iluvatar himself.
diff --git a/lib/mods/theme/edit/a_info.txt b/lib/mods/theme/edit/a_info.txt
index e2a312c5..ec1d87bc 100644
--- a/lib/mods/theme/edit/a_info.txt
+++ b/lib/mods/theme/edit/a_info.txt
@@ -2114,7 +2114,7 @@ W:10:10:5:20000
P:0:0d0:20:0:0
F:INFRA | SEARCH | HIDE_TYPE |
F:XTRA_SHOTS | SHOW_MODS | ACTIVATE | SPECIAL_GENE
-a:SPELL=Artifact Maggot
+a:HARDCORE=MAGGOT
D:This ordinary seeming leather sling has been raised to legendary
D:status amongst generations of hobbit children. Farmer Maggot's
D:ability to notice and strike any mushroom thief anywhere within
@@ -2615,7 +2615,7 @@ F:HIDE_TYPE | INFRA | INT | MANA | RES_COLD | RES_ELEC |
F:RES_FIRE | RES_MORGUL | SEARCH | SEE_INVIS | SHOW_MODS |
F:SLAY_ANIMAL | SLAY_EVIL | SPELL | SPELL_CONTAIN |
F:STEALTH | WATER_BREATH | WIELD_CAST | WIS
-a:SPELL=Artifact Radagast
+a:HARDCORE=RADAGAST
Z:grow trees
D:Rumoured to be a gift from Yavanna to Radagast the Brown, this
D:plain-seeming oak staff shields its bearer against the elements
@@ -2634,7 +2634,7 @@ P:0:3d4:0:0:0
F:ACTIVATE | BLESSED | CON | ESP_ANIMAL | ESP_EVIL |
F:FREE_ACT | HIDE_TYPE | LUCK | RES_CONF | RES_FEAR |
F:RES_SOUND | SEARCH | SEE_INVIS | STEALTH
-a:SPELL=Artifact Valaroma
+a:HARDCORE=VALAROMA
D:This heavenly instrument, wrought from gleaming silver, most
D:often appears in the hands of the Valarin huntsman Orome; yet
D:he may lend mortal champions the horn from time to time. Its
diff --git a/lib/mods/theme/edit/k_info.txt b/lib/mods/theme/edit/k_info.txt
index 07e4bbe2..2261fd6b 100644
--- a/lib/mods/theme/edit/k_info.txt
+++ b/lib/mods/theme/edit/k_info.txt
@@ -2698,9 +2698,9 @@ W:127:0:4:0
A:127/255
P:0:1d1:0:0:0
T:39:2
-F:NORM_ART | FULL_NAME | SPECIAL_GENE
+F:NORM_ART | FULL_NAME | SPECIAL_GENE | EASY_USE
F:ACTIVATE | ACTIVATE_NO_WIELD
-a:SPELL=Artifact Eternal Flame
+a:HARDCORE=ETERNAL_FLAME
D:An impossibly bright, flickering living flame. It can be used
D:once to imbue an object with the power of Eru Iluvatar himself.
diff --git a/src/cmd6.cc b/src/cmd6.cc
index 18b0ab79..1a27dd23 100644
--- a/src/cmd6.cc
+++ b/src/cmd6.cc
@@ -4781,6 +4781,153 @@ bool_ brand_bolts(void)
/*
+ * Eternal flame activation
+ */
+
+static int get_eternal_artifact_idx(object_type *o_ptr)
+{
+ if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_LONG_SWORD)) {
+ return 147;
+ } else if ((o_ptr->tval == TV_MSTAFF) && (o_ptr->sval == SV_MSTAFF)) {
+ return 127;
+ } else if ((o_ptr->tval == TV_BOW) && (o_ptr->sval == SV_HEAVY_XBOW)) {
+ return 152;
+ } else if ((o_ptr->tval == TV_DRAG_ARMOR) && (o_ptr->sval == SV_DRAGON_POWER)) {
+ return 17;
+ }
+
+ if (game_module_idx == MODULE_THEME)
+ {
+ if ((o_ptr->tval == TV_HAFTED) && (o_ptr->sval == SV_LUCERN_HAMMER)) {
+ return 241;
+ } else if ((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_TRIDENT)) {
+ return 242;
+ } else if ((o_ptr->tval == TV_AXE) && (o_ptr->sval == SV_BROAD_AXE)) {
+ return 243;
+ } else if ((o_ptr->tval == TV_BOW) && (o_ptr->sval == SV_LONG_BOW)) {
+ return 245;
+ } else if ((o_ptr->tval == TV_BOOMERANG) && (o_ptr->sval == SV_BOOM_METAL)) {
+ return 247;
+ } else if ((o_ptr->tval == TV_BOW) && (o_ptr->sval == SV_SLING)) {
+ return 246;
+ } else if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_RAPIER)) {
+ return 244;
+ } else if ((o_ptr->tval == TV_AMULET) && (o_ptr->sval == SV_AMULET_SPELL)) {
+ return 248;
+ }
+ }
+
+ /* Not usable */
+ return -1;
+}
+
+static bool_ eternal_flame_item_tester_hook(object_type *o_ptr)
+{
+ if ((o_ptr->name1 > 0) ||
+ (o_ptr->name2 > 0))
+ {
+ return FALSE;
+ }
+
+ return (get_eternal_artifact_idx(o_ptr) >= 0);
+}
+
+static bool activate_eternal_flame(int flame_item)
+{
+ int item;
+ int artifact_idx = -1;
+
+ item_tester_hook = eternal_flame_item_tester_hook;
+ if (!get_item(&item,
+ "Which object do you want to imbue?",
+ "You have no objects to imbue.",
+ USE_INVEN))
+ {
+ return false;
+ }
+
+ /* Get the artifact idx */
+ artifact_idx = get_eternal_artifact_idx(get_object(item));
+ assert(artifact_idx >= 0);
+
+ /* Forge the item */
+ object_type *o_ptr = get_object(item);
+ o_ptr->name1 = artifact_idx;
+
+ apply_magic(o_ptr, -1, TRUE, TRUE, TRUE);
+
+ o_ptr->found = OBJ_FOUND_SELFMADE;
+
+ inven_item_increase(flame_item, -1);
+ inven_item_describe(flame_item);
+ inven_item_optimize(flame_item);
+ return true;
+}
+
+
+/**
+ * Farmer Maggot's sling activation.
+ */
+static bool activate_maggot()
+{
+ int dir;
+ if (!get_aim_dir(&dir))
+ {
+ return false;
+ }
+
+ fire_ball(GF_TURN_ALL, dir, 40, 2);
+ return true;
+}
+
+
+/**
+ * 'Radagast' (Theme)
+ */
+static void activate_radagast()
+{
+ cmsg_print(TERM_GREEN, "The staff's power cleanses you completely!");
+ remove_all_curse();
+ do_res_stat(A_STR, TRUE);
+ do_res_stat(A_CON, TRUE);
+ do_res_stat(A_DEX, TRUE);
+ do_res_stat(A_WIS, TRUE);
+ do_res_stat(A_INT, TRUE);
+ do_res_stat(A_CHR, TRUE);
+ restore_level();
+ // clean_corruptions(); TODO: Do we want to implement this?
+ hp_player(5000);
+ heal_insanity(5000);
+ set_poisoned(0);
+ set_blind(0);
+ set_confused(0);
+ set_image(0);
+ set_stun(0);
+ set_cut(0);
+ set_parasite(0, 0);
+
+ if (p_ptr->black_breath)
+ {
+ msg_print("The hold of the Black Breath on you is broken!");
+ }
+ p_ptr->black_breath = FALSE;
+
+ p_ptr->update |= PU_BONUS;
+ p_ptr->window |= PW_PLAYER;
+}
+
+
+/**
+ * 'Valaroma' (Theme)
+ */
+static void activate_valaroma()
+{
+ int power = 5 * p_ptr->lev;
+ banish_evil(power);
+}
+
+
+/*
* Objects in the p_ptr->inventory can now be activated, and
* SOME of those may be able to stack (ego wands or something)
* in any case, we can't know that it's impossible. *BUT* we'll
@@ -5023,7 +5170,6 @@ void do_cmd_activate(void)
const char *activation_aux(object_type * o_ptr, bool_ doit, int item)
{
- static char buf[256];
int plev = get_skill(SKILL_DEVICE);
int i = 0, ii = 0, ij = 0, k, dir, dummy = 0;
@@ -5060,22 +5206,9 @@ const char *activation_aux(object_type * o_ptr, bool_ doit, int item)
if (!spell)
return "Unknown!";
- /* Negative means a unified spell index */
- if (spell < 0)
- {
- struct spell_type *spell_ptr = spell_at(-spell);
- if (doit)
- {
- spell_type_produce_effect(spell_ptr, item);
- o_ptr->timeout = spell_type_activation_roll_timeout(spell_ptr);
- }
- else
- {
- spell_type_activation_description(spell_ptr, buf);
- return buf;
- }
- }
- else
+ /* Activations always have positive numbers */
+ assert(spell > 0);
+
{
/* Activate for attack */
switch (spell)
@@ -7729,11 +7862,82 @@ const char *activation_aux(object_type * o_ptr, bool_ doit, int item)
break;
}
case ACT_MUSIC:
- /*
- fall through to unknown, as music should be
- handled by calling procedure.
- */
+ /* Should be handled specially by caller, so if we get here something's wrong. */
+ abort();
+ case ACT_ETERNAL_FLAME:
+ {
+ if (!doit) return "imbuing an object with the eternal fire";
+
+ if (!activate_eternal_flame(item))
+ {
+ // Eternal Flame object was NOT destroyed, so let's
+ // set the timeout.
+ o_ptr->timeout = 0;
+ }
+ break;
+ }
+ case ACT_MAGGOT:
+ {
+ if (!doit) return "terrify every 10+d50 turns";
+
+ if (activate_maggot())
+ {
+ o_ptr->timeout = 10 + randint(50);
+ }
+ break;
+ }
+ case ACT_LEBOHAUM:
+ {
+ if (!doit) return "sing a cheerful song every turn";
+
+ msg_print("You hear a little song in your head in some unknown tongue:");
+ msg_print("'Avec le casque Lebohaum y a jamais d'anicroches, je parcours les dongeons,");
+ msg_print("j'en prend plein la caboche. Avec le casque Lebohaum, tout ces monstres a la");
+ msg_print("con, je leur met bien profond: c'est moi le maitre du dongeon!'");
+
+ o_ptr->timeout = 3;
+
+ break;
+ }
+ case ACT_DURANDIL:
+ {
+ if (!doit) return "sing a cheerful song every turn";
+
+ msg_print("You hear a little song in your head in some unknown tongue:");
+ msg_print("'Les epees Durandils sont forgees dans les mines par des nains.");
+ msg_print("Avec ca c'est facile de tuer un troll avec une seule main. Pas besoin");
+ msg_print("de super entrainement nis de niveau 28. Quand tu sors l'instrument");
+ msg_print("c'est l'ennemi qui prend la fuite! Avec ton epee Durandil quand tu");
+ msg_print("parcours les chemins, tu massacre sans peine les brigands et les gobelins,");
+ msg_print("les rats geants, les ogres mutants, les zombies et les liches, tu les");
+ msg_print("decoupe en tranches comme si c'etait des parts de quiches.");
+ msg_print("Les epees Durandil! Les epees Durandil!");
+ msg_print("Quand tu la sort dans un dongeon au moins t'as pas l'air debile.");
+ msg_print("C'est l'arme des bourins qui savent etre subtils.");
+ msg_print("Ne partez pas a l'aventure sans votre epee Durandil!'");
+
+ o_ptr->timeout = 3;
+
+ break;
+ }
+ case ACT_RADAGAST:
+ {
+ if (!doit) return "purity and health every 15000 turns";
+
+ activate_radagast();
+ o_ptr->timeout = 15000;
+
+ break;
+ }
+ case ACT_VALAROMA:
+ {
+ if (!doit) return "banish evil (level x5) every 250 turns";
+
+ activate_valaroma();
+ o_ptr->timeout = 250;
+ break;
+ }
default:
{
msg_format("Unknown activation effect: %d.", spell);
diff --git a/src/defines.h b/src/defines.h
index 175ef9cb..81ae7833 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -1293,9 +1293,14 @@
#define ACT_BR_BALANCE 194
#define ACT_BR_LIGHT 195
#define ACT_BR_POWER 196
-#define ACT_GROW_MOLD 197
-#define ACT_MUSIC 200
-/* 170 -> unused */
+#define ACT_GROW_MOLD 197
+#define ACT_MUSIC 200
+#define ACT_ETERNAL_FLAME 201
+#define ACT_MAGGOT 202
+#define ACT_LEBOHAUM 203
+#define ACT_DURANDIL 204
+#define ACT_RADAGAST 205 /* Theme */
+#define ACT_VALAROMA 206 /* Theme */
/*** Object "tval" and "sval" codes ***/
diff --git a/src/init1.cc b/src/init1.cc
index 52405944..7e278d0e 100644
--- a/src/init1.cc
+++ b/src/init1.cc
@@ -1398,6 +1398,12 @@ static const char *activation_names[] =
"XXX198",
"XXX199",
"MUSIC", /* 200*/
+ "ETERNAL_FLAME", /* 201 */
+ "MAGGOT", /* 202 */
+ "LEBOHAUM", /* 203 */
+ "DURANDIL", /* 204 */
+ "RADAGAST", /* 205, Theme */
+ "VALAROMA", /* 206, Theme */
""
};
@@ -1670,14 +1676,18 @@ static errr grab_one_player_race_flag(u32b *f1, u32b *f2, cptr what)
}
/* Get an activation number (good for artifacts, recipes, egos, and object kinds) */
-int get_activation(char *activation)
+static int get_activation(char *activation)
{
int i;
for ( i = 0 ; activation_names[i][0] ; i++)
+ {
if (!strncmp(activation_names[i], activation, 19))
{
return i;
}
+ }
+
+ msg_format("Unknown activation '%s'.", activation);
return -1;
}
diff --git a/src/spell_type.cc b/src/spell_type.cc
index 7931069a..a3e80669 100644
--- a/src/spell_type.cc
+++ b/src/spell_type.cc
@@ -46,8 +46,6 @@ struct spell_type
range_type mana_range;
- dice_type activation_timeout; /* Timeout for activation (if any) */
-
int school_idxs_count;
s32b school_idxs[3];
@@ -73,7 +71,6 @@ public:
, inertia_difficulty(-1)
, inertia_delay(-1)
, mana_range({ -1, -1 })
- , activation_timeout({ 0, 0, 0 })
, school_idxs_count(0)
, school_idxs{ -1, -1, -1 }
{
@@ -218,13 +215,6 @@ void spell_type_init_geomancy(spell_type *spell,
spell->depend_func = depend_func;
}
-void spell_type_set_activation_timeout(spell_type *spell, cptr timeout_s)
-{
- assert(spell != NULL);
-
- dice_parse_checked(&spell->activation_timeout, timeout_s);
-}
-
void spell_type_set_difficulty(spell_type *spell, byte skill_level, s32b failure_rate)
{
assert(spell != NULL);
@@ -326,22 +316,6 @@ long spell_type_roll_charges(spell_type *spell)
return dice_roll(&spell->device_charges);
}
-void spell_type_activation_description(spell_type *spell, char *buf)
-{
- char turns[32];
-
- dice_print(&spell->activation_timeout, turns);
-
- assert(spell->m_description.size() > 0);
-
- sprintf(buf, "%s every %s turns", spell->m_description.at(0).c_str(), turns);
-}
-
-int spell_type_activation_roll_timeout(spell_type *spell)
-{
- return dice_roll(&spell->activation_timeout);
-}
-
device_allocation *spell_type_device_allocation(spell_type *spell, byte tval)
{
for (auto device_allocation_ptr: spell->m_device_allocation)
diff --git a/src/spell_type.hpp b/src/spell_type.hpp
index db0b2409..76e508a0 100644
--- a/src/spell_type.hpp
+++ b/src/spell_type.hpp
@@ -51,7 +51,6 @@ void spell_type_init_geomancy(spell_type *spell,
casting_result (*effect_func)(int o_idx),
bool_ (*depend_func)());
-void spell_type_set_activation_timeout(spell_type *spell, cptr timeout_s);
void spell_type_set_inertia(spell_type *spell, s32b difficulty, s32b delay);
void spell_type_set_difficulty(spell_type *spell, byte skill_level, s32b failure_rate);
void spell_type_set_mana(spell_type *spell, s32b min, s32b max);
@@ -71,8 +70,6 @@ casting_result spell_type_produce_effect(spell_type *spell, int o_idx);
cptr spell_type_name(spell_type *spell);
int spell_type_skill_level(spell_type *spell);
long spell_type_roll_charges(spell_type *spell);
-void spell_type_activation_description(spell_type *spell, char *buf);
-int spell_type_activation_roll_timeout(spell_type *spell);
struct device_allocation *spell_type_device_allocation(spell_type *spell, byte tval);
bool_ spell_type_uses_piety_to_cast(spell_type *spell);
bool_ spell_type_castable_while_blind(spell_type *spell);
diff --git a/src/spells3.cc b/src/spells3.cc
index 3cb1c5de..f6414df5 100644
--- a/src/spells3.cc
+++ b/src/spells3.cc
@@ -131,14 +131,8 @@ s32b DEVICE_WISH;
s32b DEVICE_SUMMON;
s32b DEVICE_MANA;
s32b DEVICE_NOTHING;
-s32b DEVICE_LEBOHAUM;
-s32b DEVICE_MAGGOT;
s32b DEVICE_HOLY_FIRE;
-s32b DEVICE_ETERNAL_FLAME;
-s32b DEVICE_DURANDIL;
s32b DEVICE_THUNDERLORDS;
-s32b DEVICE_RADAGAST = -1;
-s32b DEVICE_VALAROMA = -1;
s32b MUSIC_STOP;
s32b MUSIC_HOLD;
@@ -3664,32 +3658,6 @@ casting_result device_nothing(int item)
return CAST_HIDDEN;
}
-casting_result device_lebohaum(int item)
-{
- msg_print("You hear a little song in your head in some unknown tongue:");
- msg_print("'Avec le casque Lebohaum y a jamais d'anicroches, je parcours les dongeons,");
- msg_print("j'en prend plein la caboche. Avec le casque Lebohaum, tout ces monstres a la");
- msg_print("con, je leur met bien profond: c'est moi le maitre du dongeon!'");
- return CAST_OBVIOUS;
-}
-
-casting_result device_maggot(int item)
-{
- int dir;
-
- if (!get_aim_dir(&dir))
- {
- return NO_CAST;
- }
-
- return cast(fire_ball(GF_TURN_ALL, dir, 40, 2));
-}
-
-const char *device_maggot_info()
-{
- return "power 40 rad 2";
-}
-
static int holy_fire_damage()
{
return 50 + get_level_s(DEVICE_HOLY_FIRE, 300);
@@ -3709,105 +3677,6 @@ const char *device_holy_fire_info()
return buf;
}
-static int get_eternal_artifact_idx(object_type *o_ptr)
-{
- if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_LONG_SWORD)) {
- return 147;
- } else if ((o_ptr->tval == TV_MSTAFF) && (o_ptr->sval == SV_MSTAFF)) {
- return 127;
- } else if ((o_ptr->tval == TV_BOW) && (o_ptr->sval == SV_HEAVY_XBOW)) {
- return 152;
- } else if ((o_ptr->tval == TV_DRAG_ARMOR) && (o_ptr->sval == SV_DRAGON_POWER)) {
- return 17;
- }
-
- if (game_module_idx == MODULE_THEME)
- {
- if ((o_ptr->tval == TV_HAFTED) && (o_ptr->sval == SV_LUCERN_HAMMER)) {
- return 241;
- } else if ((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_TRIDENT)) {
- return 242;
- } else if ((o_ptr->tval == TV_AXE) && (o_ptr->sval == SV_BROAD_AXE)) {
- return 243;
- } else if ((o_ptr->tval == TV_BOW) && (o_ptr->sval == SV_LONG_BOW)) {
- return 245;
- } else if ((o_ptr->tval == TV_BOOMERANG) && (o_ptr->sval == SV_BOOM_METAL)) {
- return 247;
- } else if ((o_ptr->tval == TV_BOW) && (o_ptr->sval == SV_SLING)) {
- return 246;
- } else if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_RAPIER)) {
- return 244;
- } else if ((o_ptr->tval == TV_AMULET) && (o_ptr->sval == SV_AMULET_SPELL)) {
- return 248;
- }
- }
-
- /* Not usable */
- return -1;
-}
-
-static bool_ eternal_flame_item_tester_hook(object_type *o_ptr)
-{
- if ((o_ptr->name1 > 0) ||
- (o_ptr->name2 > 0))
- {
- return FALSE;
- }
-
- return (get_eternal_artifact_idx(o_ptr) >= 0);
-}
-
-casting_result device_eternal_flame(int flame_item)
-{
- int item;
- object_type *o_ptr = NULL;
- int artifact_idx = -1;
-
- item_tester_hook = eternal_flame_item_tester_hook;
- if (!get_item(&item,
- "Which object do you want to imbue?",
- "You have no objects to imbue.",
- USE_INVEN))
- {
- return NO_CAST;
- }
-
- /* Get the artifact idx */
- artifact_idx = get_eternal_artifact_idx(o_ptr);
- assert(artifact_idx >= 0);
-
- /* Forge the item */
- o_ptr = get_object(item);
- o_ptr->name1 = artifact_idx;
-
- apply_magic(o_ptr, -1, TRUE, TRUE, TRUE);
-
- o_ptr->found = OBJ_FOUND_SELFMADE;
-
- inven_item_increase(flame_item, -1);
- inven_item_describe(flame_item);
- inven_item_optimize(flame_item);
-
- return CAST_OBVIOUS;
-}
-
-casting_result device_durandil(int item)
-{
- msg_print("You hear a little song in your head in some unknown tongue:");
- msg_print("'Les epees Durandils sont forgees dans les mines par des nains.");
- msg_print("Avec ca c'est facile de tuer un troll avec une seule main. Pas besoin");
- msg_print("de super entrainement nis de niveau 28. Quand tu sors l'instrument");
- msg_print("c'est l'ennemi qui prend la fuite! Avec ton epee Durandil quand tu");
- msg_print("parcours les chemins, tu massacre sans peine les brigands et les gobelins,");
- msg_print("les rats geants, les ogres mutants, les zombies et les liches, tu les");
- msg_print("decoupe en tranches comme si c'etait des parts de quiches.");
- msg_print("Les epees Durandil! Les epees Durandil!");
- msg_print("Quand tu la sort dans un dongeon au moins t'as pas l'air debile.");
- msg_print("C'est l'arme des bourins qui savent etre subtils.");
- msg_print("Ne partez pas a l'aventure sans votre epee Durandil!'");
- return CAST_OBVIOUS;
-}
-
casting_result device_thunderlords(int item)
{
switch (game_module_idx)
@@ -3846,47 +3715,6 @@ casting_result device_thunderlords(int item)
}
}
-casting_result device_radagast(int item)
-{
- cmsg_print(TERM_GREEN, "The staff's power cleanses you completely!");
- remove_all_curse();
- do_res_stat(A_STR, TRUE);
- do_res_stat(A_CON, TRUE);
- do_res_stat(A_DEX, TRUE);
- do_res_stat(A_WIS, TRUE);
- do_res_stat(A_INT, TRUE);
- do_res_stat(A_CHR, TRUE);
- restore_level();
- // clean_corruptions(); TODO: Do we want to implement this?
- hp_player(5000);
- heal_insanity(5000);
- set_poisoned(0);
- set_blind(0);
- set_confused(0);
- set_image(0);
- set_stun(0);
- set_cut(0);
- set_parasite(0, 0);
-
- if (p_ptr->black_breath)
- {
- msg_print("The hold of the Black Breath on you is broken!");
- }
- p_ptr->black_breath = FALSE;
-
- p_ptr->update |= PU_BONUS;
- p_ptr->window |= PW_PLAYER;
-
- return CAST_OBVIOUS;
-}
-
-casting_result device_valaroma(int item)
-{
- int power = 5 * p_ptr->lev;
- banish_evil(power);
- return CAST_HIDDEN;
-}
-
void static start_lasting_spell(int spl)
{
p_ptr->music_extra = -spl;
diff --git a/src/spells3.hpp b/src/spells3.hpp
index 17f34947..b9ad44e2 100644
--- a/src/spells3.hpp
+++ b/src/spells3.hpp
@@ -329,14 +329,8 @@ extern s32b DEVICE_WISH;
extern s32b DEVICE_SUMMON;
extern s32b DEVICE_MANA;
extern s32b DEVICE_NOTHING;
-extern s32b DEVICE_LEBOHAUM;
-extern s32b DEVICE_MAGGOT;
extern s32b DEVICE_HOLY_FIRE;
-extern s32b DEVICE_ETERNAL_FLAME;
-extern s32b DEVICE_DURANDIL;
extern s32b DEVICE_THUNDERLORDS;
-extern s32b DEVICE_RADAGAST;
-extern s32b DEVICE_VALAROMA;
casting_result device_heal_monster(int);
const char *device_heal_monster_info();
@@ -347,16 +341,9 @@ casting_result device_summon_monster(int);
casting_result device_mana(int);
const char *device_mana_info();
casting_result device_nothing(int);
-casting_result device_lebohaum(int);
-casting_result device_maggot(int);
-const char *device_maggot_info();
casting_result device_holy_fire(int);
const char *device_holy_fire_info();
-casting_result device_eternal_flame(int);
-casting_result device_durandil(int);
casting_result device_thunderlords(int);
-casting_result device_radagast(int);
-casting_result device_valaroma(int);
extern s32b MUSIC_STOP;
extern s32b MUSIC_HOLD;
diff --git a/src/spells5.cc b/src/spells5.cc
index 4ce897b4..4bd1886b 100644
--- a/src/spells5.cc
+++ b/src/spells5.cc
@@ -97,28 +97,6 @@ s16b get_random_stick(byte tval, int level)
static void spells_init_tome()
{
{
- spell_type *spell = spell_new(&DEVICE_LEBOHAUM, "Artifact Lebauhaum");
- spell_type_set_activation_timeout(spell, "3");
- spell_type_describe(spell, "sing a cheerful song");
- spell_type_set_mana(spell, 0, 0);
- spell_type_set_difficulty(spell, 1, 0);
- spell_type_init_device(spell,
- no_info,
- device_lebohaum);
- }
-
- {
- spell_type *spell = spell_new(&DEVICE_DURANDIL, "Artifact Durandil");
- spell_type_set_activation_timeout(spell, "3");
- spell_type_describe(spell, "sing a cheerful song");
- spell_type_set_mana(spell, 0, 0);
- spell_type_set_difficulty(spell, 1, 0);
- spell_type_init_device(spell,
- no_info,
- device_durandil);
- }
-
- {
spell_type *spell = spell_new(&DEVICE_THUNDERLORDS, "Artifact Thunderlords");
spell_type_describe(spell, "A thunderlord will appear to transport you quickly to the surface.");
spell_type_set_mana(spell, 1, 1);
@@ -384,28 +362,6 @@ static void spells_init_theme()
spell_type_add_device_allocation(spell, device_allocation);
}
}
-
- {
- spell_type *spell = spell_new(&DEVICE_RADAGAST, "Artifact Radagast");
- spell_type_set_activation_timeout(spell, "15000");
- spell_type_describe(spell, "purity and health");
- spell_type_set_mana(spell, 0, 0);
- spell_type_set_difficulty(spell, 1, 10);
- spell_type_init_device(spell,
- no_info,
- device_radagast);
- }
-
- {
- spell_type *spell = spell_new(&DEVICE_VALAROMA, "Artifact Valaroma");
- spell_type_set_activation_timeout(spell, "250");
- spell_type_describe(spell, "banish evil (level x5)");
- spell_type_set_mana(spell, 0, 0);
- spell_type_set_difficulty(spell, 1, 25);
- spell_type_init_device(spell,
- no_info,
- device_valaroma);
- }
}
void school_spells_init()
@@ -2222,17 +2178,6 @@ void school_spells_init()
}
{
- spell_type *spell = spell_new(&DEVICE_MAGGOT, "Artifact Maggot");
- spell_type_set_activation_timeout(spell, "10+d50");
- spell_type_describe(spell, "terrify");
- spell_type_set_mana(spell, 7, 7);
- spell_type_set_difficulty(spell, 1, 20);
- spell_type_init_device(spell,
- device_maggot_info,
- device_maggot);
- }
-
- {
spell_type *spell = spell_new(&DEVICE_HOLY_FIRE, "Holy Fire of Mithrandir");
spell_type_describe(spell, "The Holy Fire created by this staff will deeply(double damage) burn");
spell_type_describe(spell, "all that is evil.");
@@ -2254,17 +2199,6 @@ void school_spells_init()
}
{
- spell_type *spell = spell_new(&DEVICE_ETERNAL_FLAME, "Artifact Eternal Flame");
- spell_type_set_activation_timeout(spell, "0");
- spell_type_describe(spell, "Imbuing an object with the eternal fire");
- spell_type_set_mana(spell, 0, 0);
- spell_type_set_difficulty(spell, 1, 0);
- spell_type_init_device(spell,
- no_info,
- device_eternal_flame);
- }
-
- {
spell_type *spell = spell_new(&MUSIC_STOP, "Stop singing(I)");
spell_type_describe(spell, "Stops the current song, if any.");
spell_type_set_mana(spell, 0, 0);