From 72d496cd88c96808047e87fd41a4d0cf06a79a08 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 10 Jul 2021 04:59:50 -0700 Subject: [PATCH 1/4] reduceOrbPowers: only call mine::auto_teleport_charges once --- orbs.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/orbs.cpp b/orbs.cpp index 2e489cc6..1b918916 100644 --- a/orbs.cpp +++ b/orbs.cpp @@ -99,9 +99,6 @@ EX bool reduceOrbPower(eItem it, int cap) { return true; } if(items[it] > cap && timerghost) items[it] = cap; - #if CAP_COMPLEX2 - mine::auto_teleport_charges(); - #endif return false; } @@ -210,6 +207,10 @@ EX void reduceOrbPowers() { reduceOrbPower(itCurseRepulsion, 199); reduceOrbPower(itCurseGluttony, 199); + #if CAP_COMPLEX2 + mine::auto_teleport_charges(); + #endif + whirlwind::calcdirs(cwt.at); items[itStrongWind] = !items[itOrbAether] && whirlwind::qdirs == 1; items[itWarning] = 0; From 42f8f5f4ccbf14770e3e67e352a6267680e385f8 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 10 Jul 2021 18:57:54 -0700 Subject: [PATCH 2/4] Fix crash when an unknown princess is in peril --- attack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/attack.cpp b/attack.cpp index a51300bd..52d29861 100644 --- a/attack.cpp +++ b/attack.cpp @@ -512,8 +512,8 @@ EX void killMonster(cell *c, eMonster who, flagtype deathflags IS(0)) { if(m == moPrincess) { princess::info *i = princess::getPrincessInfo(c); - changes.value_keep(*i); if(i) { + changes.value_keep(*i); i->princess = NULL; if(i->bestdist == OUT_OF_PALACE) { items[itSavedPrincess]--; From 5bb26508208f2c1054fdbbcdf4d26646498daabd Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 10 Jul 2021 19:11:18 -0700 Subject: [PATCH 3/4] Ivy to Vine no longer overwrites Round Table --- monstermove.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/monstermove.cpp b/monstermove.cpp index 7cb0702d..5b7edd96 100644 --- a/monstermove.cpp +++ b/monstermove.cpp @@ -978,7 +978,8 @@ EX void removeIvy(cell *c) { // note that semi-vines don't count if(c->move(i)->wall == waVinePlant) { destroyHalfvine(c); - c->wall = waVinePlant; + if (!do_not_touch_this_wall(c)) + c->wall = waVinePlant; } if(c->wall != waVinePlant) { if(m == moIvyDead) From b4d6b8687209e255a68e98d866c7123a36c5af82 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 10 Jul 2021 19:15:16 -0700 Subject: [PATCH 4/4] Fix crash by disallowing statue-dice swaps --- passable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/passable.cpp b/passable.cpp index 071aa739..64bb49f6 100644 --- a/passable.cpp +++ b/passable.cpp @@ -409,7 +409,7 @@ bool sharkpassable(cell *w, cell *c) { EX bool canPushStatueOn(cell *c, flagtype flags) { return passable(c, NULL, P_MONSTER | flags) && !snakelevel(c) && !isWorm(c->monst) && !isReptile(c->wall) && !peace::on && - !cellHalfvine(c) && + !cellHalfvine(c) && !isDie(c->wall) && !among(c->wall, waBoat, waFireTrap, waArrowTrap); }