From fc56acc714301a8cb250c0429a9338e8993e896d Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Mon, 7 Sep 2020 14:54:17 +0200 Subject: [PATCH] Fix blood drops not following floor movement. --- language.version | 2 +- zscript/swwm_blod.zsc | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/language.version b/language.version index b6ac936d8..5e966c04d 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \cwGZ\c- r529 (Mon 7 Sep 14:53:57 CEST 2020)"; +SWWM_MODVER="\chSWWM \cwGZ\c- r530 (Mon 7 Sep 14:54:17 CEST 2020)"; diff --git a/zscript/swwm_blod.zsc b/zscript/swwm_blod.zsc index df378ef93..017125df0 100644 --- a/zscript/swwm_blod.zsc +++ b/zscript/swwm_blod.zsc @@ -109,6 +109,8 @@ Class mkBloodDrop : Actor bool killme; bool dead; mkBloodDrop prevblod, nextblod; + Sector tracksector; + int trackplane; Default { @@ -136,10 +138,16 @@ Class mkBloodDrop : Actor if ( dead ) { // do nothing but follow floor movement and eventually fade out - if ( pos.z != floorz ) + if ( tracksector ) { - SetZ(floorz); - UpdateWaterLevel(false); + double trackz; + if ( trackplane ) trackz = tracksector.ceilingplane.ZAtPoint(pos.xy); + else trackz = tracksector.floorplane.ZAtPoint(pos.xy); + if ( trackz != pos.z ) + { + SetZ(trackz); + UpdateWaterLevel(false); + } } if ( (waterlevel > 0) || GetFloorTerrain().isliquid ) { @@ -198,6 +206,20 @@ Class mkBloodDrop : Actor A_StartSound("misc/blooddrop",volume:.1); dead = true; SWWMUtility.SetToSlope(self,FRandom[Blood](0,360)); + tracksector = CurSector; + trackplane = 0; + F3DFloor ff; + for ( int i=0; i