diff --git a/checkmove.cpp b/checkmove.cpp index ae15f849..b92626e9 100644 --- a/checkmove.cpp +++ b/checkmove.cpp @@ -158,7 +158,8 @@ EX bool monstersnear2() { bool recorduse[ittypes]; for(int i=0; i sw(passive_switch, passive_switch); for(int i=0; iitem] = 7; - if(shmup::on) + if(shmup::on || multi::players > 1) { shmup::delayed_safety = true; + shmup::delayed_safety_land = c2->land; + } else activateSafety(c2->land); return true; diff --git a/multi.cpp b/multi.cpp index f26c1366..871be4b5 100644 --- a/multi.cpp +++ b/multi.cpp @@ -927,10 +927,17 @@ EX void handleInput(int delta) { } multi::cpid = 0; - if(multimove()) { + if(multimove()) { multi::aftermove = false; - monstersTurn(); - checklastmove(); + if(shmup::delayed_safety) { + activateSafety(shmup::delayed_safety_land); + shmup::delayed_safety = false; + checklastmove(); + } + else { + monstersTurn(); + checklastmove(); + } } } } diff --git a/shmup.cpp b/shmup.cpp index 0d5bc122..ea41a34b 100644 --- a/shmup.cpp +++ b/shmup.cpp @@ -100,6 +100,7 @@ ld fabsl(ld x) { return x>0?x:-x; } EX bool on = false; EX bool delayed_safety = false; +EX eLand delayed_safety_land; bool lastdead = false; @@ -2697,7 +2698,7 @@ EX void turn(int delta) { additional.clear(); if(delayed_safety) { - activateSafety(pc[0]->base->land); + activateSafety(delayed_safety_land); delayed_safety = false; }