Dungeon Crawl Stone Soup Tracker - DCSS
|
|||||
Viewing Issue Advanced Details | |||||
|
|||||
ID: | Category: | Severity: | Reproducibility: | Date Submitted: | Last Update: |
10931 | Patches | feature | N/A | 2017-02-06 09:05 | 2017-03-21 22:40 |
|
|||||
Reporter: | minmay | Local or Remote: | Both | ||
Assigned To: | Brannock | Operating System: | All | ||
Priority: | normal | Console or Tiles: | Both | ||
Status: | closed | Product Branch: | 0.21 ancient branch | ||
Product Version: | Resolution: | done | |||
Projection: | none | ||||
ETA: | none | Fixed in Branch: | 0.21 ancient branch | ||
|
|||||
Summary: | 0010931: Replace Delayed Fireball with new spell: Ignition | ||||
Description: |
This level 8 Fire spell drops a fireball-like explosion on every monster in LOS. The explosions don't affect the player or allies. The spell is strong against monsters adjacent to one another (as each monster gets hit multiple times) but bad against single targets. Currently the damage per fireball is the same as the regular Fireball spell. Ignition replaces Delayed Fireball in the book of Fire, and Fireball in the book of the Tempests. Tile is included. I am not proud of this code. |
||||
Steps To Reproduce: | |||||
Additional Information: | |||||
System Description: | |||||
Relationships | |||||
Attached Files: |
0001-Replace-Delayed-Fireball-with-new-spell-Ignition.patch [^] (24,334 bytes) 2017-02-06 09:05 [Show Content] [Hide Content]From 0ec4d9b509898416c55abedc754148b9c14f7946 Mon Sep 17 00:00:00 2001 From: Andrew Minton <a@cowmuffins.net> Date: Mon, 6 Feb 2017 00:56:21 -0700 Subject: [PATCH] Replace Delayed Fireball with new spell: Ignition This level 8 Fire spell drops a fireball-like explosion on every monster in LOS. The explosions don't affect the player or allies. The spell is strong against monsters adjacent to one another (as each monster gets hit multiple times) but bad against single targets. Currently the damage per fireball is the same as the regular Fireball spell. Ignition replaces Delayed Fireball in the book of Fire, and Fireball in the book of the Tempests. --- crawl-ref/source/ability.cc | 8 ++ crawl-ref/source/beam.cc | 2 +- crawl-ref/source/book-data.h | 4 +- crawl-ref/source/dat/descript/spells.txt | 7 ++ crawl-ref/source/enum.h | 7 +- crawl-ref/source/ghost.cc | 2 + crawl-ref/source/god-abil.cc | 3 +- crawl-ref/source/nearby-danger.cc | 2 + crawl-ref/source/player.cc | 7 +- crawl-ref/source/religion.cc | 2 + crawl-ref/source/rltiles/dc-spells.txt | 1 + .../source/rltiles/gui/spells/fire/ignition.png | Bin 0 -> 470 bytes crawl-ref/source/spl-cast.cc | 7 ++ crawl-ref/source/spl-damage.cc | 101 +++++++++++++++++++++ crawl-ref/source/spl-damage.h | 4 + crawl-ref/source/spl-data.h | 17 +++- crawl-ref/source/spl-goditem.cc | 10 +- crawl-ref/source/spl-util.cc | 11 ++- crawl-ref/source/status.cc | 2 + crawl-ref/source/status.h | 2 + crawl-ref/source/tags.cc | 2 + crawl-ref/source/tilepick.cc | 2 + 22 files changed, 189 insertions(+), 14 deletions(-) create mode 100644 crawl-ref/source/rltiles/gui/spells/fire/ignition.png diff --git a/crawl-ref/source/ability.cc b/crawl-ref/source/ability.cc index 6057a7a..d263ac7 100644 --- a/crawl-ref/source/ability.cc +++ b/crawl-ref/source/ability.cc @@ -307,8 +307,10 @@ static const ability_def Ability_List[] = { ABIL_DAMNATION, "Hurl Damnation", 0, 150, 200, 0, {FAIL_XL, 50, 1}, abflag::NONE }, +#if TAG_MAJOR_VERSION == 34 { ABIL_DELAYED_FIREBALL, "Release Delayed Fireball", 0, 0, 0, 0, {}, abflag::INSTANT }, +#endif { ABIL_STOP_SINGING, "Stop Singing", 0, 0, 0, 0, {}, abflag::NONE }, @@ -1618,7 +1620,9 @@ bool activate_talent(const talent& tal) case ABIL_STOP_FLYING: case ABIL_EVOKE_TURN_VISIBLE: case ABIL_END_TRANSFORMATION: +#if TAG_MAJOR_VERSION == 34 case ABIL_DELAYED_FIREBALL: +#endif case ABIL_STOP_SINGING: case ABIL_STOP_RECALL: case ABIL_TRAN_BAT: @@ -1806,6 +1810,7 @@ static spret_type _do_ability(const ability_def& abil, bool fail) } return frog_hop(fail); +#if TAG_MAJOR_VERSION == 34 case ABIL_DELAYED_FIREBALL: { fail_check(); @@ -1830,6 +1835,7 @@ static spret_type _do_ability(const ability_def& abil, bool fail) viewwindow(); break; } +#endif case ABIL_SPIT_POISON: // Naga poison spit { @@ -3398,9 +3404,11 @@ vector<talent> your_talents(bool check_confused, bool include_unusable) _add_talent(talents, ABIL_BREATHE_FIRE, check_confused); } +#if TAG_MAJOR_VERSION == 34 // Checking for unreleased Delayed Fireball. if (you.attribute[ ATTR_DELAYED_FIREBALL ]) _add_talent(talents, ABIL_DELAYED_FIREBALL, check_confused); +#endif if (you.duration[DUR_SONG_OF_SLAYING]) _add_talent(talents, ABIL_STOP_SINGING, check_confused); diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index edcd26f..5295bb4 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -5782,7 +5782,7 @@ bool bolt::explode(bool show_more, bool hole_in_the_middle) { ASSERT(!special_explosion); ASSERT(!in_explosion_phase); - ASSERT(ex_size > 0); + ASSERT(ex_size >= 0); // explode() can be called manually without setting real_flavour. // FIXME: The entire flavour/real_flavour thing needs some diff --git a/crawl-ref/source/book-data.h b/crawl-ref/source/book-data.h index 3cfc1f5..9fa40bd 100644 --- a/crawl-ref/source/book-data.h +++ b/crawl-ref/source/book-data.h @@ -51,8 +51,8 @@ static const vector<spell_type> spellbook_templates[] = SPELL_IGNITE_POISON, SPELL_FIREBALL, SPELL_BOLT_OF_FIRE, - SPELL_DELAYED_FIREBALL, SPELL_RING_OF_FLAMES, + SPELL_IGNITION, }, { // Book of Ice @@ -92,7 +92,7 @@ static const vector<spell_type> spellbook_templates[] = { // Book of the Tempests SPELL_DISCHARGE, SPELL_LIGHTNING_BOLT, - SPELL_FIREBALL, + SPELL_IGNITION, SPELL_TORNADO, SPELL_SHATTER, }, diff --git a/crawl-ref/source/dat/descript/spells.txt b/crawl-ref/source/dat/descript/spells.txt index 8200dc8..645fc9b 100644 --- a/crawl-ref/source/dat/descript/spells.txt +++ b/crawl-ref/source/dat/descript/spells.txt @@ -731,6 +731,13 @@ Converts all nearby poison into liquid flame, burning poisoned creatures from within. It also turns clouds of poison and mephitic gases into flame. The caster is not affected directly. %%%% +Ignition spell + +All foes in the caster's surroundings are engulfed in balls of fire. The caster +and their allies are protected from the fire and will never be harmed by this +spell. + +%%%% Infestation spell Calls forth a plague of scarabs, infesting affected creatures for a duration diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index c69f51a..3d95338 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -221,7 +221,9 @@ enum ability_type ABIL_BREATHE_ACID, ABIL_BLINK, // Others +#if TAG_MAJOR_VERSION == 34 ABIL_DELAYED_FIREBALL, +#endif ABIL_END_TRANSFORMATION, ABIL_STOP_SINGING, // From song of slaying @@ -482,7 +484,9 @@ enum attribute_type ATTR_DIVINE_DEATH_CHANNEL, ATTR_CARD_COUNTDOWN, ATTR_BANISHMENT_IMMUNITY, // banishment immunity until +#if TAG_MAJOR_VERSION == 34 ATTR_DELAYED_FIREBALL, // bwr: reserve fireballs +#endif ATTR_HELD, // caught in a net or web ATTR_ABYSS_ENTOURAGE, // maximum number of hostile monsters in // sight of the player while in the Abyss. @@ -4283,8 +4287,8 @@ enum spell_type : int SPELL_MAGIC_DART, SPELL_FIREBALL, SPELL_APPORTATION, - SPELL_DELAYED_FIREBALL, #if TAG_MAJOR_VERSION == 34 + SPELL_DELAYED_FIREBALL, SPELL_STRIKING, #endif SPELL_CONJURE_FLAME, @@ -4729,6 +4733,7 @@ enum spell_type : int SPELL_RANDOM_EFFECTS, SPELL_POISONOUS_VAPOURS, SPELL_RING_OF_THUNDER, + SPELL_IGNITION, NUM_SPELLS }; diff --git a/crawl-ref/source/ghost.cc b/crawl-ref/source/ghost.cc index a57dd94..e55e14a 100644 --- a/crawl-ref/source/ghost.cc +++ b/crawl-ref/source/ghost.cc @@ -685,8 +685,10 @@ spell_type ghost_demon::translate_spell(spell_type spell) const { case SPELL_CONTROLLED_BLINK: return SPELL_BLINK; // approximate +#if TAG_MAJOR_VERSION == 34 case SPELL_DELAYED_FIREBALL: return SPELL_FIREBALL; +#endif case SPELL_DRAGON_CALL: return SPELL_SUMMON_DRAGON; case SPELL_SWIFTNESS: diff --git a/crawl-ref/source/god-abil.cc b/crawl-ref/source/god-abil.cc index 755bb56..7c5754b 100644 --- a/crawl-ref/source/god-abil.cc +++ b/crawl-ref/source/god-abil.cc @@ -1459,7 +1459,8 @@ bool vehumet_supports_spell(spell_type spell) || spell == SPELL_OZOCUBUS_REFRIGERATION || spell == SPELL_OLGREBS_TOXIC_RADIANCE || spell == SPELL_VIOLENT_UNRAVELLING - || spell == SPELL_INNER_FLAME) + || spell == SPELL_INNER_FLAME + || spell == SPELL_IGNITION) { return true; } diff --git a/crawl-ref/source/nearby-danger.cc b/crawl-ref/source/nearby-danger.cc index 7fb90e7..2f1e0d0 100644 --- a/crawl-ref/source/nearby-danger.cc +++ b/crawl-ref/source/nearby-danger.cc @@ -416,7 +416,9 @@ void revive() set_hunger(HUNGER_DEFAULT, true); restore_stat(STAT_ALL, 0, true); +#if TAG_MAJOR_VERSION == 34 you.attribute[ATTR_DELAYED_FIREBALL] = 0; +#endif clear_trapping_net(); you.attribute[ATTR_DIVINE_VIGOUR] = 0; you.attribute[ATTR_DIVINE_STAMINA] = 0; diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index 292c227..28b3c4c 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -1288,23 +1288,28 @@ int player_spell_levels() { int sl = min(player_total_spell_levels(), 99); +#if TAG_MAJOR_VERSION == 34 bool fireball = false; bool delayed_fireball = false; +#endif for (const spell_type spell : you.spells) { +#if TAG_MAJOR_VERSION == 34 if (spell == SPELL_FIREBALL) fireball = true; else if (spell == SPELL_DELAYED_FIREBALL) delayed_fireball = true; - +#endif if (spell != SPELL_NO_SPELL) sl -= spell_difficulty(spell); } +#if TAG_MAJOR_VERSION == 34 // Fireball is free for characters with delayed fireball if (fireball && delayed_fireball) sl += spell_difficulty(SPELL_FIREBALL); +#endif // Note: This can happen because of draining. -- bwr if (sl < 0) diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index dc40f19..e11fcec 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -3881,8 +3881,10 @@ bool god_hates_ability(ability_type ability, god_type god) switch (ability) { case ABIL_BREATHE_FIRE: +#if TAG_MAJOR_VERSION == 34 case ABIL_DELAYED_FIREBALL: return god == GOD_DITHMENOS; +#endif case ABIL_EVOKE_BERSERK: return god == GOD_CHEIBRIADOS; default: diff --git a/crawl-ref/source/rltiles/dc-spells.txt b/crawl-ref/source/rltiles/dc-spells.txt index 12a57e6..13db83e 100644 --- a/crawl-ref/source/rltiles/dc-spells.txt +++ b/crawl-ref/source/rltiles/dc-spells.txt @@ -66,6 +66,7 @@ ring_of_flames RING_OF_FLAMES sticky_flame STICKY_FLAME throw_flame THROW_FLAME inner_flame INNER_FLAME +ignition IGNITION %sdir gui/spells/ice bolt_of_cold BOLT_OF_COLD diff --git a/crawl-ref/source/rltiles/gui/spells/fire/ignition.png b/crawl-ref/source/rltiles/gui/spells/fire/ignition.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf71940dd4a2de12dc4029d145c121cd1898340 GIT binary patch literal 470 zcmV;{0V)28P)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0001KP)t-s001EX z002n<0BryOk^lg<001f~D%$`6FfcG}Bmj~m06;)Mwj==CBmlNa0A5~R+erZbNdR$h zaC~}s+id`Tetv*}fd6d(kdTo7k^uj<0K~+^|Jwln+a&+nN&o)<|NkWa|4IM<Z4!B+ zNdN!<0d!JMQvg8b*k%9#0UJp~K~y-)t&@v#gCGz^<37a3&|)7DC~4IH|H$&NiHdeQ z)9f%hx@VWmbv+y&5TE;T&Oo&r&A)-R0BWu43Sb+EuXTw1Ekb1i?j7bpE=&MoRlSx# zs!SS)D*dt65KECj-|laPhWZ6C1A?I56iI}sfneA?CNfWepy}Al4#0x61`VAFn<ZQ3 z9RNToL;zxAkDR@jcgP6>6rFQMGA@9Cqf7~u#`>%4BrHUR9YekMtUy@*HC*g-aZI-T z5E4)9hH)IPmRA6tVq)+peFkXd1IPq8l<pEi1uKzoGQRKqJF;?7Bo-R*Xsqoh_#r!` zCbJh#0)>c$(Jd&x1>}*t2mLbDbYuTG_UE>3ny{L7T0f8B@`zvi8xL+7V3#@$00000 M07*qoM6N<$f}PU8*Z=?k literal 0 HcmV?d00001 diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc index 3236ee3..0ce1e13 100644 --- a/crawl-ref/source/spl-cast.cc +++ b/crawl-ref/source/spl-cast.cc @@ -1050,6 +1050,7 @@ static void _try_monster_cast(spell_type spell, int powc, static void _maybe_cancel_repeat(spell_type spell) { +#if TAG_MAJOR_VERSION == 34 switch (spell) { case SPELL_DELAYED_FIREBALL: crawl_state.cant_cmd_repeat(make_stringf("You can't repeat %s.", @@ -1059,6 +1060,7 @@ static void _maybe_cancel_repeat(spell_type spell) default: break; } +#endif } static spret_type _do_cast(spell_type spell, int powc, const dist& spd, @@ -1611,8 +1613,10 @@ static spret_type _do_cast(spell_type spell, int powc, const dist& spd, case SPELL_CALL_DOWN_DAMNATION: return cast_smitey_damnation(powc, beam) ? SPRET_SUCCESS : SPRET_ABORT; +#if TAG_MAJOR_VERSION == 34 case SPELL_DELAYED_FIREBALL: return cast_delayed_fireball(fail); +#endif // LOS spells @@ -1673,6 +1677,9 @@ static spret_type _do_cast(spell_type spell, int powc, const dist& spd, case SPELL_CLOUD_CONE: return cast_cloud_cone(&you, powc, target, fail); + case SPELL_IGNITION: + return cast_ignition(&you, powc, fail); + // Summoning spells, and other spells that create new monsters. // If a god is making you cast one of these spells, any monsters // produced will count as god gifts. diff --git a/crawl-ref/source/spl-damage.cc b/crawl-ref/source/spl-damage.cc index 89c2f5d..3a50b74 100644 --- a/crawl-ref/source/spl-damage.cc +++ b/crawl-ref/source/spl-damage.cc @@ -45,6 +45,7 @@ #include "viewchar.h" #include "view.h" +#if TAG_MAJOR_VERSION == 34 // This spell has two main advantages over Fireball: // // (1) The release is instantaneous, so monsters will not @@ -79,6 +80,7 @@ spret_type cast_delayed_fireball(bool fail) you.attribute[ATTR_DELAYED_FIREBALL] = 1; return SPRET_SUCCESS; } +#endif void setup_fire_storm(const actor *source, int pow, bolt &beam) { @@ -1828,6 +1830,105 @@ spret_type cast_ignite_poison(actor* agent, int pow, bool fail, bool tracer) return SPRET_SUCCESS; } +static void _ignition_square(const actor *agent, bolt beam, coord_def square, bool center) +{ + // HACK: bypass visual effect + beam.target = square; + beam.in_explosion_phase = true; + beam.explosion_affect_cell(square); + if (center) + noisy(spell_effect_noise(SPELL_IGNITION),square); +} + +spret_type cast_ignition(const actor *agent, int pow, bool fail) +{ + ASSERT(agent->is_player()); + + fail_check(); + + targeter_los hitfunc(agent, LOS_NO_TRANS); + + // Ignition affects squares that had hostile monsters on them at the time + // of casting. This way nothing bad happens when monsters die halfway + // through the spell. + vector<coord_def> blast_sources; + + for (actor_near_iterator ai(agent->pos(), LOS_NO_TRANS); + ai; ++ai) + { + if (ai->is_monster() && !ai->as_monster()->wont_attack()) + { + blast_sources.push_back(ai->position); + } + } + + if (blast_sources.empty()) { + canned_msg(MSG_NOTHING_HAPPENS); + } else { + mpr("The air bursts into flame!"); + + vector<coord_def> blast_adjacents; + + // Used to draw explosion cells + bolt beam_visual; + beam_visual.set_agent(agent); + beam_visual.flavour = BEAM_VISUAL; + beam_visual.glyph = dchar_glyph(DCHAR_FIRED_BURST); + beam_visual.colour = RED; + beam_visual.ex_size = 1; + beam_visual.is_explosion = true; + + // Used to deal damage; invisible + bolt beam_actual; + beam_actual.set_agent(agent); + beam_actual.flavour = BEAM_FIRE; + beam_actual.real_flavour = BEAM_FIRE; + beam_actual.glyph = 0; + beam_actual.damage = calc_dice(3, 10 + pow/2); // same as fireball for now + beam_actual.name = "fireball"; + beam_actual.colour = RED; + beam_actual.ex_size = 0; + beam_actual.is_explosion = true; + beam_actual.loudness = 0; + +#ifdef DEBUG_DIAGNOSTICS + dprf(DIAG_BEAM, "ignition dam=%dd%d", + beam_actual.damage.num, beam_actual.damage.size); +#endif + + // Fake "shaped" radius 1 explosions (skipping squares with friends). + for (coord_def pos : blast_sources) { + for (adjacent_iterator ai(pos); ai; ++ai) { + if (cell_is_solid(*ai)) + continue; + + actor *act = actor_at(*ai); + + // Friendly creature, don't blast this square. + if (act && (act == agent || (act->is_monster() + && act->as_monster()->wont_attack()))) + continue; + + blast_adjacents.push_back(*ai); + beam_visual.explosion_draw_cell(*ai); + } + beam_visual.explosion_draw_cell(pos); + } + update_screen(); + scaled_delay(50); + + // Real explosions on each individual square. + for (coord_def pos : blast_sources) { + _ignition_square(agent, beam_actual, pos, true); + } + for (coord_def pos : blast_adjacents) { + _ignition_square(agent, beam_actual, pos, false); + } + } + + return SPRET_SUCCESS; +} + int discharge_monsters(coord_def where, int pow, actor *agent) { actor* victim = actor_at(where); diff --git a/crawl-ref/source/spl-damage.h b/crawl-ref/source/spl-damage.h index 5d11324..605abce 100644 --- a/crawl-ref/source/spl-damage.h +++ b/crawl-ref/source/spl-damage.h @@ -7,7 +7,9 @@ struct bolt; class dist; +#if TAG_MAJOR_VERSION == 34 spret_type cast_delayed_fireball(bool fail); +#endif void setup_fire_storm(const actor *source, int pow, bolt &beam); spret_type cast_fire_storm(int pow, bolt &beam, bool fail); bool cast_smitey_damnation(int pow, bolt &beam); @@ -70,4 +72,6 @@ spret_type cast_random_bolt(int pow, bolt& beam, bool fail = false); size_t shotgun_beam_count(int pow); spret_type cast_scattershot(const actor *caster, int pow, const coord_def &pos, bool fail = false); + +spret_type cast_ignition(const actor *caster, int pow, bool fail = false); #endif diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h index 53902b2..0b95916 100644 --- a/crawl-ref/source/spl-data.h +++ b/crawl-ref/source/spl-data.h @@ -76,7 +76,7 @@ static const struct spell_desc spelldata[] = 1, 0, TILEG_APPORTATION, }, - +#if TAG_MAJOR_VERSION == 34 { SPELL_DELAYED_FIREBALL, "Delayed Fireball", SPTYP_FIRE | SPTYP_CONJURATION, @@ -85,9 +85,9 @@ static const struct spell_desc spelldata[] = 0, -1, -1, 7, 0, - TILEG_DELAYED_FIREBALL, + TILEG_ERROR, }, - +#endif { SPELL_CONJURE_FLAME, "Conjure Flame", SPTYP_CONJURATION | SPTYP_FIRE, @@ -3909,6 +3909,17 @@ static const struct spell_desc spelldata[] = }, { + SPELL_IGNITION, "Ignition", + SPTYP_FIRE, + SPFLAG_AREA, + 8, + 200, + -1, -1, + 8, 0, + TILEG_IGNITION, +}, + +{ SPELL_NO_SPELL, "nonexistent spell", SPTYP_NONE, SPFLAG_TESTING, diff --git a/crawl-ref/source/spl-goditem.cc b/crawl-ref/source/spl-goditem.cc index ebbb45d..fe2d256 100644 --- a/crawl-ref/source/spl-goditem.cc +++ b/crawl-ref/source/spl-goditem.cc @@ -325,8 +325,12 @@ static void _dispellable_player_buffs(player_debuff_effects &buffs) { // attributes static const attribute_type dispellable_attributes[] = { - ATTR_DELAYED_FIREBALL, ATTR_SWIFTNESS, - ATTR_REPEL_MISSILES, ATTR_DEFLECT_MISSILES, +#if TAG_MAJOR_VERSION == 34 + ATTR_DELAYED_FIREBALL, +#endif + ATTR_SWIFTNESS, + ATTR_REPEL_MISSILES, + ATTR_DEFLECT_MISSILES, }; for (auto attribute : dispellable_attributes) @@ -378,9 +382,11 @@ void debuff_player() for (auto attr : buffs.attributes) { you.attribute[attr] = 0; +#if TAG_MAJOR_VERSION == 34 if (attr == ATTR_DELAYED_FIREBALL) mprf(MSGCH_DURATION, "Your charged fireball dissipates."); else +#endif need_msg = true; } diff --git a/crawl-ref/source/spl-util.cc b/crawl-ref/source/spl-util.cc index 309573d..10c1847 100644 --- a/crawl-ref/source/spl-util.cc +++ b/crawl-ref/source/spl-util.cc @@ -355,6 +355,7 @@ static void _remove_spell_attributes(spell_type spell) : "your spell is no longer protecting you"); } break; +#if TAG_MAJOR_VERSION == 34 case SPELL_DELAYED_FIREBALL: if (you.attribute[ATTR_DELAYED_FIREBALL]) { @@ -362,6 +363,7 @@ static void _remove_spell_attributes(spell_type spell) mprf(MSGCH_DURATION, "Your charged fireball dissipates."); } break; +#endif default: break; } @@ -480,7 +482,7 @@ int spell_difficulty(spell_type which_spell) int spell_levels_required(spell_type which_spell) { int levels = spell_difficulty(which_spell); - +#if TAG_MAJOR_VERSION == 34 if (which_spell == SPELL_DELAYED_FIREBALL && you.has_spell(SPELL_FIREBALL)) { @@ -491,6 +493,7 @@ int spell_levels_required(spell_type which_spell) { levels = 0; } +#endif return levels; } @@ -1011,6 +1014,7 @@ int spell_effect_noise(spell_type spell) case SPELL_MEPHITIC_CLOUD: case SPELL_FIREBALL: case SPELL_VIOLENT_UNRAVELLING: + case SPELL_IGNITION: expl_size = 1; break; @@ -1242,12 +1246,12 @@ string spell_uselessness_reason(spell_type spell, bool temp, bool prevent, return "you must stand on solid ground to cast this."; } break; - +#if TAG_MAJOR_VERSION == 34 case SPELL_DELAYED_FIREBALL: if (temp && you.attribute[ATTR_DELAYED_FIREBALL]) return "you are already charged."; break; - +#endif case SPELL_BORGNJORS_REVIVIFICATION: if (temp && you.hp == you.hp_max) return "you cannot be healed further."; @@ -1416,6 +1420,7 @@ bool spell_no_hostile_in_range(spell_type spell) case SPELL_OZOCUBUS_REFRIGERATION: case SPELL_OLGREBS_TOXIC_RADIANCE: case SPELL_INTOXICATE: + case SPELL_IGNITION: return minRange > LOS_RADIUS; // Special handling for cloud spells. diff --git a/crawl-ref/source/status.cc b/crawl-ref/source/status.cc index 4cea42d..183d75c 100644 --- a/crawl-ref/source/status.cc +++ b/crawl-ref/source/status.cc @@ -392,6 +392,7 @@ bool fill_status_info(int status, status_info* inf) _describe_stat_zero(inf, STAT_DEX); break; +#if TAG_MAJOR_VERSION == 34 case STATUS_FIREBALL: if (you.attribute[ATTR_DELAYED_FIREBALL]) { @@ -401,6 +402,7 @@ bool fill_status_info(int status, status_info* inf) inf->long_text = "You have a stored fireball ready to release."; } break; +#endif case STATUS_BONE_ARMOUR: if (you.attribute[ATTR_BONE_ARMOUR] > 0) diff --git a/crawl-ref/source/status.h b/crawl-ref/source/status.h index 5253daf..6d95140 100644 --- a/crawl-ref/source/status.h +++ b/crawl-ref/source/status.h @@ -21,7 +21,9 @@ enum status_type STATUS_STR_ZERO, STATUS_INT_ZERO, STATUS_DEX_ZERO, +#if TAG_MAJOR_VERSION == 34 STATUS_FIREBALL, +#endif STATUS_BACKLIT, STATUS_UMBRA, STATUS_CONSTRICTED, diff --git a/crawl-ref/source/tags.cc b/crawl-ref/source/tags.cc index 286397f..66b6334 100644 --- a/crawl-ref/source/tags.cc +++ b/crawl-ref/source/tags.cc @@ -5789,11 +5789,13 @@ void unmarshallMonster(reader &th, monster& m) slot.spell = _fixup_soh_breath(m.type); m.spells.push_back(slot); } +#if TAG_MAJOR_VERSION == 34 else if (slot.spell != SPELL_DELAYED_FIREBALL && slot.spell != SPELL_MELEE) { m.spells.push_back(slot); } +#endif else if (slot.spell == SPELL_CORRUPT_BODY) { slot.spell = SPELL_CORRUPTING_PULSE; diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index df07d5d..85822dd 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -3190,8 +3190,10 @@ tileidx_t tileidx_ability(const ability_type ability) return TILEG_ABILITY_HOP; // Others +#if TAG_MAJOR_VERSION == 34 case ABIL_DELAYED_FIREBALL: return TILEG_ABILITY_DELAYED_FIREBALL; +#endif case ABIL_END_TRANSFORMATION: return TILEG_ABILITY_END_TRANSFORMATION; case ABIL_STOP_RECALL: -- 2.7.4 |
||||
|
|||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
2017-02-06 09:05 | minmay | New Issue | |||
2017-02-06 09:05 | minmay | File Added: 0001-Replace-Delayed-Fireball-with-new-spell-Ignition.patch | |||
2017-02-08 04:09 | Brannock | Note Added: 0031473 | |||
2017-02-08 04:09 | Brannock | Status | new => resolved | ||
2017-02-08 04:09 | Brannock | Fixed in Branch | => 0.20 development branch | ||
2017-02-08 04:09 | Brannock | Resolution | open => done | ||
2017-02-08 04:09 | Brannock | Assigned To | => Brannock | ||
2017-03-21 22:40 | minmay | Status | resolved => closed |
Notes | |||||
|
|||||
|
|