@@ -261,33 +261,31 @@ func (p *Parser) handleGameEvent(ge *msg.CSVCMsg_GameEvent) {
261261 case "player_team" : // Player changed team
262262 data = mapGameEventData (d , ge )
263263
264- e := events. PlayerTeamChangeEvent {
265- Player : p . gameState . players [ int (data ["userid " ].GetValShort ())],
266- IsBot : data [ "isbot" ]. GetValBool (),
267- Silent : data [ "silent" ]. GetValBool (),
268- }
269-
270- // FIXME: We could probably just cast team & oldteam to common.Team, should always be correct. . . Needs testing
271- switch data [ "team" ]. GetValByte () {
272- case int32 ( p . gameState . tState . id ):
273- e . NewTeam = common . TeamTerrorists
274- case int32 ( p . gameState . ctState . id ):
275- e . NewTeam = common . TeamCounterTerrorists
276- default :
277- e . NewTeam = common . TeamSpectators
278- }
279-
280- switch data [ "oldteam" ]. GetValByte () {
281- case int32 ( p . gameState . tState . id ):
282- e . OldTeam = common . TeamTerrorists
283- case int32 ( p . gameState . ctState . id ):
284- e . OldTeam = common . TeamCounterTerrorists
285- default :
286- e . OldTeam = common . TeamSpectators
264+ player := p . gameState . players [ int ( data [ "userid" ]. GetValShort ())]
265+ newTeam := common . Team (data ["team " ].GetValByte ())
266+
267+ if player != nil {
268+ if player . Team != newTeam {
269+ player . Team = newTeam
270+
271+ p . eventDispatcher . Dispatch (events. PlayerTeamChangeEvent {
272+ Player : player ,
273+ IsBot : data [ "isbot" ]. GetValBool (),
274+ Silent : data [ "silent" ]. GetValBool (),
275+ NewTeam : newTeam ,
276+ OldTeam : common . Team ( data [ "oldteam" ]. GetValByte ()),
277+ })
278+ } else {
279+ p . eventDispatcher . Dispatch (events. ParserWarnEvent {
280+ Message : "Player team swap game-event occured but player.Team == newTeam" ,
281+ })
282+ }
283+ } else {
284+ p . eventDispatcher . Dispatch (events. ParserWarnEvent {
285+ Message : "Player team swap game-event occured but player is nil" ,
286+ })
287287 }
288288
289- p .eventDispatcher .Dispatch (e )
290-
291289 case "bomb_beginplant" : // Plant started
292290 fallthrough
293291 case "bomb_planted" : // Plant finished
0 commit comments