mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-08-26 15:32:19 +00:00
other active orbs now extend the duration of Orb of Recall
This commit is contained in:
parent
f218b7a3d5
commit
0e08b3225d
@ -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());
|
||||
}
|
||||
|
3
help.cpp
3
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; i<ittypes; i++) {
|
||||
|
12
orbs.cpp
12
orbs.cpp
@ -82,14 +82,18 @@ EX int intensify(int val) {
|
||||
return inv::on ? 2 * val : val * 6 / 5;
|
||||
}
|
||||
|
||||
int orbs_drained;
|
||||
|
||||
EX bool reduceOrbPower(eItem it, int cap) {
|
||||
if(items[it] && markOrb(itCurseDraining)) {
|
||||
orbs_drained++;
|
||||
items[it] -= (markOrb(itOrbEnergy) ? 1 : 2) * multi::activePlayers();
|
||||
if(items[it] < 0) items[it] = 0;
|
||||
if(items[it] == 0 && it == itOrbLove)
|
||||
princess::bringBack();
|
||||
}
|
||||
if(items[it] && (lastorbused[it] || (it == itOrbShield && items[it]>3) || !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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user