From c44992132757ba8bab7cd124c90b7ea6b026bbf9 Mon Sep 17 00:00:00 2001 From: Emily Date: Sat, 11 Apr 2020 18:30:39 +0100 Subject: [PATCH] Remove the Deflect Missiles spell The RMsl spell was removed in 6993651381ec54b41ad219c4c6380028b2801db6, and most of the arguments for its renewal also apply to DMsl. It's true that it requires much more investment, but that also makes it much more marginal: we carry around the code and design complexity of multiple missile repulsion levels, and the notion of non-expiring "permabuff" spells, for a spell that essentially duplicates an item property but stronger, without it even being something that most characters will have any opportunity or reason to learn. After this commit, the design is crisper and easier to learn: there's one level of missile repulsion and you get it from armour, gods, or intrinsically; spells don't come into it. --- crawl-ref/docs/develop/levels/syntax.txt | 2 +- crawl-ref/docs/options_guide.txt | 4 +-- crawl-ref/source/actor.h | 4 ++- crawl-ref/source/attribute-type.h | 2 +- crawl-ref/source/book-data.h | 2 -- crawl-ref/source/dat/descript/da/items.txt | 7 ----- crawl-ref/source/dat/descript/de/items.txt | 7 ----- crawl-ref/source/dat/descript/fi/items.txt | 7 ----- crawl-ref/source/dat/descript/fr/items.txt | 7 ----- crawl-ref/source/dat/descript/fr/spells.txt | 7 ----- crawl-ref/source/dat/descript/items.txt | 4 +-- crawl-ref/source/dat/descript/ja/items.txt | 6 ---- crawl-ref/source/dat/descript/ko/items.txt | 6 ---- crawl-ref/source/dat/descript/spells.txt | 7 ----- crawl-ref/source/dat/descript/status.txt | 5 ---- crawl-ref/source/dat/descript/zh/items.txt | 5 ---- crawl-ref/source/mon-cast.cc | 11 ++----- crawl-ref/source/mon-ench.cc | 7 +---- crawl-ref/source/mon-info.cc | 3 -- crawl-ref/source/mon-info.h | 1 - crawl-ref/source/mon-place.cc | 3 -- crawl-ref/source/mon-spell.h | 8 +++--- crawl-ref/source/monster.cc | 12 ++------ crawl-ref/source/player.cc | 16 ----------- crawl-ref/source/player.h | 1 - crawl-ref/source/rltiles/dc-spells.txt | 1 - .../gui/spells/air/deflect_missiles.png | Bin 371 -> 0 bytes crawl-ref/source/spell-type.h | 2 ++ crawl-ref/source/spl-cast.cc | 5 +--- crawl-ref/source/spl-data.h | 4 ++- crawl-ref/source/spl-goditem.cc | 9 ------ crawl-ref/source/spl-goditem.h | 1 - crawl-ref/source/spl-selfench.cc | 9 ------ crawl-ref/source/spl-selfench.h | 2 -- crawl-ref/source/spl-util.cc | 27 ------------------ 35 files changed, 25 insertions(+), 179 deletions(-) delete mode 100644 crawl-ref/source/rltiles/gui/spells/air/deflect_missiles.png diff --git a/crawl-ref/docs/develop/levels/syntax.txt b/crawl-ref/docs/develop/levels/syntax.txt index 14c435b699a..1a8f30e2b64 100644 --- a/crawl-ref/docs/develop/levels/syntax.txt +++ b/crawl-ref/docs/develop/levels/syntax.txt @@ -988,7 +988,7 @@ MONS: (list of monsters) Setting enchantments: --------------------- You may give a monster any number of enchantments. It may - start hasted, blind, have permanent DMsl, etc. The syntax is + start hasted, blind, have permanent RMsl, etc. The syntax is "ench:::" or "perm_ench::". The and fields may be omitted. Note that the enchantment will start the moment the monster is created and diff --git a/crawl-ref/docs/options_guide.txt b/crawl-ref/docs/options_guide.txt index a164f1df78f..01692a7f8d4 100644 --- a/crawl-ref/docs/options_guide.txt +++ b/crawl-ref/docs/options_guide.txt @@ -1205,9 +1205,9 @@ spell_slot ^= : Examples: * if you want Apportation to be placed on A: spell_slot ^= Apportation:A - * if you want Deflect Missiles to be placed on r normally or R if + * if you want Ozocubu's Armour to be placed on r normally or R if r is unavailable: - spell_slot ^= Deflect:rR + spell_slot ^= Ozocubu's Armour:rR * if you want the first "Bolt" spell to be placed on a, even if there is already a non-bolt spell there: spell_slot ^= Bolt:+a diff --git a/crawl-ref/source/actor.h b/crawl-ref/source/actor.h index 13af4591c0c..f21fff6a518 100644 --- a/crawl-ref/source/actor.h +++ b/crawl-ref/source/actor.h @@ -276,7 +276,9 @@ class actor virtual int shield_bypass_ability(int tohit) const = 0; virtual void shield_block_succeeded(actor *foe); virtual int missile_deflection() const = 0; // 1 = RMsl, 2 = DMsl - virtual void ablate_deflection() = 0; + virtual void ablate_deflection() + { + } // Combat-related virtual class methods virtual int unadjusted_body_armour_penalty() const = 0; diff --git a/crawl-ref/source/attribute-type.h b/crawl-ref/source/attribute-type.h index 29727bc0a75..46132cba38f 100644 --- a/crawl-ref/source/attribute-type.h +++ b/crawl-ref/source/attribute-type.h @@ -63,8 +63,8 @@ enum attribute_type ATTR_BARBS_POW, // How badly we are currently skewered #if TAG_MAJOR_VERSION == 34 ATTR_REPEL_MISSILES, // Repel missiles active -#endif ATTR_DEFLECT_MISSILES, // Deflect missiles active +#endif ATTR_PORTAL_PROJECTILE, // Accuracy bonus during portal projectile ATTR_GOD_WRATH_XP, // How much XP before our next god wrath check? ATTR_GOD_WRATH_COUNT, // Number of stored retributions diff --git a/crawl-ref/source/book-data.h b/crawl-ref/source/book-data.h index 30c58103184..f9bc05700d5 100644 --- a/crawl-ref/source/book-data.h +++ b/crawl-ref/source/book-data.h @@ -73,7 +73,6 @@ static const vector spellbook_templates[] = SPELL_CAUSE_FEAR, SPELL_VIOLENT_UNRAVELLING, SPELL_SILENCE, - SPELL_DEFLECT_MISSILES, SPELL_DISCORD, }, @@ -186,7 +185,6 @@ static const vector spellbook_templates[] = { // Book of the Sky SPELL_SUMMON_LIGHTNING_SPIRE, SPELL_SILENCE, - SPELL_DEFLECT_MISSILES, SPELL_CONJURE_BALL_LIGHTNING, SPELL_TORNADO, }, diff --git a/crawl-ref/source/dat/descript/da/items.txt b/crawl-ref/source/dat/descript/da/items.txt index fbc3a0814de..308fa473d59 100644 --- a/crawl-ref/source/dat/descript/da/items.txt +++ b/crawl-ref/source/dat/descript/da/items.txt @@ -129,13 +129,6 @@ mener, at besværgelserne ikke funktionelt adskiller sig fra allerede kendte udgaver, men bogen er fortsat populær for sit bizarre billedsprog og sine kryptiske sidebemærkninger. %%%% -book of enchantments - -En grimoire, der indeholder et sortiment af magiske forbandelser og -fortryllelser, som glimter og glitrer, når man bladrer i den. Den bedårende -anakronistiske titel afspejler en tidligere, mere ufuldstændig forståelse af -disse to magiske skoler. -%%%% book of fixed level En bog med magiske besværgelser. diff --git a/crawl-ref/source/dat/descript/de/items.txt b/crawl-ref/source/dat/descript/de/items.txt index 7fb9c790756..3c11cb0cd96 100644 --- a/crawl-ref/source/dat/descript/de/items.txt +++ b/crawl-ref/source/dat/descript/de/items.txt @@ -130,13 +130,6 @@ Zaubersprüche funktionell nicht anders als Einsen sind, die schon bekannt sind, aber das Buch bleibt für seine einzig bizarre Bilder und kryptische Abschweifungen interessant. %%%% -book of enchantments - -Ein Zauberbuch, das ein Sortiment von magischen Flüchen und Zaubern enthält, -die Funkeln und Schimmer als die Seiten zugeworfen wird. Der wunderlich -unzeitgemäße Titel reflektiert ein früheres, unvollständigeres geheimnisvolles -Verständnis dieser zwei Schulen von Zauberei. -%%%% book of fixed level Ein Buch mit Zaubersprüchen. diff --git a/crawl-ref/source/dat/descript/fi/items.txt b/crawl-ref/source/dat/descript/fi/items.txt index ae689321808..9bcb87ba22b 100644 --- a/crawl-ref/source/dat/descript/fi/items.txt +++ b/crawl-ref/source/dat/descript/fi/items.txt @@ -115,13 +115,6 @@ käytännössä eroa mitenkään jo aiemmin tunnetuista loitsuista, mutta kirja edelleen suosiossa sen ainutlaatuisen eriskummallisen kuvaston ja kryptisten poikkeamien takia. %%%% -book of enchantments - -Tämä kirja sisältää valikoiman Manipulaatioita ja Lumouksia, ja sen sivut -kimaltelevat ja hohtavat käännettäessä. Epätavallisen aikaan sopimaton otsikko -kuvastaa aikaisempaa, epätäydellisempää ymmärrystä näistä kahdesta magian -koulukunnasta. -%%%% book of fixed level Taikoja sisältävä kirja. diff --git a/crawl-ref/source/dat/descript/fr/items.txt b/crawl-ref/source/dat/descript/fr/items.txt index 4e7fadefffe..2e3accf9709 100644 --- a/crawl-ref/source/dat/descript/fr/items.txt +++ b/crawl-ref/source/dat/descript/fr/items.txt @@ -212,13 +212,6 @@ valoir que les sorts ne sont fonctionnellement pas différents de ceux déjà connus, mais le livre reste populaire pour l'extraordinaire bizarrerie de son imagerie et pour ses digressions cryptiques. %%%% -book of enchantments - -Un livre contenant un assortiment de Malédictions et de Charmes magiques qui -crépitent et chatoient lorsque les pages sont tournées; Le titre quelque peu -anachronique reflète une plus ancienne et incomplète compréhension de ces deux -écoles de magie. -%%%% book of envenomations Un livre de sorts qui brille d'une lumière verte. La première édition de ce diff --git a/crawl-ref/source/dat/descript/fr/spells.txt b/crawl-ref/source/dat/descript/fr/spells.txt index fd6289d340c..0e787cd386c 100644 --- a/crawl-ref/source/dat/descript/fr/spells.txt +++ b/crawl-ref/source/dat/descript/fr/spells.txt @@ -233,13 +233,6 @@ Debugging Ray spell Un rayon provoquant des dégâts massif (1500 pv) et qui touche toujours. %%%% -Deflect Missiles spell - -Ce sort protège le sorcier de toutes attaques par projectiles, en les rendant -plus facile à esquiver. Ce sort est extrêmement efficace contre les attaques -mono-cible et pénétrantes. Chaque fois qu'un projectile est dévié, le sort -risque d'expirer avec des chances plus faibles à haute puissance. -%%%% Dig spell Ce sort forme des tunnels au travers la pierre brute. diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index f136385892d..6a28e6e5511 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -169,8 +169,8 @@ and cryptic digressions to describe spells drawn from the mystic's visions. %%%% book of enchantments -A spellbook containing an assortment of powerful Hexes and Charms, which -sparkles and shimmers as the pages are flipped. +A spellbook containing an assortment of powerful Hexes, which sparkles and +shimmers as the pages are flipped. %%%% book of fire diff --git a/crawl-ref/source/dat/descript/ja/items.txt b/crawl-ref/source/dat/descript/ja/items.txt index f5cba00edd4..960493c6a08 100644 --- a/crawl-ref/source/dat/descript/ja/items.txt +++ b/crawl-ref/source/dat/descript/ja/items.txt @@ -118,12 +118,6 @@ book of dreams これらの呪文は機能的にはすでに知られているものと違いはないと主張する。しかし、 この本はその比類なき奇妙な描写や謎めいた余談のため、依然として人気がある。 %%%% -book of enchantments - -これはページがめくれるとかすかに輝く、呪術と秘術を詰め合わせた呪文書だ。 -奇妙で時代遅れの表題は、 -古い時代に2つの魔法領域が不完全で不可解な理解であったことを反映している。 -%%%% book of fixed level これは魔法の呪文書だ。 diff --git a/crawl-ref/source/dat/descript/ko/items.txt b/crawl-ref/source/dat/descript/ko/items.txt index 2857c884336..23c8ea4f3ac 100644 --- a/crawl-ref/source/dat/descript/ko/items.txt +++ b/crawl-ref/source/dat/descript/ko/items.txt @@ -124,12 +124,6 @@ book of dreams 다를 게 없다고 주장하지만, 책에 그려진 굉장히 기묘한 그림들과 수수께끼 같은 여담 덕분에 사람들 사이에서 유명하다. %%%% -book of enchantments - -책장을 넘길 때마다 반짝거리며 빛이 나는, 저주술과 매혹술에 대한 종합서적이다. -이 시대착오적인 제목은, 저주술과 매혹술에 대한 불완전한 예전의 마법적 이해를 -상징한다. -%%%% book of fixed level 평범한 마법책이다. diff --git a/crawl-ref/source/dat/descript/spells.txt b/crawl-ref/source/dat/descript/spells.txt index 60eb24bcfe1..3b7b6dbef0f 100644 --- a/crawl-ref/source/dat/descript/spells.txt +++ b/crawl-ref/source/dat/descript/spells.txt @@ -406,13 +406,6 @@ Debugging Ray spell Fires a ray which does massive damage (1500 hp) and always hits. %%%% -Deflect Missiles spell - -Protects the caster from all kinds of projectile attacks, making them -significantly easier to dodge. It is highly effective against both -single-target and penetrating attacks. Each time a missile is deflected the -spell has a chance of expiring, with a lower chance of expiry at high power. -%%%% Dig spell Digs a tunnel through unworked rock. diff --git a/crawl-ref/source/dat/descript/status.txt b/crawl-ref/source/dat/descript/status.txt index c77d44ea373..ec6ea9cb425 100644 --- a/crawl-ref/source/dat/descript/status.txt +++ b/crawl-ref/source/dat/descript/status.txt @@ -59,11 +59,6 @@ RMsl status You repel missiles, improving your chance to evade them. %%%% -DMsl status - -You deflect missiles, greatly improving your chance to evade them. This effect -has a chance to expire with every projectile it deflects. -%%%% Touch status Your attacks deal no damage, but have a chance of confusing monsters that they diff --git a/crawl-ref/source/dat/descript/zh/items.txt b/crawl-ref/source/dat/descript/zh/items.txt index 93d1d1ecbae..e5a40ac59e7 100644 --- a/crawl-ref/source/dat/descript/zh/items.txt +++ b/crawl-ref/source/dat/descript/zh/items.txt @@ -95,11 +95,6 @@ book of dreams 虽然有些人批评说本书中收录的法术与已知的法术并无本质区别, 本书奇特的文风与不拘一格的奇思妙想还是吸引了很多读者。 %%%% -book of enchantments - -本书中收录了一些妖术系和附魔系的法术。翻动的时候书页会发光,还会有小火花出现。 -本书的标题放在这个时代显得格格不入,这也反映了古代法师们对这两个学派的不了解。 -%%%% book of fixed level 一本魔法书。 diff --git a/crawl-ref/source/mon-cast.cc b/crawl-ref/source/mon-cast.cc index 976ee1d5de1..b3e96dd8d0c 100644 --- a/crawl-ref/source/mon-cast.cc +++ b/crawl-ref/source/mon-cast.cc @@ -1864,7 +1864,9 @@ bool setup_mons_cast(const monster* mons, bolt &pbolt, spell_type spell_cast, case SPELL_SIREN_SONG: case SPELL_AVATAR_SONG: case SPELL_REPEL_MISSILES: +#if TAG_MAJOR_VERSION == 34 case SPELL_DEFLECT_MISSILES: +#endif case SPELL_SUMMON_SCARABS: #if TAG_MAJOR_VERSION == 34 case SPELL_HUNTING_CRY: @@ -6645,11 +6647,6 @@ void mons_cast(monster* mons, bolt pbolt, spell_type spell_cast, mons->add_ench(mon_enchant(ENCH_REPEL_MISSILES)); return; - case SPELL_DEFLECT_MISSILES: - simple_monster_message(*mons, " begins deflecting missiles!"); - mons->add_ench(mon_enchant(ENCH_DEFLECT_MISSILES)); - return; - case SPELL_SUMMON_SCARABS: { const int num_scarabs = 1 + random2(mons->spell_hd(spell_cast) / 5 + 1); @@ -7939,9 +7936,6 @@ static bool _ms_waste_of_time(monster* mon, mon_spell_slot slot) case SPELL_REPEL_MISSILES: return mon->has_ench(ENCH_REPEL_MISSILES); - case SPELL_DEFLECT_MISSILES: - return mon->has_ench(ENCH_DEFLECT_MISSILES); - case SPELL_CONFUSION_GAZE: return !foe || !mon->can_see(*foe); @@ -8031,6 +8025,7 @@ static bool _ms_waste_of_time(monster* mon, mon_spell_slot slot) case SPELL_CONTROL_UNDEAD: case SPELL_DAZZLING_FLASH: case SPELL_REGENERATION: + case SPELL_DEFLECT_MISSILES: #endif case SPELL_NO_SPELL: return true; diff --git a/crawl-ref/source/mon-ench.cc b/crawl-ref/source/mon-ench.cc index ede04fac37d..7c7a32fb5a0 100644 --- a/crawl-ref/source/mon-ench.cc +++ b/crawl-ref/source/mon-ench.cc @@ -935,11 +935,6 @@ void monster::remove_enchantment_effect(const mon_enchant &me, bool quiet) simple_monster_message(*this, " is no longer repelling missiles."); break; - case ENCH_DEFLECT_MISSILES: - if (!quiet) - simple_monster_message(*this, " is no longer deflecting missiles."); - break; - case ENCH_RESISTANCE: if (!quiet) simple_monster_message(*this, " is no longer unusually resistant."); @@ -2032,8 +2027,8 @@ static const char *enchant_names[] = #endif "sap magic", "shroud", "phantom_mirror", "bribed", "permabribed", "corrosion", "gold_lust", "drained", "repel missiles", - "deflect missiles", #if TAG_MAJOR_VERSION == 34 + "deflect missiles", "negative_vuln", "condensation_shield", #endif "resistant", "hexed", "corpse_armour", diff --git a/crawl-ref/source/mon-info.cc b/crawl-ref/source/mon-info.cc index 0becc701803..0521ef81ee6 100644 --- a/crawl-ref/source/mon-info.cc +++ b/crawl-ref/source/mon-info.cc @@ -96,7 +96,6 @@ static map trivial_ench_mb_mappings = { { ENCH_SHROUD, MB_SHROUD }, { ENCH_CORROSION, MB_CORROSION }, { ENCH_REPEL_MISSILES, MB_REPEL_MSL }, - { ENCH_DEFLECT_MISSILES, MB_DEFLECT_MSL }, { ENCH_RESISTANCE, MB_RESISTANCE }, { ENCH_HEXED, MB_HEXED }, { ENCH_BRILLIANCE_AURA, MB_BRILLIANCE_AURA }, @@ -1432,8 +1431,6 @@ vector monster_info::attributes() const v.emplace_back("paralysed"); if (is(MB_REPEL_MSL)) v.emplace_back("repelling missiles"); - if (is(MB_DEFLECT_MSL)) - v.emplace_back("deflecting missiles"); if (is(MB_FEAR_INSPIRING)) v.emplace_back("inspiring fear"); if (is(MB_BREATH_WEAPON)) diff --git a/crawl-ref/source/mon-info.h b/crawl-ref/source/mon-info.h index 88c0215e594..14b41665952 100644 --- a/crawl-ref/source/mon-info.h +++ b/crawl-ref/source/mon-info.h @@ -59,7 +59,6 @@ enum monster_info_flags #if TAG_MAJOR_VERSION == 34 MB_BLEEDING, #endif - MB_DEFLECT_MSL, #if TAG_MAJOR_VERSION == 34 MB_PREP_RESURRECT, #endif diff --git a/crawl-ref/source/mon-place.cc b/crawl-ref/source/mon-place.cc index df6a45124fa..ee1598faecb 100644 --- a/crawl-ref/source/mon-place.cc +++ b/crawl-ref/source/mon-place.cc @@ -1253,9 +1253,6 @@ static monster* _place_monster_aux(const mgen_data &mg, const monster *leader, if (mon->has_spell(SPELL_REPEL_MISSILES)) mon->add_ench(ENCH_REPEL_MISSILES); - if (mon->has_spell(SPELL_DEFLECT_MISSILES)) - mon->add_ench(ENCH_DEFLECT_MISSILES); - mon->flags |= MF_JUST_SUMMONED; // Don't leave shifters in their starting shape. diff --git a/crawl-ref/source/mon-spell.h b/crawl-ref/source/mon-spell.h index 68e25cc02d3..f08113968ba 100644 --- a/crawl-ref/source/mon-spell.h +++ b/crawl-ref/source/mon-spell.h @@ -339,7 +339,7 @@ static const mon_spellbook mspell_list[] = { { SPELL_LIGHTNING_BOLT, 16, MON_SPELL_WIZARD }, { SPELL_AIRSTRIKE, 32, MON_SPELL_WIZARD }, - { SPELL_DEFLECT_MISSILES, 16, MON_SPELL_WIZARD }, + { SPELL_REPEL_MISSILES, 16, MON_SPELL_WIZARD }, } }, @@ -360,7 +360,7 @@ static const mon_spellbook mspell_list[] = { { SPELL_WIND_BLAST, 50, MON_SPELL_NATURAL | MON_SPELL_BREATH }, { SPELL_AIRSTRIKE, 29, MON_SPELL_NATURAL }, - { SPELL_DEFLECT_MISSILES, 29, MON_SPELL_NATURAL }, + { SPELL_REPEL_MISSILES, 29, MON_SPELL_NATURAL }, } }, @@ -1762,7 +1762,7 @@ static const mon_spellbook mspell_list[] = { SPELL_MASS_CONFUSION, 11, MON_SPELL_WIZARD }, { SPELL_STRIP_RESISTANCE, 11, MON_SPELL_WIZARD }, { SPELL_HASTE, 11, MON_SPELL_WIZARD }, - { SPELL_DEFLECT_MISSILES, 11, MON_SPELL_WIZARD }, + { SPELL_REPEL_MISSILES, 11, MON_SPELL_WIZARD }, { SPELL_INVISIBILITY, 11, MON_SPELL_WIZARD | MON_SPELL_EMERGENCY }, } }, @@ -1967,7 +1967,7 @@ static const mon_spellbook mspell_list[] = { SPELL_LIGHTNING_BOLT, 14, MON_SPELL_WIZARD }, { SPELL_AIRSTRIKE, 14, MON_SPELL_WIZARD }, { SPELL_AIR_ELEMENTALS, 14, MON_SPELL_WIZARD }, - { SPELL_DEFLECT_MISSILES, 14, MON_SPELL_WIZARD }, + { SPELL_REPEL_MISSILES, 14, MON_SPELL_WIZARD }, } }, diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index 35f3692b75f..ca4d7a7a33a 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -3174,9 +3174,7 @@ int monster::shield_bypass_ability(int) const int monster::missile_deflection() const { - if (has_ench(ENCH_DEFLECT_MISSILES)) - return 2; - else if (has_ench(ENCH_REPEL_MISSILES) || scan_artefacts(ARTP_RMSL)) + if (has_ench(ENCH_REPEL_MISSILES) || scan_artefacts(ARTP_RMSL)) return 1; else return 0; @@ -3184,13 +3182,7 @@ int monster::missile_deflection() const void monster::ablate_deflection() { - // TODO: deduplicate this code - if (has_ench(ENCH_DEFLECT_MISSILES)) - { - if (one_chance_in(2 + spell_hd())) - del_ench(ENCH_DEFLECT_MISSILES); - } - else if (has_ench(ENCH_REPEL_MISSILES)) + if (has_ench(ENCH_REPEL_MISSILES)) { if (one_chance_in(2 + spell_hd())) del_ench(ENCH_REPEL_MISSILES); diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index d6042667f9b..e13aa75bc27 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -5613,9 +5613,6 @@ void player::shield_block_succeeded(actor *foe) int player::missile_deflection() const { - if (attribute[ATTR_DEFLECT_MISSILES]) - return 2; - if (get_mutation_level(MUT_DISTORTION_FIELD) == 3 || you.wearing_ego(EQ_ALL_ARMOUR, SPARM_REPULSION) || scan_artefacts(ARTP_RMSL, true) @@ -5627,19 +5624,6 @@ int player::missile_deflection() const return 0; } -void player::ablate_deflection() -{ - if (attribute[ATTR_DEFLECT_MISSILES]) - { - const int power = calc_spell_power(SPELL_DEFLECT_MISSILES, true); - if (one_chance_in(2 + power / 8)) - { - attribute[ATTR_DEFLECT_MISSILES] = 0; - mprf(MSGCH_DURATION, "You feel less protected from missiles."); - } - } -} - /** * What's the base value of the penalties the player receives from their * body armour? diff --git a/crawl-ref/source/player.h b/crawl-ref/source/player.h index b2375a30b45..c48831bf3af 100644 --- a/crawl-ref/source/player.h +++ b/crawl-ref/source/player.h @@ -834,7 +834,6 @@ class player : public actor int shield_bypass_ability(int tohit) const override; void shield_block_succeeded(actor *foe) override; int missile_deflection() const override; - void ablate_deflection() override; // Combat-related adjusted penalty calculation methods int unadjusted_body_armour_penalty() const override; diff --git a/crawl-ref/source/rltiles/dc-spells.txt b/crawl-ref/source/rltiles/dc-spells.txt index 1e48119d148..6ef82ba2972 100644 --- a/crawl-ref/source/rltiles/dc-spells.txt +++ b/crawl-ref/source/rltiles/dc-spells.txt @@ -2,7 +2,6 @@ airstrike AIRSTRIKE chain_lightning CHAIN_LIGHTNING conjure_ball_lightning CONJURE_BALL_LIGHTNING -deflect_missiles DEFLECT_MISSILES lightning_bolt LIGHTNING_BOLT repel_missiles REPEL_MISSILES shock SHOCK diff --git a/crawl-ref/source/rltiles/gui/spells/air/deflect_missiles.png b/crawl-ref/source/rltiles/gui/spells/air/deflect_missiles.png deleted file mode 100644 index a8876356d6bcc597f98bae044040fce7330cc268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyt^qzFu0R?D3=9}-Y#3(GW;k%b zz`(%v-aQ9N1_uWRe+7mHAo%~khs|Qbgb9;f8IBw|a{B-O%h?RCrfdIuvHSmt^#A|= z+uz~Y05pWLB*-tA!Qt7BG$7}Wr;B4q#jUlI9`ZFS@U*CJUF1;`^5Cz0DeLANn?5FY zi>nyke;CW#Z~f&>wl%MF_~m@I2L8i~_BYhEtYZ{lyzu*h;64|FRa}bC1*~Kbw8vB| zS5YYLf5AG>wOy)z*TZ$zJ=-3tD7&5KHkp5P#)0;=p??%2H_h3a!FFv|*u0Fqx+xF; zO;23bT&{jxW;To21QUsnJ4@#Vr?^-@+NfSsbf)ci$d6P5CbdOVl#4A}1I}0)mCw}{ z=k8zWQ6}(K^J;}Vt9G+d;B&t?x$nofUcV%Gdy|i_e%-mRbx+?GHpf}%^3Mr;Z6OW{ NI!{+Wmvv4FO#leVm?8iG diff --git a/crawl-ref/source/spell-type.h b/crawl-ref/source/spell-type.h index 2cd91beb63e..dac7d600f9d 100644 --- a/crawl-ref/source/spell-type.h +++ b/crawl-ref/source/spell-type.h @@ -132,7 +132,9 @@ enum spell_type : int SPELL_NECROMUTATION, SPELL_DEATH_CHANNEL, SPELL_SYMBOL_OF_TORMENT, +#if TAG_MAJOR_VERSION == 34 SPELL_DEFLECT_MISSILES, +#endif SPELL_THROW_ICICLE, SPELL_GLACIATE, SPELL_AIRSTRIKE, diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc index a72f903f65e..5add87a61b8 100644 --- a/crawl-ref/source/spl-cast.cc +++ b/crawl-ref/source/spl-cast.cc @@ -1818,10 +1818,6 @@ static spret _do_cast(spell_type spell, int powc, const dist& spd, case SPELL_NECROMUTATION: return cast_transform(powc, transformation::lich, fail); - // General enhancement. - case SPELL_DEFLECT_MISSILES: - return deflection(powc, fail); - case SPELL_SWIFTNESS: return cast_swiftness(powc, fail); @@ -2348,6 +2344,7 @@ const set removed_spells = SPELL_CIGOTUVIS_EMBRACE, SPELL_DELAYED_FIREBALL, SPELL_REGENERATION, + SPELL_DEFLECT_MISSILES, #endif }; diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h index 45162e2b144..75b27df9cf7 100644 --- a/crawl-ref/source/spl-data.h +++ b/crawl-ref/source/spl-data.h @@ -1270,6 +1270,7 @@ static const struct spell_desc spelldata[] = TILEG_SYMBOL_OF_TORMENT, }, +#if TAG_MAJOR_VERSION == 34 { SPELL_DEFLECT_MISSILES, "Deflect Missiles", spschool::charms | spschool::air, @@ -1278,8 +1279,9 @@ static const struct spell_desc spelldata[] = 200, -1, -1, 3, 0, - TILEG_DEFLECT_MISSILES, + TILEG_ERROR, }, +#endif { SPELL_THROW_ICICLE, "Throw Icicle", diff --git a/crawl-ref/source/spl-goditem.cc b/crawl-ref/source/spl-goditem.cc index 11827429078..6c57c67f958 100644 --- a/crawl-ref/source/spl-goditem.cc +++ b/crawl-ref/source/spl-goditem.cc @@ -377,15 +377,6 @@ struct player_debuff_effects */ static void _dispellable_player_buffs(player_debuff_effects &buffs) { - // attributes - static const attribute_type dispellable_attributes[] = { - ATTR_DEFLECT_MISSILES, - }; - - for (auto attribute : dispellable_attributes) - if (you.attribute[attribute]) - buffs.attributes.push_back(attribute); - // durations for (unsigned int i = 0; i < NUM_DURATIONS; ++i) { diff --git a/crawl-ref/source/spl-goditem.h b/crawl-ref/source/spl-goditem.h index ab95a10b2d7..5ac698b5255 100644 --- a/crawl-ref/source/spl-goditem.h +++ b/crawl-ref/source/spl-goditem.h @@ -38,7 +38,6 @@ const enchant_type dispellable_enchantments[] = ENCH_SHROUD, ENCH_SAP_MAGIC, ENCH_REPEL_MISSILES, - ENCH_DEFLECT_MISSILES, ENCH_RESISTANCE, ENCH_HEXED, ENCH_PAIN_BOND, diff --git a/crawl-ref/source/spl-selfench.cc b/crawl-ref/source/spl-selfench.cc index 71a62e6613a..93f85c3727a 100644 --- a/crawl-ref/source/spl-selfench.cc +++ b/crawl-ref/source/spl-selfench.cc @@ -70,15 +70,6 @@ spret ice_armour(int pow, bool fail) return spret::success; } -spret deflection(int /*pow*/, bool fail) -{ - fail_check(); - you.attribute[ATTR_DEFLECT_MISSILES] = 1; - mpr("You feel very safe from missiles."); - - return spret::success; -} - spret cast_revivification(int pow, bool fail) { fail_check(); diff --git a/crawl-ref/source/spl-selfench.h b/crawl-ref/source/spl-selfench.h index 1c6f9551982..3293817a954 100644 --- a/crawl-ref/source/spl-selfench.h +++ b/crawl-ref/source/spl-selfench.h @@ -12,8 +12,6 @@ int harvest_corpses(const actor &harvester, bool dry_run = false, bool defy_god = false); spret corpse_armour(int pow, bool fail); -spret deflection(int pow, bool fail); - spret cast_revivification(int pow, bool fail); spret cast_swiftness(int power, bool fail); diff --git a/crawl-ref/source/spl-util.cc b/crawl-ref/source/spl-util.cc index 6c0738de8d2..ef2a37331e2 100644 --- a/crawl-ref/source/spl-util.cc +++ b/crawl-ref/source/spl-util.cc @@ -341,27 +341,6 @@ bool add_spell_to_memory(spell_type spell) return true; } -static void _remove_spell_attributes(spell_type spell) -{ - switch (spell) - { - case SPELL_DEFLECT_MISSILES: - if (you.attribute[ATTR_DEFLECT_MISSILES]) - { - const int orig_defl = you.missile_deflection(); - you.attribute[ATTR_DEFLECT_MISSILES] = 0; - mprf(MSGCH_DURATION, "You feel %s from missiles.", - you.missile_deflection() < orig_defl - ? "less protected" - : "your spell is no longer protecting you"); - } - break; - default: - break; - } - return; -} - bool del_spell_from_memory_by_slot(int slot) { ASSERT_RANGE(slot, 0, MAX_KNOWN_SPELLS); @@ -372,7 +351,6 @@ bool del_spell_from_memory_by_slot(int slot) spell_skills(you.spells[slot], you.stop_train); mprf("Your memory of %s unravels.", spell_title(you.spells[slot])); - _remove_spell_attributes(you.spells[slot]); you.spells[slot] = SPELL_NO_SPELL; @@ -1176,11 +1154,6 @@ string spell_uselessness_reason(spell_type spell, bool temp, bool prevent, return "darkness is useless against divine light."; break; - case SPELL_DEFLECT_MISSILES: - if (temp && you.attribute[ATTR_DEFLECT_MISSILES]) - return "you're already deflecting missiles."; - break; - case SPELL_STATUE_FORM: if (SP_GARGOYLE == you.species) return "you're already a statue.";