diff options
-rw-r--r-- | lib/edit/a_info.txt | 10 | ||||
-rw-r--r-- | lib/edit/k_info.txt | 4 | ||||
-rw-r--r-- | lib/mods/theme/edit/a_info.txt | 6 | ||||
-rw-r--r-- | lib/mods/theme/edit/k_info.txt | 4 | ||||
-rw-r--r-- | src/cmd6.cc | 246 | ||||
-rw-r--r-- | src/defines.h | 11 | ||||
-rw-r--r-- | src/init1.cc | 12 | ||||
-rw-r--r-- | src/spell_type.cc | 26 | ||||
-rw-r--r-- | src/spell_type.hpp | 3 | ||||
-rw-r--r-- | src/spells3.cc | 172 | ||||
-rw-r--r-- | src/spells3.hpp | 13 | ||||
-rw-r--r-- | src/spells5.cc | 66 |
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); |