fixed Orb of Safety in multiplayer

This commit is contained in:
Zeno Rogue 2020-05-16 02:38:13 +02:00
parent 67bf4586ac
commit f69b6f0795
4 changed files with 17 additions and 6 deletions

View File

@ -158,7 +158,8 @@ EX bool monstersnear2() {
bool recorduse[ittypes]; bool recorduse[ittypes];
for(int i=0; i<ittypes; i++) recorduse[i] = orbused[i]; for(int i=0; i<ittypes; i++) recorduse[i] = orbused[i];
if(multi::cpid == multi::players || multi::players == 1 || multi::checkonly) { if(multi::cpid == multi::players || multi::players == 1 || multi::checkonly) {
if(shmup::delayed_safety) return false;
dynamicval<eMonster> sw(passive_switch, passive_switch); dynamicval<eMonster> sw(passive_switch, passive_switch);
for(int i=0; i<isize(stalemate::moves); i++) for(int i=0; i<isize(stalemate::moves); i++)

View File

@ -147,8 +147,10 @@ EX bool collectItem(cell *c2, bool telekinesis IS(false)) {
playSound(c2, "pickup-orb"); // TODO safety playSound(c2, "pickup-orb"); // TODO safety
if(!dual::state) items[c2->item] = 7; if(!dual::state) items[c2->item] = 7;
if(shmup::on) if(shmup::on || multi::players > 1) {
shmup::delayed_safety = true; shmup::delayed_safety = true;
shmup::delayed_safety_land = c2->land;
}
else else
activateSafety(c2->land); activateSafety(c2->land);
return true; return true;

View File

@ -927,10 +927,17 @@ EX void handleInput(int delta) {
} }
multi::cpid = 0; multi::cpid = 0;
if(multimove()) { if(multimove()) {
multi::aftermove = false; multi::aftermove = false;
monstersTurn(); if(shmup::delayed_safety) {
checklastmove(); activateSafety(shmup::delayed_safety_land);
shmup::delayed_safety = false;
checklastmove();
}
else {
monstersTurn();
checklastmove();
}
} }
} }
} }

View File

@ -100,6 +100,7 @@ ld fabsl(ld x) { return x>0?x:-x; }
EX bool on = false; EX bool on = false;
EX bool delayed_safety = false; EX bool delayed_safety = false;
EX eLand delayed_safety_land;
bool lastdead = false; bool lastdead = false;
@ -2697,7 +2698,7 @@ EX void turn(int delta) {
additional.clear(); additional.clear();
if(delayed_safety) { if(delayed_safety) {
activateSafety(pc[0]->base->land); activateSafety(delayed_safety_land);
delayed_safety = false; delayed_safety = false;
} }