Attached Files |
DD-heal.patch [^] (6,858 bytes) 2015-06-21 20:46 [Show Content] [Hide Content]From 8ab4375b90c50f325d5b0772a86ee2684a920357 Mon Sep 17 00:00:00 2001
From: bel
Date: Sun, 21 Jun 2015 20:14:52 +0200
Subject: [PATCH] Remove DD passive HP healing. This includes TSO, Makhleb and
Jiyva HP healing. (MP gain still works for TSO and Jiyva). Also, remove
healing from vampiric drain and vampiric weapons (they still damage the
monster, but don't heal).
Instead, DD get 50% of their max HP whenever they visit a new dungeon level (suggested by KoboldLord). DD can heal with consumables, namely wands, potions and Elixir card. Trog/Ely/Ru active abilities still work, because they are "consumables" which cost piety or drain. DD do not start with a "wand of heal wounds (5)", instead they start with 5 heal wounds potions. Device recharging is still kept for flavour reasons, but perhaps should be eliminated.
This will remove the scummy and boring aspects of DD while opening them to a wider variety of gods.
See also Tavern discussions:
https://crawl.develz.org/tavern/viewtopic.php?f=8&t=15838&p=216561&hilit=koboldlord#p216561
and
https://crawl.develz.org/tavern/viewtopic.php?f=8&t=15161&hilit=elyvilon
---
crawl-ref/source/attack.cc | 3 ++-
crawl-ref/source/dungeon.cc | 6 ++++++
crawl-ref/source/godpassive.cc | 3 ++-
crawl-ref/source/melee_attack.cc | 2 +-
crawl-ref/source/mon-death.cc | 3 +++
crawl-ref/source/ng-setup.cc | 4 ++--
crawl-ref/source/species-data.h | 4 ++--
crawl-ref/source/spl-damage.cc | 3 ++-
8 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/crawl-ref/source/attack.cc b/crawl-ref/source/attack.cc
index 014dd7e..08dc711 100644
--- a/crawl-ref/source/attack.cc
+++ b/crawl-ref/source/attack.cc
@@ -1708,7 +1708,8 @@ bool attack::apply_damage_brand(const char *what)
|| attacker->is_player() && you.duration[DUR_DEATHS_DOOR]
|| !attacker->is_player()
&& attacker->as_monster()->has_ench(ENCH_DEATHS_DOOR)
- || x_chance_in_y(2, 5) && !is_unrandom_artefact(*weapon, UNRAND_LEECH))
+ || x_chance_in_y(2, 5) && !is_unrandom_artefact(*weapon, UNRAND_LEECH)
+ || you.species == SP_DEEP_DWARF)
{
break;
}
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index a7b7847..2bab8e6 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -2452,6 +2452,12 @@ static void _build_dungeon_level(dungeon_feature_type dest_stairs_type)
if (player_in_hell())
_fixup_hell_stairs();
+
+ if (you.species == SP_DEEP_DWARF)
+ {
+ you.hp = min(you.hp + div_rand_round(you.hp_max, 2), you.hp_max);
+ mpr("You feel invigorated due to your empathy with the dungeon.");
+ }
}
static void _dgn_set_floor_colours()
diff --git a/crawl-ref/source/godpassive.cc b/crawl-ref/source/godpassive.cc
index e879731..785118a 100644
--- a/crawl-ref/source/godpassive.cc
+++ b/crawl-ref/source/godpassive.cc
@@ -129,7 +129,8 @@ void jiyva_slurp_bonus(int item_value, int *js)
if (you.piety >= piety_breakpoint(4)
&& x_chance_in_y(you.piety, MAX_PIETY)
&& you.hp < you.hp_max
- && !you.duration[DUR_DEATHS_DOOR])
+ && !you.duration[DUR_DEATHS_DOOR]
+ && you.species != SP_DEEP_DWARF)
{
inc_hp(max(random2(item_value), 1));
*js |= JS_HP;
diff --git a/crawl-ref/source/melee_attack.cc b/crawl-ref/source/melee_attack.cc
index a6ab658..3c9c653 100644
--- a/crawl-ref/source/melee_attack.cc
+++ b/crawl-ref/source/melee_attack.cc
@@ -627,7 +627,7 @@ static void _hydra_devour(monster &victim)
}
// healing
- if (!you.duration[DUR_DEATHS_DOOR])
+ if (!you.duration[DUR_DEATHS_DOOR] && you.species != SP_DEEP_DWARF)
{
const int healing = 1 + victim.get_experience_level() * 3 / 4
+ random2(victim.get_experience_level() * 3 / 4);
diff --git a/crawl-ref/source/mon-death.cc b/crawl-ref/source/mon-death.cc
index e9aca64..7c449e5 100644
--- a/crawl-ref/source/mon-death.cc
+++ b/crawl-ref/source/mon-death.cc
@@ -2171,6 +2171,9 @@ int monster_die(monster* mons, killer_type killer,
die("bad kill-on-healing god!");
}
+ if (you.species == SP_DEEP_DWARF)
+ hp_heal = 0; // deep dwarves don't heal passively from TSO or Makhleb
+
#if TAG_MAJOR_VERSION == 34
if (you.species == SP_DJINNI)
hp_heal = max(hp_heal, mp_heal * 2), mp_heal = 0;
diff --git a/crawl-ref/source/ng-setup.cc b/crawl-ref/source/ng-setup.cc
index 7f76da7..a07a1de 100644
--- a/crawl-ref/source/ng-setup.cc
+++ b/crawl-ref/source/ng-setup.cc
@@ -614,9 +614,9 @@ static void _give_items_skills(const newgame_def& ng)
break;
}
- // Deep Dwarves get a wand of heal wounds (5).
+ // Deep Dwarves get five heal wounds potions.
if (you.species == SP_DEEP_DWARF)
- newgame_make_item(OBJ_WANDS, WAND_HEAL_WOUNDS, 1, 5);
+ newgame_make_item(OBJ_POTIONS, POT_HEAL_WOUNDS, 5);
// Zotdef: everyone gets bonus two potions of curing.
diff --git a/crawl-ref/source/species-data.h b/crawl-ref/source/species-data.h
index 516b582..bdaee18 100644
--- a/crawl-ref/source/species-data.h
+++ b/crawl-ref/source/species-data.h
@@ -78,9 +78,9 @@ static const map<species_type, species_def> species_data =
{ { MUT_SLOW_HEALING, 3, 1 }, { MUT_PASSIVE_MAPPING, 1, 1 },
{ MUT_PASSIVE_MAPPING, 1, 9 }, { MUT_PASSIVE_MAPPING, 1, 18 },
{ MUT_NEGATIVE_ENERGY_RESISTANCE, 1, 14 }, },
- { "You are resistant to damage.",
+ { "You gain health when you visit a new level.", "You are resistant to damage.",
"You can recharge devices by infusing magical energy." },
- { "damage resistance", "recharge devices" },
+ { "dungeon empathy", "damage resistance", "recharge devices" },
{ JOB_FIGHTER, JOB_HUNTER, JOB_BERSERKER, JOB_NECROMANCER,
JOB_EARTH_ELEMENTALIST },
{ SK_MACES_FLAILS, SK_AXES, SK_LONG_BLADES, SK_CROSSBOWS, SK_SLINGS },
diff --git a/crawl-ref/source/spl-damage.cc b/crawl-ref/source/spl-damage.cc
index 3114d63..01f7a52 100644
--- a/crawl-ref/source/spl-damage.cc
+++ b/crawl-ref/source/spl-damage.cc
@@ -882,7 +882,6 @@ spret_type vampiric_drain(int pow, monster* mons, bool fail)
hp_gain = min(mons->hit_points, hp_gain);
hp_gain = min(you.hp_max - you.hp, hp_gain);
-
if (!hp_gain)
{
canned_msg(MSG_NOTHING_HAPPENS);
@@ -896,6 +895,8 @@ spret_type vampiric_drain(int pow, monster* mons, bool fail)
if (mons->alive())
print_wounds(mons);
+ if (you.species == SP_DEEP_DWARF)
+ hp_gain = 0; // Deep dwarves do damage to monster but don't heal
hp_gain = div_rand_round(hp_gain, 2);
if (hp_gain && !mons_was_summoned && !you.duration[DUR_DEATHS_DOOR])
--
1.9.1
|