summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2015-02-23 09:11:56 +0100
committerBardur Arantsson <bardur@scientician.net>2015-02-23 09:11:56 +0100
commitd63789e481ea6cc451934ca868f7de1aec6abc38 (patch)
tree3d01cc44331d8a119d1f9c333a37622dee71ecc8
parente479a53de8b12bc754b966bb486bb1cbc78f5ed0 (diff)
Change "activation spells" to use the old style
This fits in better with the rest of the code and lets us clean up the spell handling a bit. Activation failure rate for the moved items may have changed slightly, but it doesn't seem like this would be much of an issue.
-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);