|
From: <gi...@cr...> - 2013-09-30 18:45:11
|
via 6bc71adb2471abb02acf311891a49fbc02d3ae4e (commit)
via c1cc5fcb12d9c32687d37f2c9f547ab875bdd00e (commit)
via bc211ecbf0a11163a7f424bcbdcfb2848d847397 (commit)
via 871de20ed6765116796554bcfe916e79f1a8663a (commit)
via 3d069aa422ce3e1b30a5b2701a883c9de50ead2c (commit)
from 01a4d79ac79b18f9fdfd4d7dd54dbc9c5b782ea4 (commit)
-----------------------------------------------------------------------
commit 6bc71adb2471abb02acf311891a49fbc02d3ae4e
Author: Adam Borowski <kil...@an...>
Date: Sat Sep 28 05:45:04 2013 +0200
Delete three empty description files.
They had only quotes.
(cherry picked from commit 011cccd8b062ad9854dd629e73d88d488ca87466)
commit c1cc5fcb12d9c32687d37f2c9f547ab875bdd00e
Author: Adam Borowski <kil...@an...>
Date: Mon Sep 30 18:34:50 2013 +0200
Remove a crashy trap from an abyssal vault.
I guess I could instead make such traps not crash, but since the only trap
in the Abyss comes from a single vault, and is a mechanical one to boot,
here it goes.
(cherry picked from commit 96a4fb3f24cbe59ac6ac971ccdd3387b5efd3146)
commit bc211ecbf0a11163a7f424bcbdcfb2848d847397
Author: Adam Borowski <kil...@an...>
Date: Mon Sep 30 18:29:07 2013 +0200
Fix a crash if a boulder beetle dies due to damage it deals.
In this case, this was an inner flame explosion, which we really should
make a fineff.
(cherry picked from commit 8b588dfb2c132f38624c8d2644c8f5badf5e14f5)
commit 871de20ed6765116796554bcfe916e79f1a8663a
Author: Adam Borowski <kil...@an...>
Date: Mon Sep 30 18:04:49 2013 +0200
Fix an infinite loop with insane friendlies attacking the player.
mon-act thinks the attack will succeed, melee_attack denied it. Since
insanity is a form of confusion, let's allow the monster to attack you.
Also, don't set the foe to the player in such a case: attack just once,
like it's done against monsters.
(cherry picked from commit 99e328b810d3611051b701dabf07c7886b4901a9)
commit 3d069aa422ce3e1b30a5b2701a883c9de50ead2c
Author: Adam Borowski <kil...@an...>
Date: Wed Sep 25 09:31:18 2013 +0200
Fix the player being placed in a wall on area shifts.
(cherry picked from commit d5145817d699f8a0848f845317f08c670ab8fba0)
-----------------------------------------------------------------------
Summary of changes:
crawl-ref/source/abyss.cc | 28 +++++++++++++++++-------
crawl-ref/source/dat/des/branches/abyss.des | 3 +-
crawl-ref/source/dat/descript/pl/branches.txt | 1 -
crawl-ref/source/dat/descript/pl/features.txt | 1 -
crawl-ref/source/dat/descript/pl/monsters.txt | 1 -
crawl-ref/source/fight.cc | 5 ++-
crawl-ref/source/mon-act.cc | 9 +++++--
crawl-ref/source/mon-project.cc | 2 +-
8 files changed, 31 insertions(+), 19 deletions(-)
delete mode 100644 crawl-ref/source/dat/descript/pl/branches.txt
delete mode 100644 crawl-ref/source/dat/descript/pl/features.txt
delete mode 100644 crawl-ref/source/dat/descript/pl/monsters.txt
diff --git a/crawl-ref/source/abyss.cc b/crawl-ref/source/abyss.cc
index 48f8556..cd959d9 100644
--- a/crawl-ref/source/abyss.cc
+++ b/crawl-ref/source/abyss.cc
@@ -1174,6 +1174,23 @@ static void _nuke_all_terrain(bool vaults)
}
}
+static void _ensure_player_habitable(bool dig_instead)
+{
+ dungeon_feature_type feat = grd(you.pos());
+ if (!you.can_pass_through_feat(feat)
+ || is_feat_dangerous(feat) && !(you.is_wall_clinging()
+ && cell_is_clingable(you.pos())))
+ {
+ bool shoved = you.shove();
+ if (!shoved)
+ {
+ // legal only if we just placed a vault
+ ASSERT(dig_instead);
+ grd(you.pos()) = DNGN_FLOOR;
+ }
+ }
+}
+
static void _abyss_apply_terrain(const map_bitmask &abyss_genlevel_mask,
bool morph = false, bool now = false)
{
@@ -1246,14 +1263,7 @@ static void _abyss_apply_terrain(const map_bitmask &abyss_genlevel_mask,
}
if (ii)
dprf(DIAG_ABYSS, "Nuked %d features", ii);
- dungeon_feature_type feat = grd(you.pos());
- if (!you.can_pass_through_feat(feat)
- || is_feat_dangerous(feat) && !(you.is_wall_clinging()
- && cell_is_clingable(you.pos())))
- {
- bool shoved = you.shove();
- ASSERT(shoved);
- }
+ _ensure_player_habitable(false);
for (rectangle_iterator ri(MAPGEN_BORDER); ri; ++ri)
ASSERT_RANGE(grd(*ri), DNGN_UNSEEN + 1, NUM_FEATURES);
}
@@ -1312,6 +1322,8 @@ static void _generate_area(const map_bitmask &abyss_genlevel_mask)
_abyss_create_items(abyss_genlevel_mask, placed_abyssal_rune, use_vaults);
setup_environment_effects();
+ _ensure_player_habitable(true);
+
// Abyss has a constant density.
env.density = 0;
}
diff --git a/crawl-ref/source/dat/des/branches/abyss.des b/crawl-ref/source/dat/des/branches/abyss.des
index 2a28918..cd990f9 100644
--- a/crawl-ref/source/dat/des/branches/abyss.des
+++ b/crawl-ref/source/dat/des/branches/abyss.des
@@ -257,7 +257,6 @@ NAME: hangedman_abyss_feature_spike
TAGS: abyss extra no_item_gen no_pool_fixup allow_dup
MONS: fungus, plant, bush
ITEM: stone q:1, large rock q:1
-KFEAT: ^ : known dart trap / known needle trap / known blade trap
KFEAT: A : stone_arch w:99 / abandoned_shop w:1
KFEAT: - = altar_lugonu
KMASK: wWl = no_monster_gen
@@ -270,7 +269,7 @@ SUBST: f = A, g = C, h = T, i = U, j = V
SUBST: o = t, p = G, q = w, r = W, s = l
SUBST: J = x, K = c, L = v, MN = m, O = 1, P = 2, Q = 3, RS = b
SUBST: - = -----A
-SHUFFLE: AACCTTUUVYYdeefghi^, tGGwWlI, xxccvvbbmm+123
+SHUFFLE: AACCTTUUVYYdeefghi, tGGwWlI, xxccvvbbmm+123
: dgn.delayed_decay(_G, 'f', 'human skeleton')
: dgn.delayed_decay(_G, 'g', 'elf skeleton')
: dgn.delayed_decay(_G, 'h', 'dwarf skeleton')
diff --git a/crawl-ref/source/dat/descript/pl/branches.txt b/crawl-ref/source/dat/descript/pl/branches.txt
deleted file mode 100644
index 0206eda..0000000
--- a/crawl-ref/source/dat/descript/pl/branches.txt
+++ /dev/null
@@ -1 +0,0 @@
-%%%%
diff --git a/crawl-ref/source/dat/descript/pl/features.txt b/crawl-ref/source/dat/descript/pl/features.txt
deleted file mode 100644
index 0206eda..0000000
--- a/crawl-ref/source/dat/descript/pl/features.txt
+++ /dev/null
@@ -1 +0,0 @@
-%%%%
diff --git a/crawl-ref/source/dat/descript/pl/monsters.txt b/crawl-ref/source/dat/descript/pl/monsters.txt
deleted file mode 100644
index 0206eda..0000000
--- a/crawl-ref/source/dat/descript/pl/monsters.txt
+++ /dev/null
@@ -1 +0,0 @@
-%%%%
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index b242df4..da68200 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -50,8 +50,9 @@ bool fight_melee(actor *attacker, actor *defender, bool *did_hit, bool simu)
{
ASSERT(!crawl_state.game_is_arena());
// Friendly and good neutral monsters won't attack unless confused.
- if (attacker->as_monster()->wont_attack() &&
- !mons_is_confused(attacker->as_monster()))
+ if (attacker->as_monster()->wont_attack()
+ && !mons_is_confused(attacker->as_monster())
+ && !attacker->as_monster()->has_ench(ENCH_INSANE))
{
return false;
}
diff --git a/crawl-ref/source/mon-act.cc b/crawl-ref/source/mon-act.cc
index a5f253f..744cdcc 100644
--- a/crawl-ref/source/mon-act.cc
+++ b/crawl-ref/source/mon-act.cc
@@ -2277,9 +2277,12 @@ void handle_monster_move(monster* mons)
&& !mons->has_ench(ENCH_CHARM)
&& !mons->withdrawn())
{
- // If it steps into you, cancel other targets.
- mons->foe = MHITYOU;
- mons->target = you.pos();
+ if (!mons->wont_attack())
+ {
+ // If it steps into you, cancel other targets.
+ mons->foe = MHITYOU;
+ mons->target = you.pos();
+ }
fight_melee(mons, &you);
diff --git a/crawl-ref/source/mon-project.cc b/crawl-ref/source/mon-project.cc
index a609cfa..53c9e37 100644
--- a/crawl-ref/source/mon-project.cc
+++ b/crawl-ref/source/mon-project.cc
@@ -222,7 +222,7 @@ static bool _boulder_hit(monster& mon, const coord_def &pos)
}
noisy(5, pos);
- return victim && victim->alive();
+ return victim && victim->alive() || !mon.alive();
}
static bool _iood_hit(monster& mon, const coord_def &pos, bool big_boom = false)
--
Dungeon Crawl Stone Soup
|