// all the player* virtuals extend Class SWWMHandler { override void PlayerDied( PlayerEvent e ) { let s = SWWMStats.Find(players[e.playernumber]); if ( s ) s.deaths++; } override void PlayerEntered( PlayerEvent e ) { PlayerInfo p = players[e.playernumber]; // override KEYCONF-forced player classes when run with other gameplay mods (wish this was easier) if ( !(p.mo is 'Demolitionist') ) { // make sure it's defined here, so special purpose classes (player chunks, scripted overrides) are respected for ( int i=0; i 0) && ((s.lastcluster != level.cluster) || !(level.clusterflags&LevelLocals.CLUSTER_HUB))) ) SWWMUtility.WipeInventory(p.mo,swwm_resetscore); } override void PlayerRespawned( PlayerEvent e ) { // reset some vars multilevel[e.playernumber] = 0; spreecount[e.playernumber] = 0; tookdamage[e.playernumber] = false; lastkill[e.playernumber] = int.min; // reset combat tracker if ( !swwm_notrack ) SWWMCombatTracker.Spawn(players[e.playernumber].mo); } }