generated if the royal jelly is dead, you don't worship Jiyva, and you're not under penance from Jiyva; don't destroy Jiyva's altars if the royal jelly dies after you start worshipping him or go under penance from him; and clean up the alternate method for unlocking the Slime Pits.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10332 c06c8d41-db1a-0410-9941-cceddc491573
GQQ6ASWTYODIHG7X32JNUUHP5NMOVZJIHWGS3F3MKRYZGAHP6NVQC
LUH72JJEXFXC76PRCIZGY6GBY3H7WWXT2T6E4WQQSMA4DZZTPYCQC
TENQHEOZX6C2RL64QGV6NGVFY4A5HBOD5GZ5EZTJHWATQNRIE2IQC
X6ZV6QUAVSBSEK3ITZCZTWDRHULT4L4TACLACE5SSOCQ32UGUXUQC
SPVOFYGEIQK554DIVLG33OWQ6P45MZBHJBDG2537NYPMKZL4EC6AC
ZL4S2AICGMIH5DCHUXH6GJHSGELIONW6DOMFWB5PE62BVS7QZZEAC
VAHOYRQ2JBS4C4FVJBVTGITYI4WWR575SMQAUVL2LPK54VBHUY5QC
G6OL3JDQN55GHLBQCOXBZ5K7L6JJ3HITVPBUHSO4F4EDUJFWXGVAC
SDZYI64673GM344DHCDQSWOJTX7EVW6VXRYA7DHGFVNYR5J5RYGQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
AM7QPHDAWNXHLUEVUHVRHG2RO2DOIEFFU4GV3DCIROW6O5HW7H4AC
PSCYVKJ7DGXAL3V5U4O6AJTRV6Q3N3SHQWAZ73VIPRTE4W64F2XAC
M7WTOF3BVX5MGA7AQZB22YEFWCSL7RLW54PQM3MTRLCKUCUZZEUAC
IP4STBRVFU5OPNAPM2XZWU77PXHKLOPBW5EGLGB4ZHYNZS7QKTKAC
5WVUTEZLEZEML54CKPR6GACQBYY3EMVNXMLJOREN6SSEUZGC47AQC
EIULXYQC3OPXDGTBRDOI7ITILQ22RGEGG6UFCGY2O5HD7SN5NUUQC
WXZQJUZXMYS7R6ORNB7DWE5KEUXT262GXWMRPOJYYB4I3BFGYLLAC
SWOYPTHJAWFEDBMB3ROT33VQZIXGZD5UOXEV456DDUENW2HGA66QC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
2RJUPYKEDZZCW4GDG6WLEDVYF32ADC4W5I42KSKHN3MWEBCWSAHQC
GNVJ7ESHE4IPEZCRTBTHUQXSZWWKXLOU76G3XSTEAURMI4JCPLMAC
DJZK6ZJ42EUTFF2OBOL5YYFPMLXCTDNGE2RF73ZJ4N54FEIHBGPQC
CRUW4EVU3UDWNKXBCPWWHWXXGE7EMEHKK3PLLUD7NWPYY4K2R3YAC
T6TL6NTIOBYNUIONGK3JFZJ5ONWV6S4CTIRDC5JMKMCBGG5IY3EAC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC
HM6NOS7BN5665KWIFGBXOHZIDMRSVCESN72GMGI6NVBFZGCF3L6QC
DZ2GM3MGYCEOQ24AMGGYIF2U4PAFHIACEPS7MUQ7TM35OL2YFQVAC
HQSI2RK5QGNSOR5Y67GZDK4ZWFZ5DSRPASXAV4VHYVB5TUXFZWJQC
KEWUUIWZCM2VE6WZX4BC4DXGL7LBAWGLUPCPA4KCBCUL5ZQLECBAC
YF2GZWXNV6NVFFEBEOYS67JQJQK2IUS5BZMGJW3XQPYIJYHQJCEQC
ZJU5Z2WDMI7HN4XJ3NVTVRHIZO2CGFUQ2FSKIRJVTQG47XHNCZFQC
MKAR2SIMUA65TXXLYZJFUYAOVGBYJF25YJ2UBANSCPOYYUOFG7PAC
5XNQ3SSNBFXFNWA6DPM74W6FH65NX665P3DMH6YCWVFOPZTJSYCQC
JJVROJMJVKS7VN5HJNB4ZNCG7Y6EMHJQZR3MDN2VZCFTZC73HOZQC
7VVRO5HMNNOXVRLBLJUCHUJP6MDIRMC2BWCO7MWH4OLQRM3LMTMQC
// Complimentary jelly upon joining.
if (you.religion == GOD_JIYVA && !_has_jelly())
// Complimentary jelly upon joining for the first time.
if (you.religion == GOD_JIYVA && you.worshipped[GOD_JIYVA] == 1)
if (level_id::current() == level_id(BRANCH_SLIME_PITS, 6))
{
const level_id target(BRANCH_SLIME_PITS, 6);
bool done = apply_to_level(target, true, slime_vault_to_floor);
if (done)
{
if (silenced(you.pos()))
{
mpr("An unexplained breeze blows through the dungeon.",
MSGCH_GOD);
}
else
mpr("You hear the sound of toppling stones.", MSGCH_GOD);
}
_delayed_monster(mg);
simple_god_message(" grants you a jelly!");
your_level = 0;
level_type = LEVEL_DUNGEON;
entry_cause = EC_SELF_EXPLICIT;
entry_cause_god = GOD_NO_GOD;
where_are_you = BRANCH_MAIN_DUNGEON;
char_direction = GDT_DESCENDING;
opened_zot = false;
your_level = 0;
level_type = LEVEL_DUNGEON;
entry_cause = EC_SELF_EXPLICIT;
entry_cause_god = GOD_NO_GOD;
where_are_you = BRANCH_MAIN_DUNGEON;
char_direction = GDT_DESCENDING;
opened_zot = false;
royal_jelly_dead = false;
static bool _slime_pit_unlock(bool silent)
for (int x = 0; x < GXM && !in_los; ++x)
{
for (int y = 0; y < GYM; ++y)
{
if ((grd[x][y] == DNGN_STONE_WALL
|| grd[x][y] == DNGN_CLEAR_STONE_WALL)
&& see_grid(x, y))
{
in_los = true;
break;
}
}
}
return (in_los);
}
static bool _slime_vault_to_glass(bool silent)
{
for (int x = 0; x < GXM && !in_los; ++x)
for (int y = 0; y < GYM; ++y)
if (grd[x][y] == DNGN_STONE_WALL && see_grid(x, y))
{
in_los = true;
break;
}
}
in_los = _slime_vault_in_los();
static bool _slime_pit_unlock_offlevel()
static bool _slime_vault_to_glass_offlevel()
{
return _slime_vault_to_glass(true);
}
static bool _slime_vault_to_glass_onlevel()
{
return _slime_vault_to_glass(false);
}
static bool _slime_vault_to_floor(bool silent)
{
unset_level_flags(LFLAG_NO_TELE_CONTROL, silent);
bool in_los = false;
if (!silent)
in_los = _slime_vault_in_los();
replace_area_wrapper(DNGN_STONE_WALL, DNGN_FLOOR);
// In case it was already vitrified, but then it's less noticeable.
replace_area_wrapper(DNGN_CLEAR_STONE_WALL, DNGN_FLOOR);
if (silenced(you.pos()))
mpr("An unexplained breeze blows through the dungeon.", MSGCH_GOD);
else
mpr("You hear the sound of toppling stones.", MSGCH_GOD);
return (true);
}
static bool _slime_vault_to_floor_offlevel()
{
return _slime_vault_to_floor(true);
}
static bool _slime_vault_to_floor_onlevel()
return _slime_pit_unlock(false);
const level_id target(BRANCH_SLIME_PITS, 6);
if (is_existing_level(target))
{
if (glass)
{
apply_to_level(target, true,
target == level_id::current() ?
_slime_vault_to_glass_onlevel :
_slime_vault_to_glass_offlevel);
}
else
{
apply_to_level(target, true,
target == level_id::current() ?
_slime_vault_to_floor_onlevel :
_slime_vault_to_floor_offlevel);
}
}
const level_id target(BRANCH_SLIME_PITS, 6);
if (is_existing_level(target))
{
apply_to_level(
target,
true,
target == level_id::current() ? _slime_pit_unlock_onlevel
: _slime_pit_unlock_offlevel);
}
you.royal_jelly_dead = true;
if (jiyva_is_dead())
slime_vault_change(true);
bool slime_vault_to_floor()
{
bool success = false;
for (rectangle_iterator ri(1); ri; ++ri)
{
if (grd(*ri) == DNGN_STONE_WALL)
{
grd(*ri) = DNGN_FLOOR;
success = true;
}
}
return (success);
}
{
if (apply_to_level(target, true, slime_vault_to_floor))
{
if (!silenced(you.pos()))
{
mpr("You hear the sound of toppling stones.",
MSGCH_MONSTER_ENCHANT);
}
else
{
mpr("An unexplained breeze blows through the dungeon.",
MSGCH_MONSTER_ENCHANT);
}
}
times_entered++;
}
slime_vault_change(jiyva_is_dead());
times_entered++;