mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-08-29 16:57:56 +00:00
other active orbs now extend the duration of Orb of Recall
This commit is contained in:
@@ -327,10 +327,12 @@ int arg::readCommon() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
else if(argis("-save-mode")) {
|
else if(argis("-save-mode")) {
|
||||||
|
PHASEFROM(2);
|
||||||
save_mode_to_file(shift_args());
|
save_mode_to_file(shift_args());
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(argis("-load-mode")) {
|
else if(argis("-load-mode")) {
|
||||||
|
PHASEFROM(2);
|
||||||
try {
|
try {
|
||||||
load_mode_from_file(shift_args());
|
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)
|
if(it == itOrbIntensity && inv::on)
|
||||||
help += XLAT("\n\nIn the Orb Strategy Mode, the effect is increased to +100%.");
|
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) {
|
if(it == itOrbEmpathy) {
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
for(int i=0; i<ittypes; i++) {
|
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;
|
return inv::on ? 2 * val : val * 6 / 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int orbs_drained;
|
||||||
|
|
||||||
EX bool reduceOrbPower(eItem it, int cap) {
|
EX bool reduceOrbPower(eItem it, int cap) {
|
||||||
if(items[it] && markOrb(itCurseDraining)) {
|
if(items[it] && markOrb(itCurseDraining)) {
|
||||||
|
orbs_drained++;
|
||||||
items[it] -= (markOrb(itOrbEnergy) ? 1 : 2) * multi::activePlayers();
|
items[it] -= (markOrb(itOrbEnergy) ? 1 : 2) * multi::activePlayers();
|
||||||
if(items[it] < 0) items[it] = 0;
|
if(items[it] < 0) items[it] = 0;
|
||||||
if(items[it] == 0 && it == itOrbLove)
|
if(items[it] == 0 && it == itOrbLove)
|
||||||
princess::bringBack();
|
princess::bringBack();
|
||||||
}
|
}
|
||||||
if(items[it] && (lastorbused[it] || (it == itOrbShield && items[it]>3) || !markOrb(itOrbTime))) {
|
if(items[it] && (lastorbused[it] || (it == itOrbShield && items[it]>3) || !markOrb(itOrbTime))) {
|
||||||
|
orbs_drained++;
|
||||||
items[it] -= multi::activePlayers();
|
items[it] -= multi::activePlayers();
|
||||||
if(isHaunted(cwt.at->land))
|
if(isHaunted(cwt.at->land))
|
||||||
fail_survivalist();
|
fail_survivalist();
|
||||||
@@ -106,6 +110,7 @@ EX bool reduceOrbPower(eItem it, int cap) {
|
|||||||
|
|
||||||
EX void reduceOrbPowerAlways(eItem it) {
|
EX void reduceOrbPowerAlways(eItem it) {
|
||||||
if(items[it]) {
|
if(items[it]) {
|
||||||
|
orbs_drained++;
|
||||||
items[it] -= multi::activePlayers();
|
items[it] -= multi::activePlayers();
|
||||||
if(items[it] < 0) items[it] = 0;
|
if(items[it] < 0) items[it] = 0;
|
||||||
}
|
}
|
||||||
@@ -126,6 +131,8 @@ EX void reverse_curse(eItem curse, eItem orb, bool cancel) {
|
|||||||
|
|
||||||
EX void reduceOrbPowers() {
|
EX void reduceOrbPowers() {
|
||||||
|
|
||||||
|
orbs_drained = 0;
|
||||||
|
|
||||||
reverse_curse(itCurseWeakness, itOrbSlaying, true);
|
reverse_curse(itCurseWeakness, itOrbSlaying, true);
|
||||||
reverse_curse(itCurseFatigue, itOrbSpeed, false); // OK
|
reverse_curse(itCurseFatigue, itOrbSpeed, false); // OK
|
||||||
reverse_curse(itCurseRepulsion, itOrbMagnetism, true); // OK
|
reverse_curse(itCurseRepulsion, itOrbMagnetism, true); // OK
|
||||||
@@ -183,7 +190,6 @@ EX void reduceOrbPowers() {
|
|||||||
reduceOrbPower(itOrbSword2, 100 + 20 * multi::activePlayers());
|
reduceOrbPower(itOrbSword2, 100 + 20 * multi::activePlayers());
|
||||||
reduceOrbPower(itOrbStone, 120);
|
reduceOrbPower(itOrbStone, 120);
|
||||||
reduceOrbPower(itOrbNature, 120);
|
reduceOrbPower(itOrbNature, 120);
|
||||||
reduceOrbPower(itOrbRecall, 77);
|
|
||||||
reduceOrbPower(itOrbBull, 120);
|
reduceOrbPower(itOrbBull, 120);
|
||||||
reduceOrbPower(itOrbHorns, 77);
|
reduceOrbPower(itOrbHorns, 77);
|
||||||
reduceOrbPower(itOrbLava, 80);
|
reduceOrbPower(itOrbLava, 80);
|
||||||
@@ -214,6 +220,10 @@ EX void reduceOrbPowers() {
|
|||||||
mine::auto_teleport_charges();
|
mine::auto_teleport_charges();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if(orbs_drained && items[itOrbRecall] <= 10)
|
||||||
|
items[itOrbRecall] = 11;
|
||||||
|
reduceOrbPower(itOrbRecall, 77);
|
||||||
|
|
||||||
whirlwind::calcdirs(cwt.at);
|
whirlwind::calcdirs(cwt.at);
|
||||||
items[itStrongWind] = !items[itOrbAether] && whirlwind::qdirs == 1;
|
items[itStrongWind] = !items[itOrbAether] && whirlwind::qdirs == 1;
|
||||||
items[itWarning] = 0;
|
items[itWarning] = 0;
|
||||||
|
Reference in New Issue
Block a user