ShowEvents <- true
ShowEventParams <- true

// includes TF2, CSS, DODS, HL2DM, HLDMS events
ShowEventList <- 
[
	"achievement_earned"
	"achievement_earned_local"
	"achievement_event"
	"achievement_increment"
	"air_dash"
	"ammo_pickup"
	"arena_match_maxstreak"
	"arena_player_notification"
	"arena_round_start"
	"arena_win_panel"
	"arrow_impact"
	"base_player_teleported"
	"bomb_abortdefuse"
	"bomb_abortplant"
	"bomb_beep"
	"bomb_begindefuse"
	"bomb_beginplant"
	"bomb_defused"
	"bomb_dropped"
	"bomb_exploded"
	"bomb_pickup"
	"bomb_planted"
	"bonus_updated"
	"break_breakable"
	"break_prop"
	"browse_replays"
	"building_healed"
	"building_info_changed"
	"bullet_impact"
	"cart_updated"
	"christmas_gift_grab"
	"cl_drawline"
	"client_beginconnect"
	"client_connected"
	"client_disconnect"
	"client_fullconnect"
	"competitive_stats_update"
	"competitive_victory"
	"conga_kill"
	"controlpoint_endtouch"
	"controlpoint_fake_capture"
	"controlpoint_fake_capture_mult"
	"controlpoint_initialized"
	"controlpoint_pulse_element"
	"controlpoint_starttouch"
	"controlpoint_timer_updated"
	"controlpoint_unlock_updated"
	"controlpoint_updatecapping"
	"controlpoint_updateimages"
	"controlpoint_updatelayout"
	"controlpoint_updateowner"
	"cross_spectral_bridge"
	"crossbow_heal"
	"cs_win_panel_match"
	"cs_win_panel_round"
	"ctf_flag_captured"
	"damage_mitigated"
	"damage_prevented"
	"damage_resisted"
	"deadringer_cheat_death"
	"demoman_det_stickies"
	"deploy_buff_banner"
	"dod_allies_ready"
	"dod_axis_ready"
	"dod_bomb_defused"
	"dod_bomb_exploded"
	"dod_bomb_planted"
	"dod_broadcast_audio"
	"dod_capture_blocked"
	"dod_game_over"
	"dod_hint"
	"dod_kill_defuser"
	"dod_kill_planter"
	"dod_map_time_remaining"
	"dod_point_captured"
	"dod_ready_restart"
	"dod_restart_round"
	"dod_round_active"
	"dod_round_restart_seconds"
	"dod_round_start"
	"dod_round_win"
	"dod_stats_player_damage"
	"dod_stats_player_killed"
	"dod_stats_weapon_attack"
	"dod_team_scores"
	"dod_tick_points"
	"dod_timer_flash"
	"dod_timer_time_added"
	"dod_tnt_pickup"
	"dod_warmup_begins"
	"dod_warmup_ends"
	"dod_win_panel"
	"doomsday_rocket_open"
	"door_moving"
	"duck_xp_level_up"
	"duel_status"
	"econ_inventory_connected"
	"enter_vehicle"
	"entered_performance_mode"
	"entity_killed"
	"environmental_death"
	"escape_hell"
	"escaped_loot_island"
	"escort_progress"
	"escort_recede"
	"escort_speed"
	"eyeball_boss_escape_imminent"
	"eyeball_boss_escaped"
	"eyeball_boss_killed"
	"eyeball_boss_killer"
	"eyeball_boss_stunned"
	"eyeball_boss_summoned"
	"fish_notice"
	"fish_notice__arm"
	"flag_carried_in_detection_zone"
	"flagstatus_update"
	"flare_ignite_npc"
	"flashbang_detonate"
	"freezecam_started"
	"game_end"
	"game_init"
	"game_message"
	"game_newmap"
	"game_start"
	"gameui_activate"
	"gameui_activated"
	"gameui_hidden"
	"gameui_hide"
	"gc_lost_session"
	"gc_new_session"
	"grenade_bounce"
	"halloween_boss_killed"
	"halloween_duck_collected"
	"halloween_pumpkin_grab"
	"halloween_skeleton_killed"
	"halloween_soul_collected"
	"hegrenade_detonate"
	"helicopter_grenade_punt_miss"
	"hide_annotation"
	"hide_freezepanel"
	"hltv_changed_mode"
	"hltv_changed_target"
	"host_quit"
	"hostage_call_for_help"
	"hostage_follows"
	"hostage_hurt"
	"hostage_killed"
	"hostage_rescued"
	"hostage_rescued_all"
	"hostage_stops_following"
	"intro_finish"
	"intro_nextcamera"
	"inventory_updated"
	"item_found"
	"item_pickup"
	"item_schema_initialized"
	"items_acknowledged"
	"kill_in_hell"
	"kill_refills_meter"
	"killed_capping_player"
	"landed"
	"leave_vehicle"
	"lobby_updated"
	"localplayer_becameobserver"
	"localplayer_builtobject"
	"localplayer_changeclass"
	"localplayer_changedisguise"
	"localplayer_changeteam"
	"localplayer_chargeready"
	"localplayer_healed"
	"localplayer_pickup_weapon"
	"localplayer_respawn"
	"localplayer_score_changed"
	"localplayer_winddown"
	"mainmenu_stabilized"
	"match_end_conditions"
	"match_invites_updated"
	"medic_death"
	"medic_defended"
	"medigun_shield_blocked_damage"
	"merasmus_escape_warning"
	"merasmus_escaped"
	"merasmus_killed"
	"merasmus_prop_found"
	"merasmus_stunned"
	"merasmus_summoned"
	"minigame_win"
	"minigame_won"
	"mvm_adv_wave_complete_no_gates"
	"mvm_adv_wave_killed_stun_radio"
	"mvm_begin_wave"
	"mvm_bomb_alarm_triggered"
	"mvm_bomb_carrier_killed"
	"mvm_bomb_deploy_reset_by_player"
	"mvm_bomb_reset_by_player"
	"mvm_creditbonus_all"
	"mvm_creditbonus_all_advanced"
	"mvm_creditbonus_wave"
	"mvm_kill_robot_delivering_bomb"
	"mvm_mannhattan_pit"
	"mvm_medic_powerup_shared"
	"mvm_mission_complete"
	"mvm_mission_update"
	"mvm_pickup_currency"
	"mvm_quick_sentry_upgrade"
	"mvm_reset_stats"
	"mvm_scout_marked_for_death"
	"mvm_sentrybuster_detonate"
	"mvm_sentrybuster_killed"
	"mvm_sniper_headshot_currency"
	"mvm_tank_destroyed_by_players"
	"mvm_wave_complete"
	"mvm_wave_failed"
	"nav_blocked"
	"nav_generate"
	"npc_hurt"
	"num_cappers_changed"
	"object_deflected"
	"object_destroyed"
	"object_detonated"
	"object_removed"
	"overtime_nag"
	"parachute_deploy"
	"parachute_holster"
	"party_chat"
	"party_criteria_changed"
	"party_invites_changed"
	"party_member_join"
	"party_member_leave"
	"party_pref_changed"
	"party_queue_state_changed"
	"party_updated"
	"pass_ball_blocked"
	"pass_ball_stolen"
	"pass_free"
	"pass_get"
	"pass_pass_caught"
	"pass_score"
	"path_track_passed"
	"payload_pushed"
	"physgun_pickup"
	"player_abandoned_match"
	"player_account_changed"
	"player_activate"
	"player_askedforball"
	"player_avenged_teammate"
	"player_blind"
	"player_bonuspoints"
	"player_buff"
	"player_builtobject"
	"player_buyback"
	"player_calledformedic"
	"player_carryobject"
	"player_changeclass"
	"player_changename"
	"player_chargedeployed"
	"player_chat"
	"player_class"
	"player_connect"
	"player_connect_client"
	"player_currency_changed"
	"player_damage_dodged"
	"player_damaged"
	"player_death"
	"player_decal"
	"player_destroyed_pipebomb"
	"player_directhit_stun"
	"player_disconnect"
	"player_domination"
	"player_dropobject"
	"player_escort_score"
	"player_extinguished"
	"player_falldamage"
	"player_footstep"
	"player_healed"
	"player_healedbymedic"
	"player_healedmediccall"
	"player_healonhit"
	"player_highfive_cancel"
	"player_highfive_start"
	"player_highfive_success"
	"player_hintmessage"
	"player_hurt"
	"player_ignited"
	"player_ignited_inv"
	"player_info"
	"player_initial_spawn"
	"player_invulned"
	"player_jarated"
	"player_jarated_fade"
	"player_jump"
	"player_killed_achievement_zone"
	"player_mvp"
	"player_pinned"
	"player_radio"
	"player_regenerate"
	"player_rocketpack_pushed"
	"player_sapped_object"
	"player_say"
	"player_score"
	"player_score_changed"
	"player_shield_blocked"
	"player_shoot"
	"player_spawn"
	"player_stats_updated"
	"player_stealsandvich"
	"player_stunned"
	"player_team"
	"player_teleported"
	"player_turned_to_ghost"
	"player_upgraded"
	"player_upgradedobject"
	"player_use"
	"player_used_powerup_bottle"
	"playing_commentary"
	"post_inventory_application"
	"projectile_direct_hit"
	"projectile_removed"
	"pumpkin_lord_killed"
	"pumpkin_lord_summoned"
	"pve_win_panel"
	"quest_map_data_changed"
	"quest_objective_completed"
	"quest_progress"
	"quest_request"
	"quest_response"
	"quest_turn_in_state"
	"questlog_opened"
	"ragdoll_dissolved"
	"raid_spawn_mob"
	"raid_spawn_squad"
	"rd_player_score_points"
	"rd_robot_impact"
	"rd_robot_killed"
	"rd_rules_state_changed"
	"rd_team_points_changed"
	"recalculate_holidays"
	"recalculate_truce"
	"rematch_failed_to_create"
	"remove_nemesis_relationships"
	"replay_endrecord"
	"replay_replaysavailable"
	"replay_saved"
	"replay_servererror"
	"replay_sessioninfo"
	"replay_startrecord"
	"replay_youtube_stats"
	"respawn_ghost"
	"restart_timer_time"
	"revive_player_complete"
	"revive_player_notify"
	"revive_player_stopped"
	"rocket_jump"
	"rocket_jump_landed"
	"rocketpack_landed"
	"rocketpack_launch"
	"round_end"
	"round_freeze_end"
	"round_mvp"
	"round_start"
	"rps_taunt_event"
	"schema_updated"
	"scorestats_accumulated_reset"
	"scorestats_accumulated_update"
	"scout_grand_slam"
	"scout_slamdoll_landed"
	"sentry_on_go_active"
	"server_addban"
	"server_changelevel_failed"
	"server_cvar"
	"server_message"
	"server_removeban"
	"server_shutdown"
	"server_spawn"
	"show_annotation"
	"show_class_layout"
	"show_freezepanel"
	"show_match_summary"
	"show_vs_panel"
	"single_player_death"
	"skeleton_killed_quest"
	"skeleton_king_killed_quest"
	"slap_notice"
	"smokegrenade_detonate"
	"spec_target_updated"
	"special_score"
	"spy_pda_reset"
	"stats_resetround"
	"sticky_jump"
	"sticky_jump_landed"
	"store_pricesheet_updated"
	"tagged_player_as_it"
	"take_armor"
	"take_health"
	"team_info"
	"team_leader_killed"
	"team_score"
	"teamplay_alert"
	"teamplay_broadcast_audio"
	"teamplay_capture_blocked"
	"teamplay_capture_broken"
	"teamplay_flag_event"
	"teamplay_game_over"
	"teamplay_map_time_remaining"
	"teamplay_overtime_begin"
	"teamplay_overtime_end"
	"teamplay_point_captured"
	"teamplay_point_locked"
	"teamplay_point_startcapture"
	"teamplay_point_unlocked"
	"teamplay_pre_round_time_left"
	"teamplay_ready_restart"
	"teamplay_restart_round"
	"teamplay_round_active"
	"teamplay_round_restart_seconds"
	"teamplay_round_selected"
	"teamplay_round_stalemate"
	"teamplay_round_start"
	"teamplay_round_win"
	"teamplay_setup_finished"
	"teamplay_suddendeath_begin"
	"teamplay_suddendeath_end"
	"teamplay_team_ready"
	"teamplay_teambalanced_player"
	"teamplay_timer_flash"
	"teamplay_timer_time_added"
	"teamplay_update_timer"
	"teamplay_waiting_abouttoend"
	"teamplay_waiting_begins"
	"teamplay_waiting_ends"
	"teamplay_win_panel"
	"teams_changed"
	"tf_game_over"
	"tf_map_time_remaining"
	"throwable_hit"
	"tournament_enablecountdown"
	"tournament_stateupdate"
	"training_complete"
	"update_status_item"
	"upgrades_file_changed"
	"user_data_downloaded"
	"vip_escaped"
	"vip_killed"
	"vote_cast"
	"vote_changed"
	"vote_ended"
	"vote_failed"
	"vote_maps_changed"
	"vote_options"
	"vote_passed"
	"vote_started"
	"weapon_equipped"
	"weapon_fire"
	"weapon_fire_on_empty"
	"weapon_reload"
	"weapon_zoom"
	"winlimit_changed"
]

if (!("ShowEventTable" in this))
	ShowEventTable <- {}
ShowEventTable.clear()

foreach (event in ShowEventList)
{
	local event_base_name = event
	local event_name = "OnGameEvent_" + event
	ShowEventTable[event_name] <- function(params) 
	{
		if (ShowEvents)
		{
			printf("[EVENT] %g - %d - %s\n", Time(), GetFrameCount(), event_base_name)
			if (ShowEventParams)
			{
				foreach (k, v in params)
					printf(format("%12s - " + v + "\n", k))
			}
		}
	}
}
__CollectGameEventCallbacks(ShowEventTable)