@@ -73,7 +73,11 @@ func newGameEventHandler(parser *Parser) gameEventHandler {
7373 geh := gameEventHandler {parser : parser }
7474
7575 delay := func (f gameEventHandlerFunc ) gameEventHandlerFunc {
76- return func (data map [string ]* msg.CSVCMsg_GameEventKeyT ) { f (data ) }
76+ return func (data map [string ]* msg.CSVCMsg_GameEventKeyT ) {
77+ parser .delayedEventHandlers = append (parser .delayedEventHandlers , func () {
78+ f (data )
79+ })
80+ }
7781 }
7882 geh .gameEventNameToHandler = map [string ]gameEventHandlerFunc {
7983 // sorted alphabetically
@@ -109,7 +113,7 @@ func newGameEventHandler(parser *Parser) gameEventHandler {
109113 "item_pickup" : delay (geh .itemPickup ), // Picked up or bought? Delayed because of #119 - Equipment.UniqueID()
110114 "item_remove" : geh .itemRemove , // Dropped?
111115 "other_death" : nil , // Dunno
112- "player_blind" : geh .playerBlind , // Player got blinded by a flash
116+ "player_blind" : delay ( geh .playerBlind ) , // Player got blinded by a flash. Delayed because Player.FlashDuration hasn't been updated yet
113117 "player_changename" : nil , // Name change
114118 "player_connect" : geh .playerConnect , // Bot connected or player reconnected, players normally come in via string tables & data tables
115119 "player_connect_full" : nil , // Connecting finished
@@ -287,8 +291,6 @@ func (geh gameEventHandler) playerHurt(data map[string]*msg.CSVCMsg_GameEventKey
287291}
288292
289293func (geh gameEventHandler ) playerBlind (data map [string ]* msg.CSVCMsg_GameEventKeyT ) {
290- // Player.FlashDuration hasn't been updated yet,
291- // so we need to wait until the end of the tick before dispatching
292294 geh .dispatch (events.PlayerFlashed {
293295 Player : geh .playerByUserID32 (data ["userid" ].GetValShort ()),
294296 Attacker : geh .gameState ().lastFlasher ,
0 commit comments