diff --git a/language.version b/language.version index d9a522064..031e67f40 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r775 \cu(Thu 21 Jan 14:41:20 CET 2021)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r776 \cu(Thu 21 Jan 16:09:18 CET 2021)"; diff --git a/zscript/swwm_handler.zsc b/zscript/swwm_handler.zsc index 906708009..0f0192579 100644 --- a/zscript/swwm_handler.zsc +++ b/zscript/swwm_handler.zsc @@ -2511,9 +2511,65 @@ Class SWWMHandler : EventHandler SWWMGesture.SetGesture(mo,GS_BlowKiss); break; } + return; + } + else if ( e.Name ~== "swwmupdatetrackers" ) + { + if ( multiplayer && (e.player != Net_Arbitrator) ) + { + if ( e.player == consoleplayer ) + Console.Printf("Only the net arbitrator can call this event."); + return; + } + if ( swwm_notrack ) + { + int n = trackers_cnt; + while ( trackers ) trackers.Destroy(); // wow that's simple, all in one line + Console.Printf("%d trackers removed.",n); + } + else + { + int n = trackers_cnt; + let ti = ThinkerIterator.Create("Actor"); + Actor a; + while ( a = Actor(ti.Next()) ) + { + if ( (!a.bSHOOTABLE && !a.bISMONSTER) || (a is 'LampMoth') || (a is 'CompanionLamp') ) continue; + let trk = SWWMCombatTracker.Spawn(a); + if ( !a.player ) trk.maxhealth = max(a.health,a.GetSpawnHealth()); + } + n = (trackers_cnt-n); + Console.Printf("%d trackers added.",n); + } + return; + } + else if ( e.Name ~== "swwmtrimsuckables" ) + { + if ( multiplayer && (e.player != Net_Arbitrator) ) + { + if ( e.player == consoleplayer ) + Console.Printf("Only the net arbitrator can call this event."); + return; + } + int n = 0; + for ( int i=0; i