@@ -22,7 +22,6 @@ func (p *parser) handleGameEventList(gel *msg.CSVCMsg_GameEventList) {
2222func (p * parser ) handleGameEvent (ge * msg.CSVCMsg_GameEvent ) {
2323 if p .gameEventDescs == nil {
2424 p .eventDispatcher .Dispatch (events.ParserWarn {Message : "received GameEvent but event descriptors are missing" })
25- unassert .Error ("received GameEvent but event descriptors are missing" )
2625
2726 return
2827 }
@@ -107,6 +106,7 @@ func newGameEventHandler(parser *parser) gameEventHandler {
107106
108107 geh .gameEventNameToHandler = map [string ]gameEventHandlerFunc {
109108 // sorted alphabetically
109+ "ammo_pickup" : nil , // Dunno, only in locally recorded (POV) demo
110110 "announce_phase_end" : nil , // Dunno
111111 "begin_new_match" : geh .beginNewMatch , // Match started
112112 "bomb_beep" : nil , // Bomb beep
@@ -119,6 +119,7 @@ func newGameEventHandler(parser *parser) gameEventHandler {
119119 "bomb_planted" : delayIfNoPlayers (geh .bombPlanted ), // Plant finished
120120 "bot_takeover" : delay (geh .botTakeover ), // Bot got taken over
121121 "buytime_ended" : nil , // Not actually end of buy time, seems to only be sent once per game at the start
122+ "cs_intermission" : nil , // Dunno, only in locally recorded (POV) demo
122123 "cs_match_end_restart" : nil , // Yawn
123124 "cs_pre_restart" : nil , // Not sure, doesn't seem to be important
124125 "cs_round_final_beep" : nil , // Final beep
@@ -128,24 +129,26 @@ func newGameEventHandler(parser *parser) gameEventHandler {
128129 "decoy_detonate" : geh .decoyDetonate , // Decoy exploded/expired
129130 "decoy_started" : delay (geh .decoyStarted ), // Decoy started. Delayed because projectile entity is not yet created
130131 "endmatch_cmm_start_reveal_items" : nil , // Drops
131- "entity_visible" : nil , // Dunno, only in locally recorded demo
132- "enter_bombzone" : nil , // Dunno, only in locally recorded demo
133- "exit_bombzone" : nil , // Dunno, only in locally recorded demo
134- "enter_buyzone" : nil , // Dunno, only in locally recorded demo
135- "exit_buyzone" : nil , // Dunno, only in locally recorded demo
132+ "entity_visible" : nil , // Dunno, only in locally recorded (POV) demo
133+ "enter_bombzone" : nil , // Dunno, only in locally recorded (POV) demo
134+ "exit_bombzone" : nil , // Dunno, only in locally recorded (POV) demo
135+ "enter_buyzone" : nil , // Dunno, only in locally recorded (POV) demo
136+ "exit_buyzone" : nil , // Dunno, only in locally recorded (POV) demo
136137 "flashbang_detonate" : geh .flashBangDetonate , // Flash exploded
137138 "hegrenade_detonate" : geh .heGrenadeDetonate , // HE exploded
138139 "hltv_chase" : nil , // Don't care
139140 "hltv_fixed" : nil , // Dunno
140141 "hltv_message" : nil , // No clue
141142 "hltv_status" : nil , // Don't know
143+ "hostname_changed" : nil , // Only present in locally recorded (POV) demos
142144 "inferno_expire" : geh .infernoExpire , // Incendiary expired
143145 "inferno_startburn" : delay (geh .infernoStartBurn ), // Incendiary exploded/started. Delayed because inferno entity is not yet created
144- "inspect_weapon" : nil , // Dunno, only in locally recorded demo
146+ "inspect_weapon" : nil , // Dunno, only in locally recorded (POV) demos
145147 "item_equip" : delay (geh .itemEquip ), // Equipped / weapon swap, I think. Delayed because of #142 - Bot entity possibly not yet created
146148 "item_pickup" : delay (geh .itemPickup ), // Picked up or bought? Delayed because of #119 - Equipment.UniqueID()
149+ "item_pickup_slerp" : nil , // Not sure, only in locally recorded (POV) demos
147150 "item_remove" : geh .itemRemove , // Dropped?
148- "jointeam_failed" : nil , // Dunno, only in locally recorded demo
151+ "jointeam_failed" : nil , // Dunno, only in locally recorded (POV) demos
149152 "other_death" : nil , // Dunno
150153 "player_blind" : delay (geh .playerBlind ), // Player got blinded by a flash. Delayed because Player.FlashDuration hasn't been updated yet
151154 "player_changename" : nil , // Name change
@@ -158,7 +161,8 @@ func newGameEventHandler(parser *parser) gameEventHandler {
158161 "player_hurt" : geh .playerHurt , // Player got hurt
159162 "player_jump" : geh .playerJump , // Player jumped
160163 "player_spawn" : nil , // Player spawn
161- "player_given_c4" : nil , // Dunno, only present in POV demos
164+ "player_spawned" : nil , // Only present in locally recorded (POV) demos
165+ "player_given_c4" : nil , // Dunno, only present in locally recorded (POV) demos
162166
163167 // Player changed team. Delayed for two reasons
164168 // - team IDs of other players changing teams in the same tick might not have changed yet
@@ -187,7 +191,7 @@ func newGameEventHandler(parser *parser) gameEventHandler {
187191 "weapon_fire_on_empty" : nil , // Sounds boring
188192 "weapon_reload" : geh .weaponReload , // Weapon reloaded
189193 "weapon_zoom" : nil , // Zooming in
190- "weapon_zoom_rifle" : nil , // Dunno, only in locally recorded demo
194+ "weapon_zoom_rifle" : nil , // Dunno, only in locally recorded (POV) demo
191195 }
192196
193197 return geh
@@ -523,7 +527,11 @@ func (geh gameEventHandler) bombPlanted(data map[string]*msg.CSVCMsg_GameEventKe
523527 }
524528
525529 event := events.BombPlanted {BombEvent : bombEvent }
526- event .Player .IsPlanting = false
530+
531+ if event .Player != nil { // if not nil check is necessary for POV demos
532+ event .Player .IsPlanting = false
533+ }
534+
527535 geh .parser .gameState .currentPlanter = nil
528536 geh .dispatch (event )
529537}
@@ -681,10 +689,6 @@ func (geh gameEventHandler) getThrownGrenade(p *common.Player, wepType common.Eq
681689 }
682690 }
683691
684- // smokes might have duplicate smokegrenade_expired events, so it could have already been deleted.
685- // if it's not a smoke this should never be reached
686- unassert .Samef (wepType , common .EqSmoke , "tried to get non-existing grenade from gameState.thrownGrenades" )
687-
688692 return nil
689693}
690694
@@ -705,10 +709,6 @@ func (geh gameEventHandler) deleteThrownGrenade(p *common.Player, wepType common
705709 return
706710 }
707711 }
708-
709- // smokes might have duplicate smokegrenade_expired events, so it might already be deleted.
710- // besides that this code should never be reached
711- unassert .Samef (wepType , common .EqSmoke , "trying to delete non-existing grenade from gameState.thrownGrenades" )
712712}
713713
714714func (geh gameEventHandler ) attackerWeaponType (wepType common.EquipmentType , victimUserID int32 ) common.EquipmentType {
0 commit comments