From 0e08b3225d0220e1260cf37d7fbb205ec4b5ee91 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Sun, 17 Aug 2025 16:17:13 +0200 Subject: [PATCH] other active orbs now extend the duration of Orb of Recall --- commandline.cpp | 2 ++ help.cpp | 3 +++ orbs.cpp | 12 +++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/commandline.cpp b/commandline.cpp index af0c8ab8..a90792e8 100644 --- a/commandline.cpp +++ b/commandline.cpp @@ -327,10 +327,12 @@ int arg::readCommon() { } else if(argis("-save-mode")) { + PHASEFROM(2); save_mode_to_file(shift_args()); } else if(argis("-load-mode")) { + PHASEFROM(2); try { load_mode_from_file(shift_args()); } diff --git a/help.cpp b/help.cpp index fb99625a..bf04c438 100644 --- a/help.cpp +++ b/help.cpp @@ -426,6 +426,9 @@ EX string generateHelpForItem(eItem it) { if(it == itOrbIntensity && inv::on) help += XLAT("\n\nIn the Orb Strategy Mode, the effect is increased to +100%."); + if(it == itOrbRecall) + help += XLAT("\n\nOther active orbs extend the duration of this orb."); + if(it == itOrbEmpathy) { int cnt = 0; for(int i=0; i3) || !markOrb(itOrbTime))) { + orbs_drained++; items[it] -= multi::activePlayers(); if(isHaunted(cwt.at->land)) fail_survivalist(); @@ -106,6 +110,7 @@ EX bool reduceOrbPower(eItem it, int cap) { EX void reduceOrbPowerAlways(eItem it) { if(items[it]) { + orbs_drained++; items[it] -= multi::activePlayers(); if(items[it] < 0) items[it] = 0; } @@ -126,6 +131,8 @@ EX void reverse_curse(eItem curse, eItem orb, bool cancel) { EX void reduceOrbPowers() { + orbs_drained = 0; + reverse_curse(itCurseWeakness, itOrbSlaying, true); reverse_curse(itCurseFatigue, itOrbSpeed, false); // OK reverse_curse(itCurseRepulsion, itOrbMagnetism, true); // OK @@ -183,7 +190,6 @@ EX void reduceOrbPowers() { reduceOrbPower(itOrbSword2, 100 + 20 * multi::activePlayers()); reduceOrbPower(itOrbStone, 120); reduceOrbPower(itOrbNature, 120); - reduceOrbPower(itOrbRecall, 77); reduceOrbPower(itOrbBull, 120); reduceOrbPower(itOrbHorns, 77); reduceOrbPower(itOrbLava, 80); @@ -214,6 +220,10 @@ EX void reduceOrbPowers() { mine::auto_teleport_charges(); #endif + if(orbs_drained && items[itOrbRecall] <= 10) + items[itOrbRecall] = 11; + reduceOrbPower(itOrbRecall, 77); + whirlwind::calcdirs(cwt.at); items[itStrongWind] = !items[itOrbAether] && whirlwind::qdirs == 1; items[itWarning] = 0;