From f69b6f0795d279a2f83254bd21dffe077c3f1c4d Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Sat, 16 May 2020 02:38:13 +0200 Subject: [PATCH] fixed Orb of Safety in multiplayer --- checkmove.cpp | 3 ++- items.cpp | 4 +++- multi.cpp | 13 ++++++++++--- shmup.cpp | 3 ++- 4 files changed, 17 insertions(+), 6 deletions(-) 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; }