summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-10 15:53:13 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-10 15:53:13 +0000
commit87616cef0d3617cd349edb6641d32d71cdd96b22 (patch)
tree16d737717881351a4854907dc1a78b00540014df /crawl-ref
parent83a1f5bb1cc5c925d534838556873d714d861f35 (diff)
downloadcrawl-ref-87616cef0d3617cd349edb6641d32d71cdd96b22.tar.gz
crawl-ref-87616cef0d3617cd349edb6641d32d71cdd96b22.zip
Add yet another unique courtesy of castamir: Dissolution, sentient
jelly. Update Credits. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8382 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/CREDITS46
-rw-r--r--crawl-ref/source/branch.cc2
-rw-r--r--crawl-ref/source/dat/database/monspeak.txt16
-rw-r--r--crawl-ref/source/dat/descript/monsters.txt4
-rw-r--r--crawl-ref/source/dungeon.cc22
-rw-r--r--crawl-ref/source/enum.h3
-rw-r--r--crawl-ref/source/mon-data.h38
-rw-r--r--crawl-ref/source/monstuff.cc15
-rw-r--r--crawl-ref/source/rltiles/dc-corpse.txt3
-rw-r--r--crawl-ref/source/rltiles/dc-mon.txt1
-rw-r--r--crawl-ref/source/rltiles/dc-mon/unique/dissolution.pngbin0 -> 825 bytes
-rw-r--r--crawl-ref/source/tilepick.cc2
12 files changed, 103 insertions, 49 deletions
diff --git a/crawl-ref/CREDITS b/crawl-ref/CREDITS
index 013e7aaade..ff2a6d61e2 100644
--- a/crawl-ref/CREDITS
+++ b/crawl-ref/CREDITS
@@ -15,26 +15,28 @@ Enne Walker) would like to thank:
We'd also like to thank members of the Dungeon Crawl community who have
contributed to Dungeon Crawl Stone Soup:
-Warwick Allison Benoit Hudson Stefan O'Rear
-Juha Arpiainen Iainuki Yuuma Oohara
-Roy Axenov Ilyak Erik Piper
-Max Bane Mitsuhiro Itakura Lemuel Pitkin
+Warwick Allison Benoit Hudson Yuuma Oohara
+Juha Arpiainen Iainuki Erik Piper
+Roy Axenov Ilyak Lemuel Pitkin
+Max Bane Mitsuhiro Itakura Derek Ray
Bill Beher Eino Keskitalo Remsleep
-Alexander Beisig Jarmo Kielosto Derek Ray
-Erik Inge Bolsø Kornel Kisielewicz David Rose
-Peter Borgmann Vsevolod Kozlov Sebastian Salman
-Terje Bø Ryan Kusnery Brett Scarborough
-Aaron Curtis Jukka Kuusisto Darshan Shaligram
-Denzi Maciej Lapinski Robert Shimmin
-Rachel Elizabeth Dillon Jordan Lewis Sigurd
-Mike Drinen Icy Lich Edgar Simo
-Kieron Dunbar Jesse Luehrs Solf
-Christopher Evenstar Markus Maier Johan Strandell
-Ben Goetter Arien Malec Roman Sêk
-Rob Grant Wille Mäntylä Marc H. Thoben
-John Greenberg Shawn M Moore Matt Titus
-GreyKnight Eva Myers Robert Vollmert
-Shayne Halvorson Onia Ninara Steven Wheeler
-Ciaran Hamilton Erkki Nurmi Jeremey Wilson
-Chris Hamons nyra Yelve Yakut
-R. Dan Henry Dylan O'Donnell Zooko
+Alexander Beisig Jarmo Kielosto David Rose
+Erik Inge Bolsø Kornel Kisielewicz Sebastian Salman
+Peter Borgmann Vsevolod Kozlov Brett Scarborough
+Adam Borowski Ryan Kusnery Darshan Shaligram
+Terje Bø Jukka Kuusisto Robert Shimmin
+Aaron Curtis Maciej Lapinski Sigurd
+Denzi Jordan Lewis Edgar Simo
+Rachel Elizabeth Dillon Icy Lich Solf
+Mike Drinen Jesse Luehrs Johan Strandell
+Kieron Dunbar Markus Maier Roman Sêk
+Christopher Evenstar Arien Malec Marc H. Thoben
+Ben Goetter Shawn M Moore Matt Titus
+Rob Grant Eva Myers Robert Vollmert
+John Greenberg Wille Mäntylä Steven Wheeler
+GreyKnight Onia Ninara Jeremey Wilson
+Shayne Halvorson Erkki Nurmi Yelve Yakut
+Ciaran Hamilton nyra Zooko
+Chris Hamons Dylan O'Donnell
+R. Dan Henry Stefan O'Rear
+
diff --git a/crawl-ref/source/branch.cc b/crawl-ref/source/branch.cc
index b62991a7e5..968be889a0 100644
--- a/crawl-ref/source/branch.cc
+++ b/crawl-ref/source/branch.cc
@@ -207,7 +207,7 @@ Branch branches[] = {
DNGN_ENTER_SLIME_PITS, DNGN_RETURN_FROM_SLIME_PITS,
"Slime Pits", "the Pits of Slime", "Slime",
NULL,
- false, false, GREEN, LIGHTGREEN,
+ false, true, GREEN, LIGHTGREEN,
mons_pitslime_rare, mons_pitslime_level,
NULL, NULL, NULL, NULL,
5, 'M', false, true },
diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt
index ae80083a7a..605cf66ef8 100644
--- a/crawl-ref/source/dat/database/monspeak.txt
+++ b/crawl-ref/source/dat/database/monspeak.txt
@@ -1281,6 +1281,22 @@ Boris unsummoned
@The_monster@ says, "You can't fire me, I quit!"
## END Boris ##
%%%%
+# a sentient jelly
+Dissolution
+
+@The_monster@ gurgles.
+
+@The_monster@ gurgles loudly.
+
+@The_monster@ emits a sizzling noise.
+
+@The_monster@ jiggles.
+
+@The_monster@ says, "Join with me for eternity!"
+
+@The_monster@ says, "Become one with my sorrow!"
+## END Dissolution ##
+%%%%
# An adventurer hating competition
Donald
diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt
index 13f3ca7de5..bd1acdd71a 100644
--- a/crawl-ref/source/dat/descript/monsters.txt
+++ b/crawl-ref/source/dat/descript/monsters.txt
@@ -64,6 +64,10 @@ Dispater
The lord of the Iron City of Dis.
%%%%
+Dissolution
+
+The Pits of Slime used to be a thriving civilization and Dissolution was the prophet of their god. When the city was overtaken by its current residents and their god became the Slime God, only Dissolution survived, becoming a tremendous mass of acidic ooze. He retained his intelligence but is filled with hate for anything that can hold a form.
+%%%%
Donald
An adventurer like you, trying to find the Orb.
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 166ea06a1f..e88859df94 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -3262,7 +3262,7 @@ static monster_type _choose_unique_by_depth(int step)
MONS_HAROLD, MONS_NORBERT, MONS_JOZEF, MONS_AGNES,
MONS_MAUD, MONS_LOUISE, MONS_FRANCIS, MONS_FRANCES,
MONS_AZRAEL, MONS_EUSTACHIO, MONS_NERGALLE,
- MONS_SONJA, MONS_NESSOS, -1);
+ MONS_SONJA, MONS_NESSOS, MONS_DISSOLUTION, -1);
break;
case 6: // depth > 19
default:
@@ -3270,7 +3270,7 @@ static monster_type _choose_unique_by_depth(int step)
MONS_RUPERT, MONS_WAYNE, MONS_DUANE, MONS_XTAHUA,
MONS_NORRIS, MONS_FREDERICK, MONS_MARGERY,
MONS_BORIS, MONS_ROXANNE, MONS_NERGALLE,
- MONS_SAINT_ROKA, -1);
+ MONS_SAINT_ROKA, MONS_DISSOLUTION, -1);
}
return static_cast<monster_type>(ret);
@@ -3278,6 +3278,15 @@ static monster_type _choose_unique_by_depth(int step)
static monster_type _pick_unique(int lev)
{
+ if (player_in_branch(BRANCH_SLIME_PITS))
+ {
+ // Only allow Dissolution in the Slime Pits.
+ if (player_branch_depth() > 1 && one_chance_in(3))
+ return MONS_DISSOLUTION;
+
+ return MONS_PROGRAM_BUG;
+ }
+
// First, pick generic unique depending on depth.
int which_unique =
((lev <= 3) ? _choose_unique_by_depth(0) :
@@ -3328,19 +3337,20 @@ static int _place_uniques(int level_number, char level_type)
while (one_chance_in(3))
{
- monster_type which_unique = MONS_PROGRAM_BUG; // 30 in total
+ monster_type which_unique = MONS_PROGRAM_BUG;
while (which_unique == MONS_PROGRAM_BUG
|| you.unique_creatures[which_unique])
{
+ which_unique = _pick_unique(level_number);
+
// Sometimes, we just quit if a unique is already placed.
- if (which_unique != MONS_PROGRAM_BUG && !one_chance_in(3))
+ if (which_unique == MONS_PROGRAM_BUG
+ || you.unique_creatures[which_unique] && !one_chance_in(3))
{
which_unique = MONS_PROGRAM_BUG;
break;
}
-
- which_unique = _pick_unique(level_number);
}
// Usually, we'll have quit after a few tries. Make sure we have
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 0be4723c71..15b24ce7fe 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -2003,9 +2003,10 @@ enum monster_type // (int) menv[].type
MONS_SAINT_ROKA,
MONS_NESSOS,
MONS_LERNAEAN_HYDRA,
+ MONS_DISSOLUTION, // 460
// Testing monsters
- MONS_TEST_SPAWNER, // 460
+ MONS_TEST_SPAWNER,
NUM_MONSTERS, // used for polymorph
RANDOM_MONSTER = 1000, // used to distinguish between a random monster and using program bugs for error trapping {dlb}
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index e419bb3fdd..cbb1d5a66c 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -1718,7 +1718,7 @@ static monsterentry mondata[] = {
{
MONS_BORING_BEETLE, 'B', BROWN, "boring beetle",
- M_NO_FLAGS,
+ M_BURROWS,
MR_VUL_POISON,
1300, 10, MONS_GIANT_BEETLE, MONS_BORING_BEETLE, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 26}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -2281,18 +2281,6 @@ static monsterentry mondata[] = {
HT_LAND, 14, DEFAULT_ENERGY, MONUSE_EATS_ITEMS, SIZE_LITTLE
},
-{
- MONS_ROYAL_JELLY, 'J', YELLOW, "the royal jelly",
- M_NO_SKELETON | M_SENSE_INVIS | M_SPECIAL_ABILITY | M_ACID_SPLASH
- | M_NO_REGEN | M_UNIQUE,
- MR_RES_POISON | MR_RES_ASPHYX | MR_RES_ACID,
- 0, 20, MONS_JELLY, MONS_ROYAL_JELLY, MH_NATURAL, -7,
- { {AT_HIT, AF_ACID, 50}, {AT_HIT, AF_ACID, 30}, AT_NO_ATK, AT_NO_ATK },
- { 21, 0, 0, 230 },
- 8, 4, MST_NO_SPELLS, CE_CLEAN, Z_NOZOMBIE, S_SILENT, I_PLANT,
- HT_LAND, 16, DEFAULT_ENERGY, MONUSE_EATS_ITEMS, SIZE_SMALL
-},
-
// kobolds ('K')
{
MONS_KOBOLD, 'K', BROWN, "kobold",
@@ -3982,6 +3970,30 @@ static monsterentry mondata[] = {
},
{
+ MONS_ROYAL_JELLY, 'J', YELLOW, "the royal jelly",
+ M_NO_SKELETON | M_SENSE_INVIS | M_SPECIAL_ABILITY | M_ACID_SPLASH
+ | M_NO_REGEN | M_UNIQUE,
+ MR_RES_POISON | MR_RES_ASPHYX | MR_RES_ACID,
+ 0, 20, MONS_JELLY, MONS_ROYAL_JELLY, MH_NATURAL, -7,
+ { {AT_HIT, AF_ACID, 50}, {AT_HIT, AF_ACID, 30}, AT_NO_ATK, AT_NO_ATK },
+ { 21, 0, 0, 230 },
+ 8, 4, MST_NO_SPELLS, CE_CLEAN, Z_NOZOMBIE, S_SILENT, I_PLANT,
+ HT_LAND, 16, DEFAULT_ENERGY, MONUSE_EATS_ITEMS, SIZE_SMALL
+},
+
+{
+ MONS_DISSOLUTION, 'J', LIGHTMAGENTA, "Dissolution",
+ M_UNIQUE | M_NO_SKELETON | M_SENSE_INVIS | M_ACID_SPLASH | M_BURROWS
+ | M_SPEAKS,
+ MR_RES_POISON | MR_RES_ASPHYX | mrd(MR_RES_ACID, 3),
+ 0, 11, MONS_JELLY, MONS_DISSOLUTION, MH_NATURAL, -7,
+ { {AT_HIT, AF_ACID, 50}, {AT_HIT, AF_ACID, 30}, AT_NO_ATK, AT_NO_ATK },
+ { 12, 3, 5, 180 },
+ 10, 1, MST_NO_SPELLS, CE_POISONOUS, Z_NOZOMBIE, S_SILENT, I_NORMAL,
+ HT_LAND, 8, DEFAULT_ENERGY, MONUSE_EATS_ITEMS, SIZE_LARGE
+},
+
+{
MONS_SONJA, 'K', RED, "Sonja",
M_UNIQUE | M_WARM_BLOOD | M_SPEAKS | M_SPELLCASTER | M_ACTUAL_SPELLS
| M_SPEAKS,
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index d1907b6b5e..6cfae15e46 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -4474,7 +4474,7 @@ static void _handle_movement(monsters *monster)
}
// some calculations
- if (monster->type == MONS_BORING_BEETLE && monster->foe == MHITYOU)
+ if (mons_class_flag(monster->type, M_BURROWS) && monster->foe == MHITYOU)
{
// Boring beetles always move in a straight line in your direction.
delta = you.pos() - monster->pos();
@@ -7783,7 +7783,7 @@ static bool _mon_can_move_to_pos(const monsters *monster,
(curr_cloud_num == EMPTY_CLOUD) ? CLOUD_NONE
: env.cloud[curr_cloud_num].type;
- if (monster->type == MONS_BORING_BEETLE
+ if (mons_class_flag(monster->type, M_BURROWS)
&& (target_grid == DNGN_ROCK_WALL
|| target_grid == DNGN_CLEAR_ROCK_WALL))
{
@@ -8180,7 +8180,7 @@ forget_it:
// ------------------------------------------------------------------
// Take care of beetle burrowing.
- if (monster->type == MONS_BORING_BEETLE)
+ if (mons_class_flag(monster->type, M_BURROWS))
{
const dungeon_feature_type feat = grd(monster->pos() + mmov);
if ((feat == DNGN_ROCK_WALL || feat == DNGN_CLEAR_ROCK_WALL)
@@ -8190,7 +8190,13 @@ forget_it:
set_terrain_changed(monster->pos() + mmov);
if (!silenced(you.pos()))
- mpr("You hear a grinding noise.", MSGCH_SOUND);
+ {
+ // Message depends on whether caused by boring beetle or
+ // acid (Dissolution).
+ mpr((monster->type == MONS_BORING_BEETLE) ?
+ "You hear a grinding noise." :
+ "You hear a sizzling sound.", MSGCH_SOUND);
+ }
}
}
@@ -8472,6 +8478,7 @@ bool monster_descriptor(int which_class, unsigned char which_descriptor)
case MONS_HYDRA:
case MONS_KILLER_KLOWN:
case MONS_LERNAEAN_HYDRA:
+ case MONS_DISSOLUTION:
return (true);
default:
return (false);
diff --git a/crawl-ref/source/rltiles/dc-corpse.txt b/crawl-ref/source/rltiles/dc-corpse.txt
index ca3ce91079..881e54f122 100644
--- a/crawl-ref/source/rltiles/dc-corpse.txt
+++ b/crawl-ref/source/rltiles/dc-corpse.txt
@@ -138,14 +138,13 @@ goblin CORPSE_GOBLIN /* g */
hobgoblin CORPSE_HOBGOBLIN /* g */
%sdir dc-mon/animals
+jackal CORPSE_JACKAL /* h */
hog CORPSE_HOG /* h */
hound CORPSE_HOUND /* h */
warg CORPSE_WARG /* h */
war_dog CORPSE_WAR_DOG /* h */
wolf CORPSE_WOLF /* h */
-jackal CORPSE_JACKAL /* j */
-
%back dc-misc/blood_green
bumblebee CORPSE_BUMBLEBEE /* k */
killer_bee CORPSE_KILLER_BEE /* k */
diff --git a/crawl-ref/source/rltiles/dc-mon.txt b/crawl-ref/source/rltiles/dc-mon.txt
index 87b74c43ba..0b6e03a389 100644
--- a/crawl-ref/source/rltiles/dc-mon.txt
+++ b/crawl-ref/source/rltiles/dc-mon.txt
@@ -366,6 +366,7 @@ ice_beast MONS_ICE_BEAST /*'I'*/
## Jellies ('J')
%sdir dc-mon/unique
royal_jelly MONS_ROYAL_JELLY
+dissolution MONS_DISSOLUTION
%sdir dc-mon
ooze MONS_OOZE
jelly MONS_JELLY
diff --git a/crawl-ref/source/rltiles/dc-mon/unique/dissolution.png b/crawl-ref/source/rltiles/dc-mon/unique/dissolution.png
new file mode 100644
index 0000000000..d4613d24ac
--- /dev/null
+++ b/crawl-ref/source/rltiles/dc-mon/unique/dissolution.png
Binary files differ
diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc
index 23aa5e9ab3..ddaac223fd 100644
--- a/crawl-ref/source/tilepick.cc
+++ b/crawl-ref/source/tilepick.cc
@@ -939,6 +939,8 @@ static int _tileidx_monster_base(const monsters *mon, bool detected)
return TILEP_MONS_NESSOS;
case MONS_LERNAEAN_HYDRA:
return TILEP_MONS_LERNAEAN_HYDRA;
+ case MONS_DISSOLUTION:
+ return TILEP_MONS_DISSOLUTION;
// human uniques ('@')
case MONS_TERENCE: