diff --git a/CODE-mp/Debug/HA312W32.DLL b/CODE-mp/Debug/HA312W32.DLL new file mode 100644 index 0000000..2b1ea82 Binary files /dev/null and b/CODE-mp/Debug/HA312W32.DLL differ diff --git a/CODE-mp/Debug/SHW32.DLL b/CODE-mp/Debug/SHW32.DLL new file mode 100644 index 0000000..42b2f67 Binary files /dev/null and b/CODE-mp/Debug/SHW32.DLL differ diff --git a/CODE-mp/Debug/vssver.scc b/CODE-mp/Debug/vssver.scc new file mode 100644 index 0000000..90c96a2 Binary files /dev/null and b/CODE-mp/Debug/vssver.scc differ diff --git a/CODE-mp/base/games.log b/CODE-mp/base/games.log new file mode 100644 index 0000000..094740b --- /dev/null +++ b/CODE-mp/base/games.log @@ -0,0 +1,810 @@ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\noname\version\JK2MP: v0.57 win-x86-debug Feb 12 2002\dmflags\0\fraglimit\20\timelimit\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_maxclients\8\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk\g_MaxHolocronCarry\3\g_maxGameClients\0\g_maxForceRank\0\g_forceBasedTeams\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_needpass\0 + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:13 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\3\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:13 setteam: 0 SPECTATOR FREE + 0:13 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:13 ClientBegin: 0 + 1:20 ShutdownGame: + 1:20 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\noname\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\version\JK2MP: v0.57 win-x86-debug Feb 15 2002\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk\g_MaxHolocronCarry\3\g_maxForceRank\0\g_forceBasedTeams\0\g_duelWeaponDisable\0\g_needpass\0 + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:06 setteam: 0 SPECTATOR FREE + 0:06 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:06 ClientBegin: 0 + 0:09 Item: 0 weapon_thermal + 0:29 Item: 0 ammo_blaster + 0:35 Item: 0 ammo_powercell + 0:38 Item: 0 item_shield + 0:58 ShutdownGame: + 0:58 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\noname\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\version\JK2MP: v0.57 win-x86-debug Feb 17 2002\g_gametype\0\protocol\15\mapname\ffa_deathstar\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk\g_MaxHolocronCarry\3\g_maxForceRank\0\g_forceBasedTeams\0\g_needpass\0 + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:27 setteam: 0 SPECTATOR SPECTATOR + 0:27 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\3\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:27 ClientBegin: 0 + 0:32 setteam: 0 SPECTATOR FREE + 0:32 ClientUserinfoChanged: 0 n\UnnamedPlayer\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:32 ClientBegin: 0 + 0:35 Item: 0 item_shield_sm_instant + 0:36 Item: 0 item_shield_sm_instant + 0:36 Item: 0 item_shield_sm_instant + 0:41 Kill: 0 0 34: UnnamedPlayer killed UnnamedPlayer by MOD_FALLING + 1:13 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:31 ShutdownGame: + 1:31 ------------------------------------------------------------ + 1:31 ------------------------------------------------------------ + 1:31 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\noname\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\version\JK2MP: v0.57 win-x86-debug Feb 17 2002\g_gametype\0\protocol\15\mapname\ffa_deathstar\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk\g_MaxHolocronCarry\3\g_maxForceRank\0\g_forceBasedTeams\0\g_needpass\0 + 1:31 ClientConnect: 0 + 1:31 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:31 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:31 ClientBegin: 0 + 1:42 Item: 0 item_shield_sm_instant + 1:43 Item: 0 item_shield_sm_instant + 1:43 Item: 0 item_shield_sm_instant + 1:48 Item: 0 ammo_metallic_bolts + 2:01 Item: 0 weapon_repeater + 3:39 Item: 0 item_shield_lrg_instant + 3:54 Item: 0 ammo_metallic_bolts + 3:54 Item: 0 weapon_flechette + 3:58 Item: 0 item_medpak_instant + 4:03 Item: 0 ammo_blaster + 4:09 Item: 0 weapon_bowcaster + 4:09 Item: 0 ammo_powercell + 4:19 Item: 0 weapon_disruptor + 4:19 Item: 0 ammo_powercell + 4:22 ShutdownGame: + 4:22 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\crash testing\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\version\JK2MP: v1.00a win-x86-debug Feb 22 2002\g_maxHolocronCarry\3\g_maxForceRank\6\g_forceBasedTeams\0\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 2:15 ClientConnect: 0 + 2:15 ClientUserinfoChanged: 0 n\Luke\t\0\model\Luke\hmodel\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 2:15 ClientBegin: 0 + 2:20 Item: 0 ammo_blaster + 2:56 Item: 0 weapon_repeater + 3:01 Item: 0 weapon_blaster + 3:15 Item: 0 item_medpac + 3:27 Item: 0 ammo_blaster + 3:30 Item: 0 ammo_metallic_bolts + 4:01 Item: 0 item_shield_sm_instant + 4:01 Item: 0 item_shield_sm_instant + 4:15 Item: 0 ammo_metallic_bolts + 4:46 Item: 0 item_shield_sm_instant + 6:31 ClientConnect: 1 + 6:31 ClientUserinfoChanged: 1 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 9:14 ClientUserinfoChanged: 1 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 9:14 ClientDisconnect: 1 + 9:43 ClientConnect: 1 + 9:43 ClientUserinfoChanged: 1 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 10:02 ClientUserinfoChanged: 1 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 10:02 ClientBegin: 1 + 10:39 ClientConnect: 2 + 10:39 ClientUserinfoChanged: 2 n\Luke\t\0\model\Luke\hmodel\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 10:39 ClientBegin: 2 + 10:44 Item: 2 ammo_blaster + 10:49 setteam: 1 SPECTATOR FREE + 10:49 ClientUserinfoChanged: 1 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 10:49 ClientBegin: 1 + 11:21 ClientUserinfoChanged: 1 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Empire\g_blueteam\Rebellion\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 11:24 Kill: 2 1 3: Luke killed Padawan by MOD_SABER + 11:28 say: Luke: The Force is my guide. + 11:41 Item: 2 item_shield_sm_instant + 11:41 Item: 2 item_shield_sm_instant + 11:48 Item: 2 item_sentry_gun + 11:52 Item: 1 ammo_blaster + 11:56 Item: 2 item_shield_lrg_instant + 12:01 Item: 0 weapon_flechette + 12:01 Item: 1 ammo_blaster + 12:02 Item: 2 item_medpac + 12:04 ClientDisconnect: 1 + 12:11 Item: 2 weapon_disruptor + 12:20 Item: 0 item_shield_sm_instant + 12:21 Item: 0 item_shield_sm_instant + 12:21 Item: 0 item_shield_sm_instant + 12:41 Kill: 0 2 16: Luke killed Luke by MOD_FLECHETTE + 12:43 Kill: 2 0 28: Luke killed Luke by MOD_SENTRY + 12:44 say: Luke: The Force is my guide. + 12:44 say: Luke: The Force is strong in you, Luke. + 12:46 Item: 2 ammo_powercell + 12:51 Item: 0 item_shield + 13:09 Item: 0 ammo_blaster + 13:14 Item: 2 weapon_thermal + 13:40 Item: 0 item_shield_sm_instant + 13:40 Item: 0 item_shield_sm_instant + 13:52 Item: 0 item_shield + 13:52 Item: 2 ammo_powercell + 14:06 Item: 2 ammo_blaster + 14:19 Item: 2 weapon_thermal + 14:31 Kill: 2 0 3: Luke killed Luke by MOD_SABER + 14:33 say: Luke: The Force is my guide. + 14:34 say: Luke: It s not my fault! + 14:53 Kill: 0 2 3: Luke killed Luke by MOD_SABER + 15:12 Item: 0 weapon_repeater + 15:17 Item: 0 weapon_blaster + 15:20 Item: 2 ammo_blaster + 15:23 Item: 0 item_medpak_instant + 15:32 Item: 0 item_medpac + 15:41 Item: 2 weapon_bowcaster + 15:41 ShutdownGame: + 15:41 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.00a win-x86-debug Feb 22 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientDisconnect: 0 + 0:25 ShutdownGame: + 0:25 ------------------------------------------------------------ + 0:25 ------------------------------------------------------------ + 0:25 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.00a win-x86-debug Feb 22 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 0:26 ClientConnect: 0 + 0:26 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:26 ClientDisconnect: 0 + 0:54 ShutdownGame: + 0:54 ------------------------------------------------------------ + 0:54 ------------------------------------------------------------ + 0:54 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.00a win-x86-debug Feb 22 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 0:54 ClientConnect: 0 + 0:54 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:55 ClientDisconnect: 0 + 0:55 ShutdownGame: + 0:55 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.00a win-x86-debug Feb 22 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:47 say: Em0r0g: ui_hu + 0:50 say: Em0r0g: ui_load + 0:51 say: Em0r0g: ui_load + 5:42 ClientUserinfoChanged: 0 n\Em0r0g\t\3\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 5:52 ShutdownGame: + 5:52 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\crash testing\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.00a win-x86-debug Feb 22 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:06 ClientUserinfoChanged: 0 n\Em0r0g\t\3\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:06 setteam: 0 SPECTATOR FREE + 0:06 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:06 ClientBegin: 0 + 0:12 Item: 0 ammo_blaster + 0:49 Item: 0 item_shield + 1:03 ShutdownGame: + 1:03 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.00a win-x86-debug Feb 22 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:17 ClientUserinfoChanged: 0 n\Em0r0g\t\3\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:21 setteam: 0 SPECTATOR FREE + 0:21 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:21 ClientBegin: 0 + 0:45 Item: 0 ammo_powercell + 0:52 ClientConnect: 1 + 0:52 ClientUserinfoChanged: 1 n\Tavion\t\0\model\Tavion\hmodel\Tavion\c1\0\c2\5\hc\100\w\0\l\0\skill\ 1.00\tt\0\tl\0 + 0:52 ClientBegin: 1 + 0:52 Item: 1 item_shield + 0:56 Item: 1 ammo_powercell + 1:00 Item: 0 ammo_blaster + 1:03 Item: 1 ammo_blaster + 1:04 Item: 0 ammo_blaster + 1:09 Item: 1 weapon_thermal + 1:11 Item: 0 weapon_bowcaster + 1:17 Item: 1 item_shield_sm_instant + 1:17 Item: 1 item_shield_sm_instant + 1:34 Kill: 1 0 3: Tavion killed Em0r0g by MOD_SABER + 1:38 ShutdownGame: + 1:38 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\crash testing\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\pit\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:03 setteam: 0 SPECTATOR FREE + 0:03 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:03 ClientBegin: 0 + 0:21 ShutdownGame: + 0:21 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\pit\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:12 setteam: 0 SPECTATOR FREE + 0:12 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:12 ClientBegin: 0 + 0:28 ShutdownGame: + 0:28 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\crash testing\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\pit\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:46 setteam: 0 SPECTATOR FREE + 0:46 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:46 ClientBegin: 0 + 0:47 ShutdownGame: + 0:47 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\pit\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:28 ShutdownGame: + 0:28 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\crash testing\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:22 ClientConnect: 0 + 0:22 ClientUserinfoChanged: 0 n\Desann\t\0\model\Desann\hmodel\Desann\c1\0\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 0:22 ClientBegin: 0 + 0:46 ClientConnect: 1 + 0:46 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:00 Item: 0 ammo_metallic_bolts + 1:32 Item: 0 item_shield_sm_instant + 1:33 Item: 0 item_shield_sm_instant + 1:43 Item: 0 ammo_blaster + 1:47 Item: 0 ammo_metallic_bolts + 1:47 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:47 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:47 ClientBegin: 1 + 1:48 ClientUserinfoChanged: 1 n\^5Em0r0g\t\3\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:59 ClientConnect: 2 + 1:59 ClientUserinfoChanged: 2 n\Jan\t\0\model\Jan\hmodel\Jan\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 1:59 ClientBegin: 2 + 2:01 Item: 2 ammo_powercell + 2:07 Item: 2 ammo_blaster + 2:17 Item: 0 item_shield_sm_instant + 2:20 ClientDisconnect: 1 + 2:21 Item: 2 item_shield_sm_instant + 2:21 Item: 2 item_shield_sm_instant + 2:28 Item: 2 item_sentry_gun + 2:31 ShutdownGame: + 2:31 ------------------------------------------------------------ + 2:31 ------------------------------------------------------------ + 2:31 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\crash testing\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 2:31 ClientConnect: 0 + 2:31 ClientUserinfoChanged: 0 n\Desann\t\0\model\Desann\hmodel\Desann\c1\0\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 2:31 ClientBegin: 0 + 2:31 ClientConnect: 2 + 2:31 ClientUserinfoChanged: 2 n\Jan\t\0\model\Jan\hmodel\Jan\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 2:31 ClientBegin: 2 + 2:31 Item: 2 item_shield + 2:41 Item: 0 item_shield_sm_instant + 2:43 Item: 2 ammo_powercell + 2:49 Item: 2 ammo_blaster + 3:00 Kill: 0 2 27: Desann killed Jan by MOD_FORCE_DARK + 3:04 say: Jan: Unbelievable! + 3:07 Item: 2 ammo_metallic_bolts + 3:11 Item: 0 weapon_repeater + 3:11 Item: 2 weapon_flechette + 3:16 Item: 0 weapon_blaster + 3:30 Item: 0 item_medpac + 3:40 Kill: 0 2 3: Desann killed Jan by MOD_SABER + 3:43 Item: 2 weapon_repeater + 3:47 Item: 0 item_shield_sm_instant + 3:47 Item: 0 item_shield_sm_instant + 3:49 Item: 2 item_shield_sm_instant + 3:49 Item: 2 item_shield_sm_instant + 3:56 Item: 2 item_sentry_gun + 4:03 Item: 0 ammo_blaster + 4:04 Item: 2 item_shield_lrg_instant + 4:07 Item: 0 ammo_metallic_bolts + 4:10 Item: 2 ammo_powercell + 4:14 ShutdownGame: + 4:14 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 1:04 ShutdownGame: + 1:04 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 1:46 ClientConnect: 0 + 1:46 ClientUserinfoChanged: 0 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:55 ClientUserinfoChanged: 0 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:55 ClientUserinfoChanged: 0 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:55 ClientBegin: 0 + 2:01 setteam: 0 SPECTATOR FREE + 2:01 ClientUserinfoChanged: 0 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 2:01 ClientBegin: 0 + 2:09 ClientConnect: 1 + 2:09 ClientUserinfoChanged: 1 n\Jan\t\0\model\Jan\hmodel\Jan\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 2:09 ClientBegin: 1 + 2:11 say: Jan: Hello all! + 2:13 Item: 1 ammo_powercell + 2:27 Kill: 1 0 3: Jan killed ^5Em0r0g by MOD_SABER + 2:32 ClientDisconnect: 0 + 2:34 Item: 1 ammo_blaster + 3:10 Item: 1 weapon_repeater + 3:15 Item: 1 weapon_blaster + 3:29 Item: 1 item_shield_sm_instant + 3:29 Item: 1 item_shield_sm_instant + 3:41 Item: 1 weapon_rocket_launcher + 3:54 Item: 1 item_shield_sm_instant + 4:00 Item: 1 item_medpac + 4:28 Item: 1 ammo_powercell + 4:32 Item: 1 ammo_blaster + 4:36 Item: 1 ammo_metallic_bolts + 4:41 Item: 1 weapon_flechette + 4:46 ClientConnect: 0 + 4:46 ClientUserinfoChanged: 0 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 4:51 Item: 1 weapon_disruptor + 4:52 ClientConnect: 2 + 4:52 ClientUserinfoChanged: 2 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 5:13 ClientUserinfoChanged: 0 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 5:13 ClientUserinfoChanged: 0 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 5:13 ClientBegin: 0 + 5:22 Item: 1 weapon_trip_mine + 5:32 Item: 1 ammo_powercell + 5:45 Item: 1 item_sentry_gun + 6:00 Item: 1 weapon_thermal + 6:02 ClientUserinfoChanged: 2 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 6:02 ClientUserinfoChanged: 2 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 6:02 ClientBegin: 2 + 6:13 ClientConnect: 3 + 6:13 ClientUserinfoChanged: 3 n\Luke\t\0\model\Luke\hmodel\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 6:13 ClientBegin: 3 + 6:19 Item: 3 ammo_blaster + 6:21 setteam: 2 SPECTATOR FREE + 6:21 ClientUserinfoChanged: 2 n\^5Em0r0g\t\0\model\desann/default\hmodel\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 6:21 ClientBegin: 2 + 6:30 Item: 3 weapon_bowcaster + 6:40 ClientConnect: 4 + 6:40 ClientUserinfoChanged: 4 n\Jan\t\0\model\Jan\hmodel\Jan\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 6:40 ClientBegin: 4 + 6:46 ClientDisconnect: 0 + 7:06 Kill: 1 3 22: Jan killed Luke by MOD_THERMAL + 7:08 ClientDisconnect: 2 + 7:09 say: Luke: It s not my fault! + 7:12 Item: 3 ammo_metallic_bolts + 7:19 Item: 1 weapon_bowcaster + 7:30 Kill: 3 4 3: Luke killed Jan by MOD_SABER + 7:34 say: Luke: If you continue to attack me, you will continue to lose. + 7:37 Item: 1 weapon_thermal + 7:38 Item: 4 item_shield_sm_instant + 7:38 Item: 4 item_shield_sm_instant + 7:41 Item: 3 weapon_flechette + 7:45 Item: 4 item_sentry_gun + 7:48 Item: 3 item_medpac + 7:52 Kill: 3 4 16: Luke killed Jan by MOD_FLECHETTE + 8:04 Item: 1 item_shield_sm_instant + 8:04 Item: 4 ammo_blaster + 8:04 Item: 1 item_shield_sm_instant + 8:22 Item: 4 weapon_thermal + 8:27 Item: 3 item_shield_sm_instant + 8:28 Item: 3 item_shield_sm_instant + 8:53 Item: 3 item_sentry_gun + 8:55 Item: 4 item_shield_sm_instant + 8:56 Item: 4 item_shield_sm_instant + 9:03 Item: 1 ammo_powercell + 9:05 Kill: 4 3 3: Jan killed Luke by MOD_SABER + 9:07 Item: 1 item_shield + 9:10 say: Jan: Next time, I recommend hiding from me. + 9:15 Item: 3 ammo_blaster + 9:19 Item: 3 ammo_metallic_bolts + 9:26 Item: 4 item_shield_lrg_instant + 9:32 Item: 4 ammo_powercell + 9:32 Item: 3 weapon_flechette + 9:35 Item: 1 item_medpac + 9:42 Item: 3 ammo_metallic_bolts + 9:45 Item: 3 weapon_trip_mine + 9:45 Item: 4 weapon_flechette + 9:48 Item: 3 ammo_blaster + 9:58 Kill: 3 1 16: Luke killed Jan by MOD_FLECHETTE + 10:06 Item: 4 item_shield + 10:07 Item: 1 item_shield_sm_instant + 10:07 Item: 1 item_shield_sm_instant + 10:09 Item: 3 ammo_metallic_bolts + 10:14 Item: 1 item_sentry_gun + 10:24 Item: 1 item_shield_lrg_instant + 10:30 Item: 1 ammo_powercell + 10:34 Item: 1 ammo_blaster + 10:44 Item: 1 weapon_flechette + 10:51 Item: 4 weapon_rocket_launcher + 10:57 Kill: 3 4 16: Luke killed Jan by MOD_FLECHETTE + 11:00 say: Jan: Unbelievable! + 11:02 Item: 3 weapon_rocket_launcher + 11:07 Item: 4 item_shield_sm_instant + 11:08 Item: 4 item_shield_sm_instant + 11:09 Kill: 1 3 16: Jan killed Luke by MOD_FLECHETTE + 11:10 Item: 1 item_shield + 11:16 Item: 3 item_sentry_gun + 11:20 Item: 1 weapon_rocket_launcher + 11:32 Kill: 3 4 3: Luke killed Jan by MOD_SABER + 11:33 Item: 1 item_shield_sm_instant + 11:39 Item: 1 item_medpac + 11:43 Item: 3 item_shield_lrg_instant + 11:49 Item: 3 ammo_powercell + 11:54 Item: 3 ammo_blaster + 11:58 Item: 3 ammo_metallic_bolts + 12:15 Item: 4 item_shield + 12:26 Item: 4 weapon_rocket_launcher + 12:27 Item: 1 weapon_blaster + 12:32 Item: 1 weapon_repeater + 12:39 Item: 3 weapon_flechette + 12:42 Item: 3 ammo_metallic_bolts + 13:04 Item: 1 weapon_bowcaster + 13:08 Kill: 3 4 16: Luke killed Jan by MOD_FLECHETTE + 13:12 say: Luke: If you continue to attack me, you will continue to lose. + 13:15 Item: 4 item_shield_sm_instant + 13:16 Item: 4 item_shield_sm_instant + 13:28 Item: 4 item_sentry_gun + 13:36 Item: 3 item_medpac + 13:36 Item: 4 item_shield_lrg_instant + 13:42 Item: 1 item_shield_sm_instant + 13:42 Item: 1 item_shield_sm_instant + 13:44 Item: 4 ammo_powercell + 13:51 Item: 4 ammo_blaster + 13:51 Item: 3 item_shield_sm_instant + 13:51 Item: 3 item_shield_sm_instant + 13:51 Item: 3 item_shield_sm_instant + 13:55 Item: 4 ammo_metallic_bolts + 13:56 Item: 3 weapon_disruptor + 13:59 Item: 4 weapon_flechette + 14:09 Item: 1 item_medpac + 14:38 Item: 4 weapon_rocket_launcher + 14:45 Kill: 4 4 34: Jan killed Jan by MOD_FALLING + 14:52 Item: 1 ammo_metallic_bolts + 15:03 Kill: 1 3 16: Jan killed Luke by MOD_FLECHETTE + 15:04 Item: 3 item_shield + 15:07 Item: 4 ammo_blaster + 15:07 say: Jan: Even I was impressed with that one! + 15:09 Item: 3 ammo_powercell + 15:18 Item: 1 ammo_metallic_bolts + 15:21 Item: 1 weapon_trip_mine + 15:24 Item: 1 ammo_blaster + 15:31 Item: 1 ammo_powercell + 15:33 ClientConnect: 0 + 15:33 ClientUserinfoChanged: 0 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 15:38 Item: 1 item_medpac + 15:43 Item: 1 item_sentry_gun + 15:47 Item: 4 weapon_repeater + 15:52 Item: 4 weapon_blaster + 15:59 Item: 3 item_shield_sm_instant + 15:59 Item: 3 item_shield_sm_instant + 16:05 Item: 1 item_medpac + 16:06 Item: 4 item_shield_sm_instant + 16:06 Item: 4 item_shield_sm_instant + 16:10 ShutdownGame: + 16:10 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 0:36 ClientConnect: 0 + 0:36 ClientUserinfoChanged: 0 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:51 ClientUserinfoChanged: 0 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:51 ClientBegin: 0 + 0:52 ClientUserinfoChanged: 0 n\Padawan\t\3\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:31 setteam: 0 SPECTATOR FREE + 1:31 ClientUserinfoChanged: 0 n\Padawan\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:31 ClientBegin: 0 + 1:41 say: Padawan: hmodel + 3:26 ClientUserinfoChanged: 0 n\Emorog\t\0\model\kyle\hmodel\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 3:49 ClientConnect: 1 + 3:49 ClientUserinfoChanged: 1 n\Luke\t\0\model\Luke\hmodel\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 3:49 ClientBegin: 1 + 3:52 say: Luke: Hello, may I join? + 3:54 Item: 1 ammo_powercell + 4:00 Item: 1 ammo_blaster + 4:04 ClientDisconnect: 0 + 4:14 Item: 1 item_shield_sm_instant + 4:14 Item: 1 item_shield_sm_instant + 4:20 ShutdownGame: + 4:20 ------------------------------------------------------------ + 4:20 ------------------------------------------------------------ + 4:20 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\0\fraglimit\20\dmflags\0\sv_hostname\crash testing\sv_maxRate\0\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\8\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 4:20 ClientConnect: 1 + 4:20 ClientUserinfoChanged: 1 n\Luke\t\0\model\Luke\hmodel\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 4:20 ClientBegin: 1 + 4:34 Item: 1 item_shield_sm_instant + 4:34 Item: 1 item_shield_sm_instant + 4:41 Item: 1 item_sentry_gun + 4:49 Item: 1 item_shield_lrg_instant + 4:55 Item: 1 ammo_powercell + 4:59 Item: 1 ammo_blaster + 5:03 Item: 1 ammo_metallic_bolts + 5:47 Item: 1 ammo_metallic_bolts + 5:51 ShutdownGame: + 5:51 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\8\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\0\sv_hostname\crash testing\dmflags\0\fraglimit\20\timelimit\0\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 25 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 Warmup: + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:06 setteam: 0 SPECTATOR FREE + 0:06 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:06 ClientBegin: 0 + 0:14 Item: 0 weapon_blaster + 0:27 ShutdownGame: + 0:27 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-linux v1.00\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 26 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_deathstar\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ShutdownGame: + 0:00 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\20\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\sv_hostname\jkii-linux v1.00\dmflags\0\fraglimit\20\timelimit\20\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 26 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_deathstar\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:37 ClientConnect: 0 + 0:37 ClientUserinfoChanged: 0 n\Luke\t\0\model\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 0:37 ClientBegin: 0 + 0:39 Item: 0 item_medpac + 0:44 Item: 0 ammo_metallic_bolts + 0:52 Item: 0 item_shield_sm_instant + 0:53 Item: 0 item_shield_sm_instant + 0:55 Item: 0 weapon_bowcaster + 0:55 Item: 0 ammo_powercell + 1:06 Item: 0 ammo_blaster + 1:06 Item: 0 weapon_blaster + 1:07 Item: 0 ammo_blaster + 1:11 ClientConnect: 1 + 1:11 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:17 Item: 0 item_shield_sm_instant + 1:23 Item: 0 weapon_thermal + 1:26 Item: 0 item_sentry_gun + 1:42 Item: 0 item_shield_lrg_instant + 1:51 Item: 0 weapon_rocket_launcher + 1:52 Item: 0 ammo_rockets + 2:02 Item: 0 item_shield_lrg_instant + 2:08 Item: 0 weapon_thermal + 2:18 Item: 0 ammo_metallic_bolts + 2:18 Item: 0 weapon_flechette + 2:21 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\kyle\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 2:21 ClientDisconnect: 1 + 2:40 ClientConnect: 1 + 2:40 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 2:44 Item: 0 item_shield + 2:52 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 2:52 ClientBegin: 1 + 2:53 ClientUserinfoChanged: 1 n\^5Em0r0g\t\3\model\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 2:55 setteam: 1 SPECTATOR FREE + 2:55 ClientUserinfoChanged: 1 n\^5Em0r0g\t\0\model\kyle\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 2:55 ClientBegin: 1 + 3:06 Kill: 0 1 20: Luke killed ^5Em0r0g by MOD_ROCKET_HOMING + 3:08 Item: 1 weapon_flechette + 3:08 Item: 1 ammo_metallic_bolts + 3:10 say: Luke: If you continue to attack me, you will continue to lose. + 3:22 ClientConnect: 2 + 3:22 ClientUserinfoChanged: 2 n\Luke\t\0\model\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 3:22 ClientBegin: 2 + 3:23 Item: 2 weapon_flechette + 3:26 Item: 1 item_medpak_instant + 3:28 Kill: 2 1 16: Luke killed ^5Em0r0g by MOD_FLECHETTE + 3:38 Item: 1 ammo_blaster + 3:38 Item: 2 weapon_flechette + 3:38 Item: 1 weapon_blaster + 3:42 Item: 1 weapon_bowcaster + 3:44 Item: 0 item_shield_sm_instant + 3:47 Item: 0 item_shield_sm_instant + 3:51 Kill: 0 2 28: Luke killed Luke by MOD_SENTRY + 3:53 Item: 2 weapon_flechette + 3:53 Item: 2 ammo_metallic_bolts + 3:56 Item: 1 item_shield_sm_instant + 3:57 Kill: 0 1 16: Luke killed ^5Em0r0g by MOD_FLECHETTE + 3:59 Item: 0 weapon_flechette + 4:00 ClientDisconnect: 1 + 4:01 Kill: 2 0 16: Luke killed Luke by MOD_FLECHETTE + 4:03 ShutdownGame: + 4:03 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 26 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_deathstar\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:43 ShutdownGame: + 0:43 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\20\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\sv_hostname\jkii-dedicated v1.01\dmflags\0\fraglimit\20\timelimit\20\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 26 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_deathstar\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ShutdownGame: + 0:00 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\20\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\sv_hostname\jkii-dedicated v1.01\dmflags\0\fraglimit\20\timelimit\20\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 26 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 5:43 ShutdownGame: + 5:43 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 26 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:04 setteam: 0 SPECTATOR FREE + 0:04 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:04 ClientBegin: 0 + 0:21 ShutdownGame: + 0:21 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 27 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:03 setteam: 0 SPECTATOR FREE + 0:03 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:03 ClientBegin: 0 + 0:36 Item: 0 ammo_blaster + 0:47 Item: 0 ammo_blaster + 0:51 Item: 0 ammo_metallic_bolts + 0:54 Item: 0 weapon_flechette + 2:49 Item: 0 ammo_metallic_bolts + 3:21 Item: 0 weapon_bowcaster + 3:27 ShutdownGame: + 3:27 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 27 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientDisconnect: 0 + 0:34 ShutdownGame: + 0:34 ------------------------------------------------------------ + 0:34 ------------------------------------------------------------ + 0:34 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 27 2002\g_maxHolocronCarry\3\g_needpass\1\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 0:35 ClientConnect: 0 + 0:35 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:35 ClientBegin: 0 + 0:42 setteam: 0 SPECTATOR FREE + 0:42 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:42 ClientBegin: 0 + 0:48 Item: 0 ammo_blaster + 0:59 ShutdownGame: + 0:59 ------------------------------------------------------------ + 0:59 ------------------------------------------------------------ + 0:59 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 27 2002\g_maxHolocronCarry\3\g_needpass\1\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 0:59 ClientConnect: 0 + 0:59 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 1:00 ClientBegin: 0 + 3:17 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 3:38 ShutdownGame: + 3:38 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\20\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\sv_hostname\jkii-dedicated v1.01\dmflags\0\fraglimit\20\timelimit\20\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 27 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\mikeg/weaps\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:01 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\desann/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:01 ClientBegin: 0 + 0:01 ClientUserinfoChanged: 0 n\Em0r0g\t\3\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:56 setteam: 0 SPECTATOR FREE + 0:56 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:56 ClientBegin: 0 + 0:59 Item: 0 item_shield + 0:59 Item: 0 item_shield_sm_instant + 1:00 Item: 0 item_binoculars + 1:00 Item: 0 item_medpac + 2:34 ShutdownGame: + 2:34 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 27 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\mikeg/weaps\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:01 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:01 ClientBegin: 0 + 0:22 setteam: 0 SPECTATOR FREE + 0:22 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:22 ClientBegin: 0 + 0:44 ShutdownGame: + 0:44 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\20\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\sv_hostname\jkii-dedicated v1.01\dmflags\0\fraglimit\20\timelimit\20\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 27 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\pit\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:02 setteam: 0 SPECTATOR FREE + 0:02 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:02 ClientBegin: 0 + 1:02 ShutdownGame: + 1:02 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 28 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:20 ShutdownGame: + 0:20 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 28 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:09 ClientConnect: 0 + 0:09 ClientUserinfoChanged: 0 n\Luke\t\0\model\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 0:09 ClientBegin: 0 + 0:13 Item: 0 ammo_blaster + 0:16 ShutdownGame: + 0:16 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\20\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\sv_hostname\jkii-dedicated v1.01\dmflags\0\fraglimit\20\timelimit\20\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 28 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:13 ShutdownGame: + 0:13 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 28 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\pit\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:04 ShutdownGame: + 0:04 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 28 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 1:21 ClientConnect: 0 + 1:21 ClientUserinfoChanged: 0 n\Luke\t\0\model\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 1:21 ClientBegin: 0 + 1:57 Item: 0 weapon_rocket_launcher + 2:19 Item: 0 ammo_powercell + 2:23 Item: 0 ammo_blaster + 2:27 Item: 0 ammo_metallic_bolts + 2:31 Item: 0 weapon_flechette + 2:42 ShutdownGame: + 2:42 ------------------------------------------------------------ + 2:42 ------------------------------------------------------------ + 2:42 InitGame: \g_forceBasedTeams\0\g_maxForceRank\6\duel_fraglimit\10\g_weaponDisable\0\g_forcePowerDisable\0\g_forceRegenTime\200\g_saberLocking\1\g_privateDuel\0\g_maxGameClients\0\sv_maxclients\8\timelimit\20\fraglimit\20\dmflags\0\sv_hostname\jkii-dedicated v1.01\sv_maxRate\10000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\1\g_redTeam\Pagans\g_blueTeam\Stroggs\capturelimit\20\g_duelWeaponDisable\0\version\JK2MP: v1.01 win-x86-debug Feb 28 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\bot_minplayers\0\gamename\basejk + 2:42 ClientConnect: 0 + 2:42 ClientUserinfoChanged: 0 n\Luke\t\0\model\Luke\c1\4\c2\5\hc\100\w\0\l\0\skill\ 4.00\tt\0\tl\0 + 2:42 ClientBegin: 0 + 2:51 ShutdownGame: + 2:51 ------------------------------------------------------------ + 0:00 ------------------------------------------------------------ + 0:00 InitGame: \g_duelWeaponDisable\0\capturelimit\20\g_blueTeam\Stroggs\g_redTeam\Pagans\sv_floodProtect\1\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\sv_hostname\jkii-dedicated v1.01\dmflags\0\fraglimit\20\timelimit\20\sv_maxclients\8\g_maxGameClients\0\g_privateDuel\0\g_saberLocking\1\g_forceRegenTime\200\g_forcePowerDisable\0\g_weaponDisable\0\duel_fraglimit\10\g_maxForceRank\6\g_forceBasedTeams\0\version\JK2MP: v1.01 win-x86-debug Feb 28 2002\g_maxHolocronCarry\3\g_needpass\0\g_gametype\0\protocol\15\mapname\ffa_bespin\sv_privateClients\0\sv_allowAnonymous\0\sv_allowDownload\0\gamename\basejk + 0:00 ClientConnect: 0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:00 ClientBegin: 0 + 0:23 setteam: 0 SPECTATOR FREE + 0:23 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\lando/default\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 0:23 ClientBegin: 0 + 0:31 Item: 0 ammo_blaster + 0:39 Item: 0 ammo_powercell + 0:43 Item: 0 item_shield + 1:16 Item: 0 ammo_blaster + 1:25 Item: 0 ammo_metallic_bolts + 1:31 Item: 0 weapon_flechette + 1:50 Item: 0 item_medpac + 2:31 Item: 0 weapon_rocket_launcher + 2:47 Item: 0 ammo_powercell + 2:56 Item: 0 ammo_blaster + 3:04 Item: 0 item_shield + 3:56 ClientConnect: 1 + 3:56 ClientUserinfoChanged: 1 n\Desann\t\0\model\Desann\c1\0\c2\5\hc\100\w\0\l\0\skill\ 5.00\tt\0\tl\0 + 3:56 ClientBegin: 1 + 4:00 Item: 1 weapon_blaster + 4:31 Item: 1 ammo_blaster + 4:38 Item: 1 weapon_thermal + 4:41 Kill: 1 0 3: Desann killed Em0r0g by MOD_SABER + 4:48 Item: 1 item_shield_sm_instant + 4:48 Item: 1 item_shield_sm_instant + 4:54 Item: 1 item_sentry_gun + 5:02 Item: 1 item_shield_lrg_instant + 5:12 ClientUserinfoChanged: 0 n\Em0r0g\t\0\model\morgan/default_mp\g_redteam\Pagans\g_blueteam\Stroggs\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0 + 5:14 Kill: 1 0 3: Desann killed Em0r0g by MOD_SABER + 5:17 Item: 1 ammo_powercell + 5:20 Item: 1 ammo_blaster + 5:26 Item: 1 weapon_trip_mine + 5:29 Item: 1 ammo_metallic_bolts + 5:29 Item: 0 item_shield + 5:32 Item: 0 ammo_powercell + 5:38 Item: 1 weapon_flechette + 5:41 Item: 1 ammo_metallic_bolts + 5:52 Item: 1 weapon_disruptor + 6:28 Item: 1 item_medpac + 6:34 Item: 1 item_medpak_instant + 6:35 Item: 1 item_medpak_instant + 6:45 Item: 1 weapon_repeater + 7:02 Item: 0 ammo_blaster + 7:05 Kill: 1 0 16: Desann killed Em0r0g by MOD_FLECHETTE + 7:17 Kill: 1 0 7: Desann killed Em0r0g by MOD_DISRUPTOR + 7:31 Item: 1 weapon_thermal + 7:44 Item: 1 ammo_powercell + 7:46 Kill: 1 0 3: Desann killed Em0r0g by MOD_SABER + 7:49 Item: 1 item_shield + 8:06 Item: 1 ammo_rockets + 8:44 say: Em0r0g: quit + 8:46 ShutdownGame: + 8:46 ------------------------------------------------------------ diff --git a/CODE-mp/base/jk2mpconfig.cfg b/CODE-mp/base/jk2mpconfig.cfg new file mode 100644 index 0000000..a1cb4bc --- /dev/null +++ b/CODE-mp/base/jk2mpconfig.cfg @@ -0,0 +1,408 @@ +// generated by jk2mp, do not modify +unbindall +bind TAB "+scores" +bind ENTER "+button2" +bind SPACE "+moveup" +bind , "+moveleft" +bind - "weapon 0" +bind . "+moveright" +bind / "+mlook" +bind 0 "weapon 10" +bind 1 "weapon 1" +bind 2 "weapon 2" +bind 3 "weapon 3" +bind 4 "weapon 4" +bind 5 "weapon 5" +bind 6 "weapon 6" +bind 7 "weapon 7" +bind 8 "weapon 8" +bind 9 "weapon 9" +bind [ "invprev" +bind \ "force_forcepowerother" +bind ] "invnext" +bind ` "toggleconsole" +bind a "+moveleft" +bind b "use_bacta" +bind c "+movedown" +bind d "+moveright" +bind e "weapnext" +bind f "+useforce" +bind g "+button3" +bind i "messagemode4" +bind k "engage_duel" +bind l "saberAttackCycle" +bind p "cg_thirdperson !" +bind q "weapprev" +bind r "+use" +bind s "+back" +bind t "messagemode2" +bind u "messagemode3" +bind v "+strafe" +bind w "+forward" +bind x "forcenext" +bind y "messagemode" +bind z "forceprev" +bind ~ "toggleconsole" +bind BACKSPACE "force_healother" +bind UPARROW "+forward" +bind DOWNARROW "+back" +bind LEFTARROW "+left" +bind RIGHTARROW "+right" +bind ALT "+altattack" +bind CTRL "+attack" +bind SHIFT "+speed" +bind INS "scoresUp" +bind DEL "scoresDown" +bind PGDN "+lookdown" +bind PGUP "+lookup" +bind END "centerview" +bind F1 "force_throw" +bind F2 "force_pull" +bind F3 "force_speed" +bind F4 "force_distract" +bind F5 "force_heal" +bind F6 "+force_grip" +bind F7 "+force_lightning" +bind F8 "force_rage" +bind F9 "force_protect" +bind F10 "force_absorb" +bind F11 "+force_drain" +bind F12 "force_seeing" +bind KP_HOME "use_field" +bind KP_5 "use_sentry" +bind KP_PGDN "use_seeker" +bind MOUSE1 "+attack" +bind MOUSE2 "+altattack" +bind MOUSE3 "saberAttackCycle" +bind MWHEELDOWN "weapnext" +bind MWHEELUP "weapprev" +seta ui_selectedModelIndex "13" +seta g_inactivity "0" +seta g_motd "report problems to drews@engr.wisc.edu" +seta rconPassword "raven2" +seta cl_autolodscalevalue "0" +seta cl_autolodscale "1" +seta g_forceBasedTeams "0" +seta g_maxForceRank "6" +seta ui_forcePowerDisable "0" +seta cg_trueLightning "0.0" +seta cg_noProjectileTrail "0" +seta cg_noTaunt "0" +seta cg_smoothClients "0" +seta cg_hudFiles "0" +seta cg_scorePlums "1" +seta cg_cameraOrbitDelay "35" +seta ui_recordSPDemoName "" +seta cg_currentSelectedPlayerName "" +seta cg_currentSelectedPlayer "0" +seta cg_noVoiceText "0" +seta cg_noVoiceChats "0" +seta cg_teamChatsOnly "0" +seta cg_drawFriend "1" +seta cg_drawTeamOverlay "1" +seta cg_deferPlayers "1" +seta cg_forceModel "0" +seta cg_teamChatHeight "0" +seta cg_teamChatTime "3000" +seta cg_bobroll "0.002" +seta cg_bobpitch "0.002" +seta cg_bobup "0.005" +seta cg_runroll "0.005" +seta cg_runpitch "0.002" +seta cg_lagometer "0" +seta cg_simpleItems "0" +seta cg_crosshairY "0" +seta cg_crosshairX "0" +seta cg_crosshairHealth "0" +seta cg_crosshairSize "24" +seta cg_drawRewards "1" +seta cg_dynamicCrosshair "1" +seta cg_drawScores "1" +seta cg_drawEnemyInfo "1" +seta cg_drawAmmoWarning "0" +seta cg_drawIcons "1" +seta cg_draw3dIcons "1" +seta cg_drawSnapshot "0" +seta cg_drawFPS "0" +seta cg_drawTimer "0" +seta cg_drawStatus "1" +seta cg_draw2D "1" +seta cg_gibs "1" +seta cg_stereoSeparation "0.4" +seta cg_fov "80" +seta cg_zoomfov "40.0" +seta cg_drawGun "1" +seta g_timeouttospec "70" +seta g_allowVote "1" +seta g_filterBan "1" +seta g_banIPs "" +seta g_statLogFile "statlog.log" +seta g_statLog "0" +seta g_logSync "0" +seta g_log "games.log" +seta g_teamForceBalance "0" +seta g_teamAutoJoin "0" +seta g_friendlySaber "0" +seta g_friendlyFire "0" +seta g_saberInterpolate "1" +seta duel_fraglimit "10" +seta g_weaponDisable "0" +seta g_forcePowerDisable "0" +seta g_spawnInvulnerability "3000" +seta g_forceRegenTime "200" +seta g_saberLocking "1" +seta g_privateDuel "0" +seta g_autoMapCycle "0" +seta g_ff_objectives "0" +seta g_maxGameClients "0" +seta cm_playerCurveClip "1" +seta net_forcenonlocal "0" +seta cg_shadows "1" +seta sv_maxclients "8" +seta timelimit "20" +seta fraglimit "20" +seta dmflags "0" +seta ui_menuFilesMP "ui/jk2mpmenus.txt" +seta r_overBrightBits "1" +seta com_hunkMegs "64" +seta com_maxfps "85" +seta com_blood "1" +seta com_introplayed "0" +seta com_ignoreothertasks "1" +seta sp_language "2" +seta in_midi "0" +seta in_midiport "1" +seta in_midichannel "1" +seta in_mididevice "0" +seta in_mouse "-1" +seta in_joystick "0" +seta in_joyBallScale "0.02" +seta joy_threshold "0.15" +seta sv_hostname "jkii-dedicated v1.01" +seta sv_maxRate "10000" +seta sv_minPing "0" +seta sv_maxPing "0" +seta sv_floodProtect "1" +seta sv_master2 "" +seta sv_master3 "" +seta sv_master4 "" +seta sv_master5 "" +seta cl_yawspeed "140" +seta cl_pitchspeed "140" +seta cl_maxpackets "30" +seta cl_packetdup "1" +seta cl_run "1" +seta sensitivity "5" +seta cl_mouseAccel "0" +seta cl_freelook "1" +seta cl_allowDownload "0" +seta r_inGameVideo "1" +seta cg_autoswitch "1" +seta m_pitch "0.022" +seta m_yaw "0.022" +seta m_forward "0.25" +seta m_side "0.25" +seta m_filter "0" +seta cl_maxPing "800" +seta name "Em0r0g" +seta rate "3000" +seta snaps "20" +seta model "morgan/default_mp" +seta headmodel "desann/default" +seta team_model "morgan/default_mp" +seta team_headmodel "desann/default" +seta forcepowers "6-1-012330000000000333" +seta g_redTeam "Pagans" +seta g_blueTeam "Stroggs" +seta color1 "4" +seta color2 "5" +seta handicap "100" +seta sex "male" +seta cl_anonymous "0" +seta cg_predictItems "1" +seta cg_viewsize "100" +seta r_allowExtensions "1" +seta r_tf_solid_compressed "GL_COMPRESSED_RGBA_DXT5" +seta r_tf_alpha_compressed "GL_COMPRESSED_RGBA_DXT5" +seta r_tf_solid_uncompressed "GL_RGB8" +seta r_tf_alpha_uncompressed "GL_RGBA8" +seta r_tf_lightmap "GL_RGB8" +seta r_tf_cinematic "GL_RGB8" +seta r_force_compressed_textures "1" +seta r_ext_compressed_textures "1" +seta r_ext_gamma_control "1" +seta r_ext_multitexture "1" +seta r_ext_compiled_vertex_array "1" +seta r_ext_texture_env_add "1" +seta r_ext_texture_filter_anisotropic "1" +seta r_picmip "0" +seta r_roundImagesDown "1" +seta r_detailtextures "1" +seta r_texturebits "0" +seta r_texturebitslm "0" +seta r_colorbits "0" +seta r_stereo "0" +seta r_stencilbits "8" +seta r_depthbits "0" +seta r_ignorehwgamma "0" +seta r_mode "4" +seta r_customwidth "1600" +seta r_customheight "1024" +seta r_customaspect "1" +seta r_simpleMipMaps "1" +seta r_vertexLight "0" +seta r_subdivisions "4" +seta r_smp "0" +seta r_ignoreFastPath "1" +seta r_lodCurveError "250" +seta r_lodbias "0" +seta r_flares "0" +seta r_ignoreGLErrors "1" +seta r_fastsky "0" +seta r_drawSun "0" +seta r_dynamiclight "1" +seta r_dlightBacks "1" +seta r_finish "0" +seta r_textureMode "GL_LINEAR_MIPMAP_LINEAR" +seta r_swapInterval "0" +seta r_gamma "1.6" +seta r_facePlaneCull "1" +seta r_primitives "0" +seta r_modelpoolmegs "10" +seta r_lastValidRenderer "GeForce2 MX/AGP/SSE2" +seta vid_xpos "36" +seta vid_ypos "20" +seta s_volume ".8" +seta s_musicvolume "0.25" +seta s_separation "0.5" +seta s_doppler "1" +seta s_khz "22" +seta s_mixahead "0.2" +seta s_mixPreStep "0.05" +seta s_mp3overhead "31760" +seta s_soundpoolmegs "25" +seta ui_ffa_fraglimit "20" +seta ui_ffa_timelimit "0" +seta ui_tourney_fraglimit "0" +seta ui_tourney_timelimit "15" +seta ui_team_fraglimit "0" +seta ui_team_timelimit "20" +seta ui_team_friendly "1" +seta ui_ctf_capturelimit "8" +seta ui_ctf_timelimit "30" +seta ui_ctf_friendly "0" +seta g_spScores1 "" +seta g_spScores2 "" +seta g_spScores3 "" +seta g_spScores4 "" +seta g_spScores5 "" +seta g_spAwards "" +seta g_spVideos "" +seta g_spSkill "2" +seta ui_browserMaster "0" +seta ui_browserGameType "0" +seta ui_browserSortKey "4" +seta ui_browserShowFull "1" +seta ui_browserShowEmpty "1" +seta cg_drawCrosshair "1" +seta cg_drawCrosshairNames "1" +seta cg_marks "1" +seta server1 "" +seta server2 "" +seta server3 "" +seta server4 "" +seta server5 "" +seta server6 "" +seta server7 "" +seta server8 "" +seta server9 "" +seta server10 "" +seta server11 "" +seta server12 "" +seta server13 "" +seta server14 "" +seta server15 "" +seta server16 "" +seta ui_teamName "Pagans" +seta ui_opponentName "Stroggs" +seta ui_rankChange "6" +seta ui_freeSaber "0" +seta ui_redteam "Pagans" +seta ui_blueteam "Stroggs" +seta ui_dedicated "0" +seta ui_gametype "0" +seta ui_joinGametype "0" +seta ui_netGametype "0" +seta ui_actualNetGametype "0" +seta ui_redteam1 "1" +seta ui_redteam2 "1" +seta ui_redteam3 "1" +seta ui_redteam4 "1" +seta ui_redteam5 "1" +seta ui_redteam6 "1" +seta ui_redteam7 "1" +seta ui_redteam8 "1" +seta ui_blueteam1 "1" +seta ui_blueteam2 "1" +seta ui_blueteam3 "1" +seta ui_blueteam4 "1" +seta ui_blueteam5 "1" +seta ui_blueteam6 "1" +seta ui_blueteam7 "1" +seta ui_blueteam8 "1" +seta ui_netSource "1" +seta ui_menuFiles "ui/jk2mpmenus.txt" +seta ui_currentTier "0" +seta ui_currentMap "0" +seta ui_currentNetMap "0" +seta ui_mapIndex "0" +seta ui_currentOpponent "0" +seta cg_selectedPlayer "1" +seta cg_selectedPlayerName "N/A" +seta ui_lastServerRefresh_0 "" +seta ui_lastServerRefresh_1 "Feb-27, 2002 at 18:52" +seta ui_lastServerRefresh_2 "" +seta ui_lastServerRefresh_3 "" +seta ui_scoreAccuracy "0%" +seta ui_scoreImpressives "0" +seta ui_scoreExcellents "0" +seta ui_scoreCaptures "0" +seta ui_scoreDefends "0" +seta ui_scoreAssists "0" +seta ui_scoreGauntlets "0" +seta ui_scoreScore "0" +seta ui_scorePerfect "0" +seta ui_scoreTeam "0 to 0" +seta ui_scoreBase "0" +seta ui_scoreTime "00:00" +seta ui_scoreTimeBonus "0" +seta ui_scoreSkillBonus "0" +seta ui_scoreShutoutBonus "0" +seta ui_smallFont "0.25" +seta ui_bigFont "0.4" +seta ui_findPlayer "Kyle" +seta ui_q3model "0" +seta ui_recordSPDemo "0" +seta ui_teamArenaFirstRun "1" +seta g_warmup "20" +seta capturelimit "20" +seta ui_serverStatusTimeOut "7000" +seta net_noudp "0" +seta net_noipx "0" +seta net_socksEnabled "0" +seta net_socksServer "" +seta net_socksPort "1080" +seta net_socksUsername "" +seta net_socksPassword "" +seta k_language "american" +seta s_language "deutsch" +seta r_ext_compress_textures "1" +seta r_ext_compress_lightmaps "0" +seta r_ext_preferred_tc_method "0" +seta g_duelWeaponDisable "0" +seta cl_anglespeedkey "1.5" +seta ui_r_glCustom "4" +seta r_fullscreen "0" +seta vm_game "0" +seta vm_cgame "0" +seta vm_ui "0" diff --git a/CODE-mp/base/qconsole.log b/CODE-mp/base/qconsole.log new file mode 100644 index 0000000..9995bcb --- /dev/null +++ b/CODE-mp/base/qconsole.log @@ -0,0 +1,351 @@ +logfile opened on Mon Feb 18 22:49:37 2002 + +]\hunksmalllog + +================ +Hunk Small log +================ +size = 6032: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2699 (size) +size = 54120: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2694 (sizeof( stages[i] )) +size = 86184: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2650 (sizeof( shader_t )) +size = 72: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 621 (sizeof( modelHash_t )) +size = 272: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 578 (sizeof( *tr.models[tr.numModels] )) +size = 8: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2627 (sizeof( *skin->surfaces )) +size = 264: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2624 (sizeof( skin_t )) +size = 12968: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3787 (size * sizeof(char *)) +size = 393864: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3744 (sum + numShaders*2) +size = 1252520: c:\projects\jk2\code-mp\renderer\tr_init.cpp, line: 1053 (sizeof( *backEndData[0] ) + sizeof(srfPoly_t) * max_polys + sizeof(polyVert_t) * max_polyverts) +1806304 Hunk memory +10 hunk blocks +]\logfile 0 +]\hunksmalllog + +================ +Hunk Small log +================ +size = 6032: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2699 (size) +size = 54120: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2694 (sizeof( stages[i] )) +size = 86184: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2650 (sizeof( shader_t )) +size = 72: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 621 (sizeof( modelHash_t )) +size = 272: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 578 (sizeof( *tr.models[tr.numModels] )) +size = 8: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2627 (sizeof( *skin->surfaces )) +size = 264: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2624 (sizeof( skin_t )) +size = 12968: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3787 (size * sizeof(char *)) +size = 393864: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3744 (sum + numShaders*2) +size = 1252520: c:\projects\jk2\code-mp\renderer\tr_init.cpp, line: 1053 (sizeof( *backEndData[0] ) + sizeof(srfPoly_t) * max_polys + sizeof(polyVert_t) * max_polyverts) +1806304 Hunk memory +10 hunk blocks +]\logfile 2 +]\hunksmalllog + +================ +Hunk Small log +================ +size = 6032: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2699 (size) +size = 54120: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2694 (sizeof( stages[i] )) +size = 86184: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2650 (sizeof( shader_t )) +size = 72: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 621 (sizeof( modelHash_t )) +size = 272: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 578 (sizeof( *tr.models[tr.numModels] )) +size = 8: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2627 (sizeof( *skin->surfaces )) +size = 264: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2624 (sizeof( skin_t )) +size = 12968: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3787 (size * sizeof(char *)) +size = 393864: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3744 (sum + numShaders*2) +size = 1252520: c:\projects\jk2\code-mp\renderer\tr_init.cpp, line: 1053 (sizeof( *backEndData[0] ) + sizeof(srfPoly_t) * max_polys + sizeof(polyVert_t) * max_polyverts) +1806304 Hunk memory +10 hunk blocks +]\dedicated 1 +dedicated will be changed upon restarting. +----- CL_Shutdown ----- +RE_Shutdown( 0 ) +RE_Shutdown( 1 ) +Shutting down OpenGL subsystem +...wglMakeCurrent( NULL, NULL ): success +...deleting GL context: success +...releasing DC: success +...destroying window +...shutting down QGL +...unloading OpenGL DLL +----------------------- +Hitch warning: 1943 msec frame time + +================ +Hunk Small log +================ +size = 6032: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2699 (size) +size = 54120: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2694 (sizeof( stages[i] )) +size = 86184: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2650 (sizeof( shader_t )) +size = 72: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 621 (sizeof( modelHash_t )) +size = 272: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 578 (sizeof( *tr.models[tr.numModels] )) +size = 8: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2627 (sizeof( *skin->surfaces )) +size = 264: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2624 (sizeof( skin_t )) +size = 12968: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3787 (size * sizeof(char *)) +size = 393864: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3744 (sum + numShaders*2) +size = 1252520: c:\projects\jk2\code-mp\renderer\tr_init.cpp, line: 1053 (sizeof( *backEndData[0] ) + sizeof(srfPoly_t) * max_polys + sizeof(polyVert_t) * max_polyverts) +1806304 Hunk memory +10 hunk blocks +Hitch warning: 1869 msec frame time +dedicated will be changed upon restarting. +----- Client Initialization ----- +Cmd_AddCommand: toggleconsole already defined +Cmd_AddCommand: messagemode already defined +Cmd_AddCommand: messagemode2 already defined +Cmd_AddCommand: messagemode3 already defined +Cmd_AddCommand: messagemode4 already defined +Cmd_AddCommand: clear already defined +Cmd_AddCommand: condump already defined +Cmd_AddCommand: centerview already defined +Cmd_AddCommand: +taunt already defined +Cmd_AddCommand: -taunt already defined +Cmd_AddCommand: +moveup already defined +Cmd_AddCommand: -moveup already defined +Cmd_AddCommand: +movedown already defined +Cmd_AddCommand: -movedown already defined +Cmd_AddCommand: +left already defined +Cmd_AddCommand: -left already defined +Cmd_AddCommand: +right already defined +Cmd_AddCommand: -right already defined +Cmd_AddCommand: +forward already defined +Cmd_AddCommand: -forward already defined +Cmd_AddCommand: +back already defined +Cmd_AddCommand: -back already defined +Cmd_AddCommand: +lookup already defined +Cmd_AddCommand: -lookup already defined +Cmd_AddCommand: +lookdown already defined +Cmd_AddCommand: -lookdown already defined +Cmd_AddCommand: +strafe already defined +Cmd_AddCommand: -strafe already defined +Cmd_AddCommand: +moveleft already defined +Cmd_AddCommand: -moveleft already defined +Cmd_AddCommand: +moveright already defined +Cmd_AddCommand: -moveright already defined +Cmd_AddCommand: +speed already defined +Cmd_AddCommand: -speed already defined +Cmd_AddCommand: +attack already defined +Cmd_AddCommand: -attack already defined +Cmd_AddCommand: +use already defined +Cmd_AddCommand: -use already defined +Cmd_AddCommand: +force_grip already defined +Cmd_AddCommand: -force_grip already defined +Cmd_AddCommand: +altattack already defined +Cmd_AddCommand: -altattack already defined +Cmd_AddCommand: +useforce already defined +Cmd_AddCommand: -useforce already defined +Cmd_AddCommand: +force_lightning already defined +Cmd_AddCommand: -force_lightning already defined +Cmd_AddCommand: +force_drain already defined +Cmd_AddCommand: -force_drain already defined +Cmd_AddCommand: +button0 already defined +Cmd_AddCommand: -button0 already defined +Cmd_AddCommand: +button1 already defined +Cmd_AddCommand: -button1 already defined +Cmd_AddCommand: +button2 already defined +Cmd_AddCommand: -button2 already defined +Cmd_AddCommand: +button3 already defined +Cmd_AddCommand: -button3 already defined +Cmd_AddCommand: +button4 already defined +Cmd_AddCommand: -button4 already defined +Cmd_AddCommand: +button5 already defined +Cmd_AddCommand: -button5 already defined +Cmd_AddCommand: +button6 already defined +Cmd_AddCommand: -button6 already defined +Cmd_AddCommand: +button7 already defined +Cmd_AddCommand: -button7 already defined +Cmd_AddCommand: +button8 already defined +Cmd_AddCommand: -button8 already defined +Cmd_AddCommand: +button9 already defined +Cmd_AddCommand: -button9 already defined +Cmd_AddCommand: +button10 already defined +Cmd_AddCommand: -button10 already defined +Cmd_AddCommand: +button11 already defined +Cmd_AddCommand: -button11 already defined +Cmd_AddCommand: +button12 already defined +Cmd_AddCommand: -button12 already defined +Cmd_AddCommand: +button13 already defined +Cmd_AddCommand: -button13 already defined +Cmd_AddCommand: +button14 already defined +Cmd_AddCommand: -button14 already defined +Cmd_AddCommand: +mlook already defined +Cmd_AddCommand: -mlook already defined +Cmd_AddCommand: sv_saberswitch already defined +Cmd_AddCommand: engage_duel already defined +Cmd_AddCommand: force_heal already defined +Cmd_AddCommand: force_speed already defined +Cmd_AddCommand: force_pull already defined +Cmd_AddCommand: force_distract already defined +Cmd_AddCommand: force_rage already defined +Cmd_AddCommand: force_protect already defined +Cmd_AddCommand: force_absorb already defined +Cmd_AddCommand: force_healother already defined +Cmd_AddCommand: force_forcepowerother already defined +Cmd_AddCommand: force_seeing already defined +Cmd_AddCommand: use_seeker already defined +Cmd_AddCommand: use_field already defined +Cmd_AddCommand: use_bacta already defined +Cmd_AddCommand: use_electrobinoculars already defined +Cmd_AddCommand: zoom already defined +Cmd_AddCommand: use_sentry already defined +Cmd_AddCommand: saberAttackCycle already defined +Cmd_AddCommand: force_throw already defined +Cmd_AddCommand: clientinfo already defined +Cmd_AddCommand: reconnect already defined +Cmd_AddCommand: fs_openedList already defined +Cmd_AddCommand: fs_referencedList already defined +----- Initializing Renderer ---- +------------------------------- +----- Client Initialization Complete ----- +----- R_Init ----- +Cmd_AddCommand: screenshot_tga already defined +Initializing OpenGL subsystem +...initializing QGL +...calling LoadLibrary( 'C:\WINDOWS\System32\opengl32.dll' ): succeeded +...setting mode 3: 640 480 W +...created window@0,0 (646x512) +Initializing OpenGL driver +...getting DC: succeeded +...GLW_ChoosePFD( 32, 24, 8 ) +...50 PFDs found +...hardware acceleration found +...PIXELFORMAT 8 selected +...creating GL context: succeeded +...making context current: succeeded +Initializing OpenGL extensions +...GL_S3_s3tc available +...GL_EXT_texture_compression_s3tc available +...no tc preference specified +.....using GL_EXT_texture_compression_s3tc +...using GL_EXT_texture_env_add +...GL_EXT_texture_filter_anisotropic available +...using GL_EXT_texture_filter_anisotropic +...Using GL_EXT_texture_edge_clamp +...using WGL_EXT_swap_control +...using GL_ARB_multitexture +...using GL_EXT_compiled_vertex_array +...using GL_EXT_point_parameters + +GL_VENDOR: NVIDIA Corporation +GL_RENDERER: GeForce2 MX/AGP/SSE2 +GL_VERSION: 1.3.0 +GL_EXTENSIONS: GL_ARB_imaging GL_ARB_multitexture GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_dot3 GL_ARB_transpose_matrix GL_S3_s3tc GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_packed_pixels GL_EXT_paletted_texture GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shared_texture_palette GL_EXT_stencil_wrap GL_EXT_texture_compression_s3tc GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_cube_map GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_vertex_weighting GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_blend_square GL_NV_evaluators GL_NV_fence GL_NV_fog_distance GL_NV_light_max_exponent GL_NV_packed_depth_stencil GL_NV_register_combiners GL_NV_texgen_emboss GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_NV_texture_rectangle GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_program GL_SGIS_generate_mipmap GL_SGIS_multitexture GL_SGIS_texture_lod GL_WIN_swap_hint WGL_EXT_swap_control +GL_MAX_TEXTURE_SIZE: 2048 +GL_MAX_ACTIVE_TEXTURES_ARB: 2 + +PIXELFORMAT: color(32-bits) Z(24-bit) stencil(8-bits) +MODE: 3, 640 x 480 windowed hz:60 +GAMMA: hardware w/ 0 overbright bits +CPU: Intel Pentium IV +rendering primitives: single glDrawElements +texturemode: GL_LINEAR_MIPMAP_LINEAR +picmip: 0 +texture bits: 0 +lightmap texture bits: 0 +multitexture: enabled +compiled vertex arrays: enabled +texenv add: enabled +compressed textures: enabled +compressed lightmaps: disabled +texture compression method: GL_EXT_texture_compression_s3tc +anisotropic filtering: enabled +Initializing Shaders +...loading 'shaders/zoom.shader' +...loading 'shaders/yavin.shader' +...loading 'shaders/ui.shader' +...loading 'shaders/test.shader' +...loading 'shaders/system.shader' +...loading 'shaders/sprites.shader' +...loading 'shaders/skies.shader' +...loading 'shaders/scavenger.shader' +...loading 'shaders/sabers.shader' +...loading 'shaders/players.shader' +...loading 'shaders/nar_shaddaa.shader' +...loading 'shaders/mp.shader' +...loading 'shaders/models.shader' +...loading 'shaders/metashader.shader' +...loading 'shaders/marks.shader' +...loading 'shaders/jeffd_test.shader' +...loading 'shaders/items.shader' +...loading 'shaders/imperial.shader' +...loading 'shaders/gfx.shader' +...loading 'shaders/fogs.shader' +...loading 'shaders/flares.shader' +...loading 'shaders/explosions.shader' +...loading 'shaders/effects.shader' +...loading 'shaders/doomgiver.shader' +...loading 'shaders/decals.shader' +...loading 'shaders/common.shader' +...loading 'shaders/cinematics.shader' +...loading 'shaders/bespin.shader' +----- finished R_Init ----- + +------- sound initialization ------- +Cmd_AddCommand: soundstop already defined +Initializing DirectSound +locked hardware. ok +------------------------------------ +----- Sound Info ----- +sound system is muted + 1 stereo +32768 samples + 16 samplebits + 1 submission_chunk +22050 speed +0x110d86e0 dma buffer +No background file. + +0.01MB audio data: ( 0.01MB WAV/MP3 ) + ( 0.00MB Music ) +0.01MB in sfx_t alloc data (WAV/MP3) loaded this level +---------------------- +Loading dll file ui. +Parsing menu file:ui/jk2mp/main.menu +Parsing menu file:ui/jk2mp/joinserver.menu +Parsing menu file:ui/jk2mp/player.menu +Parsing menu file:ui/jk2mp/createserver.menu +Parsing menu file:ui/jk2mp/connect.menu +Parsing menu file:ui/jk2mp/rules.menu +Parsing menu file:ui/jk2mp/rules_games.menu +Parsing menu file:ui/jk2mp/rules_force.menu +Parsing menu file:ui/jk2mp/rules_weapons.menu +Parsing menu file:ui/jk2mp/rules_items.menu +Parsing menu file:ui/jk2mp/controls.menu +Parsing menu file:ui/jk2mp/setup.menu +Parsing menu file:ui/jk2mp/demo.menu +Parsing menu file:ui/jk2mp/password.menu +Parsing menu file:ui/jk2mp/quit.menu +Parsing menu file:ui/jk2mp/error.menu +Parsing menu file:ui/jk2mp/serverinfo.menu +Parsing menu file:ui/jk2mp/findplayer.menu +Parsing menu file:ui/jk2mp/createfavorite.menu +Parsing menu file:ui/jk2mp/multiplayer.menu +Parsing menu file:ui/jk2mp/cdkey.menu +Parsing menu file:ui/jk2mp/advancedcreateserver.menu +Parsing menu file:ui/jk2mp/credits.menu +Parsing menu file:ui/jk2mp/vid_warning.menu +Parsing menu file:ui/jk2mp/videodriver.menu +UI menu load time = 2031 milli seconds +28 bots parsed + +================ +Hunk Small log +================ +size = 12064: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2699 (size) +size = 108240: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2694 (sizeof( stages[i] )) +size = 172368: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 2650 (sizeof( shader_t )) +size = 144: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 621 (sizeof( modelHash_t )) +size = 544: c:\projects\jk2\code-mp\renderer\tr_model.cpp, line: 578 (sizeof( *tr.models[tr.numModels] )) +size = 16: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2627 (sizeof( *skin->surfaces )) +size = 528: c:\projects\jk2\code-mp\renderer\tr_image.cpp, line: 2624 (sizeof( skin_t )) +size = 25936: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3787 (size * sizeof(char *)) +size = 787728: c:\projects\jk2\code-mp\renderer\tr_shader.cpp, line: 3744 (sum + numShaders*2) +size = 2505040: c:\projects\jk2\code-mp\renderer\tr_init.cpp, line: 1053 (sizeof( *backEndData[0] ) + sizeof(srfPoly_t) * max_polys + sizeof(polyVert_t) * max_polyverts) +3612608 Hunk memory +10 hunk blocks +----- CL_Shutdown ----- +RE_Shutdown( 0 ) +RE_Shutdown( 1 ) +Shutting down OpenGL subsystem +...wglMakeCurrent( NULL, NULL ): success +...deleting GL context: success +...releasing DC: success +...destroying window +...shutting down QGL +...unloading OpenGL DLL +----------------------- diff --git a/CODE-mp/base/screenshots/shot0000.jpg b/CODE-mp/base/screenshots/shot0000.jpg new file mode 100644 index 0000000..b167ea0 Binary files /dev/null and b/CODE-mp/base/screenshots/shot0000.jpg differ diff --git a/CODE-mp/base/server.cfg b/CODE-mp/base/server.cfg new file mode 100644 index 0000000..4268a7f --- /dev/null +++ b/CODE-mp/base/server.cfg @@ -0,0 +1,17 @@ +// Server Config +seta sv_hostname "jkii-dedicated v1.01" +seta sv_maxclients 8 +seta g_motd "report problems to drews@engr.wisc.edu" +sv_pure 0 +sv_maxRate 10000 +seta g_inactivity 0 +seta rconpassword "raven2" +g_allowvote 1 + + +set d1 "set timelimit 20; set capturelimit 20; map ffa_deathstar; set nextmap vstr d2" +set d2 "set timelimit 20; set capturelimit 20; map ffa_imperial; set nextmap vstr d3" +set d3 "map ffa_bespin; set nextmap vstr d4" +set d4 "map ffa_raven; set nextmap vstr d5" +set d5 "map ffa_yavin; set nextmap vstr d1" +vstr d1 diff --git a/CODE-mp/base/vm/cgame.map b/CODE-mp/base/vm/cgame.map new file mode 100644 index 0000000..78ad754 --- /dev/null +++ b/CODE-mp/base/vm/cgame.map @@ -0,0 +1,1597 @@ +0 fffffed3 trap_CG_RegisterSharedMemory +0 fffffed4 trap_G2API_SetNewOrigin +0 fffffed5 trap_G2API_SetSurfaceOnOff +0 fffffed6 trap_G2API_SetRootSurface +0 fffffed7 trap_G2API_SetBoltInfo +0 fffffed8 trap_G2API_AddBolt +0 fffffed9 trap_G2API_RemoveGhoul2Model +0 fffffeda trap_G2API_HasGhoul2ModelOnIndex +0 fffffedb trap_G2API_DuplicateGhoul2Instance +0 fffffedc trap_G2API_CopySpecificGhoul2Model +0 fffffedd trap_G2API_CopyGhoul2Instance +0 fffffede trap_G2API_GetGLAName +0 fffffedf trap_G2API_SetBoneAnim +0 fffffee0 trap_G2API_SetBoneAngles +0 fffffee1 trap_G2API_CleanGhoul2Models +0 fffffee2 trap_G2API_InitGhoul2Model +0 fffffee3 trap_G2API_GetBoltMatrix_NoReconstruct +0 fffffee4 trap_G2API_GetBoltMatrix +0 fffffee5 trap_G2API_GiveMeVectorFromMatrix +0 fffffee6 trap_G2_HaveWeGhoul2Models +0 fffffee7 trap_G2_SetGhoul2ModelIndexes +0 fffffee8 trap_G2_ListModelBones +0 fffffee9 trap_G2_ListModelSurfaces +0 fffffeea trap_ROFF_Purge_Ent +0 fffffeeb trap_ROFF_Play +0 fffffeec trap_ROFF_Cache +0 fffffeed trap_ROFF_UpdateEntities +0 fffffeee trap_ROFF_Clean +0 fffffeef trap_SP_Register +0 fffffef0 trap_SP_GetStringTextString +0 fffffef1 trap_SP_Print +0 fffffef2 trap_FX_AddSprite +0 fffffef3 trap_FX_AddPrimitive +0 fffffef4 trap_FX_AddBezier +0 fffffef5 trap_FX_AddPoly +0 fffffef6 trap_FX_AdjustTime +0 fffffef7 trap_FX_FreeSystem +0 fffffef8 trap_FX_InitSystem +0 fffffef9 trap_FX_AddScheduledEffects +0 fffffefa trap_FX_PlayBoltedEffectID +0 fffffefb trap_FX_PlayEntityEffectID +0 fffffefc trap_FX_PlayEffectID +0 fffffefd trap_FX_PlaySimpleEffectID +0 fffffefe trap_FX_PlayEntityEffect +0 fffffeff trap_FX_PlayEffect +0 ffffff00 trap_FX_PlaySimpleEffect +0 ffffff01 trap_FX_RegisterEffect +0 ffffff02 trap_R_inPVS +0 ffffff03 trap_GetEntityToken +0 ffffff04 trap_CIN_SetExtents +0 ffffff05 trap_CIN_DrawCinematic +0 ffffff06 trap_CIN_RunCinematic +0 ffffff07 trap_CIN_StopCinematic +0 ffffff08 trap_CIN_PlayCinematic +0 ffffff09 trap_SnapVector +0 ffffff0a trap_RealTime +0 ffffff0b trap_S_StopBackgroundTrack +0 ffffff0c trap_PC_RemoveAllGlobalDefines +0 ffffff0d trap_PC_LoadGlobalDefines +0 ffffff0e trap_PC_SourceFileAndLine +0 ffffff0f trap_PC_ReadToken +0 ffffff10 trap_PC_FreeSource +0 ffffff11 trap_PC_LoadSource +0 ffffff12 trap_PC_AddGlobalDefine +0 ffffff13 trap_Key_GetKey +0 ffffff14 trap_Key_SetCatcher +0 ffffff15 trap_Key_GetCatcher +0 ffffff16 trap_Key_IsDown +0 ffffff17 trap_MemoryRemaining +0 ffffff1a trap_OpenUIMenu +0 ffffff1b trap_SetClientTurnExtent +0 ffffff1c trap_SetClientForceAngle +0 ffffff1d trap_SetUserCmdValue +0 ffffff1e trap_GetUserCmd +0 ffffff1f trap_GetCurrentCmdNumber +0 ffffff20 trap_GetServerCommand +0 ffffff21 trap_GetSnapshot +0 ffffff22 trap_GetCurrentSnapshotNumber +0 ffffff23 trap_GetGameState +0 ffffff24 trap_GetGlconfig +0 ffffff25 trap_FX_AddLine +0 ffffff26 trap_R_GetBModelVerts +0 ffffff27 trap_R_SetLightStyle +0 ffffff28 trap_R_GetLightStyle +0 ffffff29 trap_R_RemapShader +0 ffffff2a trap_R_DrawRotatePic2 +0 ffffff2b trap_R_DrawRotatePic +0 ffffff2c trap_R_LerpTag +0 ffffff2d trap_R_ModelBounds +0 ffffff2e trap_R_DrawStretchPic +0 ffffff2f trap_R_SetColor +0 ffffff30 trap_R_RenderScene +0 ffffff31 trap_R_AddAdditiveLightToScene +0 ffffff32 trap_R_AddLightToScene +0 ffffff33 trap_R_LightForPoint +0 ffffff34 trap_R_AddPolysToScene +0 ffffff35 trap_R_AddPolyToScene +0 ffffff36 trap_R_AddRefEntityToScene +0 ffffff37 trap_R_ClearScene +0 ffffff8e asin +0 ffffff8f acos +0 ffffff90 ceil +0 ffffff91 floor +0 ffffff92 perpendicularvector +0 ffffff93 anglevectors +0 ffffff94 matrixmultiply +0 ffffff95 sqrt +0 ffffff96 atan2 +0 ffffff97 cos +0 ffffff98 sin +0 ffffff99 strncpy +0 ffffff9a memcpy +0 ffffff9b memset +0 ffffffcb trap_AnyLanguage_ReadCharFromString +0 ffffffcc trap_R_Font_DrawString +0 ffffffcd trap_R_Font_HeightPixels +0 ffffffce trap_R_Font_StrLenChars +0 ffffffcf trap_R_Font_StrLenPixels +0 ffffffd0 trap_R_RegisterFont +0 ffffffd1 trap_R_RegisterShaderNoMip +0 ffffffd2 trap_R_RegisterShader +0 ffffffd3 trap_R_RegisterSkin +0 ffffffd4 trap_R_RegisterModel +0 ffffffd5 trap_R_LoadWorldMap +0 ffffffd6 trap_S_StartBackgroundTrack +0 ffffffd7 trap_S_RegisterSound +0 ffffffd8 trap_S_Respatialize +0 ffffffd9 trap_S_StopLoopingSound +0 ffffffda trap_S_AddRealLoopingSound +0 ffffffdb trap_S_UpdateEntityPosition +0 ffffffdc trap_S_AddLoopingSound +0 ffffffdd trap_S_ClearLoopingSounds +0 ffffffde trap_S_StartLocalSound +0 ffffffdf trap_S_StartSound +0 ffffffe0 trap_S_MuteSound +0 ffffffe1 trap_CM_MarkFragments +0 ffffffe2 trap_CM_TransformedCapsuleTrace +0 ffffffe3 trap_CM_TransformedBoxTrace +0 ffffffe4 trap_CM_CapsuleTrace +0 ffffffe5 trap_CM_BoxTrace +0 ffffffe6 trap_CM_TransformedPointContents +0 ffffffe7 trap_CM_PointContents +0 ffffffe8 trap_CM_TempCapsuleModel +0 ffffffe9 trap_CM_TempBoxModel +0 ffffffea trap_CM_InlineModel +0 ffffffeb trap_CM_NumInlineModels +0 ffffffec trap_CM_LoadMap +0 ffffffed trap_UpdateScreen +0 ffffffee trap_SendClientCommand +0 ffffffef trap_RemoveCommand +0 fffffff0 trap_AddCommand +0 fffffff1 trap_SendConsoleCommand +0 fffffff2 trap_FS_FCloseFile +0 fffffff3 trap_FS_Write +0 fffffff4 trap_FS_Read +0 fffffff5 trap_FS_FOpenFile +0 fffffff6 trap_Args +0 fffffff7 trap_Argv +0 fffffff8 trap_Argc +0 fffffff9 trap_Cvar_VariableStringBuffer +0 fffffffa trap_Cvar_Set +0 fffffffb trap_Cvar_Update +0 fffffffc trap_Cvar_Register +0 fffffffd trap_Milliseconds +0 fffffffe trap_Error +0 ffffffff trap_Print +0 0 vmMain +0 122 C_PointContents +0 138 C_GetLerpOrigin +0 14a C_GetLerpAngles +0 15c C_GetModelScale +0 16e C_Trace +0 19a C_GetBoltPos +0 20d C_ImpactMark +0 24c CG_RegisterCvars +0 332 CG_ForceModelChange +0 368 CG_UpdateCvars +0 3bb CG_CrosshairPlayer +0 3d4 CG_LastAttacker +0 3e5 CG_Printf +0 3fe CG_Error +0 417 Com_Error +0 432 Com_Printf +0 44d CG_Argv +0 45c CG_RegisterItemSounds +0 4f5 CG_RegisterSounds +0 a8e CG_RegisterEffects +0 abc CG_RegisterGraphics +0 1137 CG_GetStripEdString +0 1167 CG_BuildSpectatorString +0 11bb CG_RegisterClients +0 1206 CG_ConfigString +0 1227 CG_StartMusic +0 126a CG_GetMenuBuffer +0 12ce CG_Asset_Parse +0 156d CG_ParseMenu +0 15d8 CG_Load_Menu +0 1628 CG_OwnerDrawHandleKey +0 162d CG_FeederCount +0 1689 CG_SetScoreSelection +0 1720 CG_InfoFromScoreIndex +0 1773 CG_FeederItemText +0 18e3 CG_FeederItemImage +0 18e8 CG_FeederSelection +0 1933 CG_Cvar_Get +0 1952 CG_Text_PaintWithCursor +0 1976 CG_OwnerDrawWidth +0 1a07 CG_PlayCinematic +0 1a26 CG_StopCinematic +0 1a2f CG_DrawCinematic +0 1a4e CG_RunCinematicFrame +0 1a57 CG_LoadHudMenu +0 1af2 CG_AssetCache +0 1b9f CG_Init_CG +0 1bab CG_Init_CGents +0 1bb7 CG_InitItems +0 1bc3 CG_Init +0 1f8c CG_Shutdown +0 1f98 CG_NextForcePower_f +0 1fdc CG_PrevForcePower_f +0 2020 CG_NextInventory_f +0 206a CG_PrevInventory_f +0 20b4 CG_TargetCommand_f +0 20e6 CG_SizeUp_f +0 20fc CG_SizeDown_f +0 2112 CG_Viewpos_f +0 212c CG_ScoresDown_f +0 2151 CG_ScoresUp_f +0 215f CG_scrollScoresDown_f +0 2188 CG_scrollScoresUp_f +0 21b1 CG_spWin_f +0 21e6 CG_spLose_f +0 221b CG_TellTarget_f +0 2246 CG_TellAttacker_f +0 2271 CG_VoiceTellTarget_f +0 229c CG_VoiceTellAttacker_f +0 22c7 CG_NextTeamMember_f +0 22cd CG_PrevTeamMember_f +0 22d3 CG_NextOrder_f +0 2346 CG_ConfirmOrder_f +0 2376 CG_DenyOrder_f +0 2397 CG_TaskOffense_f +0 23ce CG_TaskDefense_f +0 23ed CG_TaskPatrol_f +0 240c CG_TaskCamp_f +0 242b CG_TaskFollow_f +0 244a CG_TaskRetrieve_f +0 2469 CG_TaskEscort_f +0 2488 CG_TaskOwnFlag_f +0 2499 CG_TauntKillInsult_f +0 24a1 CG_TauntPraise_f +0 24a9 CG_TauntTaunt_f +0 24b1 CG_TauntDeathInsult_f +0 24b9 CG_TauntGauntlet_f +0 24c1 CG_TaskSuicide_f +0 24e3 CG_StartOrbit_f +0 252b CG_ConsoleCommand +0 2569 CG_InitConsoleCommands +0 268f MenuFontToHandle +0 26b6 CG_Text_Width +0 26d4 CG_Text_Height +0 26ef CG_Text_Paint +0 275f CG_DrawZoomMask +0 2ab7 CG_Draw3DModel +0 2b25 CG_DrawHead +0 2b5e CG_DrawFlagModel +0 2c43 DrawAmmo +0 2c4c CG_DrawHUDLeftFrame1 +0 2c6c CG_DrawHUDLeftFrame2 +0 2c8c DrawHealthArmor +0 2ef2 CG_DrawHealth +0 2f99 CG_DrawArmor +0 30e0 CG_DrawHUDRightFrame1 +0 3100 CG_DrawHUDRightFrame2 +0 3120 CG_DrawAmmo +0 3286 CG_DrawForcePower +0 3322 CG_DrawHUD +0 35af ForcePower_Valid +0 35dc CG_DrawForceSelect +0 3827 CG_DrawInvenSelect +0 3ac2 CG_DrawStats +0 3ad6 CG_DrawTeamBackground +0 3b13 CG_DrawMiniScoreboard +0 3ba0 CG_DrawEnemyInfo +0 3d3e CG_DrawSnapshot +0 3d7e CG_DrawFPS +0 3e0b CG_DrawTimer +0 3e73 CG_DrawTeamOverlay +0 41b2 CG_DrawPowerupIcons +0 4296 CG_DrawUpperRight +0 4302 CG_AddLagometerFrameInfo +0 4322 CG_AddLagometerSnapshotInfo +0 4365 CG_DrawDisconnect +0 443e CG_DrawLagometer +0 464d CG_CenterPrint +0 468b CG_DrawCenterString +0 476d CG_DrawCrosshair +0 496d CG_WorldCoordToScreenCoordFloat +0 4a16 CG_WorldCoordToScreenCoord +0 4a37 CG_SaberClashFlare +0 4b09 CG_DrawHolocronIcons +0 4b93 CG_IsDurationPower +0 4bbc CG_DrawActivePowers +0 4c82 CG_DrawRocketLocking +0 4e3a CG_ScanForCrosshairEntity +0 4f89 CG_DrawCrosshairNames +0 5032 CG_DrawSpectator +0 51a1 CG_DrawVote +0 5212 CG_DrawTeamVote +0 5362 CG_DrawScoreboard +0 536c CG_DrawIntermission +0 537b CG_DrawFollow +0 53fd CG_DrawAmmoWarning +0 5400 CG_DrawWarmup +0 5604 CG_DrawTimedMenus +0 5625 CG_DrawFlagStatus +0 56f7 CG_Draw2D +0 5d04 CG_DrawTourneyScoreboard +0 5d07 CG_DrawActive +0 5d92 CG_DrawRect +0 5dc4 CG_GetColorForHealth +0 5e62 CG_DrawSides +0 5eb8 CG_DrawTopBottom +0 5f0e CG_FillRect2 +0 5f3d CG_FillRect +0 5f6c CG_DrawPic +0 5f93 CG_DrawRotatePic +0 5fbd CG_DrawRotatePic2 +0 5fe7 CG_DrawChar +0 604e CG_DrawStringExt +0 615a CG_DrawBigString +0 6192 CG_DrawBigStringColor +0 61b8 CG_DrawSmallString +0 61ec CG_DrawSmallStringColor +0 620d CG_DrawStrlen +0 6255 CG_TileClearBox +0 629c CG_TileClear +0 6333 CG_FadeColor +0 6377 CG_ColorForGivenHealth +0 63c6 CG_ColorForHealth +0 642b CG_DrawNumField +0 665b UI_DrawProportionalString +0 66e4 UI_DrawScaledProportionalString +0 675b CG_BubbleTrail +0 68f9 CG_SmokePuff +0 6a5c CG_TestLine +0 6b2d CG_ThrowChunk +0 6be0 CG_DoGlassQuad +0 6d4d CG_CalcBiLerp +0 734a CG_CalcHeightWidth +0 74f7 CG_InitGlass +0 754e Vector2Set +0 755d CG_DoGlass +0 77d9 CG_GlassShatter +0 7811 CG_GlassShatter_Old +0 79a7 CG_CreateDebris +0 7bc4 CG_ScorePlum +0 7c8c CG_ExplosionEffects +0 7cd2 CG_MakeExplosion +0 7e91 CG_SurfaceExplosion +0 8136 CG_Bleed +0 819d CG_LaunchGib +0 821c CG_GibPlayer +0 84ab CG_LaunchExplode +0 852a CG_BigExplode +0 8684 CG_PositionEntityOnTag +0 8758 CG_PositionRotatedEntityOnTag +0 8829 CG_SetEntitySoundPosition +0 8886 CG_EntityEffects +0 897a FX_AddOrientedLine +0 8a42 FX_DrawPortableShield +0 8b56 CG_Special +0 8b79 CG_SetGhoul2Info +0 8ba2 CG_CreateBBRefEnts +0 8ba5 G2_BoltToGhoul2Model +0 8c56 ScaleModelAxis +0 8d5e CG_General +0 9b00 CG_Speaker +0 9b71 CG_GreyItem +0 9b9e CG_Item +0 a276 CG_Missile +0 a637 CG_Mover +0 a6b1 CG_Beam +0 a6e5 CG_Portal +0 a75c CG_AdjustPositionForMover +0 a813 LerpBoneAngleOverrides +0 a816 CG_InterpolateEntityPosition +0 a8dc CG_CalcEntityLerpPositions +0 a981 CG_TeamBase +0 a9d1 CG_AddCEntity +0 aa86 CG_ManualEntityRender +0 aa8f CG_AddPacketEntities +0 ab78 CG_ROFF_NotetrackCallback +0 ae52 CG_PlaceString +0 af6e CG_Obituary +0 b2cf CG_ToggleBinoculars +0 b339 CG_UseItem +0 b3ec CG_ItemPickup +0 b507 CG_PainEvent +0 b562 CG_ReattachLimb +0 b5da CG_BodyQueueCopy +0 b7b8 CG_TeamName +0 b7d5 CG_PrintCTFMessage +0 b8f1 CG_GetCTFMessageEvent +0 b932 DoFall +0 ba00 CG_InClientBitflags +0 ba4f CG_EntityEvent +0 d308 CG_CheckEvents +0 d39e CG_LoadingString +0 d3ae CG_LoadingItem +0 d3c9 CG_LoadingClient +0 d3f6 CG_DrawInformation +0 da64 CG_LoadBar +0 db22 CG_ClearLightStyles +0 db44 CG_RunLightStyles +0 dc0e CG_SetLightstyle +0 dc99 CG_InitLocalEntities +0 dccf CG_FreeLocalEntity +0 dd08 CG_AllocLocalEntity +0 dd46 CG_BloodTrail +0 ddbb CG_FragmentBounceMark +0 de5e CG_FragmentBounceSound +0 de77 CG_ReflectVelocity +0 df6d CG_AddFragment +0 e0e8 CG_AddFadeRGB +0 e1ba CG_AddFadeScaleModel +0 e371 CG_AddMoveScaleFade +0 e45c CG_AddPuff +0 e568 CG_AddScaleFade +0 e601 CG_AddFallScaleFade +0 e6b3 CG_AddExplosion +0 e724 CG_AddSpriteExplosion +0 e7f0 CG_AddRefEntity +0 e80b CG_AddScorePlum +0 ea41 CG_AddOLine +0 eb65 CG_AddLine +0 eb78 CG_AddLocalEntities +0 ec28 CG_InitMarkPolys +0 ec5e CG_FreeMarkPoly +0 ec97 CG_AllocMark +0 ecee CG_ImpactMark +0 efc8 CG_AddMarks +0 f292 CG_ClearParticles +0 f335 CG_AddParticleToScene +0 10b51 CG_AddParticles +0 10d56 CG_ParticleSnowFlurry +0 10ef2 CG_ParticleSnow +0 11048 CG_ParticleBubble +0 111c7 CG_ParticleSmoke +0 112c6 CG_ParticleBulletDebris +0 11387 CG_ParticleExplosion +0 11492 CG_AddParticleShrapnel +0 11495 CG_NewParticleArea +0 115d6 CG_SnowLink +0 1161c CG_ParticleImpactSmokePuff +0 116ff CG_Particle_Bleed +0 117e3 CG_Particle_OilParticle +0 118e5 CG_Particle_OilSlick +0 11a26 CG_OilSlickRemove +0 11a71 ValidBloodPool +0 11b77 CG_BloodPool +0 11c70 CG_ParticleBloodCloud +0 11dac CG_ParticleSparks +0 11f22 CG_ParticleDust +0 12128 CG_ParticleMisc +0 121c8 CG_CustomSound +0 12236 CG_NeedAnimSequence +0 1226b CG_RegisterClientModelname +0 127bb CG_ColorFromString +0 1281f CG_LoadClientInfo +0 12b11 CG_CopyClientInfoModel +0 12c40 CG_ScanForExistingClientInfo +0 12cfe CG_SetDeferredClientInfo +0 12e28 CG_NewClientInfo +0 13218 CG_ActualLoadDeferredPlayers +0 13260 CG_LoadDeferredPlayers +0 13266 CG_InRoll +0 13290 CG_InRollAnim +0 132b2 CG_SetLerpFrameAnimation +0 1371a CG_FirstAnimFrame +0 1375d CG_InWalkingAnim +0 137b4 CG_FootstepForSurface +0 1384e CG_FootStep +0 138cc CG_RunLerpFrame +0 13d75 CG_ClearLerpFrame +0 13dba CG_PlayerAnimation +0 13ea0 CG_SwingAngles +0 13faa CG_SwingAnglesATST +0 140db CG_AddPainTwitch +0 14122 CG_G2SetBoneAngles +0 14159 CG_G2ClientSpineAngles +0 14497 CG_G2PlayerAngles +0 14a88 CG_HasteTrail +0 14b05 CG_PlayerFlag +0 14c22 CG_PlayerPowerups +0 14cf0 CG_PlayerFloatSprite +0 14d3c CG_PlayerShadow +0 14df9 CG_PlayerSplash +0 14eec CG_ForcePushBlur +0 14feb CG_ForceGripEffect +0 15108 CG_AddRefEntityWithPowerups +0 15176 CG_PlayerShieldHit +0 151ea CG_DrawPlayerShield +0 1529e CG_PlayerHitFX +0 152c9 CG_LightVerts +0 153f9 CG_DoSaber +0 1561a CG_GetTagWorldPosition +0 156e3 CG_CreateSaberMarks +0 159e2 CG_AddSaberBlade +0 1605f CG_IsMindTricked +0 160b1 CG_DrawPlayerSphere +0 1614e CG_AddLightningBeam +0 162f1 CG_AddRandomLightning +0 163e7 CG_ThereIsAMaster +0 16412 CG_Player +0 182e9 CG_ResetPlayerEntity +0 1844e CG_CheckAmmo +0 18451 CG_DamageFeedback +0 18594 CG_Respawn +0 185a5 CG_CheckPlayerstateEvents +0 18687 CG_CheckChangedPredictableEvents +0 18714 CG_CheckLocalSounds +0 1890c CG_TransitionPlayerState +0 189c2 CG_BuildSolidList +0 18a51 CG_ClipMoveToEntities +0 18b62 CG_Trace +0 18ba6 CG_PointContents +0 18c16 CG_InterpolatePlayerState +0 18d4b CG_TouchItem +0 18e3d CG_TouchTriggerPrediction +0 18ef4 CG_EntityStateToPlayerState +0 1908e CG_PredictPlayerState +0 19409 CGSagaGetValueGroup +0 19504 CGSagaGetPairedValue +0 196dc CG_InitSagaMode +0 1976f CG_SagaRoundOver +0 19846 CG_SagaObjectiveCompleted +0 19969 CG_DrawClientScore +0 19c25 CG_TeamScoreboard +0 19ca2 CG_GetTeamCount +0 19ce4 CG_DrawOldScoreboard +0 1a2cc CG_ValidOrder +0 1a2fe CG_ParseScores +0 1a532 CG_ParseTeamInfo +0 1a601 CG_ParseServerinfo +0 1a7be CG_ParseWarmup +0 1a7dd CG_SetConfigValues +0 1a8f9 CG_ShaderStateChanged +0 1a9b1 CG_ConfigStringModified +0 1ac68 CG_AddToTeamChat +0 1ade3 CG_KillCEntityInstances +0 1aef4 CG_MapRestart +0 1af7e CG_ParseVoiceChats +0 1b1e1 CG_LoadVoiceChats +0 1b243 CG_HeadModelVoiceChats +0 1b2dd CG_GetVoiceChat +0 1b351 CG_VoiceChatListForClient +0 1b36d CG_PlayVoiceChat +0 1b3e7 CG_PlayBufferedVoiceChats +0 1b415 CG_AddBufferedVoiceChat +0 1b454 CG_VoiceChatLocal +0 1b506 CG_VoiceChat +0 1b59f CG_RemoveChatEscapeChar +0 1b5e5 CG_CheckSVStripEdRef +0 1b712 CG_ServerCommand +0 1ba31 CG_ExecuteNewServerCommands +0 1ba58 CG_ResetEntity +0 1ba9c CG_TransitionEntity +0 1bac9 CG_SetInitialSnapshot +0 1bb8a CG_TransitionSnapshot +0 1bc90 CG_SetNextSnap +0 1bd77 CG_ReadNextSnapshot +0 1bde6 CG_ProcessSnapshots +0 1be96 CreepToPosition +0 1c063 TurretClientRun +0 1c365 CG_TestModel_f +0 1c3f0 CG_TestGun_f +0 1c3fc CG_TestModelNextFrame_f +0 1c412 CG_TestModelPrevFrame_f +0 1c42f CG_TestModelNextSkin_f +0 1c445 CG_TestModelPrevSkin_f +0 1c462 CG_AddTestModel +0 1c4ed CG_CalcVrect +0 1c55a CG_StepOffset +0 1c57c CG_CalcIdealThirdPersonViewTarget +0 1c5bc CG_CalcIdealThirdPersonViewLocation +0 1c5f5 CG_ResetThirdPersonViewDamp +0 1c662 CG_UpdateThirdPersonTargetDamp +0 1c6e9 CG_UpdateThirdPersonCameraDamp +0 1c7af CG_OffsetThirdPersonView +0 1c8d5 CG_OffsetFirstPersonView +0 1cb02 CG_ZoomDown_f +0 1cb12 CG_ZoomUp_f +0 1cb22 CG_CalcFOVFromX +0 1cb5d CG_CalcFov +0 1ccda CG_DamageBlendBlob +0 1cf22 CheckOutOfConstrict +0 1cf8d CG_CalcViewValues +0 1d0b4 CG_PowerupTimerSounds +0 1d0f4 CG_AddBufferedSound +0 1d11e CG_PlayBufferedSounds +0 1d157 CG_UpdateSoundTrackers +0 1d1b0 CG_SE_UpdateShake +0 1d293 CG_SE_UpdateMusic +0 1d2fc CG_CalcScreenEffects +0 1d309 CGCam_Shake +0 1d31f CGCam_SetMusicMult +0 1d33e CG_DrawActiveFrame +0 1d558 CG_RegisterWeapon +0 1e0a5 CG_SetGhoul2InfoRef +0 1e0e2 CG_RegisterItemVisuals +0 1e244 CG_MapTorsoToWeaponFrame +0 1e346 CG_CalculateWeaponPosition +0 1e42b CG_LightningBolt +0 1e450 CG_AddWeaponWithPowerups +0 1e47f CG_AddPlayerWeapon +0 1e984 CG_AddViewWeapon +0 1eb35 CG_DrawIconBackground +0 1ed0c CG_WeaponCheck +0 1ed45 CG_WeaponSelectable +0 1eda6 CG_DrawWeaponSelect +0 1f0f6 CG_NextWeapon_f +0 1f15c CG_PrevWeapon_f +0 1f1c2 CG_Weapon_f +0 1f2ed CG_OutOfAmmoChange +0 1f336 CG_FireATST +0 1f354 CG_GetClientWeaponMuzzleBoltPoint +0 1f3ca CG_FireWeapon +0 1f592 CG_MissileHitWall +0 1f672 CG_MissileHitPlayer +0 1f76b CG_Tracer +0 1f978 CG_CalcMuzzlePoint +0 1fb66 CG_InitG2Weapons +0 1fbf2 CG_ShutDownG2Weapons +0 1fc0c CG_CopyG2WeaponInstance +0 1fc43 CG_CheckPlayerG2Weapons +0 1fd67 FX_BlasterProjectileThink +0 1fd89 FX_BlasterAltFireThink +0 1fdab FX_BlasterWeaponHitWall +0 1fdba FX_BlasterWeaponHitPlayer +0 1fddb FX_BowcasterProjectileThink +0 1fdfd FX_BowcasterHitWall +0 1fe0c FX_BowcasterHitPlayer +0 1fe1b FX_BowcasterAltProjectileThink +0 1fe3d FX_BryarProjectileThink +0 1fe5f FX_BryarHitWall +0 1fe6e FX_BryarHitPlayer +0 1fe8f FX_BryarAltProjectileThink +0 1fed1 FX_BryarAltHitWall +0 1ff15 FX_BryarAltHitPlayer +0 1ff36 FX_TurretProjectileThink +0 1ff58 FX_TurretHitWall +0 1ff67 FX_TurretHitPlayer +0 1ff88 FX_DEMP2_ProjectileThink +0 1ffaa FX_DEMP2_HitWall +0 1ffb9 FX_DEMP2_HitPlayer +0 1ffc8 FX_DEMP2_AltBeam +0 1ffcb FX_DEMP2_AltDetonate +0 2003d FX_DisruptorMainShot +0 20074 FX_DisruptorAltShot +0 200e1 FX_DisruptorAltMiss +0 201bd FX_DisruptorAltHit +0 201cc FX_DisruptorHitWall +0 201db FX_DisruptorHitPlayer +0 201ea FX_FlechetteProjectileThink +0 2020c FX_FlechetteWeaponHitWall +0 2021b FX_FlechetteWeaponHitPlayer +0 2022a FX_FlechetteAltProjectileThink +0 2024c FX_RepeaterProjectileThink +0 2026e FX_RepeaterHitWall +0 2027d FX_RepeaterHitPlayer +0 2028c FX_RepeaterAltProjectileThink +0 202ae FX_RepeaterAltHitWall +0 202bd FX_RepeaterAltHitPlayer +0 202cc FX_RocketProjectileThink +0 202ee FX_RocketHitWall +0 202fd FX_RocketHitPlayer +0 2030c FX_RocketAltProjectileThink +0 2032e FX_ForceDrained +0 20365 PM_SlideMove +0 20755 PM_StepSlideMove +0 20aa4 BG_InSpecialJump +0 20ac9 BG_InSaberStandAnim +0 20aef BG_DirectFlippingAnim +0 20b0e BG_SaberInAttack +0 20b3b BG_SaberInSpecial +0 20b58 BG_SaberInIdle +0 20b75 BG_FlippingAnim +0 20bbd BG_SpinningSaberAnim +0 20cd5 BG_SaberInSpecialAttack +0 20cfe BG_InRoll +0 20d24 BG_InDeathAnim +0 20d49 PM_SaberInParry +0 20d5e PM_SaberInReflect +0 20d73 PM_SaberInStart +0 20d88 PM_InSaberAnim +0 20d9f PM_InKnockDown +0 20dcc PM_PainAnim +0 20deb PM_JumpingAnim +0 20e0a PM_LandingAnim +0 20e51 PM_SpinningAnim +0 20e5e PM_InOnGroundAnim +0 20ebb PM_InRollComplete +0 20ee1 PM_AnimLength +0 20f0e PM_DebugLegsAnim +0 20f59 BG_ParseAnimationFile +0 210d1 PM_StartLegsAnim +0 21156 PM_ContinueLegsAnim +0 21176 PM_ForceLegsAnim +0 211e6 PM_StartTorsoAnim +0 21241 PM_SetLegsAnimTimer +0 2125f PM_SetTorsoAnimTimer +0 2127d BG_SaberStartTransAnim +0 212cc PM_SetAnimFinal +0 21508 PM_SetAnim +0 21581 PM_GetSaberStance +0 2159e PM_DoSlowFall +0 215c1 PM_AddEvent +0 215d0 PM_AddEventWithParm +0 215e0 PM_AddTouchEnt +0 21635 PM_ClipVelocity +0 216ae PM_Friction +0 217aa PM_Accelerate +0 21826 PM_CmdScale +0 218bd PM_SetMovementDir +0 21a09 PM_ForceJumpingUp +0 21ac8 PM_JumpForDir +0 21b6b PM_SetPMViewAngle +0 21bac PM_AdjustAngleForWallRun +0 21db0 PM_CheckJump +0 22b4c PM_CheckWaterJump +0 22c33 PM_WaterJumpMove +0 22c74 PM_WaterMove +0 22da5 PM_FlyMove +0 22e30 PM_AirMove +0 22ef3 PM_WalkMove +0 23195 PM_DeadMove +0 2320e PM_NoclipMove +0 23380 PM_FootstepForSurface +0 23399 PM_TryRoll +0 235aa PM_CrashLand +0 238bb PM_CorrectAllSolid +0 239a2 PM_GroundTraceMissed +0 23b0d PM_GroundTrace +0 23ca0 PM_SetWaterLevel +0 23d6d PM_CheckDuck +0 23f43 PM_Use +0 23f8c PM_RunningAnim +0 23fba PM_Footsteps +0 24231 PM_WaterEvents +0 24288 PM_BeginWeaponChange +0 242ee PM_FinishWeaponChange +0 24341 PM_DoChargedWeapons +0 2481b PM_ItemUsable +0 24a46 PM_Weapon +0 25373 PM_Animate +0 253d1 PM_DropTimers +0 2545b PM_UpdateViewAngles +0 254ff PM_AdjustAttackStates +0 25877 BG_CmdForRoll +0 258cc BG_AdjustClientSpeed +0 25c7f PmoveSingle +0 260f5 Pmove +0 261a1 swapfunc +0 26228 med3 +0 262ab qsort +0 26664 strlen +0 2667f strcat +0 266c2 strcpy +0 266f7 strcmp +0 26730 strchr +0 2674f strstr +0 26795 tolower +0 267ad toupper +0 267c5 memmove +0 2680c tan +0 26823 srand +0 2682a rand +0 2683f atof +0 26904 _atof +0 269cf atoi +0 26a47 _atoi +0 26ac9 abs +0 26ade fabs +0 26af3 AddInt +0 26bce AddFloat +0 26cdc AddString +0 26d73 vsprintf +0 26f0b sscanf +0 26f76 BG_LegalizedForcePowers +0 27343 vectoyaw +0 2739d BG_HasYsalamiri +0 273cc BG_CanUseFPNow +0 27433 BG_FindItemForPowerup +0 2746f BG_FindItemForHoldable +0 274a9 BG_FindItemForWeapon +0 274dc BG_FindItem +0 27505 BG_PlayerTouchesItem +0 27565 BG_ProperForceIndex +0 27588 BG_CycleForce +0 27660 BG_GetItemIndexByTag +0 27690 BG_CycleInven +0 276fc BG_CanItemBeGrabbed +0 278f9 BG_EvaluateTrajectory +0 27ac7 BG_EvaluateTrajectoryDelta +0 27bc1 BG_AddPredictableEventToPlayerstate +0 27bfc BG_TouchJumpPad +0 27c60 BG_PlayerStateToEntityState +0 27f6b BG_PlayerStateToEntityStateExtraPolate +0 28283 BG_SwingAngles +0 28388 BG_AddPainTwitch +0 283c9 BG_G2PlayerAngles +0 28566 BG_Alloc +0 285a6 BG_AllocUnaligned +0 285d9 BG_TempAlloc +0 28611 BG_TempFree +0 2863e BG_StringAlloc +0 28661 BG_OutOfMemory +0 28673 PM_irand_timesync +0 286a8 BG_ForcePowerDrain +0 28766 PM_AttackMoveForQuad +0 2879b PM_SaberAnimTransitionAnim +0 28880 PM_SaberMoveQuadrantForMovement +0 288e5 PM_SaberInBounce +0 2890a PM_SaberInTransition +0 2891f PM_SaberKataDone +0 28965 PM_SetAnimFrame +0 2896f PM_SaberLockBreak +0 28c38 PM_SaberLocked +0 28e5c PM_SaberInBrokenParry +0 28e71 PM_BrokenParryForParry +0 28eb3 PM_CanBackstab +0 28f34 PM_SaberFlipOverAttackMove +0 29035 PM_SomeoneInFront +0 290c5 PM_SaberLungeAttackMove +0 2910f PM_SaberJumpAttackMove +0 2917c PM_GroundDistance +0 291e5 PM_SaberAttackForMovement +0 29339 PM_WeaponLightsaber +0 29b41 PM_SetSaberMove +0 29d0e Q_rand +0 29d23 Q_random +0 29d35 Q_crandom +0 29d46 VectorCompare +0 29d7e VectorLength +0 29db1 VectorLengthSquared +0 29ddd Distance +0 29e1e DistanceSquared +0 29e6c VectorNormalizeFast +0 29ecb VectorInverse +0 29ef3 CrossProduct +0 29f6c ClampChar +0 29f83 ClampShort +0 29f9a DirToByte +0 29ff5 ByteToDir +0 2a013 ColorBytes3 +0 2a082 ColorBytes4 +0 2a114 NormalizeColor +0 2a18a PlaneFromPoints +0 2a248 RotatePointAroundVector +0 2a353 RotateAroundDirection +0 2a397 vectoangles +0 2a453 AnglesToAxis +0 2a488 AxisClear +0 2a4bf AxisCopy +0 2a4e3 ProjectPointOnPlane +0 2a59e MakeNormalVectors +0 2a649 VectorRotate +0 2a6e6 Q_rsqrt +0 2a71d Q_fabs +0 2a72d LerpAngle +0 2a75e AngleSubtract +0 2a783 AnglesSubtract +0 2a7d1 AngleMod +0 2a7e3 AngleNormalize360 +0 2a7f1 AngleNormalize180 +0 2a80c AngleDelta +0 2a81c SetPlaneSignbits +0 2a849 BoxOnPlaneSide +0 2ac0a RadiusFromBounds +0 2ac5d ClearBounds +0 2ac94 AddPointToBounds +0 2ad2d VectorNormalize +0 2ad9d VectorNormalize2 +0 2ae2b _VectorMA +0 2ae6d _DotProduct +0 2aea2 _VectorSubtract +0 2aedb _VectorAdd +0 2af14 _VectorCopy +0 2af3b _VectorScale +0 2af6b Vector4Scale +0 2afad Q_log2 +0 2afcc MatrixMultiply +0 2b1a1 AngleVectors +0 2b299 PerpendicularVector +0 2b305 Rand_Init +0 2b30c flrand +0 2b347 irand +0 2b379 powf +0 2b39c GetIDForString +0 2b3e1 GetStringForID +0 2b41d Com_Clamp +0 2b437 COM_SkipPath +0 2b45b COM_StripExtension +0 2b491 COM_DefaultExtension +0 2b4d9 ShortSwap +0 2b4f9 ShortNoSwap +0 2b504 LongSwap +0 2b537 LongNoSwap +0 2b53d Long64Swap +0 2b57a Long64NoSwap +0 2b582 FloatSwap +0 2b598 FloatNoSwap +0 2b59f COM_BeginParseSession +0 2b5b1 COM_GetCurrentParseLine +0 2b5b7 COM_Parse +0 2b5c6 COM_ParseError +0 2b5e6 COM_ParseWarning +0 2b606 SkipWhitespace +0 2b63d COM_Compress +0 2b790 COM_ParseExt +0 2b8dc COM_MatchToken +0 2b905 SkipBracedSection +0 2b943 SkipRestOfLine +0 2b97b Parse1DMatrix +0 2b9ba Parse2DMatrix +0 2b9f5 Parse3DMatrix +0 2ba3a Q_isprint +0 2ba4f Q_islower +0 2ba64 Q_isupper +0 2ba79 Q_isalpha +0 2ba9a Q_strrchr +0 2bace Q_strncpyz +0 2bb09 Q_stricmpn +0 2bb94 Q_strncmp +0 2bbe6 Q_stricmp +0 2bc0e Q_strlwr +0 2bc34 Q_strupr +0 2bc5a Q_strcat +0 2bc86 Q_PrintStrlen +0 2bcd6 Q_CleanStr +0 2bd3c Com_sprintf +0 2bd7b va +0 2bda8 Info_ValueForKey +0 2be88 Info_NextPair +0 2bf26 Info_RemoveKey +0 2bff6 Info_RemoveKey_Big +0 2c0c6 Info_Validate +0 2c0ed Info_SetValueForKey +0 2c1bd Info_SetValueForKey_Big +0 2c285 Q_irand +0 2c29d UI_Alloc +0 2c2d7 UI_InitMemory +0 2c2e0 UI_OutOfMemory +0 2c2e6 hashForString +0 2c326 String_Alloc +0 2c3ff String_Report +0 2c448 String_Init +0 2c48c PC_SourceWarning +0 2c4bc PC_SourceError +0 2c4ec LerpColor +0 2c547 Float_Parse +0 2c573 PC_Float_Parse +0 2c5c8 Color_Parse +0 2c5f5 PC_Color_Parse +0 2c622 Int_Parse +0 2c64e PC_Int_Parse +0 2c6a6 Rect_Parse +0 2c6ed PC_Rect_Parse +0 2c734 String_Parse +0 2c760 PC_String_Parse +0 2c7d5 PC_Script_Parse +0 2c857 Init_Display +0 2c85e GradientBar_Paint +0 2c8a4 Window_Init +0 2c8e0 Fade +0 2c951 Window_Paint +0 2cc9b Item_SetScreenCoords +0 2cd2f Item_UpdatePosition +0 2cd82 Menu_UpdatePosition +0 2cdd9 Menu_PostParse +0 2ce05 Menu_ClearFocus +0 2ce88 IsVisible +0 2ceab Rect_ContainsPoint +0 2cef0 Menu_ItemsMatchingGroup +0 2cf4c Menu_GetMatchingItemByNumber +0 2cfb9 Script_SetColor +0 2d053 Script_SetAsset +0 2d06c Script_SetBackground +0 2d08e Menu_FindItemByName +0 2d0dd Script_SetTeamColor +0 2d112 Script_SetItemColor +0 2d1eb Script_SetItemRect +0 2d269 Menu_ShowItemByName +0 2d2db Menu_FadeItemByName +0 2d354 Menus_FindByName +0 2d385 Menus_ShowByName +0 2d39d Menus_OpenByName +0 2d3a6 Menu_RunCloseScript +0 2d3d5 Menus_CloseByName +0 2d435 Menus_CloseAll +0 2d46b Script_Show +0 2d48b Script_Hide +0 2d4ab Script_FadeIn +0 2d4cb Script_FadeOut +0 2d4eb Script_Open +0 2d503 Script_Close +0 2d52d Menu_TransitionItemByName +0 2d618 Script_Defer +0 2d63f Script_RunDeferred +0 2d659 Script_Transition +0 2d6bb Menu_OrbitItemByName +0 2d728 Script_Orbit +0 2d796 Script_SetFocus +0 2d821 Script_SetPlayerModel +0 2d83f Script_SetPlayerHead +0 2d85d Script_SetCvar +0 2d889 Script_SetCvarToCvar +0 2d8c2 Script_Exec +0 2d8e9 Script_Play +0 2d912 Script_playLooped +0 2d93e Item_RunScript +0 2d9db Item_EnableShowViaCvar +0 2dab4 Item_SetFocus +0 2dc20 Item_TextScroll_MaxScroll +0 2dc4f Item_TextScroll_ThumbPosition +0 2dc99 Item_TextScroll_ThumbDrawPosition +0 2dd02 Item_TextScroll_OverLB +0 2ddea Item_TextScroll_MouseEnter +0 2de1b Item_TextScroll_HandleKey +0 2dfb1 Item_ListBox_MaxScroll +0 2e00b Item_ListBox_ThumbPosition +0 2e092 Item_ListBox_ThumbDrawPosition +0 2e157 Item_Slider_ThumbPosition +0 2e1ef Item_Slider_OverSlider +0 2e224 Item_ListBox_OverLB +0 2e3ef Item_ListBox_MouseEnter +0 2e524 Item_MouseEnter +0 2e646 Item_MouseLeave +0 2e692 Menu_HitTest +0 2e6d0 Item_SetMouseOver +0 2e6f9 Item_OwnerDraw_HandleKey +0 2e733 Item_ListBox_HandleKey +0 2ec50 Item_YesNo_HandleKey +0 2ecd6 Item_Multi_CountSettings +0 2ecee Item_Multi_FindCvarByValue +0 2ed73 Item_Multi_Setting +0 2ee04 Item_Multi_HandleKey +0 2eef7 Item_TextField_HandleKey +0 2f27b Scroll_TextScroll_AutoFunc +0 2f2d8 Scroll_TextScroll_ThumbFunc +0 2f3c7 Scroll_ListBox_AutoFunc +0 2f424 Scroll_ListBox_ThumbFunc +0 2f5ab Scroll_Slider_ThumbFunc +0 2f645 Item_StartCapture +0 2f7ba Item_StopCapture +0 2f7bd Item_Slider_HandleKey +0 2f8b9 Item_HandleKey +0 2f9c9 Item_Action +0 2f9e0 Menu_SetPrevCursorItem +0 2fab6 Menu_SetNextCursorItem +0 2fb83 Window_CloseCinematic +0 2fbab Menu_CloseCinematics +0 2fbff Display_CloseCinematics +0 2fc1c Menus_Activate +0 2fc73 Display_VisibleMenuCount +0 2fc9d Menus_HandleOOBClick +0 2fd60 Item_CorrectedTextRect +0 2fd88 Menu_HandleKey +0 300a9 ToWindowCoords +0 300f1 Rect_ToWindowCoords +0 30106 Item_SetTextExtents +0 302aa Item_TextColor +0 303f0 Item_Text_AutoWrapped_Paint +0 305a0 Item_Text_Wrapped_Paint +0 306ad Item_Text_Paint +0 3079e Item_TextField_Paint +0 30914 Item_YesNo_Paint +0 30a48 Item_Multi_Paint +0 30b36 Controls_GetKeyAssignment +0 30b94 Controls_GetConfig +0 30bc6 Controls_SetConfig +0 30c1d Controls_SetDefaults +0 30c50 BindingIDFromName +0 30c7d BindingFromName +0 30d0e Item_Slider_Paint +0 30e11 Item_Bind_Paint +0 30fea Display_KeyBindPending +0 30ff0 Item_Bind_HandleKey +0 311fb Item_Model_Paint +0 3132b Item_Image_Paint +0 31372 Item_TextScroll_Paint +0 31504 Item_ListBox_Paint +0 31abb Item_OwnerDraw_Paint +0 31d81 Item_Paint +0 3236b Menu_Init +0 323a2 Menu_GetFocusedItem +0 323e1 Menu_GetFocused +0 3241c Menu_ScrollFeeder +0 3246f Menu_SetFeederSelection +0 32504 Menus_AnyFullScreenVisible +0 32538 Menus_ActivateByName +0 325c7 Item_Init +0 325e0 Menu_HandleMouseMove +0 32738 Menu_Paint +0 32893 Item_ValidateTypeData +0 32957 KeywordHash_Key +0 329bb KeywordHash_Add +0 329e1 KeywordHash_Find +0 32a1c ItemParse_name +0 32a35 ItemParse_focusSound +0 32a5d ItemParse_text +0 32a76 ItemParse_descText +0 32a8f ItemParse_text2 +0 32aa8 ItemParse_text2alignx +0 32ac1 ItemParse_text2aligny +0 32ada ItemParse_group +0 32af3 ItemParse_asset_model +0 32b33 ItemParse_asset_shader +0 32b59 ItemParse_model_origin +0 32b9f ItemParse_model_fovx +0 32bc5 ItemParse_model_fovy +0 32beb ItemParse_model_rotation +0 32c11 ItemParse_model_angle +0 32c35 ItemParse_rect +0 32c4e ItemParse_flag +0 32cb9 ItemParse_style +0 32cd7 ItemParse_decoration +0 32cea ItemParse_notselectable +0 32d0d ItemParse_wrapped +0 32d20 ItemParse_autowrapped +0 32d33 ItemParse_horizontalscroll +0 32d46 ItemParse_type +0 32d65 ItemParse_elementwidth +0 32d8b ItemParse_elementheight +0 32db1 ItemParse_feeder +0 32dca ItemParse_elementtype +0 32dfb ItemParse_columns +0 32e9e ItemParse_border +0 32eb7 ItemParse_bordersize +0 32ed0 ItemParse_visible +0 32ef8 ItemParse_ownerdraw +0 32f17 ItemParse_align +0 32f30 ItemParse_textalign +0 32f4e ItemParse_textalignx +0 32f67 ItemParse_textaligny +0 32f80 ItemParse_textscale +0 32f99 ItemParse_textstyle +0 32fb2 ItemParse_backcolor +0 32fe1 ItemParse_forecolor +0 3301e ItemParse_bordercolor +0 3304d ItemParse_outlinecolor +0 33066 ItemParse_background +0 3308c ItemParse_cinematic +0 330a5 ItemParse_doubleClick +0 330d6 ItemParse_onFocus +0 330ef ItemParse_leaveFocus +0 33108 ItemParse_mouseEnter +0 33121 ItemParse_mouseExit +0 3313a ItemParse_mouseEnterText +0 33153 ItemParse_mouseExitText +0 3316c ItemParse_action +0 33185 ItemParse_special +0 3319e ItemParse_cvarTest +0 331b7 ItemParse_cvar +0 33218 ItemParse_font +0 33237 ItemParse_maxChars +0 3326c ItemParse_maxPaintChars +0 332a1 ItemParse_maxLineChars +0 332d6 ItemParse_lineHeight +0 3330c ItemParse_cvarFloat +0 3336b ItemParse_cvarStrList +0 3342d ItemParse_cvarFloatList +0 334eb ItemParse_addColorRange +0 3354d ItemParse_ownerdrawFlag +0 33572 ItemParse_enableCvar +0 33591 ItemParse_disableCvar +0 335b0 ItemParse_showCvar +0 335cf ItemParse_hideCvar +0 335ee ItemParse_Appearance_slot +0 33607 Item_SetupKeywordHash +0 33633 Item_Parse +0 336b2 Item_TextScroll_BuildLines +0 337f1 Item_InitControls +0 3382e MenuParse_font +0 33871 MenuParse_name +0 3389e MenuParse_fullscreen +0 338bb MenuParse_rect +0 338d6 MenuParse_style +0 338f8 MenuParse_visible +0 33924 MenuParse_onOpen +0 33941 MenuParse_onClose +0 3395e MenuParse_onESC +0 3397b MenuParse_border +0 33998 MenuParse_borderSize +0 339b5 MenuParse_backcolor +0 339e8 MenuParse_descAlignment +0 33a0a MenuParse_descX +0 33a27 MenuParse_descY +0 33a44 MenuParse_descScale +0 33a61 MenuParse_descColor +0 33a94 MenuParse_forecolor +0 33ad5 MenuParse_bordercolor +0 33b08 MenuParse_focuscolor +0 33b3b MenuParse_disablecolor +0 33b6e MenuParse_outlinecolor +0 33b8b MenuParse_background +0 33bb5 MenuParse_cinematic +0 33bd2 MenuParse_ownerdrawFlag +0 33bfb MenuParse_ownerdraw +0 33c18 MenuParse_popup +0 33c2f MenuParse_outOfBounds +0 33c46 MenuParse_soundLoop +0 33c63 MenuParse_fadeClamp +0 33c80 MenuParse_fadeAmount +0 33c9d MenuParse_fadeCycle +0 33cba MenuParse_itemDef +0 33d3f MenuParse_appearanceIncrement +0 33d5c Menu_SetupKeywordHash +0 33d88 Menu_Parse +0 33e07 Menu_New +0 33e3b Menu_Count +0 33e41 Menu_PaintAll +0 33ed8 Menu_Reset +0 33ede Display_GetContext +0 33ee4 Display_CaptureItem +0 33f19 Display_MouseMove +0 33f91 Display_CursorType +0 33fdd Display_HandleKey +0 3400a Window_CacheContents +0 34043 Item_CacheContents +0 34050 Menu_CacheContents +0 3409c Display_CacheAll +0 340b9 Menu_OverActiveItem +0 3416c CG_InitTeamChat +0 3418a CG_SetPrintString +0 341aa CG_CheckOrderPending +0 3428b CG_SetSelectedPlayerName +0 342d8 CG_GetSelectedPlayer +0 342ea CG_SelectNextPlayer +0 3430c CG_SelectPrevPlayer +0 3432f CG_StatusHandle +0 3437b CG_GetValue +0 34461 CG_OtherTeamHasFlag +0 34496 CG_YourTeamHasFlag +0 344cb CG_OwnerDrawVisible +0 345e8 CG_GetKillerText +0 3460a CG_GetGameStatusText +0 34682 CG_GameTypeString +0 346bf CG_Text_Paint_Limit +0 347ab CG_DrawNewTeamInfo +0 34a16 CG_DrawTeamSpectators +0 34b61 CG_DrawMedal +0 34ca9 CG_OwnerDraw +0 34cac CG_MouseEvent +0 34d3e CG_HideTeamMenu +0 34d4b CG_ShowTeamMenu +0 34d53 CG_EventHandling +0 34d6d CG_KeyEvent +0 34dc6 CG_ClientNumFromName +0 34dfd CG_ShowResponseHead +0 34e10 CG_RunMenuScript +0 34e13 CG_DeferMenuScript +0 34e18 CG_GetTeamColor +1 4 colorTable +1 434 HolocronIcons +1 47c forceModelModificationCount +1 4e4 cvarTable +1 be4 cvarTableSize +1 c8c forceTicPos +1 ddc ammoTicPos +1 f2c commands +1 10ac menuScoreboard +1 10b0 bluehudtint +1 10c0 redhudtint +1 10d0 showPowersName +1 115c g_saberFlashTime +1 1160 g_saberFlashPos +1 1180 cgRageTime +1 1184 cgRageFadeTime +1 1188 cgRageFadeVal +1 118c cgRageRecTime +1 1190 cgRageRecFadeTime +1 1194 cgRageRecFadeVal +1 1198 cgAbsorbTime +1 119c cgAbsorbFadeTime +1 11a0 cgAbsorbFadeVal +1 11a4 cgProtectTime +1 11a8 cgProtectFadeTime +1 11ac cgProtectFadeVal +1 11b0 cgYsalTime +1 11b4 cgYsalFadeTime +1 11b8 cgYsalFadeVal +1 11bc gCGHasFallVector +1 11e0 forceHolocronModels +1 1724 shaderAnimNames +1 17a4 shaderAnimCounts +1 1824 shaderAnimSTRatio +1 18a4 cl_numparticles +1 18a8 initparticles +1 18ac roll +1 18b0 cg_customSoundNames +1 193c cgQueueLoad +1 1a28 cgAnnouncerTime +1 1a74 numValidOrders +1 1a78 cameramins +1 1a84 cameramaxs +1 1a90 cameraCurTarget +1 1a9c cameraCurLoc +1 1aa8 cameraOldLoc +1 1ab4 cameraNewLoc +1 1ac0 cameraLastFrame +1 1ac4 cameraLastYaw +1 1ac8 cameraStiffFactor +1 1b08 cgWeapFrame +1 1b0c cgWeapFrameTime +1 1c00 WHITE +1 1c18 WP_MuzzlePoint +1 1cd8 weaponData +1 2058 ammoData +1 2080 animTable +1 46a8 BGPAFtextLoaded +1 46ac gPMDoSlowFall +1 46b0 pm_stopspeed +1 46b4 pm_duckScale +1 46b8 pm_swimScale +1 46bc pm_wadeScale +1 46c0 pm_accelerate +1 46c4 pm_airaccelerate +1 46c8 pm_wateraccelerate +1 46cc pm_flyaccelerate +1 46d0 pm_friction +1 46d4 pm_waterfriction +1 46d8 pm_flightfriction +1 46dc pm_spectatorfriction +1 46e0 c_pmove +1 46e4 forceSpeedLevels +1 46f4 forcePowerNeeded +1 4814 forceJumpHeight +1 4824 forceJumpStrength +1 48c8 randSeed +1 493c forceMasteryLevels +1 495c forceMasteryPoints +1 497c bgForcePowerCost +1 4a9c forcePowerSorted +1 4ae4 forcePowerDarkLight +1 4b2c WeaponReadyAnim +1 4b6c WeaponAttackAnim +1 4bac bg_itemlist +1 5468 bg_numItems +1 54c0 eventnames +1 5698 bg_poolSize +1 569c bg_poolTail +1 56a0 saberMoveData +1 6910 transitionMove +1 6bb8 vec3_origin +1 6bc4 axisDefault +1 1a2c validOrders +1 6be8 colorBlack +1 6bf8 colorRed +1 6c08 colorGreen +1 6c18 colorBlue +1 6c28 colorYellow +1 6c38 colorMagenta +1 6c48 colorCyan +1 6c58 colorWhite +1 6c68 colorLtGrey +1 6c78 colorMdGrey +1 6c88 colorDkGrey +1 6c98 colorLtBlue +1 6ca8 colorDkBlue +1 6cb8 g_color_table +1 6d38 bytedirs +1 74f0 holdrand +1 74fc captureFunc +1 7500 captureData +1 7504 itemCapture +1 7508 DC +1 750c g_waitingForKey +1 7510 g_editingField +1 7514 g_bindItem +1 7518 g_editItem +1 751c menuCount +1 7520 openMenuCount +1 7524 debugMode +1 7528 lastListBoxClickTime +1 752c itemFlags +1 753c styles +1 7558 alignment +1 7568 types +1 75a8 strPoolIndex +1 75ac strHandleCount +1 75b8 FPMessageTime +1 75bc ui_deferredScriptItem +1 75c0 commandList +1 7680 scriptCommandCount +1 7748 g_bindings +1 8018 itemParseKeywords +1 8378 menuParseKeywords +1 852c drawTeamOverlayModificationCount +1 7fa0 g_bindCount +2 752ae8 _stackStart +2 762ae8 _stackEnd +3 8400 cg_pmove_msec +3 8510 cg_debugSaber +3 8620 cgDC +3 b440 cg_debugBB +3 b550 ui_myteam +3 b660 cg_recordSPDemoName +3 b770 cg_recordSPDemo +3 b880 cg_singlePlayerActive +3 b990 cg_enableBreath +3 baa0 cg_enableDust +3 bbb0 cg_singlePlayer +3 bcc0 cg_currentSelectedPlayerName +3 bdd0 cg_currentSelectedPlayer +3 bee0 cg_blueTeamName +3 bff0 cg_redTeamName +3 c100 cg_trueLightning +3 c210 cg_noProjectileTrail +3 c320 cg_noTaunt +3 c430 cg_bigFont +3 c540 cg_smallFont +3 c650 cg_cameraMode +3 c760 cg_timescale +3 c870 cg_timescaleFadeSpeed +3 c980 cg_timescaleFadeEnd +3 ca90 cg_cameraOrbitDelay +3 cba0 cg_cameraOrbit +3 ccb0 pmove_msec +3 cdc0 pmove_fixed +3 ced0 cg_smoothClients +3 cfe0 cg_hudFiles +3 d0f0 cg_scorePlum +3 d200 cg_noVoiceText +3 d310 cg_noVoiceChats +3 d420 cg_teamChatsOnly +3 d530 cg_drawFriend +3 d640 cg_deferPlayers +3 d750 cg_predictItems +3 d860 cg_blood +3 d970 cg_paused +3 da80 cg_buildScript +3 db90 cg_forceModel +3 dca0 cg_stats +3 ddb0 cg_teamChatHeight +3 dec0 cg_teamChatTime +3 dfd0 cg_synchronousClients +3 e0e0 cg_drawEnemyInfo +3 e1f0 cg_lagometer +3 e300 cg_stereoSeparation +3 e410 cg_thirdPersonHorzOffset +3 e520 cg_thirdPersonAlpha +3 e630 cg_thirdPersonTargetDamp +3 e740 cg_thirdPersonCameraDamp +3 e850 cg_thirdPersonVertOffset +3 e960 cg_thirdPersonPitchOffset +3 ea70 cg_thirdPersonAngle +3 eb80 cg_thirdPersonRange +3 ec90 cg_thirdPerson +3 eda0 cg_dismember +3 eeb0 cg_animBlend +3 efc0 cg_auraShell +3 f0d0 cg_speedTrail +3 f1e0 cg_saberTrail +3 f2f0 cg_saberContact +3 f400 cg_swingAngles +3 f510 cg_zoomFov +3 f620 cg_fov +3 f730 cg_simpleItems +3 f840 cg_ignore +3 f950 cg_autoswitch +3 fa60 cg_tracerLength +3 fb70 cg_tracerWidth +3 fc80 cg_tracerChance +3 fd90 cg_viewsize +3 fea0 cg_drawGun +3 ffb0 cg_gun_z +3 100c0 cg_gun_y +3 101d0 cg_gun_x +3 102e0 cg_gun_frame +3 103f0 cg_addMarks +3 10500 cg_footsteps +3 10610 cg_showmiss +3 10720 cg_noPlayerAnims +3 10830 cg_nopredict +3 10940 cg_errorDecay +3 10a50 cg_debugEvents +3 10b60 cg_debugPosition +3 10c70 cg_debugAnim +3 10d80 cg_animSpeed +3 10e90 cg_draw2D +3 10fa0 cg_drawStatus +3 110b0 cg_crosshairHealth +3 111c0 cg_crosshairSize +3 112d0 cg_crosshairY +3 113e0 cg_crosshairX +3 114f0 cg_teamOverlayUserinfo +3 11600 cg_drawTeamOverlay +3 11710 cg_drawRewards +3 11820 cg_dynamicCrosshair +3 11930 cg_drawScores +3 11a40 cg_drawCrosshairNames +3 11b50 cg_drawCrosshair +3 11c60 cg_drawAmmoWarning +3 11d70 cg_drawIcons +3 11e80 cg_draw3dIcons +3 11f90 cg_drawSnapshot +3 120a0 cg_drawFPS +3 121b0 cg_drawTimer +3 122c0 cg_gibs +3 123d0 cg_shadows +3 124e0 cg_bobroll +3 125f0 cg_bobpitch +3 12700 cg_bobup +3 12810 cg_runroll +3 12920 cg_runpitch +3 12a30 cg_centertime +3 12b40 cg_items +3 16340 cg_weapons +3 17040 cg_entities +3 1f7040 cg +3 220948 cgs +3 232190 gCGFallVector +3 23219c lagometer +3 2327a4 lastvalidlockdif +3 2327a8 hudTintColor +3 2327ac teamChat2 +3 2328ac teamChat1 +3 2329ac systemChat +3 232aac numSortedTeamPlayers +3 232ab0 sortedTeamPlayers +3 232b4c offZ +3 23318c offX +3 23380c lastofs +3 233810 cl_lightstyle +3 237a10 cg_freeLocalEntities +3 237a14 cg_activeLocalEntities +3 237be0 cg_localEntities +3 2713e0 oldtime +3 2713e4 rup +3 2713f0 rright +3 2713fc rforward +3 271408 pvup +3 271414 pvright +3 271420 pvforward +3 27142c particles +3 29042c free_particles +3 290430 active_particles +3 290434 numShaderAnims +3 290438 shaderAnims +3 292438 markTotal +3 29243c cg_freeMarkPolys +3 292440 cg_activeMarkPolys +3 292560 cg_markPolys +3 2a4560 cgBoneAnglePostSet +3 2a4598 cgSendPS +3 2af098 cg_triggerEntities +3 2af498 cg_numTriggerEntities +3 2af49c cg_solidEntities +3 2af89c cg_numSolidEntities +3 2af8a0 cg_pmove +3 2afa18 cg_saga_valid +3 2afa1c cg_saga_info +3 2b1a1c localClient +3 2b1a20 voiceChatBuffer +3 2b4120 voiceChatLists +3 4dcb60 zoomFov +3 4dcb64 cameraIdealLoc +3 4dcb70 cameraIdealTarget +3 4dcb7c cameraFocusLoc +3 4dcb88 cameraFocusAngles +3 4dcb94 cameraup +3 4dcba0 camerafwd +3 4dcbac cgScreenEffects +3 4dcbcc g2WeaponInstances +3 4dcc0c BGPAFtext +3 4e684c bgGlobalAnimations +3 4edf84 pml +3 4ee410 pm +3 4ee414 bg_pool +3 6f7e2c com_lines +3 6f7e30 com_parsename +3 6f8230 com_token +3 6fa640 menuParseKeywordHash +3 6fae40 itemParseKeywordHash +3 6fb640 g_nameBind2 +3 6fb660 g_nameBind1 +3 6fb680 ui_deferredScript +3 6fbe80 strHandle +3 6fde80 strPool +3 71de80 outOfMemory +3 71de84 allocPoint +3 71de88 memoryPool +3 73de88 menuStack +3 73dec8 Menus +3 752ac8 scrollInfo diff --git a/CODE-mp/base/vm/jk2mpgame.map b/CODE-mp/base/vm/jk2mpgame.map new file mode 100644 index 0000000..28b48ba --- /dev/null +++ b/CODE-mp/base/vm/jk2mpgame.map @@ -0,0 +1,1602 @@ +0 fffffda8 trap_G2API_CleanGhoul2Models +0 fffffda9 trap_G2API_RemoveGhoul2Model +0 fffffdaa trap_G2API_HasGhoul2ModelOnIndex +0 fffffdab trap_G2API_DuplicateGhoul2Instance +0 fffffdac trap_G2API_CopySpecificGhoul2Model +0 fffffdad trap_G2API_CopyGhoul2Instance +0 fffffdae trap_G2API_GetGLAName +0 fffffdaf trap_G2API_SetBoneAnim +0 fffffdb0 trap_G2API_SetBoneAngles +0 fffffdb1 trap_G2API_SetBoltInfo +0 fffffdb2 trap_G2API_AddBolt +0 fffffdb3 trap_G2API_InitGhoul2Model +0 fffffdb4 trap_G2API_GetBoltMatrix_NoReconstruct +0 fffffdb5 trap_G2API_GetBoltMatrix +0 fffffdb6 trap_G2_SetGhoul2ModelIndexes +0 fffffdb7 trap_G2_HaveWeGhoul2Models +0 fffffdb8 trap_G2_ListModelSurfaces +0 fffffdb9 trap_G2_ListModelBones +0 fffffdba trap_PC_SourceFileAndLine +0 fffffdbb trap_PC_ReadToken +0 fffffdbc trap_PC_FreeSource +0 fffffdbd trap_PC_LoadSource +0 fffffdbe trap_AAS_PointReachabilityAreaIndex +0 fffffdbf trap_AAS_PredictRoute +0 fffffdc0 trap_AAS_AlternativeRouteGoals +0 fffffdc1 trap_BotAddAvoidSpot +0 fffffdc2 trap_BotSetAvoidGoalTime +0 fffffdc3 trap_BotPredictVisiblePosition +0 fffffdc4 trap_BotRemoveFromAvoidGoals +0 fffffdc5 trap_BotGetChatMessage +0 fffffdc6 trap_BotNumInitialChats +0 fffffdc7 trap_BotGetMapLocationGoal +0 fffffdc8 trap_BotGetNextCampSpotGoal +0 fffffdc9 trap_BotMutateGoalFuzzyLogic +0 fffffdca trap_BotInterbreedGoalFuzzyLogic +0 fffffdcb trap_GeneticParentsAndChildSelection +0 fffffdcc trap_BotResetWeaponState +0 fffffdcd trap_BotFreeWeaponState +0 fffffdce trap_BotAllocWeaponState +0 fffffdcf trap_BotLoadWeaponWeights +0 fffffdd0 trap_BotGetWeaponInfo +0 fffffdd1 trap_BotChooseBestFightWeapon +0 fffffdd2 trap_BotInitMoveState +0 fffffdd3 trap_BotFreeMoveState +0 fffffdd4 trap_BotAllocMoveState +0 fffffdd5 trap_BotMovementViewTarget +0 fffffdd6 trap_BotReachabilityArea +0 fffffdd7 trap_BotResetLastAvoidReach +0 fffffdd8 trap_BotResetAvoidReach +0 fffffdd9 trap_BotMoveInDirection +0 fffffdda trap_BotMoveToGoal +0 fffffddb trap_BotResetMoveState +0 fffffddc trap_BotFreeGoalState +0 fffffddd trap_BotAllocGoalState +0 fffffdde trap_BotSaveGoalFuzzyLogic +0 fffffddf trap_BotFreeItemWeights +0 fffffde0 trap_BotLoadItemWeights +0 fffffde1 trap_BotUpdateEntityItems +0 fffffde2 trap_BotInitLevelItems +0 fffffde3 trap_BotAvoidGoalTime +0 fffffde4 trap_BotGetLevelItemGoal +0 fffffde5 trap_BotItemGoalInVisButNotVisible +0 fffffde6 trap_BotTouchingGoal +0 fffffde7 trap_BotChooseNBGItem +0 fffffde8 trap_BotChooseLTGItem +0 fffffde9 trap_BotGetSecondGoal +0 fffffdea trap_BotGetTopGoal +0 fffffdeb trap_BotGoalName +0 fffffdec trap_BotDumpGoalStack +0 fffffded trap_BotDumpAvoidGoals +0 fffffdee trap_BotEmptyGoalStack +0 fffffdef trap_BotPopGoal +0 fffffdf0 trap_BotPushGoal +0 fffffdf1 trap_BotResetAvoidGoals +0 fffffdf2 trap_BotResetGoalState +0 fffffdf3 trap_BotSetChatName +0 fffffdf4 trap_BotSetChatGender +0 fffffdf5 trap_BotLoadChatFile +0 fffffdf6 trap_BotReplaceSynonyms +0 fffffdf7 trap_UnifyWhiteSpaces +0 fffffdf8 trap_BotMatchVariable +0 fffffdf9 trap_BotFindMatch +0 fffffdfa trap_StringContains +0 fffffdfb trap_BotEnterChat +0 fffffdfc trap_BotChatLength +0 fffffdfd trap_BotReplyChat +0 fffffdfe trap_BotInitialChat +0 fffffdff trap_BotNumConsoleMessages +0 fffffe00 trap_BotNextConsoleMessage +0 fffffe01 trap_BotRemoveConsoleMessage +0 fffffe02 trap_BotQueueConsoleMessage +0 fffffe03 trap_BotFreeChatState +0 fffffe04 trap_BotAllocChatState +0 fffffe05 trap_Characteristic_String +0 fffffe06 trap_Characteristic_BInteger +0 fffffe07 trap_Characteristic_Integer +0 fffffe08 trap_Characteristic_BFloat +0 fffffe09 trap_Characteristic_Float +0 fffffe0a trap_BotFreeCharacter +0 fffffe0b trap_BotLoadCharacter +0 fffffe56 trap_EA_ResetInput +0 fffffe57 trap_EA_GetInput +0 fffffe58 trap_EA_EndRegular +0 fffffe59 trap_EA_View +0 fffffe5a trap_EA_Move +0 fffffe5b trap_EA_DelayedJump +0 fffffe5c trap_EA_Jump +0 fffffe5d trap_EA_SelectWeapon +0 fffffe5e trap_EA_MoveRight +0 fffffe5f trap_EA_MoveLeft +0 fffffe60 trap_EA_MoveBack +0 fffffe61 trap_EA_MoveForward +0 fffffe62 trap_EA_MoveDown +0 fffffe63 trap_EA_MoveUp +0 fffffe64 trap_EA_Crouch +0 fffffe65 trap_EA_Respawn +0 fffffe66 trap_EA_Use +0 fffffe67 trap_EA_ForcePower +0 fffffe68 trap_EA_Alt_Attack +0 fffffe69 trap_EA_Attack +0 fffffe6a trap_EA_Talk +0 fffffe6b trap_EA_Gesture +0 fffffe6c trap_EA_Action +0 fffffe6d trap_EA_Command +0 fffffe6e trap_EA_SayTeam +0 fffffe6f trap_EA_Say +0 fffffec1 trap_AAS_PredictClientMovement +0 fffffec2 trap_AAS_Swimming +0 fffffec3 trap_AAS_AreaTravelTimeToGoalArea +0 fffffec4 trap_AAS_AreaReachability +0 fffffec5 trap_AAS_IntForBSPEpairKey +0 fffffec6 trap_AAS_FloatForBSPEpairKey +0 fffffec7 trap_AAS_VectorForBSPEpairKey +0 fffffec8 trap_AAS_ValueForBSPEpairKey +0 fffffec9 trap_AAS_NextBSPEntity +0 fffffeca trap_AAS_PointContents +0 fffffecb trap_AAS_TraceAreas +0 fffffecc trap_AAS_PointAreaNum +0 fffffecd trap_AAS_Time +0 fffffece trap_AAS_PresenceTypeBoundingBox +0 fffffecf trap_AAS_Initialized +0 fffffed0 trap_AAS_EntityInfo +0 fffffed1 trap_AAS_AreaInfo +0 fffffed2 trap_AAS_BBoxAreas +0 fffffed3 trap_AAS_EnableRoutingArea +0 ffffff2c trap_BotUserCommand +0 ffffff2d trap_BotGetServerCommand +0 ffffff2e trap_BotGetSnapshotEntity +0 ffffff2f trap_BotLibTest +0 ffffff30 trap_BotLibUpdateEntity +0 ffffff31 trap_BotLibLoadMap +0 ffffff32 trap_BotLibStartFrame +0 ffffff33 trap_BotLibDefine +0 ffffff34 trap_BotLibVarGet +0 ffffff35 trap_BotLibVarSet +0 ffffff36 trap_BotLibShutdown +0 ffffff37 trap_BotLibSetup +0 ffffff8c asin +0 ffffff8d acos +0 ffffff90 ceil +0 ffffff91 floor +0 ffffff92 perpendicularvector +0 ffffff93 anglevectors +0 ffffff94 matrixmultiply +0 ffffff95 sqrt +0 ffffff96 atan2 +0 ffffff97 cos +0 ffffff98 sin +0 ffffff99 strncpy +0 ffffff9a memcpy +0 ffffff9b memset +0 ffffffcc trap_ROFF_Purge_Ent +0 ffffffcd trap_ROFF_Play +0 ffffffce trap_ROFF_Cache +0 ffffffcf trap_ROFF_UpdateEntities +0 ffffffd0 trap_ROFF_Clean +0 ffffffd1 trap_SP_GetStringTextString +0 ffffffd2 trap_SP_RegisterServer +0 ffffffd3 trap_EntityContactCapsule +0 ffffffd4 trap_TraceCapsule +0 ffffffd5 trap_SnapVector +0 ffffffd6 trap_RealTime +0 ffffffd7 trap_DebugPolygonDelete +0 ffffffd8 trap_DebugPolygonCreate +0 ffffffd9 trap_FS_GetFileList +0 ffffffda trap_GetEntityToken +0 ffffffdb trap_GetUsercmd +0 ffffffdc trap_BotFreeClient +0 ffffffdd trap_BotAllocateClient +0 ffffffde trap_EntityContact +0 ffffffdf trap_EntitiesInBox +0 ffffffe0 trap_UnlinkEntity +0 ffffffe1 trap_LinkEntity +0 ffffffe2 trap_AreasConnected +0 ffffffe3 trap_AdjustAreaPortalState +0 ffffffe4 trap_InPVSIgnorePortals +0 ffffffe5 trap_InPVS +0 ffffffe6 trap_PointContents +0 ffffffe7 trap_Trace +0 ffffffe8 trap_SetBrushModel +0 ffffffe9 trap_GetServerinfo +0 ffffffea trap_SetUserinfo +0 ffffffeb trap_GetUserinfo +0 ffffffec trap_GetConfigstring +0 ffffffed trap_SetConfigstring +0 ffffffee trap_SendServerCommand +0 ffffffef trap_DropClient +0 fffffff0 trap_LocateGameData +0 fffffff1 trap_SendConsoleCommand +0 fffffff2 trap_FS_FCloseFile +0 fffffff3 trap_FS_Write +0 fffffff4 trap_FS_Read +0 fffffff5 trap_FS_FOpenFile +0 fffffff6 trap_Argv +0 fffffff7 trap_Argc +0 fffffff8 trap_Cvar_VariableStringBuffer +0 fffffff9 trap_Cvar_VariableIntegerValue +0 fffffffa trap_Cvar_Set +0 fffffffb trap_Cvar_Update +0 fffffffc trap_Cvar_Register +0 fffffffd trap_Milliseconds +0 fffffffe trap_Error +0 ffffffff trap_Printf +0 0 vmMain +0 a5 G_Printf +0 be G_Error +0 d7 G_FindTeams +0 1db G_RemapTeamShaders +0 1de G_RegisterCvars +0 252 G_UpdateCvars +0 2c6 G_InitGame +0 42d G_ShutdownGame +0 465 Com_Error +0 480 Com_Printf +0 49b AddTournamentPlayer +0 514 RemoveTournamentLoser +0 53b RemoveTournamentWinner +0 562 AdjustTournamentScores +0 5c8 SortRanks +0 69d CalculateRanks +0 94d SendScoreboardMessageToAllClients +0 976 MoveClientToIntermission +0 9e6 FindIntermissionPoint +0 a54 BeginIntermission +0 ac7 DuelLimitHit +0 afe DuelResetWinsLosses +0 b2f ExitLevel +0 bbc G_LogPrintf +0 c28 LogExit +0 d11 CheckIntermissionExit +0 e86 ScoreIsTied +0 ecf CheckExitRules +0 103a CheckTournament +0 115d CheckVote +0 1241 PrintTeam +0 126c SetLeader +0 132f CheckTeamLeader +0 13c7 CheckTeamVote +0 14c0 CheckCvars +0 14ed G_RunThink +0 1526 G_RunFrame +0 170d G_GetStripEdString +0 171e BotStraightTPOrderCheck +0 1788 BotSelectWeapon +0 179a BotReportStatus +0 17f9 BotOrder +0 1994 BotMindTricked +0 1a0b BotAI_Print +0 1a0e IsTeamplay +0 1a1b BotAI_GetClientState +0 1a4c BotAI_GetEntityState +0 1a91 BotAI_GetSnapshotEntity +0 1ac2 BotEntityInfo +0 1ace NumBots +0 1ad4 AngleDifference +0 1afc BotChangeViewAngle +0 1b68 BotChangeViewAngles +0 1d07 BotInputToUserCommand +0 1fb3 BotUpdateInput +0 2076 BotAIRegularUpdate +0 2087 RemoveColorEscapeSequences +0 20fb BotAI +0 224c BotScheduleBotThink +0 228a PlayersInGame +0 22cb BotAISetupClient +0 23eb BotAIShutdownClient +0 243a BotResetState +0 2525 BotAILoadMap +0 255f OrgVisible +0 2585 WPOrgVisible +0 261a OrgVisibleBox +0 264a CheckForFunc +0 269d GetNearestVisibleWP +0 2763 PassWayCheck +0 27fd TotalTrailDistance +0 28d6 CheckForShorterRoutes +0 2a28 WPConstantRoutine +0 2b82 BotCTFGuardDuty +0 2b9e WPTouchRoutine +0 2d65 MoveTowardIdealAngles +0 2d75 BotTrace_Strafe +0 2f13 BotTrace_Jump +0 304c BotTrace_Duck +0 3130 PassStandardEnemyChecks +0 3305 BotDamageNotification +0 3406 BotCanHear +0 3504 UpdateEventTracker +0 3567 InFieldOfVision +0 35e9 PassLovedOneCheck +0 36b9 ScanForEnemies +0 38cb WaitingForNow +0 39a1 BotGetWeaponRange +0 39f1 BotIsAChickenWuss +0 3aeb GetNearestBadThing +0 3d9a BotDefendFlag +0 3e0f BotGetEnemyFlag +0 3e84 BotGetFlagBack +0 3f7c BotGuardFlagCarrier +0 4074 BotGetFlagHome +0 40e9 GetNewFlagPoint +0 4200 CTFTakesPriority +0 450b EntityVisibleBox +0 4548 Saga_TargetClosestObjective +0 476c Saga_DefendFromAttackers +0 4862 Saga_CountDefenders +0 48c8 Saga_CountTeammates +0 4919 SagaTakesPriority +0 4c31 JMTakesPriority +0 4d18 BotHasAssociated +0 4dd7 GetBestIdleGoal +0 4ec2 GetIdealDestination +0 5481 CommanderBotCTFAI +0 5757 CommanderBotSagaAI +0 5882 BotDoTeamplayAI +0 58ad CommanderBotTeamplayAI +0 5a54 CommanderBotAI +0 5a7d MeleeCombatHandling +0 5bdb SaberCombatHandling +0 5f8b BotWeaponCanLead +0 5fcf BotAimLeading +0 6126 BotAimOffsetGoalAngles +0 6328 ShouldSecondaryFire +0 6430 CombatBotAI +0 6612 BotFallbackNavigation +0 66b5 BotTryAnotherWeapon +0 6735 BotWeaponSelectable +0 676b BotSelectIdealWeapon +0 6909 BotSelectChoiceWeapon +0 6997 BotSelectMelee +0 69c8 GetLoveLevel +0 6a5d BotLovedOneDied +0 6baa BotDeathNotify +0 6c30 StrafeTracing +0 6d16 PrimFiring +0 6d47 KeepPrimFromFiring +0 6d7c AltFiring +0 6dad KeepAltFromFiring +0 6de2 CheckForFriendInLOF +0 6ea9 BotScanForLeader +0 6f39 BotReplyGreetings +0 6fa8 CTFFlagMovement +0 718a BotCheckDetPacks +0 72d0 BotUseInventoryItem +0 73aa BotSurfaceNear +0 740f BotWeaponBlockable +0 7444 StandardBotAI +0 930f BotAIStartFrame +0 940d BotAISetup +0 9497 BotAIShutdown +0 94d5 B_TempAlloc +0 94e2 B_TempFree +0 94eb B_Alloc +0 94f8 B_Free +0 94fb B_InitAlloc +0 9507 B_CleanupAlloc +0 950a GetValueGroup +0 9605 GetPairedValue +0 97ab BotDoChat +0 9a78 ParseEmotionalAttachments +0 9bbb ReadChatGroups +0 9c4b BotUtilizePersonality +0 a0ef GetFlagStr +0 a3ea G_TestLine +0 a424 BotWaypointRender +0 a652 TransferWPData +0 a776 CreateNewWP +0 a814 CreateNewWP_FromObject +0 a97f RemoveWP +0 a9d5 RemoveWP_InTrail +0 aaba CreateNewWP_InTrail +0 ac09 TeleportToWP +0 ac8f WPFlagsModify +0 acce NotWithinRange +0 ad03 NodeHere +0 ad95 CanGetToVector +0 adc4 CanGetToVectorTravel +0 aee8 ConnectTrail +0 b4f9 OpposingEnds +0 b577 DoorBlockingSection +0 b65a RepairPaths +0 b78c OrgVisibleCurve +0 b7ec CanForceJumpTo +0 b8d7 CalculatePaths +0 bb51 GetObjectThatTargets +0 bb80 CalculateSagaGoals +0 bcad GetNearestVisibleWPToItem +0 bd99 CalculateWeightGoals +0 bf69 CalculateJumpRoutes +0 c08d LoadPathData +0 c434 FlagObjects +0 c660 SavePathData +0 c9a1 LoadPath_ThisLevel +0 ca3c GetClosestSpawn +0 cada GetNextSpawnInIndex +0 cb7e AcceptBotCommand +0 cff1 swapfunc +0 d078 med3 +0 d0fb qsort +0 d4b4 strlen +0 d4cf strcat +0 d512 strcpy +0 d547 strcmp +0 d580 strchr +0 d59f strstr +0 d5e5 tolower +0 d5fd toupper +0 d615 memmove +0 d65c tan +0 d673 srand +0 d67a rand +0 d68f atof +0 d754 _atof +0 d81f atoi +0 d897 _atoi +0 d919 abs +0 d92e fabs +0 d943 AddInt +0 da1e AddFloat +0 db2c AddString +0 dbc3 vsprintf +0 dd5b sscanf +0 ddc6 BG_LegalizedForcePowers +0 e193 vectoyaw +0 e1ed BG_HasYsalamiri +0 e21c BG_CanUseFPNow +0 e283 BG_FindItemForPowerup +0 e2bf BG_FindItemForHoldable +0 e2f9 BG_FindItemForWeapon +0 e32c BG_FindItem +0 e355 BG_PlayerTouchesItem +0 e3b5 BG_ProperForceIndex +0 e3d8 BG_CycleForce +0 e4b0 BG_GetItemIndexByTag +0 e4e0 BG_CycleInven +0 e54c BG_CanItemBeGrabbed +0 e749 BG_EvaluateTrajectory +0 e917 BG_EvaluateTrajectoryDelta +0 ea11 BG_AddPredictableEventToPlayerstate +0 ea4c BG_TouchJumpPad +0 eab0 BG_PlayerStateToEntityState +0 edbb BG_PlayerStateToEntityStateExtraPolate +0 f0d3 BG_SwingAngles +0 f1d8 BG_AddPainTwitch +0 f219 BG_G2PlayerAngles +0 f3b6 BG_Alloc +0 f3f6 BG_AllocUnaligned +0 f429 BG_TempAlloc +0 f461 BG_TempFree +0 f48e BG_StringAlloc +0 f4b1 BG_OutOfMemory +0 f4c3 PM_GetSaberStance +0 f4e0 PM_DoSlowFall +0 f503 PM_AddEvent +0 f512 PM_AddEventWithParm +0 f522 PM_AddTouchEnt +0 f577 PM_ClipVelocity +0 f5f0 PM_Friction +0 f6ec PM_Accelerate +0 f768 PM_CmdScale +0 f7ff PM_SetMovementDir +0 f94b PM_ForceJumpingUp +0 fa0a PM_JumpForDir +0 faad PM_SetPMViewAngle +0 faee PM_AdjustAngleForWallRun +0 fcf2 PM_CheckJump +0 10a8e PM_CheckWaterJump +0 10b75 PM_WaterJumpMove +0 10bb6 PM_WaterMove +0 10ce7 PM_FlyMove +0 10d72 PM_AirMove +0 10e35 PM_WalkMove +0 110d7 PM_DeadMove +0 11150 PM_NoclipMove +0 112c2 PM_FootstepForSurface +0 112db PM_TryRoll +0 114ec PM_CrashLand +0 117fd PM_CorrectAllSolid +0 118e4 PM_GroundTraceMissed +0 11a4f PM_GroundTrace +0 11be2 PM_SetWaterLevel +0 11caf PM_CheckDuck +0 11e85 PM_Use +0 11ece PM_RunningAnim +0 11efc PM_Footsteps +0 12173 PM_WaterEvents +0 121ca PM_BeginWeaponChange +0 12230 PM_FinishWeaponChange +0 12283 PM_DoChargedWeapons +0 1275d PM_ItemUsable +0 12988 PM_Weapon +0 132b5 PM_Animate +0 13313 PM_DropTimers +0 1339d PM_UpdateViewAngles +0 13441 PM_AdjustAttackStates +0 137b9 BG_CmdForRoll +0 1380e BG_AdjustClientSpeed +0 13bc1 PmoveSingle +0 14037 Pmove +0 140e3 BG_InSpecialJump +0 14108 BG_InSaberStandAnim +0 1412e BG_DirectFlippingAnim +0 1414d BG_SaberInAttack +0 1417a BG_SaberInSpecial +0 14197 BG_SaberInIdle +0 141b4 BG_FlippingAnim +0 141fc BG_SpinningSaberAnim +0 14314 BG_SaberInSpecialAttack +0 1433d BG_InRoll +0 14363 BG_InDeathAnim +0 14388 PM_SaberInParry +0 1439d PM_SaberInReflect +0 143b2 PM_SaberInStart +0 143c7 PM_InSaberAnim +0 143de PM_InKnockDown +0 1440b PM_PainAnim +0 1442a PM_JumpingAnim +0 14449 PM_LandingAnim +0 14490 PM_SpinningAnim +0 1449d PM_InOnGroundAnim +0 144fa PM_InRollComplete +0 14520 PM_AnimLength +0 1454d PM_DebugLegsAnim +0 14598 BG_ParseAnimationFile +0 14710 PM_StartLegsAnim +0 14795 PM_ContinueLegsAnim +0 147b5 PM_ForceLegsAnim +0 14825 PM_StartTorsoAnim +0 14880 PM_SetLegsAnimTimer +0 1489e PM_SetTorsoAnimTimer +0 148bc BG_SaberStartTransAnim +0 1490b PM_SetAnimFinal +0 14b47 PM_SetAnim +0 14bc0 PM_SlideMove +0 14fb0 PM_StepSlideMove +0 152ff PM_irand_timesync +0 15334 BG_ForcePowerDrain +0 153f2 PM_AttackMoveForQuad +0 15427 PM_SaberAnimTransitionAnim +0 1550c PM_SaberMoveQuadrantForMovement +0 15571 PM_SaberInBounce +0 15596 PM_SaberInTransition +0 155ab PM_SaberKataDone +0 155f1 PM_SetAnimFrame +0 155fb PM_SaberLockBreak +0 158c4 PM_SaberLocked +0 15ae8 PM_SaberInBrokenParry +0 15afd PM_BrokenParryForParry +0 15b3f PM_CanBackstab +0 15bc0 PM_SaberFlipOverAttackMove +0 15cc1 PM_SomeoneInFront +0 15d51 PM_SaberLungeAttackMove +0 15d9b PM_SaberJumpAttackMove +0 15e08 PM_GroundDistance +0 15e71 PM_SaberAttackForMovement +0 15fc5 PM_WeaponLightsaber +0 167cd PM_SetSaberMove +0 1699a P_SetTwitchInfo +0 169b2 P_DamageFeedback +0 16abc P_WorldEffects +0 16c63 DoImpact +0 16edd G_SetClientSound +0 16f0e ClientImpacts +0 16fb1 G_TouchTriggers +0 17193 G_MoverTouchPushTriggers +0 17343 SpectatorThink +0 173ea ClientInactivityTimer +0 1748c ClientTimerActions +0 174ee ClientIntermissionThink +0 17549 ClientEvents +0 176e1 SendPendingPredictableEvents +0 17788 G_UpdateForceSightBroadcasts +0 17868 G_UpdateJediMasterBroadcasts +0 1794a G_UpdateClientBroadcasts +0 17965 ClientThink_real +0 18611 G_CheckClientTimeouts +0 1863e ClientThink +0 18679 G_RunClient +0 186a0 SpectatorClientEndFrame +0 18777 ClientEndFrame +0 1884f UpdateTournamentInfo +0 18a34 trap_Cvar_VariableValue +0 18a4a G_ParseInfos +0 18b38 G_LoadArenasFromFile +0 18bb8 G_GetMapTypeBits +0 18c5a G_DoesMapSupportGametype +0 18ced G_RefreshNextMap +0 18dfa G_LoadArenas +0 18eac G_GetArenaInfoByMap +0 18ee7 PlayerIntroSound +0 18f38 G_AddRandomBot +0 190a5 G_RemoveRandomBot +0 19111 G_CountHumanPlayers +0 19164 G_CountBotPlayers +0 191e1 G_CheckMinimumPlayers +0 1935e G_CheckBotSpawn +0 193be AddBotToSpawnQueue +0 193fb G_RemoveQueuedBotBegin +0 1941f G_BotConnect +0 19481 G_AddBot +0 1979a Svcmd_AddBot_f +0 19831 Svcmd_BotList_f +0 198e5 G_SpawnBots +0 19997 G_LoadBotsFromFile +0 19a17 G_LoadBots +0 19aa4 G_GetBotInfoByNumber +0 19acf G_GetBotInfoByName +0 19b0e G_InitBots +0 19c00 SP_info_player_deathmatch +0 19c39 SP_info_player_start +0 19c48 SP_info_player_imperial +0 19c5b SP_info_player_rebel +0 19c6e SP_info_player_intermission +0 19c71 ThrowSaberToAttacker +0 19e38 JMSaberThink +0 19f33 JMSaberTouch +0 1a0b3 SP_info_jedimaster_start +0 1a16d SpotWouldTelefrag +0 1a1ee SelectNearestDeathmatchSpawnPoint +0 1a252 SelectRandomDeathmatchSpawnPoint +0 1a2b2 SelectRandomFurthestSpawnPoint +0 1a422 SelectSpawnPoint +0 1a435 SelectInitialSpawnPoint +0 1a49a SelectSpectatorSpawnPoint +0 1a4aa InitBodyQue +0 1a4da BodySink +0 1a50c CopyToBodyQue +0 1a6f8 SetClientViewAngle +0 1a750 respawn +0 1a786 TeamCount +0 1a7c7 TeamLeader +0 1a808 PickTeam +0 1a842 ClientCleanName +0 1a937 SetupGameGhoul2Model +0 1aae6 ClientUserinfoChanged +0 1adc2 ClientConnect +0 1af17 ClientBegin +0 1b1dc ClientSpawn +0 1b6ec ClientDisconnect +0 1b879 DeathmatchScoreboardMessage +0 1b9b2 Cmd_Score_f +0 1b9bb CheatsOk +0 1ba0f ConcatArgs +0 1ba7a SanitizeString +0 1bacc ClientNumberFromString +0 1bb98 Cmd_Give_f +0 1be44 Cmd_God_f +0 1be89 Cmd_Notarget_f +0 1bece Cmd_Noclip_f +0 1bf21 Cmd_LevelShot_f +0 1bf52 Cmd_TeamTask_f +0 1bfa9 Cmd_Kill_f +0 1c027 G_GetDuelWinner +0 1c06c BroadcastTeamChange +0 1c142 SetTeam +0 1c3bb StopFollowing +0 1c413 Cmd_Team_f +0 1c523 Cmd_ForceChanged_f +0 1c58b Cmd_Follow_f +0 1c625 Cmd_FollowCycle_f +0 1c6ca G_SayTo +0 1c75b G_Say +0 1c8bd Cmd_Say_f +0 1c8f6 Cmd_Tell_f +0 1c9a0 G_VoiceTo +0 1ca16 G_Voice +0 1ca7a Cmd_Voice_f +0 1cab6 Cmd_VoiceTell_f +0 1cb66 Cmd_VoiceTaunt_f +0 1cd25 Cmd_GameCommand_f +0 1cd9a Cmd_Where_f +0 1cdbc Cmd_CallVote_f +0 1d103 Cmd_Vote_f +0 1d201 Cmd_CallTeamVote_f +0 1d56f Cmd_TeamVote_f +0 1d6a6 Cmd_SetViewpos_f +0 1d73e Cmd_Stats_f +0 1d741 G_ItemUsable +0 1d976 Cmd_ToggleSaber_f +0 1da1a Cmd_SaberAttackCycle_f +0 1da8a G_OtherPlayersDueling +0 1dad1 Cmd_EngageDuel_f +0 1dddf ClientCommand +0 1e31c ObjectDie +0 1e335 G_GetHitLocation +0 1e58b ExplodeDeath +0 1e61d ScorePlum +0 1e652 AddScore +0 1e694 TossClientWeapon +0 1e830 TossClientItems +0 1e938 LookAtKiller +0 1ea0a GibEntity +0 1ea2a BodyRid +0 1ea39 body_die +0 1eae2 CheckAlmostCapture +0 1eae5 G_PickDeathAnim +0 1ed63 G_GetJediMaster +0 1edab player_die +0 1f4b3 CheckArmor +0 1f537 G_ApplyKnockback +0 1f6ce RaySphereIntersections +0 1f878 LimbTouch +0 1f87b LimbThink +0 1f8f1 G_GetDismemberBolt +0 1fa5a G_Dismember +0 1fc51 G_GetHitQuad +0 1fd15 G_CheckForDismemberment +0 1fda7 G_ThereIsAMaster +0 1fde2 G_Damage +0 20722 CanDamage +0 2084d G_RadiusDamage +0 209ca adjustRespawnTime +0 20a2b ShieldRemove +0 20a4e ShieldThink +0 20a7b ShieldDie +0 20a8f ShieldPain +0 20ab2 ShieldGoSolid +0 20b53 ShieldGoNotSolid +0 20b96 ShieldTouch +0 20bf2 CreateShield +0 20e5d PlaceShield +0 21028 ItemUse_Binoculars +0 2109d ItemUse_Shield +0 210a6 SentryTouch +0 210a9 pas_fire +0 21125 G_SetEnemy +0 21138 pas_find_enemies +0 212d5 pas_adjust_enemy +0 213a4 sentryExpire +0 213bb pas_think +0 217b0 turret_die +0 21858 SP_PAS +0 218e3 ItemUse_Sentry +0 21aaa ItemUse_Seeker +0 21ad8 ItemUse_MedPack +0 21b60 Pickup_Powerup +0 21ce8 Pickup_Holdable +0 21d42 Add_Ammo +0 21d98 Pickup_Ammo +0 21de3 Pickup_Weapon +0 21ee0 Pickup_Health +0 21f80 Pickup_Armor +0 21fec RespawnItem +0 220cd Touch_Item +0 22454 LaunchItem +0 225bd Drop_Item +0 22620 Use_Item +0 22629 FinishSpawningItem +0 228cf G_CheckTeamItems +0 22925 ClearRegisteredItems +0 22955 RegisterItem +0 2296d SaveRegisteredItems +0 229b5 G_ItemDisabled +0 229ce G_SpawnItem +0 22a30 G_BounceItem +0 22c25 G_RunItem +0 22cf3 G_LogWeaponInit +0 22d50 G_LogWeaponPickup +0 22d70 G_LogWeaponFire +0 22dd6 G_LogWeaponDamage +0 22dfd G_LogWeaponKill +0 22e23 G_LogWeaponFrag +0 22e52 G_LogWeaponDeath +0 22e78 G_LogWeaponPowerup +0 22e9e G_LogWeaponItem +0 22ec4 G_LogWeaponOutput +0 23d5c CalculateEfficiency +0 23dea CalculateSharpshooter +0 23e74 CalculateUntouchable +0 23ebf CalculateLogistics +0 23f98 CalculateTactician +0 2410e CalculateDemolitionist +0 241ed CalculateStreak +0 241f2 CalculateTeamMVP +0 24268 CalculateTeamMVPByRank +0 242f6 CalculateTeamDefender +0 2436c CalculateTeamWarrior +0 243e2 CalculateTeamCarrier +0 24458 CalculateTeamInterceptor +0 244db CalculateTeamRedShirt +0 2455e CalculateTeamAward +0 245d9 CalculateSection31Award +0 24635 CalculateAwards +0 247d6 GetMaxDeathsForClient +0 2481c GetMaxKillsForClient +0 24862 GetFavoriteTargetForClient +0 248af GetWorstEnemyForClient +0 24912 GetFavoriteWeaponForClient +0 2499a G_ClearClientLog +0 24ab4 G_Alloc +0 24aff G_InitMemory +0 24b05 Svcmd_GameMem_f +0 24b12 SP_info_camp +0 24b24 SP_info_null +0 24b2d SP_info_notnull +0 24b3f SP_light +0 24b48 TeleportPlayer +0 24c73 SP_misc_teleporter_dest +0 24c76 SP_misc_model +0 24c7f SP_misc_G2model +0 24c88 locateCamera +0 24d67 SP_misc_portal_surface +0 24dd9 SP_misc_portal_camera +0 24e2f HolocronRespawn +0 24e42 HolocronPopOut +0 24ebb HolocronTouch +0 2502f HolocronThink +0 252dc SP_misc_holocron +0 25486 Use_Shooter +0 25580 InitShooter_Finish +0 255a4 InitShooter +0 25612 SP_shooter_blaster +0 2561d check_recharge +0 2565c EnergyShieldStationSettings +0 25691 shield_power_converter_use +0 25795 SP_misc_shield_floor_unit +0 25901 SP_misc_model_shield_power_converter +0 259c7 EnergyAmmoStationSettings +0 259e3 ammo_power_converter_use +0 25ae5 SP_misc_model_ammo_power_converter +0 25b9e EnergyHealthStationSettings +0 25bba health_power_converter_use +0 25c63 SP_misc_model_health_power_converter +0 25d1c DmgBoxHit +0 25d1f DmgBoxUpdateSelf +0 25db6 DmgBoxAbsorb_Die +0 25dbf DmgBoxAbsorb_Pain +0 25dc8 CreateNewDamageBox +0 25e45 ATST_ManageDamageBoxes +0 26015 G_PlayerBecomeATST +0 2608c fx_runner_think +0 260da fx_runner_use +0 26123 fx_runner_link +0 26216 SP_fx_runner +0 26325 G_ReflectMissile +0 265bb G_DeflectMissile +0 266e6 G_BounceMissile +0 268ce G_ExplodeMissile +0 2699c G_RunStuckMissile +0 26a1d G_BounceProjectile +0 26adc CreateMissile +0 26bbf G_MissileImpact +0 2712e G_RunMissile +0 2734f G_TestEntityPosition +0 273d6 G_CreateRotationMatrix +0 273f8 G_TransposeMatrix +0 27439 G_RotatePoint +0 274a5 G_TryPushingEntity +0 27797 G_MoverPush +0 27ae4 G_MoverTeam +0 27c17 G_RunMover +0 27c48 SetMoverState +0 27d87 MatchTeam +0 27da7 ReturnToPos1 +0 27ddc Reached_BinaryMover +0 27ee5 Use_BinaryMover +0 2802a InitMover +0 281ba Blocked_Door +0 2830d Touch_DoorTriggerSpectator +0 283e6 Touch_DoorTrigger +0 28438 Think_SpawnNewDoorTrigger +0 2853a Think_MatchTeam +0 28550 SP_func_door +0 2876e Touch_Plat +0 287f2 Touch_PlatCenterTrigger +0 28833 SpawnPlatTrigger +0 28921 SP_func_plat +0 28a94 Touch_Button +0 28ab7 SP_func_button +0 28c24 Think_BeginMoving +0 28c34 Reached_Train +0 28d19 Think_SetupTrainTargets +0 28dd0 SP_path_corner +0 28df1 SP_func_train +0 28e86 SP_func_static +0 28eb9 SP_func_rotating +0 28f5f SP_func_bobbing +0 29011 SP_func_pendulum +0 290ca BreakableBrushDie +0 291ca BreakableBrushPain +0 291cd BrushThink +0 291f0 BreakableBrushUse +0 2921a SP_func_breakable +0 2938d GlassDie +0 29427 GlassDie_Old +0 29498 GlassPain +0 2949b GlassUse +0 29590 SP_func_glass +0 2961d func_wait_return_solid +0 296ad func_usable_think +0 296d3 func_usable_use +0 297a0 func_usable_pain +0 297bb func_usable_die +0 297d8 SP_func_usable +0 29881 pitch_roll_for_slope +0 29a0f G_BounceObject +0 29b4e G_RunObject +0 29dde G_StopObjectMoving +0 29e1d G_StartObjectMoving +0 29e7c InitSagaMode +0 29f58 UseSagaTarget +0 29fcf SagaBroadcast_OBJECTIVECOMPLETE +0 2a010 SagaBroadcast_ROUNDOVER +0 2a04a BroadcastObjectiveCompletion +0 2a091 AddSagaWinningTeamPoints +0 2a0ee SagaRoundComplete +0 2a148 SagaObjectiveCompleted +0 2a1aa StripTabs +0 2a1ea sagaTriggerUse +0 2a2f0 SP_info_saga_objective +0 2a343 G_WriteClientSessionData +0 2a3ab G_ReadSessionData +0 2a42f G_InitSessionData +0 2a50c G_InitWorldSession +0 2a52f G_WriteSessionData +0 2a56a G_SpawnString +0 2a5ae G_SpawnFloat +0 2a5d0 G_SpawnInt +0 2a5f2 G_SpawnVector +0 2a621 SP_item_botroam +0 2a624 G_CallSpawn +0 2a6a3 G_NewString +0 2a727 G_ParseField +0 2a80f G_SpawnGEntityFromSpawnVars +0 2a8fa G_AddSpawnVarToken +0 2a93b G_ParseSpawnVars +0 2a9cb SP_worldspawn +0 2abd8 G_SpawnEntitiesFromString +0 2ac01 StringToFilter +0 2acb4 UpdateIPBans +0 2ad0c G_FilterPacket +0 2adbf AddIP +0 2ae15 G_ProcessIPBans +0 2ae6b Svcmd_AddIP_f +0 2ae8b Svcmd_RemoveIP_f +0 2aef3 Svcmd_EntityList_f +0 2afad ClientForString +0 2b044 Svcmd_ForceTeam_f +0 2b07a ConsoleCommand +0 2b16a Use_Target_Give +0 2b1c4 SP_target_give +0 2b1cd Use_target_remove_powerups +0 2b219 SP_target_remove_powerups +0 2b222 Think_Target_Delay +0 2b235 Use_Target_Delay +0 2b287 SP_target_delay +0 2b2ba Use_Target_Score +0 2b2d2 SP_target_score +0 2b2e8 Use_Target_Print +0 2b36f SP_target_print +0 2b378 Use_Target_Speaker +0 2b3f7 SP_target_speaker +0 2b4d9 target_laser_think +0 2b635 target_laser_on +0 2b650 target_laser_off +0 2b65f target_laser_use +0 2b67e target_laser_start +0 2b70f SP_target_laser +0 2b721 target_teleporter_use +0 2b756 SP_target_teleporter +0 2b77d target_relay_use +0 2b80e SP_target_relay +0 2b817 target_kill_use +0 2b838 SP_target_kill +0 2b841 SP_target_position +0 2b853 target_location_linkup +0 2b8c3 SP_target_location +0 2b8e4 Team_InitGame +0 2b917 OtherTeam +0 2b92d TeamName +0 2b94a OtherTeamName +0 2b967 TeamColorString +0 2b984 PrintCTFMessage +0 2b9dc AddTeamScore +0 2ba67 OnSameTeam +0 2baaf Team_SetFlagStatus +0 2bb13 Team_CheckDroppedItem +0 2bb4d Team_ForceGesture +0 2bb92 Team_FragBonuses +0 2c0f1 Team_CheckHurtCarrier +0 2c187 Team_ResetFlag +0 2c1f1 Team_ResetFlags +0 2c206 Team_ReturnFlagSound +0 2c243 Team_TakeFlagSound +0 2c2b2 Team_CaptureFlagSound +0 2c2ef Team_ReturnFlag +0 2c312 Team_FreeEntity +0 2c346 Team_DroppedFlagThink +0 2c387 Team_TouchOurFlag +0 2c5df Team_TouchEnemyFlag +0 2c62f Pickup_Team +0 2c6a6 Team_GetLocation +0 2c720 Team_GetLocationMsg +0 2c787 SelectRandomTeamSpawnPoint +0 2c835 SelectCTFSpawnPoint +0 2c87a SelectSagaSpawnPoint +0 2c8bf SortClients +0 2c8ca TeamplayInfoMessage +0 2ca28 CheckTeamStatus +0 2cadd SP_team_CTF_redplayer +0 2cae0 SP_team_CTF_blueplayer +0 2cae3 SP_team_CTF_redspawn +0 2cae6 SP_team_CTF_bluespawn +0 2cae9 InitTrigger +0 2cb28 multi_wait +0 2cb31 multi_trigger +0 2ccec Use_Multi +0 2ccf8 Touch_Multi +0 2cd0d SP_trigger_multiple +0 2cd90 trigger_always_think +0 2cda6 SP_trigger_always +0 2cdb8 trigger_push_touch +0 2cdd0 AimAtTarget +0 2ced5 SP_trigger_push +0 2cf12 Use_target_push +0 2cf5d SP_target_push +0 2d014 trigger_teleporter_touch +0 2d06f SP_trigger_teleport +0 2d0b6 hurt_use +0 2d0f8 hurt_touch +0 2d297 SP_trigger_hurt +0 2d2fd func_timer_think +0 2d33b func_timer_use +0 2d35a SP_func_timer +0 2d3d4 AddRemap +0 2d443 BuildShaderStateConfig +0 2d489 G_FindConfigstringIndex +0 2d4f5 G_SkinIndex +0 2d508 G_ModelIndex +0 2d51b G_SoundIndex +0 2d52e G_EffectIndex +0 2d541 G_TeamCommand +0 2d57f G_Find +0 2d5ce G_RadiusList +0 2d6ee G_PickTarget +0 2d754 G_UseTargets +0 2d7f3 tv +0 2d821 vtos +0 2d85d G_SetMovedir +0 2d8b2 G_InitGentity +0 2d8da G_Spawn +0 2d988 G_EntitiesFree +0 2d9b3 G_SendG2KillQueue +0 2d9f7 G_KillG2Queue +0 2da25 G_FreeEntity +0 2dad0 G_TempEntity +0 2db1e GetTrackerEnt +0 2db54 G_SoundTempEntity +0 2dba8 G_KillBox +0 2dc74 G_AddPredictableEvent +0 2dc8f G_AddEvent +0 2dd08 G_PlayEffect +0 2dd30 G_ScreenShake +0 2dd80 G_MuteSound +0 2ddc4 G_Sound +0 2de97 G_SoundAtLoc +0 2deae G_EntitySound +0 2ded6 ValidUseTarget +0 2def3 TryUse +0 2df8f G_PointInBounds +0 2dfcf G_BoxInBounds +0 2e082 G_SetAngles +0 2e09a G_ClearTrace +0 2e0cb G_SetOrigin +0 2e10a DebugLine +0 2e20d G_ROFF_NotetrackCallback +0 2e2c0 touch_NULL +0 2e2c3 W_TraceSetStart +0 2e385 WP_FireBryarPistol +0 2e45b WP_FireTurretMissile +0 2e4b2 WP_FireGenericBlasterMissile +0 2e4fb WP_FireBlasterMissile +0 2e549 WP_FireEmplacedMissile +0 2e5ac WP_FireBlaster +0 2e603 WP_DisruptorMainFire +0 2e82d WP_DisruptorAltFire +0 2ebd6 WP_FireDisruptor +0 2ec0d WP_BowcasterAltFire +0 2ec97 WP_BowcasterMainFire +0 2eddc WP_FireBowcaster +0 2edf1 WP_RepeaterMainFire +0 2ee38 WP_RepeaterAltFire +0 2eeda WP_FireRepeater +0 2ef34 WP_DEMP2_MainFire +0 2efb0 DEMP2_AltRadiusDamage +0 2f1f4 DEMP2_AltDetonate +0 2f275 WP_DEMP2_AltFire +0 2f36e WP_FireDEMP2 +0 2f383 WP_FlechetteMainFire +0 2f468 prox_mine_think +0 2f4f6 WP_TraceSetStart +0 2f5ae WP_ExplosiveDie +0 2f5b7 WP_flechette_alt_blow +0 2f5d2 WP_CreateFlechetteBouncyThing +0 2f6a3 WP_FlechetteAltFire +0 2f71a WP_FireFlechette +0 2f72f rocketThink +0 2f9b0 WP_FireRocket +0 2fb10 thermalDetonatorExplode +0 2fbee thermalThinkStandard +0 2fc15 WP_FireThermalDetonator +0 2fda7 WP_DropThermal +0 2fdc7 laserTrapExplode +0 2fe51 laserTrapDelayedExplode +0 2fe99 touchLaserTrap +0 2ff00 laserTrapThink +0 2ffc7 laserTrapStick +0 300da TrapThink +0 300ec CreateLaserTrap +0 3028d WP_PlaceLaserTrap +0 303c1 VectorNPos +0 30428 charge_stick +0 30685 DetPackBlow +0 306ee DetPackPain +0 3070f DetPackDie +0 30730 drop_charge +0 308d3 BlowDetpacks +0 30942 CheatsOn +0 3094f WP_DropDetPack +0 30a91 WP_FireStunBaton +0 30bf6 SnapVectorTowards +0 30c3f LogAccuracyHit +0 30c8e CalcMuzzlePoint +0 30dc3 CalcMuzzlePointOrigin +0 30e4d FireWeapon +0 30fe0 WP_FireEmplaced +0 310e4 emplaced_gun_use +0 312dd emplaced_gun_realuse +0 312eb emplaced_gun_pain +0 312f5 emplaced_gun_update +0 315d9 emplaced_gun_die +0 315fa SP_emplaced_gun +0 31778 G_PreDefSound +0 31796 InFront +0 31810 WP_InitForcePowers +0 31d0c WP_SpawnInitForcePowers +0 31f49 ForcePowerUsableOn +0 32011 WP_ForcePowerAvailable +0 32063 WP_ForcePowerInUse +0 3207b WP_ForcePowerUsable +0 32154 WP_AbsorbConversion +0 321f7 WP_ForcePowerRegenerate +0 3224f WP_ForcePowerStart +0 32564 ForceHeal +0 32685 WP_AddToClientBitflags +0 326ea ForceTeamHeal +0 3292c ForceTeamForceReplenish +0 32b0a ForceGrip +0 32c4b ForceSpeed +0 32ccd ForceSeeing +0 32d3c ForceProtect +0 32dcf ForceAbsorb +0 32e62 ForceRage +0 32f0f ForceLightning +0 32f8d ForceLightningDamage +0 3309c ForceShootLightning +0 3338c ForceDrain +0 3340a ForceDrainDamage +0 335eb ForceShootDrain +0 3392e ForceJumpCharge +0 33a68 WP_GetVelocityForForceJump +0 33c1c ForceJump +0 33ced WP_AddAsMindtricked +0 33d52 ForceTelepathy +0 3418e GEntity_UseFunc +0 341a5 CanCounterThrow +0 3420f ForceThrow +0 34ef0 WP_ForcePowerStop +0 35131 DoGripAction +0 356d6 G_IsMindTricked +0 3573d RemoveTrickedEnt +0 357a6 WP_UpdateMindtrickEnts +0 358f0 WP_ForcePowerRun +0 35c47 WP_DoSpecificPower +0 35e5c FindGenericEnemyIndex +0 35f93 SeekerDroneUpdate +0 36375 HolocronUpdate +0 3650c JediMasterUpdate +0 3660a WP_ForcePowersUpdate +0 36fa3 Jedi_DodgeEvasion +0 3710a RandFloat +0 37124 SaberUpdateSelf +0 37219 SaberGotHit +0 37237 WP_SaberInitBladeData +0 372f0 G_G2ClientSpineAngles +0 3757b G_G2PlayerAngles +0 378d0 SaberAttacking +0 378ea WP_SabersCheckLock2 +0 37c8f WP_SabersCheckLock +0 38385 CheckSaberDamage +0 38c50 CheckThrownSaberDamaged +0 390ac saberCheckRadiusDamage +0 39117 saberMoveBack +0 3914d SaberBounceSound +0 39163 DeadSaberThink +0 39184 MakeDeadSaber +0 392d2 saberBackToOwner +0 3954f thrownSaberTouch +0 39624 saberFirstThrown +0 39933 WP_SaberPositionUpdate +0 3a276 WP_MissileBlockForBlock +0 3a2a4 WP_SaberBlockNonRandom +0 3a3b0 WP_SaberBlock +0 3a50f WP_SaberCanBlock +0 3a724 HasSetSaberOnly +0 3a76b Q_rand +0 3a780 Q_random +0 3a792 Q_crandom +0 3a7a3 VectorCompare +0 3a7db VectorLength +0 3a80e VectorLengthSquared +0 3a83a Distance +0 3a87b DistanceSquared +0 3a8c9 VectorNormalizeFast +0 3a928 VectorInverse +0 3a950 CrossProduct +0 3a9c9 ClampChar +0 3a9e0 ClampShort +0 3a9f7 DirToByte +0 3aa52 ByteToDir +0 3aa70 ColorBytes3 +0 3aadf ColorBytes4 +0 3ab71 NormalizeColor +0 3abe7 PlaneFromPoints +0 3aca5 RotatePointAroundVector +0 3adb0 RotateAroundDirection +0 3adf4 vectoangles +0 3aeb0 AnglesToAxis +0 3aee5 AxisClear +0 3af1c AxisCopy +0 3af40 ProjectPointOnPlane +0 3affb MakeNormalVectors +0 3b0a6 VectorRotate +0 3b143 Q_rsqrt +0 3b17a Q_fabs +0 3b18a LerpAngle +0 3b1bb AngleSubtract +0 3b1e0 AnglesSubtract +0 3b22e AngleMod +0 3b240 AngleNormalize360 +0 3b24e AngleNormalize180 +0 3b269 AngleDelta +0 3b279 SetPlaneSignbits +0 3b2a6 BoxOnPlaneSide +0 3b667 RadiusFromBounds +0 3b6ba ClearBounds +0 3b6f1 AddPointToBounds +0 3b78a VectorNormalize +0 3b7fa VectorNormalize2 +0 3b888 _VectorMA +0 3b8ca _DotProduct +0 3b8ff _VectorSubtract +0 3b938 _VectorAdd +0 3b971 _VectorCopy +0 3b998 _VectorScale +0 3b9c8 Vector4Scale +0 3ba0a Q_log2 +0 3ba29 MatrixMultiply +0 3bbfe AngleVectors +0 3bcf6 PerpendicularVector +0 3bd62 Rand_Init +0 3bd69 flrand +0 3bda4 irand +0 3bdd6 powf +0 3bdf9 GetIDForString +0 3be3e GetStringForID +0 3be7a Com_Clamp +0 3be94 COM_SkipPath +0 3beb8 COM_StripExtension +0 3beee COM_DefaultExtension +0 3bf36 ShortSwap +0 3bf56 ShortNoSwap +0 3bf61 LongSwap +0 3bf94 LongNoSwap +0 3bf9a Long64Swap +0 3bfd7 Long64NoSwap +0 3bfdf FloatSwap +0 3bff5 FloatNoSwap +0 3bffc COM_BeginParseSession +0 3c00e COM_GetCurrentParseLine +0 3c014 COM_Parse +0 3c023 COM_ParseError +0 3c043 COM_ParseWarning +0 3c063 SkipWhitespace +0 3c09a COM_Compress +0 3c1ed COM_ParseExt +0 3c339 COM_MatchToken +0 3c362 SkipBracedSection +0 3c3a0 SkipRestOfLine +0 3c3d8 Parse1DMatrix +0 3c417 Parse2DMatrix +0 3c452 Parse3DMatrix +0 3c497 Q_isprint +0 3c4ac Q_islower +0 3c4c1 Q_isupper +0 3c4d6 Q_isalpha +0 3c4f7 Q_strrchr +0 3c52b Q_strncpyz +0 3c566 Q_stricmpn +0 3c5f1 Q_strncmp +0 3c643 Q_stricmp +0 3c66b Q_strlwr +0 3c691 Q_strupr +0 3c6b7 Q_strcat +0 3c6e3 Q_PrintStrlen +0 3c733 Q_CleanStr +0 3c799 Com_sprintf +0 3c7d8 va +0 3c805 Info_ValueForKey +0 3c8e5 Info_NextPair +0 3c983 Info_RemoveKey +0 3ca53 Info_RemoveKey_Big +0 3cb23 Info_Validate +0 3cb4a Info_SetValueForKey +0 3cc1a Info_SetValueForKey_Big +0 3cce2 Q_irand +1 4 gDuelExit +1 8 gDuelist1 +1 c gDuelist2 +1 10 gameCvarTable +1 7f0 gameCvarTableSize +1 824 gDidDuelStuff +1 82c g_LastFrameTime +1 830 g_TimeSinceLastFrame +1 834 ctfStateNames +1 850 ctfStateDescriptions +1 868 sagaStateDescriptions +1 874 teamplayStateDescriptions +1 93c gWPRenderTime +1 940 gDeactivated +1 944 gBotEdit +1 948 gWPRenderedFrame +1 94c gWPNum +1 950 gLastPrintedIndex +1 954 gLevelFlags +1 958 botGlobalNavWeaponWeights +1 998 randSeed +1 a0c forceMasteryLevels +1 a2c forceMasteryPoints +1 a4c bgForcePowerCost +1 b6c forcePowerSorted +1 bb4 forcePowerDarkLight +1 bfc WeaponReadyAnim +1 c3c WeaponAttackAnim +1 c7c bg_itemlist +1 1538 bg_numItems +1 1590 eventnames +1 1768 bg_poolSize +1 176c bg_poolTail +1 1770 gPMDoSlowFall +1 1774 pm_stopspeed +1 1778 pm_duckScale +1 177c pm_swimScale +1 1780 pm_wadeScale +1 1784 pm_accelerate +1 1788 pm_airaccelerate +1 178c pm_wateraccelerate +1 1790 pm_flyaccelerate +1 1794 pm_friction +1 1798 pm_waterfriction +1 179c pm_flightfriction +1 17a0 pm_spectatorfriction +1 17a4 c_pmove +1 17a8 forceSpeedLevels +1 17b8 forcePowerNeeded +1 18d8 forceJumpHeight +1 18e8 forceJumpStrength +1 198c animTable +1 3fb4 BGPAFtextLoaded +1 3fb8 WP_MuzzlePoint +1 4078 weaponData +1 43f8 ammoData +1 4420 saberMoveData +1 5690 transitionMove +1 59bc playerMins +1 59c8 playerMaxs +1 59d4 gJMSaberEnt +1 59d8 g2SaberInstance +1 59f8 gc_orders +1 5a14 gameNames +1 5a50 modNames +1 5ca0 shieldLoopSound +1 5ca4 shieldAttachSound +1 5ca8 shieldActivateSound +1 5cac shieldDeactivateSound +1 5cb0 shieldDamageSound +1 5cf0 weaponFromMOD +1 5d88 weaponNameFromIndex +1 5df8 fields +1 5f78 spawns +1 61b4 defaultStyles +1 6334 precachedKyle +1 6370 remapCount +1 63a4 gG2KillNum +1 8404 speedLoopSound +1 8408 rageLoopSound +1 840c protectLoopSound +1 8410 absorbLoopSound +1 8414 seeLoopSound +1 8418 ysalamiriLoopSound +1 841c forcePowerMinRank +1 86b4 saberSpinSound +1 86b8 saberOffSound +1 86bc saberOnSound +1 86c0 saberHumSound +1 8748 vec3_origin +1 8754 axisDefault +1 8778 colorBlack +1 8788 colorRed +1 8798 colorGreen +1 87a8 colorBlue +1 87b8 colorYellow +1 87c8 colorMagenta +1 87d8 colorCyan +1 87e8 colorWhite +1 87f8 colorLtGrey +1 8808 colorMdGrey +1 8818 colorDkGrey +1 8828 colorLtBlue +1 8838 colorDkBlue +1 8848 g_color_table +1 88c8 bytedirs +1 9080 holdrand +2 ac10 ctfFlagStatusRemap +2 3c324c _stackStart +2 3d324c _stackEnd +3 0 g_listEntity +3 110 g_podiumDrop +3 220 g_podiumDist +3 330 g_statLogFile +3 440 g_statLog +3 550 g_logSync +3 660 g_log +3 770 g_MaxHolocronCarry +3 880 g_clients +3 e400 g_timeouttospec +3 e510 g_forceDodge +3 e620 g_dismember +3 e730 g_singlePlayer +3 e840 g_enableBreath +3 e950 g_enableDust +3 ea60 g_rankings +3 eb70 pmove_msec +3 ec80 pmove_fixed +3 ed90 g_smoothClients +3 eea0 g_blueteam +3 efb0 g_redteam +3 f0c0 g_debugUp +3 f1d0 g_debugRight +3 f2e0 g_debugForward +3 f3f0 g_filterBan +3 f500 g_banIPs +3 f610 g_teamForceBalance +3 f720 g_teamAutoJoin +3 f830 g_allowVote +3 f940 g_blood +3 fa50 g_doWarmup +3 fb60 g_warmup +3 fc70 g_motd +3 fd80 g_synchronousClients +3 fe90 g_adaptRespawn +3 ffa0 g_weaponTeamRespawn +3 100b0 g_weaponRespawn +3 101c0 g_debugDamage +3 102d0 g_debugAlloc +3 103e0 g_debugMove +3 104f0 g_inactivity +3 10600 g_forcerespawn +3 10710 g_quadfactor +3 10820 g_knockback +3 10930 g_speed +3 10a40 g_gravity +3 10b50 g_needpass +3 10c60 g_password +3 10d70 g_friendlySaber +3 10e80 g_friendlyFire +3 10f90 g_saberInterpolate +3 110a0 g_capturelimit +3 111b0 g_timelimit +3 112c0 g_duel_fraglimit +3 113d0 g_fraglimit +3 114e0 g_duelWeaponDisable +3 115f0 g_weaponDisable +3 11700 g_forcePowerDisable +3 11810 g_spawnInvulnerability +3 11920 g_forceRegenTime +3 11a30 g_saberLocking +3 11b40 g_privateDuel +3 11c50 g_forceBasedTeams +3 11d60 g_maxForceRank +3 11e70 g_dmflags +3 11f80 g_autoMapCycle +3 12090 g_restarted +3 121a0 g_maxGameClients +3 122b0 g_maxclients +3 123c0 g_cheats +3 124d0 g_dedicated +3 125e0 g_gametype +3 126f0 g_entities +3 e16f0 level +3 e3a78 g_ff_objectives +3 e3b94 droppedBlueFlag +3 e3b98 droppedRedFlag +3 e3b9c gBotEventTracker +3 e3d9c regularupdate_time +3 e3da0 numbots +3 e3da4 botstates +3 e3e24 floattime +3 e3e28 eFlagBlue +3 e3e2c eFlagRed +3 e3e30 oFlagBlue +3 e3e34 flagBlue +3 e3e38 oFlagRed +3 e3e3c flagRed +3 e3e40 bot_wp_visconnect +3 e3f50 bot_wp_distconnect +3 e4060 bot_wp_clearweight +3 e4170 bot_wp_edit +3 e4280 bot_wp_info +3 e4390 bot_camp +3 e44a0 bot_attachments +3 e45b0 bot_forgimmick +3 e46c0 bot_forcepowers +3 e47d0 gBotChatBuffer +3 1247d0 nodenum +3 1247d4 nodetable +3 1447d4 gWPArray +3 1487d4 bg_pool +3 33c7d4 pml +3 33cc60 pm +3 33cc64 BGPAFtext +3 3468a4 bgGlobalAnimations +3 34dfdc podium3 +3 34dfe0 podium2 +3 34dfe4 podium1 +3 34dfec bot_minplayers +3 34e0fc botSpawnQueue +3 34e17c g_arenaInfos +3 34f17c g_numArenas +3 34f180 g_botInfos +3 350180 g_numBots +3 350184 Client_Force +3 35408c itemRegistered +3 35448c G_WeaponLogItems +3 354c8c G_WeaponLogPowerups +3 35500c G_WeaponLogClientTouch +3 35508c G_WeaponLogLastTime +3 35510c G_WeaponLogTime +3 35590c G_WeaponLogFrags +3 35690c G_WeaponLogDeaths +3 35710c G_WeaponLogKills +3 35840c G_WeaponLogDamage +3 35970c G_WeaponLogFired +3 359f0c G_WeaponLogPickups +3 35a70c allocPoint +3 35a710 memoryPool +3 39a710 gExplSound +3 39a714 pushed_p +3 39a718 pushed +3 3a2718 imperial_attackers +3 3a271c rebel_attackers +3 3a2720 rebel_goals_completed +3 3a2724 rebel_goals_required +3 3a2728 imperial_goals_completed +3 3a272c imperial_goals_required +3 3a2730 saga_round_over +3 3a2734 saga_valid +3 3a2738 saga_info +3 3a4738 numIPFilters +3 3a473c ipFilters +3 3a673c teamgame +3 3a6758 gTrigFallSound +3 3a7cfc gG2KillIndex +3 3a7dfc remappedShaders +3 3abffc ent_list +3 3acffc muzzle +3 3ad008 up +3 3ad014 right +3 3ad020 forward +3 3ad02c s_quadFactor +3 3c2a48 com_lines +3 3c2a4c com_parsename +3 3c2e4c com_token diff --git a/CODE-mp/base/vm/ui.map b/CODE-mp/base/vm/ui.map new file mode 100644 index 0000000..08c7fa5 --- /dev/null +++ b/CODE-mp/base/vm/ui.map @@ -0,0 +1,1011 @@ +0 ffffff35 trap_G2API_SetBoneAngles +0 ffffff36 trap_SP_GetStringTextString +0 ffffff37 trap_SP_Register +0 ffffff8c matrixmultiply +0 ffffff8d asin +0 ffffff8e acos +0 ffffff91 ceil +0 ffffff92 perpendicularvector +0 ffffff93 anglevectors +0 ffffff94 floor +0 ffffff95 sqrt +0 ffffff96 atan2 +0 ffffff97 cos +0 ffffff98 sin +0 ffffff99 strncpy +0 ffffff9a memcpy +0 ffffff9b memset +0 ffffffa3 trap_LAN_CompareServers +0 ffffffa4 trap_LAN_ServerIsVisible +0 ffffffa5 trap_LAN_GetServerPing +0 ffffffa6 trap_LAN_ServerStatus +0 ffffffa7 trap_R_RemapShader +0 ffffffa8 trap_CIN_SetExtents +0 ffffffa9 trap_CIN_DrawCinematic +0 ffffffaa trap_CIN_RunCinematic +0 ffffffab trap_CIN_StopCinematic +0 ffffffac trap_CIN_PlayCinematic +0 ffffffad trap_LAN_RemoveServer +0 ffffffae trap_LAN_AddServer +0 ffffffaf trap_LAN_SaveCachedServers +0 ffffffb0 trap_LAN_LoadCachedServers +0 ffffffb1 trap_LAN_ResetPings +0 ffffffb2 trap_LAN_UpdateVisiblePings +0 ffffffb3 trap_LAN_MarkServerVisible +0 ffffffb4 trap_LAN_GetServerInfo +0 ffffffb5 trap_LAN_GetServerAddressString +0 ffffffb6 trap_LAN_GetServerCount +0 ffffffb7 trap_RealTime +0 ffffffb8 trap_S_StartBackgroundTrack +0 ffffffb9 trap_S_StopBackgroundTrack +0 ffffffba trap_PC_RemoveAllGlobalDefines +0 ffffffbb trap_PC_LoadGlobalDefines +0 ffffffbc trap_PC_SourceFileAndLine +0 ffffffbd trap_PC_ReadToken +0 ffffffbe trap_PC_FreeSource +0 ffffffbf trap_PC_LoadSource +0 ffffffc0 trap_PC_AddGlobalDefine +0 ffffffc1 trap_R_ModelBounds +0 ffffffc2 trap_AnyLanguage_ReadCharFromString +0 ffffffc3 trap_R_Font_DrawString +0 ffffffc4 trap_R_Font_HeightPixels +0 ffffffc5 trap_R_Font_StrLenChars +0 ffffffc6 trap_R_Font_StrLenPixels +0 ffffffc7 trap_R_RegisterFont +0 ffffffc8 trap_VerifyCDKey +0 ffffffc9 trap_SetCDKey +0 ffffffca trap_GetCDKey +0 ffffffcb trap_MemoryRemaining +0 ffffffcc trap_Cvar_Update +0 ffffffcd trap_Cvar_Register +0 ffffffce trap_LAN_GetPingInfo +0 ffffffcf trap_LAN_GetPing +0 ffffffd0 trap_LAN_ClearPing +0 ffffffd1 trap_LAN_GetPingQueueCount +0 ffffffd2 trap_GetConfigString +0 ffffffd3 trap_GetClientState +0 ffffffd4 trap_GetGlconfig +0 ffffffd5 trap_GetClipboardData +0 ffffffd6 trap_Key_SetCatcher +0 ffffffd7 trap_Key_GetCatcher +0 ffffffd8 trap_Key_ClearStates +0 ffffffd9 trap_Key_SetOverstrikeMode +0 ffffffda trap_Key_GetOverstrikeMode +0 ffffffdb trap_Key_IsDown +0 ffffffdc trap_Key_SetBinding +0 ffffffdd trap_Key_GetBindingBuf +0 ffffffde trap_Key_KeynumToStringBuf +0 ffffffdf trap_S_StartLocalSound +0 ffffffe0 trap_S_RegisterSound +0 ffffffe2 trap_CM_LerpTag +0 ffffffe3 trap_UpdateScreen +0 ffffffe4 trap_R_DrawStretchPic +0 ffffffe5 trap_R_SetColor +0 ffffffe6 trap_R_RenderScene +0 ffffffe7 trap_R_AddLightToScene +0 ffffffe8 trap_R_AddPolyToScene +0 ffffffe9 trap_R_AddRefEntityToScene +0 ffffffea trap_R_ClearScene +0 ffffffeb trap_R_RegisterShaderNoMip +0 ffffffec trap_R_RegisterSkin +0 ffffffed trap_R_RegisterModel +0 ffffffee trap_FS_GetFileList +0 ffffffef trap_FS_FCloseFile +0 fffffff0 trap_FS_Write +0 fffffff1 trap_FS_Read +0 fffffff2 trap_FS_FOpenFile +0 fffffff3 trap_Cmd_ExecuteText +0 fffffff4 trap_Argv +0 fffffff5 trap_Argc +0 fffffff6 trap_Cvar_InfoStringBuffer +0 fffffff7 trap_Cvar_Create +0 fffffff8 trap_Cvar_Reset +0 fffffff9 trap_Cvar_SetValue +0 fffffffa trap_Cvar_VariableStringBuffer +0 fffffffb trap_Cvar_VariableValue +0 fffffffc trap_Cvar_Set +0 fffffffd trap_Milliseconds +0 fffffffe trap_Print +0 ffffffff trap_Error +0 0 vmMain +0 7f AssetCache +0 512 UI_GetStripEdString +0 52d _UI_Refresh +0 671 _UI_Shutdown +0 677 GetMenuBuffer +0 6dd Asset_Parse +0 9c1 UI_Report +0 9c7 UI_ParseMenu +0 a35 Load_Menu +0 a7e UI_LoadMenus +0 b1e UI_Load +0 b84 UI_DrawHandicap +0 bce UI_DrawClanName +0 bfb UI_SetCapFragLimits +0 c4e UI_DrawGameType +0 c7a UI_DrawNetGameType +0 cbd UI_DrawAutoSwitch +0 d25 UI_DrawJoinGameType +0 d61 UI_TeamIndexFromName +0 d9c UI_DrawClanLogo +0 e49 UI_DrawClanCinematic +0 f5d UI_DrawPreviewCinematic +0 fc7 UI_DrawSkill +0 1013 UI_DrawGenericNum +0 1057 UI_DrawForceMastery +0 10a2 UI_DrawSkinColor +0 1107 UI_DrawForceSide +0 128b UI_DrawTeamName +0 12f6 UI_DrawTeamMember +0 13c0 UI_DrawEffects +0 13e8 UI_DrawMapPreview +0 157 _UI_DrawSides +0 1ad _UI_DrawTopBottom +0 203 _UI_DrawRect +0 235 MenuFontToHandle +0 25c Text_Width +0 27a Text_Height +0 295 Text_Paint +0 305 Text_PaintWithCursor +0 3dc Text_Paint_Limit +0 4c8 UI_ShowPostGame +0 4e9 UI_DrawCenteredPic +0 1499 UI_DrawMapTimeToBeat +0 14fe UI_DrawMapCinematic +0 15df UpdateForceStatus +0 1786 UI_DrawNetSource +0 17d2 UI_DrawNetMapPreview +0 1821 UI_DrawNetMapCinematic +0 1879 UI_DrawNetFilter +0 18c5 UI_DrawTier +0 1911 UI_DrawTierMap +0 198f UI_EnglishMapName +0 19c1 UI_DrawTierMapName +0 1a26 UI_DrawTierGameType +0 1a89 UI_AIFromName +0 1abb UI_NextOpponent +0 1b0e UI_PriorOpponent +0 1b65 UI_DrawPlayerLogo +0 1c09 UI_DrawPlayerLogoMetal +0 1cad UI_DrawPlayerLogoName +0 1d51 UI_DrawOpponentLogo +0 1df5 UI_DrawOpponentLogoMetal +0 1e99 UI_DrawOpponentLogoName +0 1f3d UI_DrawAllMapsSelection +0 1f84 UI_DrawOpponentName +0 1fb1 UI_OwnerDrawWidth +0 228b UI_DrawBotName +0 22d0 UI_DrawBotSkill +0 230e UI_DrawRedBlue +0 2341 UI_DrawCrosshair +0 237f UI_BuildPlayerList +0 24fd UI_DrawSelectedPlayer +0 2538 UI_DrawServerRefreshDate +0 260b UI_DrawServerMOTD +0 2758 UI_DrawKeyBindStatus +0 278f UI_DrawGLInfo +0 2944 UI_Version +0 2984 UI_OwnerDraw +0 2dda UI_OwnerDrawVisible +0 2f65 UI_Handicap_HandleKey +0 2fcb UI_Effects_HandleKey +0 3038 UI_ClanName_HandleKey +0 30c2 UI_GameType_HandleKey +0 3191 UI_NetGameType_HandleKey +0 321c UI_AutoSwitch_HandleKey +0 3277 UI_JoinGameType_HandleKey +0 32da UI_Skill_HandleKey +0 3337 UI_TeamName_HandleKey +0 33b2 UI_TeamMember_HandleKey +0 3468 UI_NetSource_HandleKey +0 34d4 UI_NetFilter_HandleKey +0 3526 UI_OpponentName_HandleKey +0 354f UI_BotName_HandleKey +0 35a2 UI_BotSkill_HandleKey +0 35ef UI_RedBlue_HandleKey +0 3617 UI_Crosshair_HandleKey +0 3671 UI_SelectedPlayer_HandleKey +0 36ef UI_OwnerDrawHandleKey +0 3906 UI_GetValue +0 390b UI_ServersQsortCompare +0 3926 UI_ServersSort +0 3944 UI_LoadMods +0 39c5 UI_LoadMovies +0 3a3b UI_LoadDemos +0 3ae5 UI_SetNextMap +0 3b1d UI_StartSkirmish +0 3f8c UI_Update +0 4237 UI_DeferMenuScript +0 42bf UI_UpdateVideoSetup +0 43a2 UI_GetVideoSetup +0 4539 UI_RunMenuScript +0 5174 UI_GetTeamColor +0 5177 UI_MapCountByGameType +0 51fd UI_hasSkinForBase +0 524e UI_HeadCountByTeam +0 53ae UI_HeadCountByColor +0 5404 UI_InsertServerIntoDisplayList +0 544b UI_RemoveServerFromDisplayList +0 5496 UI_BinaryServerInsertion +0 5512 UI_BuildServerDisplayList +0 56de UI_SortServerStatusInfo +0 57df UI_GetServerStatusInfo +0 5b5e stristr +0 5bc0 UI_BuildFindPlayerList +0 5e3f UI_BuildServerStatus +0 5ea0 UI_FeederCount +0 5f32 UI_SelectedMap +0 5f71 UI_SelectedHead +0 5fb0 UI_SelectedTeamHead +0 6018 UI_GetIndexFromSelection +0 6049 UI_UpdatePendingPings +0 605b UI_FeederItemText +0 635c UI_FeederItemImage +0 6504 UI_FeederSelection +0 6804 GameType_Parse +0 68ff MapList_Parse +0 6a42 UI_ParseGameInfo +0 6ad8 UI_Pause +0 6b03 UI_PlayCinematic +0 6b22 UI_StopCinematic +0 6baf UI_DrawCinematic +0 6bce UI_RunCinematicFrame +0 6bd7 UI_LoadForceConfig_List +0 6ca7 UI_BuildQ3Model_List +0 6e6f _UI_Init +0 7050 _UI_KeyEvent +0 70a0 _UI_MouseEvent +0 70ee UI_LoadNonIngame +0 7113 _UI_SetActiveMenu +0 7223 _UI_IsFullscreen +0 722d UI_ReadableSize +0 72e2 UI_PrintTime +0 7343 Text_PaintCenter +0 7378 UI_DisplayDownloadInfo +0 7597 UI_DrawConnectScreen +0 7744 UI_RegisterCvars +0 7779 UI_UpdateCvars +0 779c UI_StopServerRefresh +0 77da UI_DoServerRefresh +0 783b UI_StartServerRefresh +0 790c Com_Error +0 792e Com_Printf +0 7950 UI_ClampCvar +0 796a UI_StartDemoLoop +0 7974 UI_Argv +0 7983 UI_Cvar_VariableString +0 7992 UI_SetBestScores +0 7c21 UI_LoadBestScores +0 7ca5 UI_ClearScores +0 7d2a UI_Cache_f +0 7d5b UI_CalcPostGameStats +0 7fda UI_ConsoleCommand +0 80e8 UI_Shutdown +0 80eb UI_DrawNamedPic +0 811d UI_DrawHandlePic +0 816c UI_FillRect +0 819b UI_DrawSides +0 81e8 UI_DrawTopBottom +0 8235 UI_DrawRect +0 8261 UI_SetColor +0 826a UI_UpdateScreen +0 8270 UI_DrawTextBox +0 82d3 UI_CursorInRect +0 82fe UI_InitForceShaders +0 83f1 UI_DrawForceStars +0 8485 UI_UpdateClientForcePowers +0 8501 UI_TranslateFCFIndex +0 8516 UI_SaveForceTemplate +0 864b UpdateForceUsed +0 87fb UI_ReadLegalForce +0 8a7a UI_UpdateForcePowers +0 8c64 UI_SkinColor_HandleKey +0 8cbb UI_ForceSide_HandleKey +0 8d80 UI_ForceMaxRank_HandleKey +0 8de6 UI_ForcePowerRank_HandleKey +0 8f23 UI_ForceConfigHandle +0 926f UI_Alloc +0 92a9 UI_InitMemory +0 92b2 UI_OutOfMemory +0 92b8 hashForString +0 92f8 String_Alloc +0 93d1 String_Report +0 941a String_Init +0 945e PC_SourceWarning +0 948e PC_SourceError +0 94be LerpColor +0 9519 Float_Parse +0 9545 PC_Float_Parse +0 959a Color_Parse +0 95c7 PC_Color_Parse +0 95f4 Int_Parse +0 9620 PC_Int_Parse +0 9678 Rect_Parse +0 96bf PC_Rect_Parse +0 9706 String_Parse +0 9732 PC_String_Parse +0 97a7 PC_Script_Parse +0 9829 Init_Display +0 9830 GradientBar_Paint +0 9876 Window_Init +0 98b2 Fade +0 9923 Window_Paint +0 9c6d Item_SetScreenCoords +0 9d01 Item_UpdatePosition +0 9d54 Menu_UpdatePosition +0 9dab Menu_PostParse +0 9dd7 Menu_ClearFocus +0 9e5a IsVisible +0 9e7d Rect_ContainsPoint +0 9ec2 Menu_ItemsMatchingGroup +0 9f1e Menu_GetMatchingItemByNumber +0 9f8b Script_SetColor +0 a025 Script_SetAsset +0 a03e Script_SetBackground +0 a060 Menu_FindItemByName +0 a0af Script_SetTeamColor +0 a0e4 Script_SetItemColor +0 a1bd Script_SetItemRect +0 a23b Menu_ShowItemByName +0 a2ad Menu_FadeItemByName +0 a326 Menus_FindByName +0 a357 Menus_ShowByName +0 a36f Menus_OpenByName +0 a378 Menu_RunCloseScript +0 a3a7 Menus_CloseByName +0 a407 Menus_CloseAll +0 a43d Script_Show +0 a45d Script_Hide +0 a47d Script_FadeIn +0 a49d Script_FadeOut +0 a4bd Script_Open +0 a4d5 Script_Close +0 a4ff Menu_TransitionItemByName +0 a5ea Script_Defer +0 a611 Script_RunDeferred +0 a62b Script_Transition +0 a68d Menu_OrbitItemByName +0 a6fa Script_Orbit +0 a768 Script_SetFocus +0 a7f3 Script_SetPlayerModel +0 a811 Script_SetPlayerHead +0 a82f Script_SetCvar +0 a85b Script_SetCvarToCvar +0 a894 Script_Exec +0 a8bb Script_Play +0 a8e4 Script_playLooped +0 a910 Item_RunScript +0 a9ad Item_EnableShowViaCvar +0 aa86 Item_SetFocus +0 abf2 Item_TextScroll_MaxScroll +0 ac21 Item_TextScroll_ThumbPosition +0 ac6b Item_TextScroll_ThumbDrawPosition +0 acd4 Item_TextScroll_OverLB +0 adbc Item_TextScroll_MouseEnter +0 aded Item_TextScroll_HandleKey +0 af83 Item_ListBox_MaxScroll +0 afdd Item_ListBox_ThumbPosition +0 b064 Item_ListBox_ThumbDrawPosition +0 b129 Item_Slider_ThumbPosition +0 b1c1 Item_Slider_OverSlider +0 b1f6 Item_ListBox_OverLB +0 b3c1 Item_ListBox_MouseEnter +0 b4f6 Item_MouseEnter +0 b618 Item_MouseLeave +0 b664 Menu_HitTest +0 b6a2 Item_SetMouseOver +0 b6cb Item_OwnerDraw_HandleKey +0 b705 Item_ListBox_HandleKey +0 bc22 Item_YesNo_HandleKey +0 bca8 Item_Multi_CountSettings +0 bcc0 Item_Multi_FindCvarByValue +0 bd45 Item_Multi_Setting +0 bdd6 Item_Multi_HandleKey +0 bec9 Item_TextField_HandleKey +0 c24d Scroll_TextScroll_AutoFunc +0 c2aa Scroll_TextScroll_ThumbFunc +0 c399 Scroll_ListBox_AutoFunc +0 c3f6 Scroll_ListBox_ThumbFunc +0 c57d Scroll_Slider_ThumbFunc +0 c617 Item_StartCapture +0 c78c Item_StopCapture +0 c78f Item_Slider_HandleKey +0 c88b Item_HandleKey +0 c99b Item_Action +0 c9b2 Menu_SetPrevCursorItem +0 ca88 Menu_SetNextCursorItem +0 cb55 Window_CloseCinematic +0 cb7d Menu_CloseCinematics +0 cbd1 Display_CloseCinematics +0 cbee Menus_Activate +0 cc45 Display_VisibleMenuCount +0 cc6f Menus_HandleOOBClick +0 cd32 Item_CorrectedTextRect +0 cd5a Menu_HandleKey +0 d07b ToWindowCoords +0 d0c3 Rect_ToWindowCoords +0 d0d8 Item_SetTextExtents +0 d27c Item_TextColor +0 d3c2 Item_Text_AutoWrapped_Paint +0 d572 Item_Text_Wrapped_Paint +0 d67f Item_Text_Paint +0 d770 Item_TextField_Paint +0 d8e6 Item_YesNo_Paint +0 da1a Item_Multi_Paint +0 db08 Controls_GetKeyAssignment +0 db66 Controls_GetConfig +0 db98 Controls_SetConfig +0 dbef Controls_SetDefaults +0 dc22 BindingIDFromName +0 dc4f BindingFromName +0 dce0 Item_Slider_Paint +0 dde3 Item_Bind_Paint +0 dfbc Display_KeyBindPending +0 dfc2 Item_Bind_HandleKey +0 e1cd Item_Model_Paint +0 e2fd Item_Image_Paint +0 e344 Item_TextScroll_Paint +0 e4d6 Item_ListBox_Paint +0 ea8d Item_OwnerDraw_Paint +0 ed53 Item_Paint +0 f33d Menu_Init +0 f374 Menu_GetFocusedItem +0 f3b3 Menu_GetFocused +0 f3ee Menu_ScrollFeeder +0 f441 Menu_SetFeederSelection +0 f4d6 Menus_AnyFullScreenVisible +0 f50a Menus_ActivateByName +0 f599 Item_Init +0 f5b2 Menu_HandleMouseMove +0 f70a Menu_Paint +0 f865 Item_ValidateTypeData +0 f929 KeywordHash_Key +0 f98d KeywordHash_Add +0 f9b3 KeywordHash_Find +0 f9ee ItemParse_name +0 fa07 ItemParse_focusSound +0 fa2f ItemParse_text +0 fa48 ItemParse_descText +0 fa61 ItemParse_text2 +0 fa7a ItemParse_text2alignx +0 fa93 ItemParse_text2aligny +0 faac ItemParse_group +0 fac5 ItemParse_asset_model +0 fb05 ItemParse_asset_shader +0 fb2b ItemParse_model_origin +0 fb71 ItemParse_model_fovx +0 fb97 ItemParse_model_fovy +0 fbbd ItemParse_model_rotation +0 fbe3 ItemParse_model_angle +0 fc07 ItemParse_rect +0 fc20 ItemParse_flag +0 fc8b ItemParse_style +0 fca9 ItemParse_decoration +0 fcbc ItemParse_notselectable +0 fcdf ItemParse_wrapped +0 fcf2 ItemParse_autowrapped +0 fd05 ItemParse_horizontalscroll +0 fd18 ItemParse_type +0 fd37 ItemParse_elementwidth +0 fd5d ItemParse_elementheight +0 fd83 ItemParse_feeder +0 fd9c ItemParse_elementtype +0 fdcd ItemParse_columns +0 fe70 ItemParse_border +0 fe89 ItemParse_bordersize +0 fea2 ItemParse_visible +0 feca ItemParse_ownerdraw +0 fee9 ItemParse_align +0 ff02 ItemParse_textalign +0 ff20 ItemParse_textalignx +0 ff39 ItemParse_textaligny +0 ff52 ItemParse_textscale +0 ff6b ItemParse_textstyle +0 ff84 ItemParse_backcolor +0 ffb3 ItemParse_forecolor +0 fff0 ItemParse_bordercolor +0 1001f ItemParse_outlinecolor +0 10038 ItemParse_background +0 1005e ItemParse_cinematic +0 10077 ItemParse_doubleClick +0 100a8 ItemParse_onFocus +0 100c1 ItemParse_leaveFocus +0 100da ItemParse_mouseEnter +0 100f3 ItemParse_mouseExit +0 1010c ItemParse_mouseEnterText +0 10125 ItemParse_mouseExitText +0 1013e ItemParse_action +0 10157 ItemParse_special +0 10170 ItemParse_cvarTest +0 10189 ItemParse_cvar +0 101ea ItemParse_font +0 10209 ItemParse_maxChars +0 1023e ItemParse_maxPaintChars +0 10273 ItemParse_maxLineChars +0 102a8 ItemParse_lineHeight +0 102de ItemParse_cvarFloat +0 1033d ItemParse_cvarStrList +0 103ff ItemParse_cvarFloatList +0 104bd ItemParse_addColorRange +0 1051f ItemParse_ownerdrawFlag +0 10544 ItemParse_enableCvar +0 10563 ItemParse_disableCvar +0 10582 ItemParse_showCvar +0 105a1 ItemParse_hideCvar +0 105c0 ItemParse_Appearance_slot +0 105d9 Item_SetupKeywordHash +0 10605 Item_Parse +0 10684 Item_TextScroll_BuildLines +0 107c3 Item_InitControls +0 10800 MenuParse_font +0 10843 MenuParse_name +0 10870 MenuParse_fullscreen +0 1088d MenuParse_rect +0 108a8 MenuParse_style +0 108ca MenuParse_visible +0 108f6 MenuParse_onOpen +0 10913 MenuParse_onClose +0 10930 MenuParse_onESC +0 1094d MenuParse_border +0 1096a MenuParse_borderSize +0 10987 MenuParse_backcolor +0 109ba MenuParse_descAlignment +0 109dc MenuParse_descX +0 109f9 MenuParse_descY +0 10a16 MenuParse_descScale +0 10a33 MenuParse_descColor +0 10a66 MenuParse_forecolor +0 10aa7 MenuParse_bordercolor +0 10ada MenuParse_focuscolor +0 10b0d MenuParse_disablecolor +0 10b40 MenuParse_outlinecolor +0 10b5d MenuParse_background +0 10b87 MenuParse_cinematic +0 10ba4 MenuParse_ownerdrawFlag +0 10bcd MenuParse_ownerdraw +0 10bea MenuParse_popup +0 10c01 MenuParse_outOfBounds +0 10c18 MenuParse_soundLoop +0 10c35 MenuParse_fadeClamp +0 10c52 MenuParse_fadeAmount +0 10c6f MenuParse_fadeCycle +0 10c8c MenuParse_itemDef +0 10d11 MenuParse_appearanceIncrement +0 10d2e Menu_SetupKeywordHash +0 10d5a Menu_Parse +0 10dd9 Menu_New +0 10e0d Menu_Count +0 10e13 Menu_PaintAll +0 10eaa Menu_Reset +0 10eb0 Display_GetContext +0 10eb6 Display_CaptureItem +0 10eeb Display_MouseMove +0 10f63 Display_CursorType +0 10faf Display_HandleKey +0 10fdc Window_CacheContents +0 11015 Item_CacheContents +0 11022 Menu_CacheContents +0 1106e Display_CacheAll +0 1108b Menu_OverActiveItem +0 1113e UI_ParseInfos +0 1122c UI_LoadArenasFromFile +0 112ac UI_LoadArenas +0 114ca UI_LoadBotsFromFile +0 1157b UI_LoadBots +0 115fc UI_GetBotInfoByNumber +0 11627 UI_GetBotInfoByName +0 11666 UI_GetNumBots +0 1166c UI_GetBotNameByNumber +0 1168e BG_LegalizedForcePowers +0 11a5b vectoyaw +0 11ab5 BG_HasYsalamiri +0 11ae4 BG_CanUseFPNow +0 11b4b BG_FindItemForPowerup +0 11b87 BG_FindItemForHoldable +0 11bc1 BG_FindItemForWeapon +0 11bf4 BG_FindItem +0 11c1d BG_PlayerTouchesItem +0 11c7d BG_ProperForceIndex +0 11ca0 BG_CycleForce +0 11d78 BG_GetItemIndexByTag +0 11da8 BG_CycleInven +0 11e14 BG_CanItemBeGrabbed +0 12011 BG_EvaluateTrajectory +0 121df BG_EvaluateTrajectoryDelta +0 122d9 BG_AddPredictableEventToPlayerstate +0 12314 BG_TouchJumpPad +0 12378 BG_PlayerStateToEntityState +0 12683 BG_PlayerStateToEntityStateExtraPolate +0 1299b BG_SwingAngles +0 12aa0 BG_AddPainTwitch +0 12ae1 BG_G2PlayerAngles +0 12c7e BG_Alloc +0 12cbe BG_AllocUnaligned +0 12cf1 BG_TempAlloc +0 12d29 BG_TempFree +0 12d56 BG_StringAlloc +0 12d79 BG_OutOfMemory +0 12d8b swapfunc +0 12e12 med3 +0 12e95 qsort +0 1324e strlen +0 13269 strcat +0 132ac strcpy +0 132e1 strcmp +0 1331a strchr +0 13339 strstr +0 1337f tolower +0 13397 toupper +0 133af memmove +0 133f6 tan +0 1340d srand +0 13414 rand +0 13429 atof +0 134ee _atof +0 135b9 atoi +0 13631 _atoi +0 136b3 abs +0 136c8 fabs +0 136dd AddInt +0 137b8 AddFloat +0 138c6 AddString +0 1395d vsprintf +0 13af5 sscanf +0 13b60 Q_rand +0 13b75 Q_random +0 13b87 Q_crandom +0 13b98 VectorCompare +0 13bd0 VectorLength +0 13c03 VectorLengthSquared +0 13c2f Distance +0 13c70 DistanceSquared +0 13cbe VectorNormalizeFast +0 13d1d VectorInverse +0 13d45 CrossProduct +0 13dbe ClampChar +0 13dd5 ClampShort +0 13dec DirToByte +0 13e47 ByteToDir +0 13e65 ColorBytes3 +0 13ed4 ColorBytes4 +0 13f66 NormalizeColor +0 13fdc PlaneFromPoints +0 1409a RotatePointAroundVector +0 141a5 RotateAroundDirection +0 141e9 vectoangles +0 142a5 AnglesToAxis +0 142da AxisClear +0 14311 AxisCopy +0 14335 ProjectPointOnPlane +0 143f0 MakeNormalVectors +0 1449b VectorRotate +0 14538 Q_rsqrt +0 1456f Q_fabs +0 1457f LerpAngle +0 145b0 AngleSubtract +0 145d5 AnglesSubtract +0 14623 AngleMod +0 14635 AngleNormalize360 +0 14643 AngleNormalize180 +0 1465e AngleDelta +0 1466e SetPlaneSignbits +0 1469b BoxOnPlaneSide +0 14a5c RadiusFromBounds +0 14aaf ClearBounds +0 14ae6 AddPointToBounds +0 14b7f VectorNormalize +0 14bef VectorNormalize2 +0 14c7d _VectorMA +0 14cbf _DotProduct +0 14cf4 _VectorSubtract +0 14d2d _VectorAdd +0 14d66 _VectorCopy +0 14d8d _VectorScale +0 14dbd Vector4Scale +0 14dff Q_log2 +0 14e1e MatrixMultiply +0 14ff3 AngleVectors +0 150eb PerpendicularVector +0 15157 Rand_Init +0 1515e flrand +0 15199 irand +0 151cb powf +0 151ee GetIDForString +0 15233 GetStringForID +0 1526f Com_Clamp +0 15289 COM_SkipPath +0 152ad COM_StripExtension +0 152e3 COM_DefaultExtension +0 1532b ShortSwap +0 1534b ShortNoSwap +0 15356 LongSwap +0 15389 LongNoSwap +0 1538f Long64Swap +0 153cc Long64NoSwap +0 153d4 FloatSwap +0 153ea FloatNoSwap +0 153f1 COM_BeginParseSession +0 15403 COM_GetCurrentParseLine +0 15409 COM_Parse +0 15418 COM_ParseError +0 15438 COM_ParseWarning +0 15458 SkipWhitespace +0 1548f COM_Compress +0 155e2 COM_ParseExt +0 1572e COM_MatchToken +0 15757 SkipBracedSection +0 15795 SkipRestOfLine +0 157cd Parse1DMatrix +0 1580c Parse2DMatrix +0 15847 Parse3DMatrix +0 1588c Q_isprint +0 158a1 Q_islower +0 158b6 Q_isupper +0 158cb Q_isalpha +0 158ec Q_strrchr +0 15920 Q_strncpyz +0 1595b Q_stricmpn +0 159e6 Q_strncmp +0 15a38 Q_stricmp +0 15a60 Q_strlwr +0 15a86 Q_strupr +0 15aac Q_strcat +0 15ad8 Q_PrintStrlen +0 15b28 Q_CleanStr +0 15b8e Com_sprintf +0 15bcd va +0 15bfa Info_ValueForKey +0 15cda Info_NextPair +0 15d78 Info_RemoveKey +0 15e48 Info_RemoveKey_Big +0 15f18 Info_Validate +0 15f3f Info_SetValueForKey +0 1600f Info_SetValueForKey_Big +0 160d7 Q_irand +1 4 MonthAbbrev +1 34 skillLevels +1 48 numSkillLevels +1 4c netSources +1 58 numNetSources +1 5c serverFilters +1 6c teamArenaGameTypes +1 94 numTeamArenaGameTypes +1 98 numServerFilters +1 9c netnames +1 ac gamecodetoui +1 c8 uitogamecode +1 e4 uiSkinColor +1 130 frameCount +1 134 defaultMenu +1 138 handicapValues +1 18c updateModel +1 190 q3Model +1 5c8 gUISelectedMap +1 5d0 serverStatusCvars +1 6ac cvarTable +1 e0c cvarTableSize +1 e10 newUI +1 e14 uiForceSide +1 e18 uiForceRank +1 e1c uiMaxRank +1 e20 uiMaxPoints +1 e24 uiForceUsed +1 e28 uiForceAvailable +1 e2c gTouchedForce +1 e30 uiForcePowersRank +1 e78 uiForcePowerDarkLight +1 ec0 gCustRank +1 ec4 gCustSide +1 ec8 gCustPowersRank +1 f10 captureFunc +1 f14 captureData +1 f18 itemCapture +1 f1c DC +1 f20 g_waitingForKey +1 f24 g_editingField +1 f28 g_bindItem +1 f2c g_editItem +1 f30 menuCount +1 f34 openMenuCount +1 f38 debugMode +1 f3c lastListBoxClickTime +1 f40 itemFlags +1 f50 styles +1 f6c alignment +1 f7c types +1 fbc strPoolIndex +1 fc0 strHandleCount +1 fcc FPMessageTime +1 fd0 ui_deferredScriptItem +1 fd4 commandList +1 1094 scriptCommandCount +1 115c g_bindings +1 1a2c itemParseKeywords +1 1d8c menuParseKeywords +1 1f40 forceMasteryLevels +1 1f60 forceMasteryPoints +1 1f80 bgForcePowerCost +1 20a0 forcePowerSorted +1 20e8 forcePowerDarkLight +1 2130 WeaponReadyAnim +1 2170 WeaponAttackAnim +1 21b0 bg_itemlist +1 2a6c bg_numItems +1 2ac4 eventnames +1 2c9c bg_poolSize +1 2ca0 bg_poolTail +1 2ca4 WP_MuzzlePoint +1 2d64 weaponData +1 30e4 ammoData +1 310c randSeed +1 3180 vec3_origin +1 318c axisDefault +1 31b0 colorBlack +1 31c0 colorRed +1 31d0 colorGreen +1 31e0 colorBlue +1 31f0 colorYellow +1 3200 colorMagenta +1 3210 colorCyan +1 3220 colorWhite +1 3230 colorLtGrey +1 3240 colorMdGrey +1 3250 colorDkGrey +1 3260 colorLtBlue +1 3270 colorDkBlue +1 3280 g_color_table +1 3300 bytedirs +1 3ab8 holdrand +1 19b4 g_bindCount +2 0 holdSPString +2 4af664 _stackStart +2 4bf664 _stackEnd +3 8c40 k_language +3 8d50 s_language +3 8e60 ui_realWarmUp +3 8f70 ui_realCaptureLimit +3 9080 ui_recordSPDemo +3 9190 ui_hudFiles +3 92a0 ui_Q3Model +3 93b0 ui_findPlayer +3 94c0 ui_scoreCaptures +3 95d0 ui_teamName +3 96e0 ui_blueteam8 +3 97f0 ui_blueteam7 +3 9900 ui_blueteam6 +3 9a10 ui_blueteam5 +3 9b20 ui_blueteam4 +3 9c30 ui_blueteam3 +3 9d40 ui_blueteam2 +3 9e50 ui_blueteam1 +3 9f60 ui_blueteam +3 a070 ui_redteam8 +3 a180 ui_redteam7 +3 a290 ui_redteam6 +3 a3a0 ui_redteam5 +3 a4b0 ui_redteam4 +3 a5c0 ui_redteam3 +3 a6d0 ui_redteam2 +3 a7e0 ui_redteam1 +3 a8f0 ui_redteam +3 aa00 lastLoadingText +3 ae00 lastConnState +3 ae04 parsedFPMessage +3 b204 ui_rankChange +3 b314 startTime +3 b318 ui_initialized +3 b428 ui_debug +3 b538 uiInfo +3 22894 ui_serverStatusTimeOut +3 229a4 ui_bigFont +3 22ab4 ui_smallFont +3 22bc4 ui_scoreTime +3 22cd4 ui_scoreShutoutBonus +3 22de4 ui_scoreSkillBonus +3 22ef4 ui_scoreTimeBonus +3 23004 ui_scoreBase +3 23114 ui_scoreTeam +3 23224 ui_scorePerfect +3 23334 ui_scoreScore +3 23444 ui_scoreGauntlets +3 23554 ui_scoreAssists +3 23664 ui_scoreDefends +3 23774 ui_scoreExcellents +3 23884 ui_scoreImpressives +3 23994 ui_scoreAccuracy +3 23aa4 ui_singlePlayerActive +3 23bb4 ui_lastServerRefresh_3 +3 23cc4 ui_lastServerRefresh_2 +3 23dd4 ui_lastServerRefresh_1 +3 23ee4 ui_lastServerRefresh_0 +3 23ff4 ui_selectedPlayerName +3 24104 ui_selectedPlayer +3 24214 ui_currentOpponent +3 24324 ui_mapIndex +3 24434 ui_currentNetMap +3 24544 ui_currentMap +3 24654 ui_currentTier +3 24764 ui_menuFiles +3 24874 ui_opponentName +3 24984 ui_dedicated +3 24a94 ui_serverFilterType +3 24ba4 ui_netSource +3 24cb4 ui_joinGameType +3 24dc4 ui_actualNetGameType +3 24ed4 ui_netGameType +3 24fe4 ui_gameType +3 250f4 ui_fragLimit +3 25204 ui_captureLimit +3 25314 ui_cdkeychecked +3 25424 ui_server16 +3 25534 ui_server15 +3 25644 ui_server14 +3 25754 ui_server13 +3 25864 ui_server12 +3 25974 ui_server11 +3 25a84 ui_server10 +3 25b94 ui_server9 +3 25ca4 ui_server8 +3 25db4 ui_server7 +3 25ec4 ui_server6 +3 25fd4 ui_server5 +3 260e4 ui_server4 +3 261f4 ui_server3 +3 26304 ui_server2 +3 26414 ui_server1 +3 26524 ui_marks +3 26634 ui_drawCrosshairNames +3 26744 ui_drawCrosshair +3 26854 ui_browserShowEmpty +3 26964 ui_browserShowFull +3 26a74 ui_browserSortKey +3 26b84 ui_browserGameType +3 26c94 ui_browserMaster +3 26da4 ui_spSelection +3 26eb4 ui_spSkill +3 26fc4 ui_spVideos +3 270d4 ui_spAwards +3 271e4 ui_spScores5 +3 272f4 ui_spScores4 +3 27404 ui_spScores3 +3 27514 ui_spScores2 +3 27624 ui_spScores1 +3 27734 ui_botsFile +3 27844 ui_arenasFile +3 27954 ui_ctf_friendly +3 27a64 ui_ctf_timelimit +3 27b74 ui_ctf_capturelimit +3 27c84 ui_team_friendly +3 27d94 ui_team_timelimit +3 27ea4 ui_team_fraglimit +3 27fb4 ui_selectedModelIndex +3 280c4 ui_tourney_timelimit +3 281d4 ui_tourney_fraglimit +3 282e4 ui_ffa_timelimit +3 283f4 ui_ffa_fraglimit +3 28d04 m_entersound +3 28d08 uiForceStarShaders +3 28d50 ui_forcePowerDisable +3 28e60 ui_freeSaber +3 28f70 uiSaberColorShaders +3 2af98 menuParseKeywordHash +3 2b798 itemParseKeywordHash +3 2bf98 g_nameBind2 +3 2bfb8 g_nameBind1 +3 2bfd8 ui_deferredScript +3 2c7d8 strHandle +3 2e7d8 strPool +3 8e7d8 outOfMemory +3 8e7dc allocPoint +3 8e7e0 memoryPool +3 28e7e0 menuStack +3 28e820 Menus +3 2a3420 scrollInfo +3 2a3440 ui_arenaInfos +3 2a4440 ui_numArenas +3 2a4444 ui_botInfos +3 2a5444 ui_numBots +3 2a5448 bg_pool +3 4aee60 com_lines +3 4aee64 com_parsename +3 4af264 com_token diff --git a/CODE-mp/base/vm/ui.qvm b/CODE-mp/base/vm/ui.qvm new file mode 100644 index 0000000..9cc3c1d Binary files /dev/null and b/CODE-mp/base/vm/ui.qvm differ diff --git a/CODE-mp/cgame/cg_draw.c b/CODE-mp/cgame/cg_draw.c index 3df5c33..4718634 100644 --- a/CODE-mp/cgame/cg_draw.c +++ b/CODE-mp/cgame/cg_draw.c @@ -30,24 +30,24 @@ char teamChat2[256]; char *showPowersName[] = { - "HEAL2",//FP_HEAL - "JUMP2",//FP_LEVITATION - "SPEED2",//FP_SPEED - "PUSH2",//FP_PUSH - "PULL2",//FP_PULL - "MINDTRICK2",//FP_TELEPTAHY - "GRIP2",//FP_GRIP - "LIGHTNING2",//FP_LIGHTNING - "DARK_RAGE2",//FP_RAGE - "PROTECT2",//FP_PROTECT - "ABSORB2",//FP_ABSORB - "TEAM_HEAL2",//FP_TEAM_HEAL - "TEAM_REPLENISH2",//FP_TEAM_FORCE - "DRAIN2",//FP_DRAIN - "SEEING2",//FP_SEE - "SABER_OFFENSE2",//FP_SABERATTACK - "SABER_DEFENSE2",//FP_SABERDEFEND - "SABER_THROW2",//FP_SABERTHROW + "Heal",//FP_HEAL + "Jump",//FP_LEVITATION + "Speed",//FP_SPEED + "Push",//FP_PUSH + "Pull",//FP_PULL + "Mind Trick",//FP_TELEPTAHY + "Grip",//FP_GRIP + "Lightning",//FP_LIGHTNING + "Dark Rage",//FP_RAGE + "Protect",//FP_PROTECT + "Absorb",//FP_ABSORB + "Team Heal",//FP_TEAM_HEAL + "Team Replenish",//FP_TEAM_FORCE + "Drain",//FP_DRAIN + "Seeing",//FP_SEE + "Saber Attack",//FP_SABERATTACK + "Saber Defend",//FP_SABERDEFEND + "Saber Throw",//FP_SABERTHROW NULL }; @@ -1358,7 +1358,7 @@ void CG_DrawForceSelect( void ) if ( showPowersName[cg.forceSelect] ) { - UI_DrawProportionalString(320, y + 30, CG_GetStripEdString("INGAME", showPowersName[cg.forceSelect]), UI_CENTER | UI_SMALLFONT, colorTable[CT_ICON_BLUE]); + UI_DrawProportionalString(320, y + 30, showPowersName[cg.forceSelect], UI_CENTER | UI_SMALLFONT, colorTable[CT_ICON_BLUE]); } } @@ -1664,7 +1664,7 @@ static float CG_DrawMiniScoreboard ( float y ) Q_strcat ( temp, MAX_QPATH, " 2nd: " ); Q_strcat ( temp, MAX_QPATH, cgs.scores2==SCORE_NOT_PRESENT?"-":(va("%i",cgs.scores2)) ); - CG_Text_Paint( 630 - CG_Text_Width ( temp, 0.7f, FONT_SMALL ), y, 0.7f, colorWhite, temp, 0, 0, ITEM_TEXTSTYLE_SHADOWEDMORE, FONT_MEDIUM ); + CG_Text_Paint( 630 - CG_Text_Width ( temp, 0.75f, FONT_SMALL ), y, 0.75f, colorWhite, temp, 0, 0, ITEM_TEXTSTYLE_SHADOWEDMORE, FONT_MEDIUM ); y += 15; */ //rww - no longer doing this. Since the attacker now shows who is first, we print the score there. @@ -1698,16 +1698,13 @@ static float CG_DrawEnemyInfo ( float y ) if ( cgs.gametype == GT_JEDIMASTER ) { - //title = "Jedi Master"; - title = CG_GetStripEdString("INGAMETEXT", "MASTERY7"); + title = "Jedi Master"; clientNum = cgs.jediMaster; if ( clientNum < 0 ) { //return y; -// title = "Get Saber!"; - title = CG_GetStripEdString("INGAMETEXT", "GET_SABER"); - + title = "Get Saber!"; size = ICON_SIZE * 1.25; y += 5; @@ -1717,25 +1714,23 @@ static float CG_DrawEnemyInfo ( float y ) y += size; /* - CG_Text_Paint( 630 - CG_Text_Width ( ci->name, 0.7f, FONT_MEDIUM ), y, 0.7f, colorWhite, ci->name, 0, 0, 0, FONT_MEDIUM ); + CG_Text_Paint( 630 - CG_Text_Width ( ci->name, 0.75f, FONT_MEDIUM ), y, 0.75f, colorWhite, ci->name, 0, 0, 0, FONT_MEDIUM ); y += 15; */ - CG_Text_Paint( 630 - CG_Text_Width ( title, 0.7f, FONT_MEDIUM ), y, 0.7f, colorWhite, title, 0, 0, 0, FONT_MEDIUM ); + CG_Text_Paint( 630 - CG_Text_Width ( title, 0.75f, FONT_MEDIUM ), y, 0.75f, colorWhite, title, 0, 0, 0, FONT_MEDIUM ); return y + BIGCHAR_HEIGHT + 2; } } else if ( cg.snap->ps.duelInProgress ) { -// title = "Dueling"; - title = CG_GetStripEdString("INGAMETEXT", "DUELING"); + title = "Dueling"; clientNum = cg.snap->ps.duelIndex; } else if ( cgs.gametype == GT_TOURNAMENT && cgs.clientinfo[cg.snap->ps.clientNum].team != TEAM_SPECTATOR) { -// title = "Dueling"; - title = CG_GetStripEdString("INGAMETEXT", "DUELING"); + title = "Dueling"; if (cg.snap->ps.clientNum == cgs.duelist1) { clientNum = cgs.duelist2; @@ -1802,10 +1797,10 @@ static float CG_DrawEnemyInfo ( float y ) y += size; - CG_Text_Paint( 630 - CG_Text_Width ( ci->name, 0.7f, FONT_MEDIUM ), y, 0.7f, colorWhite, ci->name, 0, 0, 0, FONT_MEDIUM ); + CG_Text_Paint( 630 - CG_Text_Width ( ci->name, 0.75f, FONT_MEDIUM ), y, 0.75f, colorWhite, ci->name, 0, 0, 0, FONT_MEDIUM ); y += 15; - CG_Text_Paint( 630 - CG_Text_Width ( title, 0.7f, FONT_MEDIUM ), y, 0.7f, colorWhite, title, 0, 0, 0, FONT_MEDIUM ); + CG_Text_Paint( 630 - CG_Text_Width ( title, 0.75f, FONT_MEDIUM ), y, 0.75f, colorWhite, title, 0, 0, 0, FONT_MEDIUM ); return y + BIGCHAR_HEIGHT + 2; } @@ -3271,7 +3266,7 @@ CG_DrawSpectator static void CG_DrawSpectator(void) { const char* s; - s = CG_GetStripEdString("INGAMETEXT", "SPECTATOR"); + s = "SPECTATOR"; if (cgs.gametype == GT_TOURNAMENT && cgs.duelist1 != -1 && cgs.duelist2 != -1) @@ -3298,7 +3293,7 @@ static void CG_DrawSpectator(void) if ( cgs.gametype == GT_TOURNAMENT ) { - s = CG_GetStripEdString("INGAMETEXT", "WAITING_TO_PLAY"); // "waiting to play"; + s = "waiting to play"; CG_Text_Paint ( 320 - CG_Text_Width ( s, 1.0f, 3 ) / 2, 440, 1.0f, colorWhite, s, 0, 0, 0, 3 ); } else //if ( cgs.gametype >= GT_TEAM ) @@ -3514,8 +3509,7 @@ static qboolean CG_DrawFollow( void ) return qfalse; } -// s = "following"; - s = CG_GetStripEdString("INGAMETEXT", "FOLLOWING"); + s = "following"; CG_Text_Paint ( 320 - CG_Text_Width ( s, 1.0f, FONT_MEDIUM ) / 2, 60, 1.0f, colorWhite, s, 0, 0, 0, FONT_MEDIUM ); s = cgs.clientinfo[ cg.snap->ps.clientNum ].name; @@ -3607,8 +3601,7 @@ static void CG_DrawWarmup( void ) { } if ( sec < 0 ) { -// s = "Waiting for players"; - s = CG_GetStripEdString("INGAMETEXT", "WAITING_FOR_PLAYERS"); + s = "Waiting for players"; w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH; CG_DrawBigString(320 - w / 2, 24, s, 1.0F); cg.warmupCount = 0; @@ -3661,8 +3654,7 @@ static void CG_DrawWarmup( void ) { cg.warmup = 0; sec = 0; } -// s = va( "Starts in: %i", sec + 1 ); - s = va( "%s: %i",CG_GetStripEdString("INGAMETEXT", "STARTS_IN"), sec + 1 ); + s = va( "Starts in: %i", sec + 1 ); if ( sec != cg.warmupCount ) { cg.warmupCount = sec; switch ( sec ) { diff --git a/CODE-mp/cgame/cg_event.c b/CODE-mp/cgame/cg_event.c index 134311a..e37406f 100644 --- a/CODE-mp/cgame/cg_event.c +++ b/CODE-mp/cgame/cg_event.c @@ -1231,7 +1231,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { const char *strText = CG_GetStripEdString("INGAMETEXT", "PICKUPLINE"); //Com_Printf("%s %s\n", strText, showPowersName[index]); - CG_CenterPrint( va("%s %s\n", strText, CG_GetStripEdString("INGAME",showPowersName[index])), SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH ); + CG_CenterPrint( va("%s %s\n", strText, showPowersName[index]), SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH ); } //Show the player their force selection bar in case picking the holocron up changed the current selection diff --git a/CODE-mp/cgame/cg_info.c b/CODE-mp/cgame/cg_info.c index 57e1250..81ec063 100644 --- a/CODE-mp/cgame/cg_info.c +++ b/CODE-mp/cgame/cg_info.c @@ -152,8 +152,7 @@ void CG_DrawInformation( void ) { // pure server s = Info_ValueForKey( sysInfo, "sv_pure" ); if ( s[0] == '1' ) { - const char *psPure = CG_GetStripEdString("INGAMETEXT", "PURE_SERVER"); - UI_DrawProportionalString( 320, y, psPure, + UI_DrawProportionalString( 320, y, "Pure Server", UI_CENTER|UI_INFOFONT|UI_DROPSHADOW, colorWhite ); y += PROP_HEIGHT; } diff --git a/CODE-mp/cgame/cg_local.h b/CODE-mp/cgame/cg_local.h index 00db1a8..c06e173 100644 --- a/CODE-mp/cgame/cg_local.h +++ b/CODE-mp/cgame/cg_local.h @@ -76,8 +76,9 @@ #define TEAM_OVERLAY_MAXNAME_WIDTH 12 #define TEAM_OVERLAY_MAXLOCATION_WIDTH 16 -#define DEFAULT_MODEL "kyle" -#define DEFAULT_TEAM_MODEL "kyle" +#define DEFAULT_MODEL "kyle/default" +#define DEFAULT_TEAM_MODEL "kyle/default" +#define DEFAULT_TEAM_HEAD "kyle/default" #define DEFAULT_FORCEPOWERS "5-1-000000000000000000" //"rank-side-heal.lev.speed.push.pull.tele.grip.lightning.rage.protect.absorb.teamheal.teamforce.drain.see" diff --git a/CODE-mp/cgame/cg_scoreboard.c b/CODE-mp/cgame/cg_scoreboard.c index 74d2204..aa4f940 100644 --- a/CODE-mp/cgame/cg_scoreboard.c +++ b/CODE-mp/cgame/cg_scoreboard.c @@ -173,7 +173,7 @@ static void CG_DrawClientScore( int y, score_t *score, float *color, float fade, // add the "ready" marker for intermission exiting if ( cg.snap->ps.stats[ STAT_CLIENTS_READY ] & ( 1 << score->client ) ) { - CG_Text_Paint (SB_NAME_X - 64, y + 2, 0.7f * scale, colorWhite, CG_GetStripEdString("INGAMETEXT", "READY"),0, 0, ITEM_TEXTSTYLE_OUTLINED, FONT_MEDIUM ); + CG_Text_Paint (SB_NAME_X - 64, y + 2, 0.7f * scale, colorWhite, "READY" ,0, 0, ITEM_TEXTSTYLE_OUTLINED, FONT_MEDIUM ); } } @@ -371,10 +371,7 @@ qboolean CG_DrawOldScoreboard( void ) { CG_Text_Paint ( SB_NAME_X, y, 1.0f, colorWhite, "Name", 0, 0, ITEM_TEXTSTYLE_OUTLINED, FONT_MEDIUM ); if (cgs.gametype == GT_TOURNAMENT) { - char sWL[100]; - trap_SP_GetStringTextString("INGAMETEXT_W_L", sWL, sizeof(sWL)); - - CG_Text_Paint ( SB_SCORE_X, y, 1.0f, colorWhite, sWL, 0, 0, ITEM_TEXTSTYLE_OUTLINED, FONT_MEDIUM ); + CG_Text_Paint ( SB_SCORE_X, y, 1.0f, colorWhite, "W/L", 0, 0, ITEM_TEXTSTYLE_OUTLINED, FONT_MEDIUM ); } else { diff --git a/CODE-mp/cgame/vm/cgame.map b/CODE-mp/cgame/vm/cgame.map new file mode 100644 index 0000000..78ad754 --- /dev/null +++ b/CODE-mp/cgame/vm/cgame.map @@ -0,0 +1,1597 @@ +0 fffffed3 trap_CG_RegisterSharedMemory +0 fffffed4 trap_G2API_SetNewOrigin +0 fffffed5 trap_G2API_SetSurfaceOnOff +0 fffffed6 trap_G2API_SetRootSurface +0 fffffed7 trap_G2API_SetBoltInfo +0 fffffed8 trap_G2API_AddBolt +0 fffffed9 trap_G2API_RemoveGhoul2Model +0 fffffeda trap_G2API_HasGhoul2ModelOnIndex +0 fffffedb trap_G2API_DuplicateGhoul2Instance +0 fffffedc trap_G2API_CopySpecificGhoul2Model +0 fffffedd trap_G2API_CopyGhoul2Instance +0 fffffede trap_G2API_GetGLAName +0 fffffedf trap_G2API_SetBoneAnim +0 fffffee0 trap_G2API_SetBoneAngles +0 fffffee1 trap_G2API_CleanGhoul2Models +0 fffffee2 trap_G2API_InitGhoul2Model +0 fffffee3 trap_G2API_GetBoltMatrix_NoReconstruct +0 fffffee4 trap_G2API_GetBoltMatrix +0 fffffee5 trap_G2API_GiveMeVectorFromMatrix +0 fffffee6 trap_G2_HaveWeGhoul2Models +0 fffffee7 trap_G2_SetGhoul2ModelIndexes +0 fffffee8 trap_G2_ListModelBones +0 fffffee9 trap_G2_ListModelSurfaces +0 fffffeea trap_ROFF_Purge_Ent +0 fffffeeb trap_ROFF_Play +0 fffffeec trap_ROFF_Cache +0 fffffeed trap_ROFF_UpdateEntities +0 fffffeee trap_ROFF_Clean +0 fffffeef trap_SP_Register +0 fffffef0 trap_SP_GetStringTextString +0 fffffef1 trap_SP_Print +0 fffffef2 trap_FX_AddSprite +0 fffffef3 trap_FX_AddPrimitive +0 fffffef4 trap_FX_AddBezier +0 fffffef5 trap_FX_AddPoly +0 fffffef6 trap_FX_AdjustTime +0 fffffef7 trap_FX_FreeSystem +0 fffffef8 trap_FX_InitSystem +0 fffffef9 trap_FX_AddScheduledEffects +0 fffffefa trap_FX_PlayBoltedEffectID +0 fffffefb trap_FX_PlayEntityEffectID +0 fffffefc trap_FX_PlayEffectID +0 fffffefd trap_FX_PlaySimpleEffectID +0 fffffefe trap_FX_PlayEntityEffect +0 fffffeff trap_FX_PlayEffect +0 ffffff00 trap_FX_PlaySimpleEffect +0 ffffff01 trap_FX_RegisterEffect +0 ffffff02 trap_R_inPVS +0 ffffff03 trap_GetEntityToken +0 ffffff04 trap_CIN_SetExtents +0 ffffff05 trap_CIN_DrawCinematic +0 ffffff06 trap_CIN_RunCinematic +0 ffffff07 trap_CIN_StopCinematic +0 ffffff08 trap_CIN_PlayCinematic +0 ffffff09 trap_SnapVector +0 ffffff0a trap_RealTime +0 ffffff0b trap_S_StopBackgroundTrack +0 ffffff0c trap_PC_RemoveAllGlobalDefines +0 ffffff0d trap_PC_LoadGlobalDefines +0 ffffff0e trap_PC_SourceFileAndLine +0 ffffff0f trap_PC_ReadToken +0 ffffff10 trap_PC_FreeSource +0 ffffff11 trap_PC_LoadSource +0 ffffff12 trap_PC_AddGlobalDefine +0 ffffff13 trap_Key_GetKey +0 ffffff14 trap_Key_SetCatcher +0 ffffff15 trap_Key_GetCatcher +0 ffffff16 trap_Key_IsDown +0 ffffff17 trap_MemoryRemaining +0 ffffff1a trap_OpenUIMenu +0 ffffff1b trap_SetClientTurnExtent +0 ffffff1c trap_SetClientForceAngle +0 ffffff1d trap_SetUserCmdValue +0 ffffff1e trap_GetUserCmd +0 ffffff1f trap_GetCurrentCmdNumber +0 ffffff20 trap_GetServerCommand +0 ffffff21 trap_GetSnapshot +0 ffffff22 trap_GetCurrentSnapshotNumber +0 ffffff23 trap_GetGameState +0 ffffff24 trap_GetGlconfig +0 ffffff25 trap_FX_AddLine +0 ffffff26 trap_R_GetBModelVerts +0 ffffff27 trap_R_SetLightStyle +0 ffffff28 trap_R_GetLightStyle +0 ffffff29 trap_R_RemapShader +0 ffffff2a trap_R_DrawRotatePic2 +0 ffffff2b trap_R_DrawRotatePic +0 ffffff2c trap_R_LerpTag +0 ffffff2d trap_R_ModelBounds +0 ffffff2e trap_R_DrawStretchPic +0 ffffff2f trap_R_SetColor +0 ffffff30 trap_R_RenderScene +0 ffffff31 trap_R_AddAdditiveLightToScene +0 ffffff32 trap_R_AddLightToScene +0 ffffff33 trap_R_LightForPoint +0 ffffff34 trap_R_AddPolysToScene +0 ffffff35 trap_R_AddPolyToScene +0 ffffff36 trap_R_AddRefEntityToScene +0 ffffff37 trap_R_ClearScene +0 ffffff8e asin +0 ffffff8f acos +0 ffffff90 ceil +0 ffffff91 floor +0 ffffff92 perpendicularvector +0 ffffff93 anglevectors +0 ffffff94 matrixmultiply +0 ffffff95 sqrt +0 ffffff96 atan2 +0 ffffff97 cos +0 ffffff98 sin +0 ffffff99 strncpy +0 ffffff9a memcpy +0 ffffff9b memset +0 ffffffcb trap_AnyLanguage_ReadCharFromString +0 ffffffcc trap_R_Font_DrawString +0 ffffffcd trap_R_Font_HeightPixels +0 ffffffce trap_R_Font_StrLenChars +0 ffffffcf trap_R_Font_StrLenPixels +0 ffffffd0 trap_R_RegisterFont +0 ffffffd1 trap_R_RegisterShaderNoMip +0 ffffffd2 trap_R_RegisterShader +0 ffffffd3 trap_R_RegisterSkin +0 ffffffd4 trap_R_RegisterModel +0 ffffffd5 trap_R_LoadWorldMap +0 ffffffd6 trap_S_StartBackgroundTrack +0 ffffffd7 trap_S_RegisterSound +0 ffffffd8 trap_S_Respatialize +0 ffffffd9 trap_S_StopLoopingSound +0 ffffffda trap_S_AddRealLoopingSound +0 ffffffdb trap_S_UpdateEntityPosition +0 ffffffdc trap_S_AddLoopingSound +0 ffffffdd trap_S_ClearLoopingSounds +0 ffffffde trap_S_StartLocalSound +0 ffffffdf trap_S_StartSound +0 ffffffe0 trap_S_MuteSound +0 ffffffe1 trap_CM_MarkFragments +0 ffffffe2 trap_CM_TransformedCapsuleTrace +0 ffffffe3 trap_CM_TransformedBoxTrace +0 ffffffe4 trap_CM_CapsuleTrace +0 ffffffe5 trap_CM_BoxTrace +0 ffffffe6 trap_CM_TransformedPointContents +0 ffffffe7 trap_CM_PointContents +0 ffffffe8 trap_CM_TempCapsuleModel +0 ffffffe9 trap_CM_TempBoxModel +0 ffffffea trap_CM_InlineModel +0 ffffffeb trap_CM_NumInlineModels +0 ffffffec trap_CM_LoadMap +0 ffffffed trap_UpdateScreen +0 ffffffee trap_SendClientCommand +0 ffffffef trap_RemoveCommand +0 fffffff0 trap_AddCommand +0 fffffff1 trap_SendConsoleCommand +0 fffffff2 trap_FS_FCloseFile +0 fffffff3 trap_FS_Write +0 fffffff4 trap_FS_Read +0 fffffff5 trap_FS_FOpenFile +0 fffffff6 trap_Args +0 fffffff7 trap_Argv +0 fffffff8 trap_Argc +0 fffffff9 trap_Cvar_VariableStringBuffer +0 fffffffa trap_Cvar_Set +0 fffffffb trap_Cvar_Update +0 fffffffc trap_Cvar_Register +0 fffffffd trap_Milliseconds +0 fffffffe trap_Error +0 ffffffff trap_Print +0 0 vmMain +0 122 C_PointContents +0 138 C_GetLerpOrigin +0 14a C_GetLerpAngles +0 15c C_GetModelScale +0 16e C_Trace +0 19a C_GetBoltPos +0 20d C_ImpactMark +0 24c CG_RegisterCvars +0 332 CG_ForceModelChange +0 368 CG_UpdateCvars +0 3bb CG_CrosshairPlayer +0 3d4 CG_LastAttacker +0 3e5 CG_Printf +0 3fe CG_Error +0 417 Com_Error +0 432 Com_Printf +0 44d CG_Argv +0 45c CG_RegisterItemSounds +0 4f5 CG_RegisterSounds +0 a8e CG_RegisterEffects +0 abc CG_RegisterGraphics +0 1137 CG_GetStripEdString +0 1167 CG_BuildSpectatorString +0 11bb CG_RegisterClients +0 1206 CG_ConfigString +0 1227 CG_StartMusic +0 126a CG_GetMenuBuffer +0 12ce CG_Asset_Parse +0 156d CG_ParseMenu +0 15d8 CG_Load_Menu +0 1628 CG_OwnerDrawHandleKey +0 162d CG_FeederCount +0 1689 CG_SetScoreSelection +0 1720 CG_InfoFromScoreIndex +0 1773 CG_FeederItemText +0 18e3 CG_FeederItemImage +0 18e8 CG_FeederSelection +0 1933 CG_Cvar_Get +0 1952 CG_Text_PaintWithCursor +0 1976 CG_OwnerDrawWidth +0 1a07 CG_PlayCinematic +0 1a26 CG_StopCinematic +0 1a2f CG_DrawCinematic +0 1a4e CG_RunCinematicFrame +0 1a57 CG_LoadHudMenu +0 1af2 CG_AssetCache +0 1b9f CG_Init_CG +0 1bab CG_Init_CGents +0 1bb7 CG_InitItems +0 1bc3 CG_Init +0 1f8c CG_Shutdown +0 1f98 CG_NextForcePower_f +0 1fdc CG_PrevForcePower_f +0 2020 CG_NextInventory_f +0 206a CG_PrevInventory_f +0 20b4 CG_TargetCommand_f +0 20e6 CG_SizeUp_f +0 20fc CG_SizeDown_f +0 2112 CG_Viewpos_f +0 212c CG_ScoresDown_f +0 2151 CG_ScoresUp_f +0 215f CG_scrollScoresDown_f +0 2188 CG_scrollScoresUp_f +0 21b1 CG_spWin_f +0 21e6 CG_spLose_f +0 221b CG_TellTarget_f +0 2246 CG_TellAttacker_f +0 2271 CG_VoiceTellTarget_f +0 229c CG_VoiceTellAttacker_f +0 22c7 CG_NextTeamMember_f +0 22cd CG_PrevTeamMember_f +0 22d3 CG_NextOrder_f +0 2346 CG_ConfirmOrder_f +0 2376 CG_DenyOrder_f +0 2397 CG_TaskOffense_f +0 23ce CG_TaskDefense_f +0 23ed CG_TaskPatrol_f +0 240c CG_TaskCamp_f +0 242b CG_TaskFollow_f +0 244a CG_TaskRetrieve_f +0 2469 CG_TaskEscort_f +0 2488 CG_TaskOwnFlag_f +0 2499 CG_TauntKillInsult_f +0 24a1 CG_TauntPraise_f +0 24a9 CG_TauntTaunt_f +0 24b1 CG_TauntDeathInsult_f +0 24b9 CG_TauntGauntlet_f +0 24c1 CG_TaskSuicide_f +0 24e3 CG_StartOrbit_f +0 252b CG_ConsoleCommand +0 2569 CG_InitConsoleCommands +0 268f MenuFontToHandle +0 26b6 CG_Text_Width +0 26d4 CG_Text_Height +0 26ef CG_Text_Paint +0 275f CG_DrawZoomMask +0 2ab7 CG_Draw3DModel +0 2b25 CG_DrawHead +0 2b5e CG_DrawFlagModel +0 2c43 DrawAmmo +0 2c4c CG_DrawHUDLeftFrame1 +0 2c6c CG_DrawHUDLeftFrame2 +0 2c8c DrawHealthArmor +0 2ef2 CG_DrawHealth +0 2f99 CG_DrawArmor +0 30e0 CG_DrawHUDRightFrame1 +0 3100 CG_DrawHUDRightFrame2 +0 3120 CG_DrawAmmo +0 3286 CG_DrawForcePower +0 3322 CG_DrawHUD +0 35af ForcePower_Valid +0 35dc CG_DrawForceSelect +0 3827 CG_DrawInvenSelect +0 3ac2 CG_DrawStats +0 3ad6 CG_DrawTeamBackground +0 3b13 CG_DrawMiniScoreboard +0 3ba0 CG_DrawEnemyInfo +0 3d3e CG_DrawSnapshot +0 3d7e CG_DrawFPS +0 3e0b CG_DrawTimer +0 3e73 CG_DrawTeamOverlay +0 41b2 CG_DrawPowerupIcons +0 4296 CG_DrawUpperRight +0 4302 CG_AddLagometerFrameInfo +0 4322 CG_AddLagometerSnapshotInfo +0 4365 CG_DrawDisconnect +0 443e CG_DrawLagometer +0 464d CG_CenterPrint +0 468b CG_DrawCenterString +0 476d CG_DrawCrosshair +0 496d CG_WorldCoordToScreenCoordFloat +0 4a16 CG_WorldCoordToScreenCoord +0 4a37 CG_SaberClashFlare +0 4b09 CG_DrawHolocronIcons +0 4b93 CG_IsDurationPower +0 4bbc CG_DrawActivePowers +0 4c82 CG_DrawRocketLocking +0 4e3a CG_ScanForCrosshairEntity +0 4f89 CG_DrawCrosshairNames +0 5032 CG_DrawSpectator +0 51a1 CG_DrawVote +0 5212 CG_DrawTeamVote +0 5362 CG_DrawScoreboard +0 536c CG_DrawIntermission +0 537b CG_DrawFollow +0 53fd CG_DrawAmmoWarning +0 5400 CG_DrawWarmup +0 5604 CG_DrawTimedMenus +0 5625 CG_DrawFlagStatus +0 56f7 CG_Draw2D +0 5d04 CG_DrawTourneyScoreboard +0 5d07 CG_DrawActive +0 5d92 CG_DrawRect +0 5dc4 CG_GetColorForHealth +0 5e62 CG_DrawSides +0 5eb8 CG_DrawTopBottom +0 5f0e CG_FillRect2 +0 5f3d CG_FillRect +0 5f6c CG_DrawPic +0 5f93 CG_DrawRotatePic +0 5fbd CG_DrawRotatePic2 +0 5fe7 CG_DrawChar +0 604e CG_DrawStringExt +0 615a CG_DrawBigString +0 6192 CG_DrawBigStringColor +0 61b8 CG_DrawSmallString +0 61ec CG_DrawSmallStringColor +0 620d CG_DrawStrlen +0 6255 CG_TileClearBox +0 629c CG_TileClear +0 6333 CG_FadeColor +0 6377 CG_ColorForGivenHealth +0 63c6 CG_ColorForHealth +0 642b CG_DrawNumField +0 665b UI_DrawProportionalString +0 66e4 UI_DrawScaledProportionalString +0 675b CG_BubbleTrail +0 68f9 CG_SmokePuff +0 6a5c CG_TestLine +0 6b2d CG_ThrowChunk +0 6be0 CG_DoGlassQuad +0 6d4d CG_CalcBiLerp +0 734a CG_CalcHeightWidth +0 74f7 CG_InitGlass +0 754e Vector2Set +0 755d CG_DoGlass +0 77d9 CG_GlassShatter +0 7811 CG_GlassShatter_Old +0 79a7 CG_CreateDebris +0 7bc4 CG_ScorePlum +0 7c8c CG_ExplosionEffects +0 7cd2 CG_MakeExplosion +0 7e91 CG_SurfaceExplosion +0 8136 CG_Bleed +0 819d CG_LaunchGib +0 821c CG_GibPlayer +0 84ab CG_LaunchExplode +0 852a CG_BigExplode +0 8684 CG_PositionEntityOnTag +0 8758 CG_PositionRotatedEntityOnTag +0 8829 CG_SetEntitySoundPosition +0 8886 CG_EntityEffects +0 897a FX_AddOrientedLine +0 8a42 FX_DrawPortableShield +0 8b56 CG_Special +0 8b79 CG_SetGhoul2Info +0 8ba2 CG_CreateBBRefEnts +0 8ba5 G2_BoltToGhoul2Model +0 8c56 ScaleModelAxis +0 8d5e CG_General +0 9b00 CG_Speaker +0 9b71 CG_GreyItem +0 9b9e CG_Item +0 a276 CG_Missile +0 a637 CG_Mover +0 a6b1 CG_Beam +0 a6e5 CG_Portal +0 a75c CG_AdjustPositionForMover +0 a813 LerpBoneAngleOverrides +0 a816 CG_InterpolateEntityPosition +0 a8dc CG_CalcEntityLerpPositions +0 a981 CG_TeamBase +0 a9d1 CG_AddCEntity +0 aa86 CG_ManualEntityRender +0 aa8f CG_AddPacketEntities +0 ab78 CG_ROFF_NotetrackCallback +0 ae52 CG_PlaceString +0 af6e CG_Obituary +0 b2cf CG_ToggleBinoculars +0 b339 CG_UseItem +0 b3ec CG_ItemPickup +0 b507 CG_PainEvent +0 b562 CG_ReattachLimb +0 b5da CG_BodyQueueCopy +0 b7b8 CG_TeamName +0 b7d5 CG_PrintCTFMessage +0 b8f1 CG_GetCTFMessageEvent +0 b932 DoFall +0 ba00 CG_InClientBitflags +0 ba4f CG_EntityEvent +0 d308 CG_CheckEvents +0 d39e CG_LoadingString +0 d3ae CG_LoadingItem +0 d3c9 CG_LoadingClient +0 d3f6 CG_DrawInformation +0 da64 CG_LoadBar +0 db22 CG_ClearLightStyles +0 db44 CG_RunLightStyles +0 dc0e CG_SetLightstyle +0 dc99 CG_InitLocalEntities +0 dccf CG_FreeLocalEntity +0 dd08 CG_AllocLocalEntity +0 dd46 CG_BloodTrail +0 ddbb CG_FragmentBounceMark +0 de5e CG_FragmentBounceSound +0 de77 CG_ReflectVelocity +0 df6d CG_AddFragment +0 e0e8 CG_AddFadeRGB +0 e1ba CG_AddFadeScaleModel +0 e371 CG_AddMoveScaleFade +0 e45c CG_AddPuff +0 e568 CG_AddScaleFade +0 e601 CG_AddFallScaleFade +0 e6b3 CG_AddExplosion +0 e724 CG_AddSpriteExplosion +0 e7f0 CG_AddRefEntity +0 e80b CG_AddScorePlum +0 ea41 CG_AddOLine +0 eb65 CG_AddLine +0 eb78 CG_AddLocalEntities +0 ec28 CG_InitMarkPolys +0 ec5e CG_FreeMarkPoly +0 ec97 CG_AllocMark +0 ecee CG_ImpactMark +0 efc8 CG_AddMarks +0 f292 CG_ClearParticles +0 f335 CG_AddParticleToScene +0 10b51 CG_AddParticles +0 10d56 CG_ParticleSnowFlurry +0 10ef2 CG_ParticleSnow +0 11048 CG_ParticleBubble +0 111c7 CG_ParticleSmoke +0 112c6 CG_ParticleBulletDebris +0 11387 CG_ParticleExplosion +0 11492 CG_AddParticleShrapnel +0 11495 CG_NewParticleArea +0 115d6 CG_SnowLink +0 1161c CG_ParticleImpactSmokePuff +0 116ff CG_Particle_Bleed +0 117e3 CG_Particle_OilParticle +0 118e5 CG_Particle_OilSlick +0 11a26 CG_OilSlickRemove +0 11a71 ValidBloodPool +0 11b77 CG_BloodPool +0 11c70 CG_ParticleBloodCloud +0 11dac CG_ParticleSparks +0 11f22 CG_ParticleDust +0 12128 CG_ParticleMisc +0 121c8 CG_CustomSound +0 12236 CG_NeedAnimSequence +0 1226b CG_RegisterClientModelname +0 127bb CG_ColorFromString +0 1281f CG_LoadClientInfo +0 12b11 CG_CopyClientInfoModel +0 12c40 CG_ScanForExistingClientInfo +0 12cfe CG_SetDeferredClientInfo +0 12e28 CG_NewClientInfo +0 13218 CG_ActualLoadDeferredPlayers +0 13260 CG_LoadDeferredPlayers +0 13266 CG_InRoll +0 13290 CG_InRollAnim +0 132b2 CG_SetLerpFrameAnimation +0 1371a CG_FirstAnimFrame +0 1375d CG_InWalkingAnim +0 137b4 CG_FootstepForSurface +0 1384e CG_FootStep +0 138cc CG_RunLerpFrame +0 13d75 CG_ClearLerpFrame +0 13dba CG_PlayerAnimation +0 13ea0 CG_SwingAngles +0 13faa CG_SwingAnglesATST +0 140db CG_AddPainTwitch +0 14122 CG_G2SetBoneAngles +0 14159 CG_G2ClientSpineAngles +0 14497 CG_G2PlayerAngles +0 14a88 CG_HasteTrail +0 14b05 CG_PlayerFlag +0 14c22 CG_PlayerPowerups +0 14cf0 CG_PlayerFloatSprite +0 14d3c CG_PlayerShadow +0 14df9 CG_PlayerSplash +0 14eec CG_ForcePushBlur +0 14feb CG_ForceGripEffect +0 15108 CG_AddRefEntityWithPowerups +0 15176 CG_PlayerShieldHit +0 151ea CG_DrawPlayerShield +0 1529e CG_PlayerHitFX +0 152c9 CG_LightVerts +0 153f9 CG_DoSaber +0 1561a CG_GetTagWorldPosition +0 156e3 CG_CreateSaberMarks +0 159e2 CG_AddSaberBlade +0 1605f CG_IsMindTricked +0 160b1 CG_DrawPlayerSphere +0 1614e CG_AddLightningBeam +0 162f1 CG_AddRandomLightning +0 163e7 CG_ThereIsAMaster +0 16412 CG_Player +0 182e9 CG_ResetPlayerEntity +0 1844e CG_CheckAmmo +0 18451 CG_DamageFeedback +0 18594 CG_Respawn +0 185a5 CG_CheckPlayerstateEvents +0 18687 CG_CheckChangedPredictableEvents +0 18714 CG_CheckLocalSounds +0 1890c CG_TransitionPlayerState +0 189c2 CG_BuildSolidList +0 18a51 CG_ClipMoveToEntities +0 18b62 CG_Trace +0 18ba6 CG_PointContents +0 18c16 CG_InterpolatePlayerState +0 18d4b CG_TouchItem +0 18e3d CG_TouchTriggerPrediction +0 18ef4 CG_EntityStateToPlayerState +0 1908e CG_PredictPlayerState +0 19409 CGSagaGetValueGroup +0 19504 CGSagaGetPairedValue +0 196dc CG_InitSagaMode +0 1976f CG_SagaRoundOver +0 19846 CG_SagaObjectiveCompleted +0 19969 CG_DrawClientScore +0 19c25 CG_TeamScoreboard +0 19ca2 CG_GetTeamCount +0 19ce4 CG_DrawOldScoreboard +0 1a2cc CG_ValidOrder +0 1a2fe CG_ParseScores +0 1a532 CG_ParseTeamInfo +0 1a601 CG_ParseServerinfo +0 1a7be CG_ParseWarmup +0 1a7dd CG_SetConfigValues +0 1a8f9 CG_ShaderStateChanged +0 1a9b1 CG_ConfigStringModified +0 1ac68 CG_AddToTeamChat +0 1ade3 CG_KillCEntityInstances +0 1aef4 CG_MapRestart +0 1af7e CG_ParseVoiceChats +0 1b1e1 CG_LoadVoiceChats +0 1b243 CG_HeadModelVoiceChats +0 1b2dd CG_GetVoiceChat +0 1b351 CG_VoiceChatListForClient +0 1b36d CG_PlayVoiceChat +0 1b3e7 CG_PlayBufferedVoiceChats +0 1b415 CG_AddBufferedVoiceChat +0 1b454 CG_VoiceChatLocal +0 1b506 CG_VoiceChat +0 1b59f CG_RemoveChatEscapeChar +0 1b5e5 CG_CheckSVStripEdRef +0 1b712 CG_ServerCommand +0 1ba31 CG_ExecuteNewServerCommands +0 1ba58 CG_ResetEntity +0 1ba9c CG_TransitionEntity +0 1bac9 CG_SetInitialSnapshot +0 1bb8a CG_TransitionSnapshot +0 1bc90 CG_SetNextSnap +0 1bd77 CG_ReadNextSnapshot +0 1bde6 CG_ProcessSnapshots +0 1be96 CreepToPosition +0 1c063 TurretClientRun +0 1c365 CG_TestModel_f +0 1c3f0 CG_TestGun_f +0 1c3fc CG_TestModelNextFrame_f +0 1c412 CG_TestModelPrevFrame_f +0 1c42f CG_TestModelNextSkin_f +0 1c445 CG_TestModelPrevSkin_f +0 1c462 CG_AddTestModel +0 1c4ed CG_CalcVrect +0 1c55a CG_StepOffset +0 1c57c CG_CalcIdealThirdPersonViewTarget +0 1c5bc CG_CalcIdealThirdPersonViewLocation +0 1c5f5 CG_ResetThirdPersonViewDamp +0 1c662 CG_UpdateThirdPersonTargetDamp +0 1c6e9 CG_UpdateThirdPersonCameraDamp +0 1c7af CG_OffsetThirdPersonView +0 1c8d5 CG_OffsetFirstPersonView +0 1cb02 CG_ZoomDown_f +0 1cb12 CG_ZoomUp_f +0 1cb22 CG_CalcFOVFromX +0 1cb5d CG_CalcFov +0 1ccda CG_DamageBlendBlob +0 1cf22 CheckOutOfConstrict +0 1cf8d CG_CalcViewValues +0 1d0b4 CG_PowerupTimerSounds +0 1d0f4 CG_AddBufferedSound +0 1d11e CG_PlayBufferedSounds +0 1d157 CG_UpdateSoundTrackers +0 1d1b0 CG_SE_UpdateShake +0 1d293 CG_SE_UpdateMusic +0 1d2fc CG_CalcScreenEffects +0 1d309 CGCam_Shake +0 1d31f CGCam_SetMusicMult +0 1d33e CG_DrawActiveFrame +0 1d558 CG_RegisterWeapon +0 1e0a5 CG_SetGhoul2InfoRef +0 1e0e2 CG_RegisterItemVisuals +0 1e244 CG_MapTorsoToWeaponFrame +0 1e346 CG_CalculateWeaponPosition +0 1e42b CG_LightningBolt +0 1e450 CG_AddWeaponWithPowerups +0 1e47f CG_AddPlayerWeapon +0 1e984 CG_AddViewWeapon +0 1eb35 CG_DrawIconBackground +0 1ed0c CG_WeaponCheck +0 1ed45 CG_WeaponSelectable +0 1eda6 CG_DrawWeaponSelect +0 1f0f6 CG_NextWeapon_f +0 1f15c CG_PrevWeapon_f +0 1f1c2 CG_Weapon_f +0 1f2ed CG_OutOfAmmoChange +0 1f336 CG_FireATST +0 1f354 CG_GetClientWeaponMuzzleBoltPoint +0 1f3ca CG_FireWeapon +0 1f592 CG_MissileHitWall +0 1f672 CG_MissileHitPlayer +0 1f76b CG_Tracer +0 1f978 CG_CalcMuzzlePoint +0 1fb66 CG_InitG2Weapons +0 1fbf2 CG_ShutDownG2Weapons +0 1fc0c CG_CopyG2WeaponInstance +0 1fc43 CG_CheckPlayerG2Weapons +0 1fd67 FX_BlasterProjectileThink +0 1fd89 FX_BlasterAltFireThink +0 1fdab FX_BlasterWeaponHitWall +0 1fdba FX_BlasterWeaponHitPlayer +0 1fddb FX_BowcasterProjectileThink +0 1fdfd FX_BowcasterHitWall +0 1fe0c FX_BowcasterHitPlayer +0 1fe1b FX_BowcasterAltProjectileThink +0 1fe3d FX_BryarProjectileThink +0 1fe5f FX_BryarHitWall +0 1fe6e FX_BryarHitPlayer +0 1fe8f FX_BryarAltProjectileThink +0 1fed1 FX_BryarAltHitWall +0 1ff15 FX_BryarAltHitPlayer +0 1ff36 FX_TurretProjectileThink +0 1ff58 FX_TurretHitWall +0 1ff67 FX_TurretHitPlayer +0 1ff88 FX_DEMP2_ProjectileThink +0 1ffaa FX_DEMP2_HitWall +0 1ffb9 FX_DEMP2_HitPlayer +0 1ffc8 FX_DEMP2_AltBeam +0 1ffcb FX_DEMP2_AltDetonate +0 2003d FX_DisruptorMainShot +0 20074 FX_DisruptorAltShot +0 200e1 FX_DisruptorAltMiss +0 201bd FX_DisruptorAltHit +0 201cc FX_DisruptorHitWall +0 201db FX_DisruptorHitPlayer +0 201ea FX_FlechetteProjectileThink +0 2020c FX_FlechetteWeaponHitWall +0 2021b FX_FlechetteWeaponHitPlayer +0 2022a FX_FlechetteAltProjectileThink +0 2024c FX_RepeaterProjectileThink +0 2026e FX_RepeaterHitWall +0 2027d FX_RepeaterHitPlayer +0 2028c FX_RepeaterAltProjectileThink +0 202ae FX_RepeaterAltHitWall +0 202bd FX_RepeaterAltHitPlayer +0 202cc FX_RocketProjectileThink +0 202ee FX_RocketHitWall +0 202fd FX_RocketHitPlayer +0 2030c FX_RocketAltProjectileThink +0 2032e FX_ForceDrained +0 20365 PM_SlideMove +0 20755 PM_StepSlideMove +0 20aa4 BG_InSpecialJump +0 20ac9 BG_InSaberStandAnim +0 20aef BG_DirectFlippingAnim +0 20b0e BG_SaberInAttack +0 20b3b BG_SaberInSpecial +0 20b58 BG_SaberInIdle +0 20b75 BG_FlippingAnim +0 20bbd BG_SpinningSaberAnim +0 20cd5 BG_SaberInSpecialAttack +0 20cfe BG_InRoll +0 20d24 BG_InDeathAnim +0 20d49 PM_SaberInParry +0 20d5e PM_SaberInReflect +0 20d73 PM_SaberInStart +0 20d88 PM_InSaberAnim +0 20d9f PM_InKnockDown +0 20dcc PM_PainAnim +0 20deb PM_JumpingAnim +0 20e0a PM_LandingAnim +0 20e51 PM_SpinningAnim +0 20e5e PM_InOnGroundAnim +0 20ebb PM_InRollComplete +0 20ee1 PM_AnimLength +0 20f0e PM_DebugLegsAnim +0 20f59 BG_ParseAnimationFile +0 210d1 PM_StartLegsAnim +0 21156 PM_ContinueLegsAnim +0 21176 PM_ForceLegsAnim +0 211e6 PM_StartTorsoAnim +0 21241 PM_SetLegsAnimTimer +0 2125f PM_SetTorsoAnimTimer +0 2127d BG_SaberStartTransAnim +0 212cc PM_SetAnimFinal +0 21508 PM_SetAnim +0 21581 PM_GetSaberStance +0 2159e PM_DoSlowFall +0 215c1 PM_AddEvent +0 215d0 PM_AddEventWithParm +0 215e0 PM_AddTouchEnt +0 21635 PM_ClipVelocity +0 216ae PM_Friction +0 217aa PM_Accelerate +0 21826 PM_CmdScale +0 218bd PM_SetMovementDir +0 21a09 PM_ForceJumpingUp +0 21ac8 PM_JumpForDir +0 21b6b PM_SetPMViewAngle +0 21bac PM_AdjustAngleForWallRun +0 21db0 PM_CheckJump +0 22b4c PM_CheckWaterJump +0 22c33 PM_WaterJumpMove +0 22c74 PM_WaterMove +0 22da5 PM_FlyMove +0 22e30 PM_AirMove +0 22ef3 PM_WalkMove +0 23195 PM_DeadMove +0 2320e PM_NoclipMove +0 23380 PM_FootstepForSurface +0 23399 PM_TryRoll +0 235aa PM_CrashLand +0 238bb PM_CorrectAllSolid +0 239a2 PM_GroundTraceMissed +0 23b0d PM_GroundTrace +0 23ca0 PM_SetWaterLevel +0 23d6d PM_CheckDuck +0 23f43 PM_Use +0 23f8c PM_RunningAnim +0 23fba PM_Footsteps +0 24231 PM_WaterEvents +0 24288 PM_BeginWeaponChange +0 242ee PM_FinishWeaponChange +0 24341 PM_DoChargedWeapons +0 2481b PM_ItemUsable +0 24a46 PM_Weapon +0 25373 PM_Animate +0 253d1 PM_DropTimers +0 2545b PM_UpdateViewAngles +0 254ff PM_AdjustAttackStates +0 25877 BG_CmdForRoll +0 258cc BG_AdjustClientSpeed +0 25c7f PmoveSingle +0 260f5 Pmove +0 261a1 swapfunc +0 26228 med3 +0 262ab qsort +0 26664 strlen +0 2667f strcat +0 266c2 strcpy +0 266f7 strcmp +0 26730 strchr +0 2674f strstr +0 26795 tolower +0 267ad toupper +0 267c5 memmove +0 2680c tan +0 26823 srand +0 2682a rand +0 2683f atof +0 26904 _atof +0 269cf atoi +0 26a47 _atoi +0 26ac9 abs +0 26ade fabs +0 26af3 AddInt +0 26bce AddFloat +0 26cdc AddString +0 26d73 vsprintf +0 26f0b sscanf +0 26f76 BG_LegalizedForcePowers +0 27343 vectoyaw +0 2739d BG_HasYsalamiri +0 273cc BG_CanUseFPNow +0 27433 BG_FindItemForPowerup +0 2746f BG_FindItemForHoldable +0 274a9 BG_FindItemForWeapon +0 274dc BG_FindItem +0 27505 BG_PlayerTouchesItem +0 27565 BG_ProperForceIndex +0 27588 BG_CycleForce +0 27660 BG_GetItemIndexByTag +0 27690 BG_CycleInven +0 276fc BG_CanItemBeGrabbed +0 278f9 BG_EvaluateTrajectory +0 27ac7 BG_EvaluateTrajectoryDelta +0 27bc1 BG_AddPredictableEventToPlayerstate +0 27bfc BG_TouchJumpPad +0 27c60 BG_PlayerStateToEntityState +0 27f6b BG_PlayerStateToEntityStateExtraPolate +0 28283 BG_SwingAngles +0 28388 BG_AddPainTwitch +0 283c9 BG_G2PlayerAngles +0 28566 BG_Alloc +0 285a6 BG_AllocUnaligned +0 285d9 BG_TempAlloc +0 28611 BG_TempFree +0 2863e BG_StringAlloc +0 28661 BG_OutOfMemory +0 28673 PM_irand_timesync +0 286a8 BG_ForcePowerDrain +0 28766 PM_AttackMoveForQuad +0 2879b PM_SaberAnimTransitionAnim +0 28880 PM_SaberMoveQuadrantForMovement +0 288e5 PM_SaberInBounce +0 2890a PM_SaberInTransition +0 2891f PM_SaberKataDone +0 28965 PM_SetAnimFrame +0 2896f PM_SaberLockBreak +0 28c38 PM_SaberLocked +0 28e5c PM_SaberInBrokenParry +0 28e71 PM_BrokenParryForParry +0 28eb3 PM_CanBackstab +0 28f34 PM_SaberFlipOverAttackMove +0 29035 PM_SomeoneInFront +0 290c5 PM_SaberLungeAttackMove +0 2910f PM_SaberJumpAttackMove +0 2917c PM_GroundDistance +0 291e5 PM_SaberAttackForMovement +0 29339 PM_WeaponLightsaber +0 29b41 PM_SetSaberMove +0 29d0e Q_rand +0 29d23 Q_random +0 29d35 Q_crandom +0 29d46 VectorCompare +0 29d7e VectorLength +0 29db1 VectorLengthSquared +0 29ddd Distance +0 29e1e DistanceSquared +0 29e6c VectorNormalizeFast +0 29ecb VectorInverse +0 29ef3 CrossProduct +0 29f6c ClampChar +0 29f83 ClampShort +0 29f9a DirToByte +0 29ff5 ByteToDir +0 2a013 ColorBytes3 +0 2a082 ColorBytes4 +0 2a114 NormalizeColor +0 2a18a PlaneFromPoints +0 2a248 RotatePointAroundVector +0 2a353 RotateAroundDirection +0 2a397 vectoangles +0 2a453 AnglesToAxis +0 2a488 AxisClear +0 2a4bf AxisCopy +0 2a4e3 ProjectPointOnPlane +0 2a59e MakeNormalVectors +0 2a649 VectorRotate +0 2a6e6 Q_rsqrt +0 2a71d Q_fabs +0 2a72d LerpAngle +0 2a75e AngleSubtract +0 2a783 AnglesSubtract +0 2a7d1 AngleMod +0 2a7e3 AngleNormalize360 +0 2a7f1 AngleNormalize180 +0 2a80c AngleDelta +0 2a81c SetPlaneSignbits +0 2a849 BoxOnPlaneSide +0 2ac0a RadiusFromBounds +0 2ac5d ClearBounds +0 2ac94 AddPointToBounds +0 2ad2d VectorNormalize +0 2ad9d VectorNormalize2 +0 2ae2b _VectorMA +0 2ae6d _DotProduct +0 2aea2 _VectorSubtract +0 2aedb _VectorAdd +0 2af14 _VectorCopy +0 2af3b _VectorScale +0 2af6b Vector4Scale +0 2afad Q_log2 +0 2afcc MatrixMultiply +0 2b1a1 AngleVectors +0 2b299 PerpendicularVector +0 2b305 Rand_Init +0 2b30c flrand +0 2b347 irand +0 2b379 powf +0 2b39c GetIDForString +0 2b3e1 GetStringForID +0 2b41d Com_Clamp +0 2b437 COM_SkipPath +0 2b45b COM_StripExtension +0 2b491 COM_DefaultExtension +0 2b4d9 ShortSwap +0 2b4f9 ShortNoSwap +0 2b504 LongSwap +0 2b537 LongNoSwap +0 2b53d Long64Swap +0 2b57a Long64NoSwap +0 2b582 FloatSwap +0 2b598 FloatNoSwap +0 2b59f COM_BeginParseSession +0 2b5b1 COM_GetCurrentParseLine +0 2b5b7 COM_Parse +0 2b5c6 COM_ParseError +0 2b5e6 COM_ParseWarning +0 2b606 SkipWhitespace +0 2b63d COM_Compress +0 2b790 COM_ParseExt +0 2b8dc COM_MatchToken +0 2b905 SkipBracedSection +0 2b943 SkipRestOfLine +0 2b97b Parse1DMatrix +0 2b9ba Parse2DMatrix +0 2b9f5 Parse3DMatrix +0 2ba3a Q_isprint +0 2ba4f Q_islower +0 2ba64 Q_isupper +0 2ba79 Q_isalpha +0 2ba9a Q_strrchr +0 2bace Q_strncpyz +0 2bb09 Q_stricmpn +0 2bb94 Q_strncmp +0 2bbe6 Q_stricmp +0 2bc0e Q_strlwr +0 2bc34 Q_strupr +0 2bc5a Q_strcat +0 2bc86 Q_PrintStrlen +0 2bcd6 Q_CleanStr +0 2bd3c Com_sprintf +0 2bd7b va +0 2bda8 Info_ValueForKey +0 2be88 Info_NextPair +0 2bf26 Info_RemoveKey +0 2bff6 Info_RemoveKey_Big +0 2c0c6 Info_Validate +0 2c0ed Info_SetValueForKey +0 2c1bd Info_SetValueForKey_Big +0 2c285 Q_irand +0 2c29d UI_Alloc +0 2c2d7 UI_InitMemory +0 2c2e0 UI_OutOfMemory +0 2c2e6 hashForString +0 2c326 String_Alloc +0 2c3ff String_Report +0 2c448 String_Init +0 2c48c PC_SourceWarning +0 2c4bc PC_SourceError +0 2c4ec LerpColor +0 2c547 Float_Parse +0 2c573 PC_Float_Parse +0 2c5c8 Color_Parse +0 2c5f5 PC_Color_Parse +0 2c622 Int_Parse +0 2c64e PC_Int_Parse +0 2c6a6 Rect_Parse +0 2c6ed PC_Rect_Parse +0 2c734 String_Parse +0 2c760 PC_String_Parse +0 2c7d5 PC_Script_Parse +0 2c857 Init_Display +0 2c85e GradientBar_Paint +0 2c8a4 Window_Init +0 2c8e0 Fade +0 2c951 Window_Paint +0 2cc9b Item_SetScreenCoords +0 2cd2f Item_UpdatePosition +0 2cd82 Menu_UpdatePosition +0 2cdd9 Menu_PostParse +0 2ce05 Menu_ClearFocus +0 2ce88 IsVisible +0 2ceab Rect_ContainsPoint +0 2cef0 Menu_ItemsMatchingGroup +0 2cf4c Menu_GetMatchingItemByNumber +0 2cfb9 Script_SetColor +0 2d053 Script_SetAsset +0 2d06c Script_SetBackground +0 2d08e Menu_FindItemByName +0 2d0dd Script_SetTeamColor +0 2d112 Script_SetItemColor +0 2d1eb Script_SetItemRect +0 2d269 Menu_ShowItemByName +0 2d2db Menu_FadeItemByName +0 2d354 Menus_FindByName +0 2d385 Menus_ShowByName +0 2d39d Menus_OpenByName +0 2d3a6 Menu_RunCloseScript +0 2d3d5 Menus_CloseByName +0 2d435 Menus_CloseAll +0 2d46b Script_Show +0 2d48b Script_Hide +0 2d4ab Script_FadeIn +0 2d4cb Script_FadeOut +0 2d4eb Script_Open +0 2d503 Script_Close +0 2d52d Menu_TransitionItemByName +0 2d618 Script_Defer +0 2d63f Script_RunDeferred +0 2d659 Script_Transition +0 2d6bb Menu_OrbitItemByName +0 2d728 Script_Orbit +0 2d796 Script_SetFocus +0 2d821 Script_SetPlayerModel +0 2d83f Script_SetPlayerHead +0 2d85d Script_SetCvar +0 2d889 Script_SetCvarToCvar +0 2d8c2 Script_Exec +0 2d8e9 Script_Play +0 2d912 Script_playLooped +0 2d93e Item_RunScript +0 2d9db Item_EnableShowViaCvar +0 2dab4 Item_SetFocus +0 2dc20 Item_TextScroll_MaxScroll +0 2dc4f Item_TextScroll_ThumbPosition +0 2dc99 Item_TextScroll_ThumbDrawPosition +0 2dd02 Item_TextScroll_OverLB +0 2ddea Item_TextScroll_MouseEnter +0 2de1b Item_TextScroll_HandleKey +0 2dfb1 Item_ListBox_MaxScroll +0 2e00b Item_ListBox_ThumbPosition +0 2e092 Item_ListBox_ThumbDrawPosition +0 2e157 Item_Slider_ThumbPosition +0 2e1ef Item_Slider_OverSlider +0 2e224 Item_ListBox_OverLB +0 2e3ef Item_ListBox_MouseEnter +0 2e524 Item_MouseEnter +0 2e646 Item_MouseLeave +0 2e692 Menu_HitTest +0 2e6d0 Item_SetMouseOver +0 2e6f9 Item_OwnerDraw_HandleKey +0 2e733 Item_ListBox_HandleKey +0 2ec50 Item_YesNo_HandleKey +0 2ecd6 Item_Multi_CountSettings +0 2ecee Item_Multi_FindCvarByValue +0 2ed73 Item_Multi_Setting +0 2ee04 Item_Multi_HandleKey +0 2eef7 Item_TextField_HandleKey +0 2f27b Scroll_TextScroll_AutoFunc +0 2f2d8 Scroll_TextScroll_ThumbFunc +0 2f3c7 Scroll_ListBox_AutoFunc +0 2f424 Scroll_ListBox_ThumbFunc +0 2f5ab Scroll_Slider_ThumbFunc +0 2f645 Item_StartCapture +0 2f7ba Item_StopCapture +0 2f7bd Item_Slider_HandleKey +0 2f8b9 Item_HandleKey +0 2f9c9 Item_Action +0 2f9e0 Menu_SetPrevCursorItem +0 2fab6 Menu_SetNextCursorItem +0 2fb83 Window_CloseCinematic +0 2fbab Menu_CloseCinematics +0 2fbff Display_CloseCinematics +0 2fc1c Menus_Activate +0 2fc73 Display_VisibleMenuCount +0 2fc9d Menus_HandleOOBClick +0 2fd60 Item_CorrectedTextRect +0 2fd88 Menu_HandleKey +0 300a9 ToWindowCoords +0 300f1 Rect_ToWindowCoords +0 30106 Item_SetTextExtents +0 302aa Item_TextColor +0 303f0 Item_Text_AutoWrapped_Paint +0 305a0 Item_Text_Wrapped_Paint +0 306ad Item_Text_Paint +0 3079e Item_TextField_Paint +0 30914 Item_YesNo_Paint +0 30a48 Item_Multi_Paint +0 30b36 Controls_GetKeyAssignment +0 30b94 Controls_GetConfig +0 30bc6 Controls_SetConfig +0 30c1d Controls_SetDefaults +0 30c50 BindingIDFromName +0 30c7d BindingFromName +0 30d0e Item_Slider_Paint +0 30e11 Item_Bind_Paint +0 30fea Display_KeyBindPending +0 30ff0 Item_Bind_HandleKey +0 311fb Item_Model_Paint +0 3132b Item_Image_Paint +0 31372 Item_TextScroll_Paint +0 31504 Item_ListBox_Paint +0 31abb Item_OwnerDraw_Paint +0 31d81 Item_Paint +0 3236b Menu_Init +0 323a2 Menu_GetFocusedItem +0 323e1 Menu_GetFocused +0 3241c Menu_ScrollFeeder +0 3246f Menu_SetFeederSelection +0 32504 Menus_AnyFullScreenVisible +0 32538 Menus_ActivateByName +0 325c7 Item_Init +0 325e0 Menu_HandleMouseMove +0 32738 Menu_Paint +0 32893 Item_ValidateTypeData +0 32957 KeywordHash_Key +0 329bb KeywordHash_Add +0 329e1 KeywordHash_Find +0 32a1c ItemParse_name +0 32a35 ItemParse_focusSound +0 32a5d ItemParse_text +0 32a76 ItemParse_descText +0 32a8f ItemParse_text2 +0 32aa8 ItemParse_text2alignx +0 32ac1 ItemParse_text2aligny +0 32ada ItemParse_group +0 32af3 ItemParse_asset_model +0 32b33 ItemParse_asset_shader +0 32b59 ItemParse_model_origin +0 32b9f ItemParse_model_fovx +0 32bc5 ItemParse_model_fovy +0 32beb ItemParse_model_rotation +0 32c11 ItemParse_model_angle +0 32c35 ItemParse_rect +0 32c4e ItemParse_flag +0 32cb9 ItemParse_style +0 32cd7 ItemParse_decoration +0 32cea ItemParse_notselectable +0 32d0d ItemParse_wrapped +0 32d20 ItemParse_autowrapped +0 32d33 ItemParse_horizontalscroll +0 32d46 ItemParse_type +0 32d65 ItemParse_elementwidth +0 32d8b ItemParse_elementheight +0 32db1 ItemParse_feeder +0 32dca ItemParse_elementtype +0 32dfb ItemParse_columns +0 32e9e ItemParse_border +0 32eb7 ItemParse_bordersize +0 32ed0 ItemParse_visible +0 32ef8 ItemParse_ownerdraw +0 32f17 ItemParse_align +0 32f30 ItemParse_textalign +0 32f4e ItemParse_textalignx +0 32f67 ItemParse_textaligny +0 32f80 ItemParse_textscale +0 32f99 ItemParse_textstyle +0 32fb2 ItemParse_backcolor +0 32fe1 ItemParse_forecolor +0 3301e ItemParse_bordercolor +0 3304d ItemParse_outlinecolor +0 33066 ItemParse_background +0 3308c ItemParse_cinematic +0 330a5 ItemParse_doubleClick +0 330d6 ItemParse_onFocus +0 330ef ItemParse_leaveFocus +0 33108 ItemParse_mouseEnter +0 33121 ItemParse_mouseExit +0 3313a ItemParse_mouseEnterText +0 33153 ItemParse_mouseExitText +0 3316c ItemParse_action +0 33185 ItemParse_special +0 3319e ItemParse_cvarTest +0 331b7 ItemParse_cvar +0 33218 ItemParse_font +0 33237 ItemParse_maxChars +0 3326c ItemParse_maxPaintChars +0 332a1 ItemParse_maxLineChars +0 332d6 ItemParse_lineHeight +0 3330c ItemParse_cvarFloat +0 3336b ItemParse_cvarStrList +0 3342d ItemParse_cvarFloatList +0 334eb ItemParse_addColorRange +0 3354d ItemParse_ownerdrawFlag +0 33572 ItemParse_enableCvar +0 33591 ItemParse_disableCvar +0 335b0 ItemParse_showCvar +0 335cf ItemParse_hideCvar +0 335ee ItemParse_Appearance_slot +0 33607 Item_SetupKeywordHash +0 33633 Item_Parse +0 336b2 Item_TextScroll_BuildLines +0 337f1 Item_InitControls +0 3382e MenuParse_font +0 33871 MenuParse_name +0 3389e MenuParse_fullscreen +0 338bb MenuParse_rect +0 338d6 MenuParse_style +0 338f8 MenuParse_visible +0 33924 MenuParse_onOpen +0 33941 MenuParse_onClose +0 3395e MenuParse_onESC +0 3397b MenuParse_border +0 33998 MenuParse_borderSize +0 339b5 MenuParse_backcolor +0 339e8 MenuParse_descAlignment +0 33a0a MenuParse_descX +0 33a27 MenuParse_descY +0 33a44 MenuParse_descScale +0 33a61 MenuParse_descColor +0 33a94 MenuParse_forecolor +0 33ad5 MenuParse_bordercolor +0 33b08 MenuParse_focuscolor +0 33b3b MenuParse_disablecolor +0 33b6e MenuParse_outlinecolor +0 33b8b MenuParse_background +0 33bb5 MenuParse_cinematic +0 33bd2 MenuParse_ownerdrawFlag +0 33bfb MenuParse_ownerdraw +0 33c18 MenuParse_popup +0 33c2f MenuParse_outOfBounds +0 33c46 MenuParse_soundLoop +0 33c63 MenuParse_fadeClamp +0 33c80 MenuParse_fadeAmount +0 33c9d MenuParse_fadeCycle +0 33cba MenuParse_itemDef +0 33d3f MenuParse_appearanceIncrement +0 33d5c Menu_SetupKeywordHash +0 33d88 Menu_Parse +0 33e07 Menu_New +0 33e3b Menu_Count +0 33e41 Menu_PaintAll +0 33ed8 Menu_Reset +0 33ede Display_GetContext +0 33ee4 Display_CaptureItem +0 33f19 Display_MouseMove +0 33f91 Display_CursorType +0 33fdd Display_HandleKey +0 3400a Window_CacheContents +0 34043 Item_CacheContents +0 34050 Menu_CacheContents +0 3409c Display_CacheAll +0 340b9 Menu_OverActiveItem +0 3416c CG_InitTeamChat +0 3418a CG_SetPrintString +0 341aa CG_CheckOrderPending +0 3428b CG_SetSelectedPlayerName +0 342d8 CG_GetSelectedPlayer +0 342ea CG_SelectNextPlayer +0 3430c CG_SelectPrevPlayer +0 3432f CG_StatusHandle +0 3437b CG_GetValue +0 34461 CG_OtherTeamHasFlag +0 34496 CG_YourTeamHasFlag +0 344cb CG_OwnerDrawVisible +0 345e8 CG_GetKillerText +0 3460a CG_GetGameStatusText +0 34682 CG_GameTypeString +0 346bf CG_Text_Paint_Limit +0 347ab CG_DrawNewTeamInfo +0 34a16 CG_DrawTeamSpectators +0 34b61 CG_DrawMedal +0 34ca9 CG_OwnerDraw +0 34cac CG_MouseEvent +0 34d3e CG_HideTeamMenu +0 34d4b CG_ShowTeamMenu +0 34d53 CG_EventHandling +0 34d6d CG_KeyEvent +0 34dc6 CG_ClientNumFromName +0 34dfd CG_ShowResponseHead +0 34e10 CG_RunMenuScript +0 34e13 CG_DeferMenuScript +0 34e18 CG_GetTeamColor +1 4 colorTable +1 434 HolocronIcons +1 47c forceModelModificationCount +1 4e4 cvarTable +1 be4 cvarTableSize +1 c8c forceTicPos +1 ddc ammoTicPos +1 f2c commands +1 10ac menuScoreboard +1 10b0 bluehudtint +1 10c0 redhudtint +1 10d0 showPowersName +1 115c g_saberFlashTime +1 1160 g_saberFlashPos +1 1180 cgRageTime +1 1184 cgRageFadeTime +1 1188 cgRageFadeVal +1 118c cgRageRecTime +1 1190 cgRageRecFadeTime +1 1194 cgRageRecFadeVal +1 1198 cgAbsorbTime +1 119c cgAbsorbFadeTime +1 11a0 cgAbsorbFadeVal +1 11a4 cgProtectTime +1 11a8 cgProtectFadeTime +1 11ac cgProtectFadeVal +1 11b0 cgYsalTime +1 11b4 cgYsalFadeTime +1 11b8 cgYsalFadeVal +1 11bc gCGHasFallVector +1 11e0 forceHolocronModels +1 1724 shaderAnimNames +1 17a4 shaderAnimCounts +1 1824 shaderAnimSTRatio +1 18a4 cl_numparticles +1 18a8 initparticles +1 18ac roll +1 18b0 cg_customSoundNames +1 193c cgQueueLoad +1 1a28 cgAnnouncerTime +1 1a74 numValidOrders +1 1a78 cameramins +1 1a84 cameramaxs +1 1a90 cameraCurTarget +1 1a9c cameraCurLoc +1 1aa8 cameraOldLoc +1 1ab4 cameraNewLoc +1 1ac0 cameraLastFrame +1 1ac4 cameraLastYaw +1 1ac8 cameraStiffFactor +1 1b08 cgWeapFrame +1 1b0c cgWeapFrameTime +1 1c00 WHITE +1 1c18 WP_MuzzlePoint +1 1cd8 weaponData +1 2058 ammoData +1 2080 animTable +1 46a8 BGPAFtextLoaded +1 46ac gPMDoSlowFall +1 46b0 pm_stopspeed +1 46b4 pm_duckScale +1 46b8 pm_swimScale +1 46bc pm_wadeScale +1 46c0 pm_accelerate +1 46c4 pm_airaccelerate +1 46c8 pm_wateraccelerate +1 46cc pm_flyaccelerate +1 46d0 pm_friction +1 46d4 pm_waterfriction +1 46d8 pm_flightfriction +1 46dc pm_spectatorfriction +1 46e0 c_pmove +1 46e4 forceSpeedLevels +1 46f4 forcePowerNeeded +1 4814 forceJumpHeight +1 4824 forceJumpStrength +1 48c8 randSeed +1 493c forceMasteryLevels +1 495c forceMasteryPoints +1 497c bgForcePowerCost +1 4a9c forcePowerSorted +1 4ae4 forcePowerDarkLight +1 4b2c WeaponReadyAnim +1 4b6c WeaponAttackAnim +1 4bac bg_itemlist +1 5468 bg_numItems +1 54c0 eventnames +1 5698 bg_poolSize +1 569c bg_poolTail +1 56a0 saberMoveData +1 6910 transitionMove +1 6bb8 vec3_origin +1 6bc4 axisDefault +1 1a2c validOrders +1 6be8 colorBlack +1 6bf8 colorRed +1 6c08 colorGreen +1 6c18 colorBlue +1 6c28 colorYellow +1 6c38 colorMagenta +1 6c48 colorCyan +1 6c58 colorWhite +1 6c68 colorLtGrey +1 6c78 colorMdGrey +1 6c88 colorDkGrey +1 6c98 colorLtBlue +1 6ca8 colorDkBlue +1 6cb8 g_color_table +1 6d38 bytedirs +1 74f0 holdrand +1 74fc captureFunc +1 7500 captureData +1 7504 itemCapture +1 7508 DC +1 750c g_waitingForKey +1 7510 g_editingField +1 7514 g_bindItem +1 7518 g_editItem +1 751c menuCount +1 7520 openMenuCount +1 7524 debugMode +1 7528 lastListBoxClickTime +1 752c itemFlags +1 753c styles +1 7558 alignment +1 7568 types +1 75a8 strPoolIndex +1 75ac strHandleCount +1 75b8 FPMessageTime +1 75bc ui_deferredScriptItem +1 75c0 commandList +1 7680 scriptCommandCount +1 7748 g_bindings +1 8018 itemParseKeywords +1 8378 menuParseKeywords +1 852c drawTeamOverlayModificationCount +1 7fa0 g_bindCount +2 752ae8 _stackStart +2 762ae8 _stackEnd +3 8400 cg_pmove_msec +3 8510 cg_debugSaber +3 8620 cgDC +3 b440 cg_debugBB +3 b550 ui_myteam +3 b660 cg_recordSPDemoName +3 b770 cg_recordSPDemo +3 b880 cg_singlePlayerActive +3 b990 cg_enableBreath +3 baa0 cg_enableDust +3 bbb0 cg_singlePlayer +3 bcc0 cg_currentSelectedPlayerName +3 bdd0 cg_currentSelectedPlayer +3 bee0 cg_blueTeamName +3 bff0 cg_redTeamName +3 c100 cg_trueLightning +3 c210 cg_noProjectileTrail +3 c320 cg_noTaunt +3 c430 cg_bigFont +3 c540 cg_smallFont +3 c650 cg_cameraMode +3 c760 cg_timescale +3 c870 cg_timescaleFadeSpeed +3 c980 cg_timescaleFadeEnd +3 ca90 cg_cameraOrbitDelay +3 cba0 cg_cameraOrbit +3 ccb0 pmove_msec +3 cdc0 pmove_fixed +3 ced0 cg_smoothClients +3 cfe0 cg_hudFiles +3 d0f0 cg_scorePlum +3 d200 cg_noVoiceText +3 d310 cg_noVoiceChats +3 d420 cg_teamChatsOnly +3 d530 cg_drawFriend +3 d640 cg_deferPlayers +3 d750 cg_predictItems +3 d860 cg_blood +3 d970 cg_paused +3 da80 cg_buildScript +3 db90 cg_forceModel +3 dca0 cg_stats +3 ddb0 cg_teamChatHeight +3 dec0 cg_teamChatTime +3 dfd0 cg_synchronousClients +3 e0e0 cg_drawEnemyInfo +3 e1f0 cg_lagometer +3 e300 cg_stereoSeparation +3 e410 cg_thirdPersonHorzOffset +3 e520 cg_thirdPersonAlpha +3 e630 cg_thirdPersonTargetDamp +3 e740 cg_thirdPersonCameraDamp +3 e850 cg_thirdPersonVertOffset +3 e960 cg_thirdPersonPitchOffset +3 ea70 cg_thirdPersonAngle +3 eb80 cg_thirdPersonRange +3 ec90 cg_thirdPerson +3 eda0 cg_dismember +3 eeb0 cg_animBlend +3 efc0 cg_auraShell +3 f0d0 cg_speedTrail +3 f1e0 cg_saberTrail +3 f2f0 cg_saberContact +3 f400 cg_swingAngles +3 f510 cg_zoomFov +3 f620 cg_fov +3 f730 cg_simpleItems +3 f840 cg_ignore +3 f950 cg_autoswitch +3 fa60 cg_tracerLength +3 fb70 cg_tracerWidth +3 fc80 cg_tracerChance +3 fd90 cg_viewsize +3 fea0 cg_drawGun +3 ffb0 cg_gun_z +3 100c0 cg_gun_y +3 101d0 cg_gun_x +3 102e0 cg_gun_frame +3 103f0 cg_addMarks +3 10500 cg_footsteps +3 10610 cg_showmiss +3 10720 cg_noPlayerAnims +3 10830 cg_nopredict +3 10940 cg_errorDecay +3 10a50 cg_debugEvents +3 10b60 cg_debugPosition +3 10c70 cg_debugAnim +3 10d80 cg_animSpeed +3 10e90 cg_draw2D +3 10fa0 cg_drawStatus +3 110b0 cg_crosshairHealth +3 111c0 cg_crosshairSize +3 112d0 cg_crosshairY +3 113e0 cg_crosshairX +3 114f0 cg_teamOverlayUserinfo +3 11600 cg_drawTeamOverlay +3 11710 cg_drawRewards +3 11820 cg_dynamicCrosshair +3 11930 cg_drawScores +3 11a40 cg_drawCrosshairNames +3 11b50 cg_drawCrosshair +3 11c60 cg_drawAmmoWarning +3 11d70 cg_drawIcons +3 11e80 cg_draw3dIcons +3 11f90 cg_drawSnapshot +3 120a0 cg_drawFPS +3 121b0 cg_drawTimer +3 122c0 cg_gibs +3 123d0 cg_shadows +3 124e0 cg_bobroll +3 125f0 cg_bobpitch +3 12700 cg_bobup +3 12810 cg_runroll +3 12920 cg_runpitch +3 12a30 cg_centertime +3 12b40 cg_items +3 16340 cg_weapons +3 17040 cg_entities +3 1f7040 cg +3 220948 cgs +3 232190 gCGFallVector +3 23219c lagometer +3 2327a4 lastvalidlockdif +3 2327a8 hudTintColor +3 2327ac teamChat2 +3 2328ac teamChat1 +3 2329ac systemChat +3 232aac numSortedTeamPlayers +3 232ab0 sortedTeamPlayers +3 232b4c offZ +3 23318c offX +3 23380c lastofs +3 233810 cl_lightstyle +3 237a10 cg_freeLocalEntities +3 237a14 cg_activeLocalEntities +3 237be0 cg_localEntities +3 2713e0 oldtime +3 2713e4 rup +3 2713f0 rright +3 2713fc rforward +3 271408 pvup +3 271414 pvright +3 271420 pvforward +3 27142c particles +3 29042c free_particles +3 290430 active_particles +3 290434 numShaderAnims +3 290438 shaderAnims +3 292438 markTotal +3 29243c cg_freeMarkPolys +3 292440 cg_activeMarkPolys +3 292560 cg_markPolys +3 2a4560 cgBoneAnglePostSet +3 2a4598 cgSendPS +3 2af098 cg_triggerEntities +3 2af498 cg_numTriggerEntities +3 2af49c cg_solidEntities +3 2af89c cg_numSolidEntities +3 2af8a0 cg_pmove +3 2afa18 cg_saga_valid +3 2afa1c cg_saga_info +3 2b1a1c localClient +3 2b1a20 voiceChatBuffer +3 2b4120 voiceChatLists +3 4dcb60 zoomFov +3 4dcb64 cameraIdealLoc +3 4dcb70 cameraIdealTarget +3 4dcb7c cameraFocusLoc +3 4dcb88 cameraFocusAngles +3 4dcb94 cameraup +3 4dcba0 camerafwd +3 4dcbac cgScreenEffects +3 4dcbcc g2WeaponInstances +3 4dcc0c BGPAFtext +3 4e684c bgGlobalAnimations +3 4edf84 pml +3 4ee410 pm +3 4ee414 bg_pool +3 6f7e2c com_lines +3 6f7e30 com_parsename +3 6f8230 com_token +3 6fa640 menuParseKeywordHash +3 6fae40 itemParseKeywordHash +3 6fb640 g_nameBind2 +3 6fb660 g_nameBind1 +3 6fb680 ui_deferredScript +3 6fbe80 strHandle +3 6fde80 strPool +3 71de80 outOfMemory +3 71de84 allocPoint +3 71de88 memoryPool +3 73de88 menuStack +3 73dec8 Menus +3 752ac8 scrollInfo diff --git a/CODE-mp/cgame/vssver.scc b/CODE-mp/cgame/vssver.scc index db0bad1..41f72b7 100644 Binary files a/CODE-mp/cgame/vssver.scc and b/CODE-mp/cgame/vssver.scc differ diff --git a/CODE-mp/client/cl_console.cpp b/CODE-mp/client/cl_console.cpp index b83bf57..bd9a990 100644 --- a/CODE-mp/client/cl_console.cpp +++ b/CODE-mp/client/cl_console.cpp @@ -130,7 +130,7 @@ void Con_Dump_f (void) if (Cmd_Argc() != 2) { - Com_Printf (SP_GetStringText(CON_TEXT_DUMP_USAGE)); + Com_Printf(SP_GetStringText(CON_TEXT_DUMP_USAGE)); return; } @@ -139,7 +139,7 @@ void Con_Dump_f (void) f = FS_FOpenFileWrite( Cmd_Argv( 1 ) ); if (!f) { - Com_Printf (S_COLOR_RED"ERROR: couldn't open.\n"); + Com_Printf ("ERROR: couldn't open.\n"); return; } diff --git a/CODE-mp/client/cl_main.cpp b/CODE-mp/client/cl_main.cpp index 3756a11..f539be8 100644 --- a/CODE-mp/client/cl_main.cpp +++ b/CODE-mp/client/cl_main.cpp @@ -758,6 +758,9 @@ void CL_Disconnect( qboolean showMainMenu ) { cls.state = CA_DISCONNECTED; + // allow cheats locally + Cvar_Set( "sv_cheats", "1" ); + // not connected to a pure server anymore cl_connectedToPureServer = qfalse; } @@ -1030,7 +1033,23 @@ void CL_Connect_f( void ) { if ( !Cvar_VariableValue("fs_restrict") && !Sys_CheckCD() ) { - Com_Error( ERR_NEED_CD, SP_GetStringTextString("CON_TEXT_NEED_CD") ); //"Game CD not in drive" ); + int iLanguage = Cvar_VariableValue("sp_language"); + //rww - we don't have an actual cvar object for sp_language to use here. + + if (iLanguage) // dunno if SP files are loaded at this point if no CD... + { + switch (iLanguage) + { + case SP_LANGUAGE_GERMAN: + Com_Error( ERR_NEED_CD, "Spiel CD nicht im Laufwerk" ); + break; // keep compiler happy + case SP_LANGUAGE_FRENCH: + Com_Error( ERR_NEED_CD, "CD de jeu pas dans le lecteur" ); + break; // keep compiler happy + } + } + + Com_Error( ERR_NEED_CD, "Game CD not in drive" ); } if ( Cmd_Argc() != 2 ) { @@ -1219,7 +1238,6 @@ void CL_Vid_Restart_f( void ) { // if not running a server clear the whole hunk if ( !com_sv_running->integer ) { - CM_ClearMap(); // clear the whole hunk Hunk_Clear(); } diff --git a/CODE-mp/client/vssver.scc b/CODE-mp/client/vssver.scc index 964e749..bb36b37 100644 Binary files a/CODE-mp/client/vssver.scc and b/CODE-mp/client/vssver.scc differ diff --git a/CODE-mp/game/ai_main.c b/CODE-mp/game/ai_main.c index 710cb22..3631713 100644 --- a/CODE-mp/game/ai_main.c +++ b/CODE-mp/game/ai_main.c @@ -6914,7 +6914,7 @@ void StandardBotAI(bot_state_t *bs, float thinktime) else { #endif - if (bot_forcepowers.integer && !g_forcePowerDisable.integer) + if (bot_forcepowers.integer) { trap_EA_ForcePower(bs->client); } diff --git a/CODE-mp/game/g_client.c b/CODE-mp/game/g_client.c index 8da145f..837badd 100644 --- a/CODE-mp/game/g_client.c +++ b/CODE-mp/game/g_client.c @@ -1315,9 +1315,7 @@ char *ClientConnect( int clientNum, qboolean firstTime, qboolean isBot ) { value = Info_ValueForKey (userinfo, "password"); if ( g_password.string[0] && Q_stricmp( g_password.string, "none" ) && strcmp( g_password.string, value) != 0) { - static char sTemp[1024]; - Q_strncpyz(sTemp, G_GetStripEdString("SVINGAME","INVALID_PASSWORD"), sizeof (sTemp) ); - return sTemp;// return "Invalid password"; + return "Invalid password"; } } diff --git a/CODE-mp/game/g_cmds.c b/CODE-mp/game/g_cmds.c index 0169acc..f746abf 100644 --- a/CODE-mp/game/g_cmds.c +++ b/CODE-mp/game/g_cmds.c @@ -2417,8 +2417,7 @@ void ClientCommand( int clientNum ) { { if (Q_stricmp(cmd, "addbot") == 0) { //because addbot isn't a recognized command unless you're the server, but it is in the menus regardless -// trap_SendServerCommand( clientNum, va("print \"You can only add bots as the server.\n\"" ) ); - trap_SendServerCommand( clientNum, va("print \"%s.\n\"", G_GetStripEdString("SVINGAME", "ONLY_ADD_BOTS_AS_SERVER"))); + trap_SendServerCommand( clientNum, va("print \"You can only add bots as the server.\n\"" ) ); } else { diff --git a/CODE-mp/game/g_main.c b/CODE-mp/game/g_main.c index 42563f7..fffc221 100644 --- a/CODE-mp/game/g_main.c +++ b/CODE-mp/game/g_main.c @@ -1502,8 +1502,7 @@ void CheckExitRules( void ) { if ( g_timelimit.integer && !level.warmupTime ) { if ( level.time - level.startTime >= g_timelimit.integer*60000 ) { -// trap_SendServerCommand( -1, "print \"Timelimit hit.\n\""); - trap_SendServerCommand( -1, va("print \"%s.\n\"",G_GetStripEdString("SVINGAME", "TIMELIMIT_HIT"))); + trap_SendServerCommand( -1, "print \"Timelimit hit.\n\""); LogExit( "Timelimit hit." ); return; } diff --git a/CODE-mp/game/vm/ai_util.asm b/CODE-mp/game/vm/ai_util.asm new file mode 100644 index 0000000..591377a --- /dev/null +++ b/CODE-mp/game/vm/ai_util.asm @@ -0,0 +1,6119 @@ +export B_TempAlloc +code +proc B_TempAlloc 4 4 +file "../ai_util.c" +line 15 +;1:#include "g_local.h" +;2:#include "q_shared.h" +;3:#include "botlib.h" +;4:#include "ai_main.h" +;5: +;6:#ifdef BOT_ZMALLOC +;7:#define MAX_BALLOC 8192 +;8: +;9:void *BAllocList[MAX_BALLOC]; +;10:#endif +;11: +;12:char gBotChatBuffer[MAX_CLIENTS][MAX_CHAT_BUFFER_SIZE]; +;13: +;14:void *B_TempAlloc(int size) +;15:{ +line 16 +;16: return BG_TempAlloc(size); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 BG_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $81 +endproc B_TempAlloc 4 4 +export B_TempFree +proc B_TempFree 0 4 +line 20 +;17:} +;18: +;19:void B_TempFree(int size) +;20:{ +line 21 +;21: BG_TempFree(size); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 BG_TempFree +CALLV +pop +line 22 +;22:} +LABELV $82 +endproc B_TempFree 0 4 +export B_Alloc +proc B_Alloc 4 4 +line 26 +;23: +;24: +;25:void *B_Alloc(int size) +;26:{ +line 77 +;27:#ifdef BOT_ZMALLOC +;28: void *ptr = NULL; +;29: int i = 0; +;30: +;31:#ifdef BOTMEMTRACK +;32: int free = 0; +;33: int used = 0; +;34: +;35: while (i < MAX_BALLOC) +;36: { +;37: if (!BAllocList[i]) +;38: { +;39: free++; +;40: } +;41: else +;42: { +;43: used++; +;44: } +;45: +;46: i++; +;47: } +;48: +;49: G_Printf("Allocations used: %i\nFree allocation slots: %i\n", used, free); +;50: +;51: i = 0; +;52:#endif +;53: +;54: ptr = trap_BotGetMemoryGame(size); +;55: +;56: while (i < MAX_BALLOC) +;57: { +;58: if (!BAllocList[i]) +;59: { +;60: BAllocList[i] = ptr; +;61: break; +;62: } +;63: i++; +;64: } +;65: +;66: if (i == MAX_BALLOC) +;67: { +;68: //If this happens we'll have to rely on this chunk being freed manually with B_Free, which it hopefully will be +;69:#ifdef DEBUG +;70: G_Printf("WARNING: MAXIMUM B_ALLOC ALLOCATIONS EXCEEDED\n"); +;71:#endif +;72: } +;73: +;74: return ptr; +;75:#else +;76: +;77: return BG_Alloc(size); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 BG_Alloc +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $83 +endproc B_Alloc 4 4 +export B_Free +proc B_Free 0 0 +line 83 +;78: +;79:#endif +;80:} +;81: +;82:void B_Free(void *ptr) +;83:{ +line 131 +;84:#ifdef BOT_ZMALLOC +;85: int i = 0; +;86: +;87:#ifdef BOTMEMTRACK +;88: int free = 0; +;89: int used = 0; +;90: +;91: while (i < MAX_BALLOC) +;92: { +;93: if (!BAllocList[i]) +;94: { +;95: free++; +;96: } +;97: else +;98: { +;99: used++; +;100: } +;101: +;102: i++; +;103: } +;104: +;105: G_Printf("Allocations used: %i\nFree allocation slots: %i\n", used, free); +;106: +;107: i = 0; +;108:#endif +;109: +;110: while (i < MAX_BALLOC) +;111: { +;112: if (BAllocList[i] == ptr) +;113: { +;114: BAllocList[i] = NULL; +;115: break; +;116: } +;117: +;118: i++; +;119: } +;120: +;121: if (i == MAX_BALLOC) +;122: { +;123: //Likely because the limit was exceeded and we're now freeing the chunk manually as we hoped would happen +;124:#ifdef DEBUG +;125: G_Printf("WARNING: Freeing allocation which is not in the allocation structure\n"); +;126:#endif +;127: } +;128: +;129: trap_BotFreeMemoryGame(ptr); +;130:#endif +;131:} +LABELV $84 +endproc B_Free 0 0 +export B_InitAlloc +proc B_InitAlloc 0 12 +line 134 +;132: +;133:void B_InitAlloc(void) +;134:{ +line 139 +;135:#ifdef BOT_ZMALLOC +;136: memset(BAllocList, 0, sizeof(BAllocList)); +;137:#endif +;138: +;139: memset(gWPArray, 0, sizeof(gWPArray)); +ADDRGP4 gWPArray +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 16384 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 140 +;140:} +LABELV $85 +endproc B_InitAlloc 0 12 +export B_CleanupAlloc +proc B_CleanupAlloc 0 0 +line 143 +;141: +;142:void B_CleanupAlloc(void) +;143:{ +line 158 +;144:#ifdef BOT_ZMALLOC +;145: int i = 0; +;146: +;147: while (i < MAX_BALLOC) +;148: { +;149: if (BAllocList[i]) +;150: { +;151: trap_BotFreeMemoryGame(BAllocList[i]); +;152: BAllocList[i] = NULL; +;153: } +;154: +;155: i++; +;156: } +;157:#endif +;158:} +LABELV $86 +endproc B_CleanupAlloc 0 0 +export GetValueGroup +proc GetValueGroup 44 8 +line 161 +;159: +;160:int GetValueGroup(char *buf, char *group, char *outbuf) +;161:{ +line 167 +;162: char *place, *placesecond; +;163: int iplace; +;164: int failure; +;165: int i; +;166: int startpoint, startletter; +;167: int subg = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 169 +;168: +;169: i = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 171 +;170: +;171: iplace = 0; +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +line 173 +;172: +;173: place = strstr(buf, group); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 32 +INDIRP4 +ASGNP4 +line 175 +;174: +;175: if (!place) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $88 +line 176 +;176: { +line 177 +;177: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $87 +JUMPV +LABELV $88 +line 180 +;178: } +;179: +;180: startpoint = place - buf + strlen(group) + 1; +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRLP4 36 +INDIRI4 +ADDI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 181 +;181: startletter = (place - buf) - 1; +ADDRLP4 20 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 183 +;182: +;183: failure = 0; +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRGP4 $91 +JUMPV +LABELV $90 +line 186 +;184: +;185: while (buf[startpoint+1] != '{' || buf[startletter] != '\n') +;186: { +line 187 +;187: placesecond = strstr(place+1, group); +ADDRLP4 8 +INDIRP4 +CNSTI4 1 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 189 +;188: +;189: if (placesecond) +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $93 +line 190 +;190: { +line 191 +;191: startpoint += (placesecond - place); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDI4 +ASGNI4 +line 192 +;192: startletter += (placesecond - place); +ADDRLP4 20 +ADDRLP4 20 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDI4 +ASGNI4 +line 193 +;193: place = placesecond; +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 194 +;194: } +ADDRGP4 $94 +JUMPV +LABELV $93 +line 196 +;195: else +;196: { +line 197 +;197: failure = 1; +ADDRLP4 24 +CNSTI4 1 +ASGNI4 +line 198 +;198: break; +ADDRGP4 $92 +JUMPV +LABELV $94 +line 200 +;199: } +;200: } +LABELV $91 +line 185 +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 40 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $90 +ADDRLP4 20 +INDIRI4 +ADDRLP4 40 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $90 +LABELV $92 +line 202 +;201: +;202: if (failure) +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $98 +line 203 +;203: { +line 204 +;204: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $87 +JUMPV +LABELV $97 +line 211 +;205: } +;206: +;207: //we have found the proper group name if we made it here, so find the opening brace and read into the outbuf +;208: //until hitting the end brace +;209: +;210: while (buf[startpoint] != '{') +;211: { +line 212 +;212: startpoint++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 213 +;213: } +LABELV $98 +line 210 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $97 +line 215 +;214: +;215: startpoint++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $101 +JUMPV +LABELV $100 +line 218 +;216: +;217: while (buf[startpoint] != '}' || subg) +;218: { +line 219 +;219: if (buf[startpoint] == '{') +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $103 +line 220 +;220: { +line 221 +;221: subg++; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 222 +;222: } +ADDRGP4 $104 +JUMPV +LABELV $103 +line 223 +;223: else if (buf[startpoint] == '}') +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $105 +line 224 +;224: { +line 225 +;225: subg--; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 226 +;226: } +LABELV $105 +LABELV $104 +line 227 +;227: outbuf[i] = buf[startpoint]; +ADDRLP4 12 +INDIRI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 228 +;228: i++; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 229 +;229: startpoint++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 230 +;230: } +LABELV $101 +line 217 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $100 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $100 +line 231 +;231: outbuf[i] = '\0'; +ADDRLP4 12 +INDIRI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 233 +;232: +;233: return 1; +CNSTI4 1 +RETI4 +LABELV $87 +endproc GetValueGroup 44 8 +export GetPairedValue +proc GetPairedValue 64 8 +line 237 +;234:} +;235: +;236:int GetPairedValue(char *buf, char *key, char *outbuf) +;237:{ +line 242 +;238: char *place, *placesecond; +;239: int startpoint, startletter; +;240: int i, found; +;241: +;242: if (!buf || !key || !outbuf) +ADDRLP4 24 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 24 +INDIRU4 +EQU4 $111 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 24 +INDIRU4 +EQU4 $111 +ADDRFP4 8 +INDIRP4 +CVPU4 4 +ADDRLP4 24 +INDIRU4 +NEU4 $108 +LABELV $111 +line 243 +;243: { +line 244 +;244: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $107 +JUMPV +LABELV $108 +line 247 +;245: } +;246: +;247: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $113 +JUMPV +LABELV $112 +line 250 +;248: +;249: while (buf[i] && buf[i] != '\0') +;250: { +line 251 +;251: if (buf[i] == '/') +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 47 +NEI4 $115 +line 252 +;252: { +line 253 +;253: if (buf[i+1] && buf[i+1] != '\0' && buf[i+1] == '/') +ADDRLP4 28 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 32 +CNSTI4 0 +ASGNI4 +ADDRLP4 28 +INDIRI4 +ADDRLP4 32 +INDIRI4 +EQI4 $117 +ADDRLP4 28 +INDIRI4 +ADDRLP4 32 +INDIRI4 +EQI4 $117 +ADDRLP4 28 +INDIRI4 +CNSTI4 47 +NEI4 $117 +line 254 +;254: { +ADDRGP4 $120 +JUMPV +LABELV $119 +line 256 +;255: while (buf[i] != '\n') +;256: { +line 257 +;257: buf[i] = '/'; +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CNSTI1 47 +ASGNI1 +line 258 +;258: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 259 +;259: } +LABELV $120 +line 255 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $119 +line 260 +;260: } +LABELV $117 +line 261 +;261: } +LABELV $115 +line 262 +;262: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 263 +;263: } +LABELV $113 +line 249 +ADDRLP4 28 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 32 +CNSTI4 0 +ASGNI4 +ADDRLP4 28 +INDIRI4 +ADDRLP4 32 +INDIRI4 +EQI4 $122 +ADDRLP4 28 +INDIRI4 +ADDRLP4 32 +INDIRI4 +NEI4 $112 +LABELV $122 +line 265 +;264: +;265: place = strstr(buf, key); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 36 +INDIRP4 +ASGNP4 +line 267 +;266: +;267: if (!place) +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $123 +line 268 +;268: { +line 269 +;269: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $107 +JUMPV +LABELV $123 +line 272 +;270: } +;271: //tab == 9 +;272: startpoint = place - buf + strlen(key); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRLP4 40 +INDIRI4 +ADDI4 +ASGNI4 +line 273 +;273: startletter = (place - buf) - 1; +ADDRLP4 8 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 275 +;274: +;275: found = 0; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRGP4 $126 +JUMPV +LABELV $125 +line 278 +;276: +;277: while (!found) +;278: { +line 279 +;279: if (startletter == 0 || !buf[startletter] || buf[startletter] == '\0' || buf[startletter] == 9 || buf[startletter] == ' ' || buf[startletter] == '\n') +ADDRLP4 48 +CNSTI4 0 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 48 +INDIRI4 +EQI4 $134 +ADDRLP4 52 +ADDRLP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 52 +INDIRI4 +ADDRLP4 48 +INDIRI4 +EQI4 $134 +ADDRLP4 52 +INDIRI4 +ADDRLP4 48 +INDIRI4 +EQI4 $134 +ADDRLP4 52 +INDIRI4 +CNSTI4 9 +EQI4 $134 +ADDRLP4 52 +INDIRI4 +CNSTI4 32 +EQI4 $134 +ADDRLP4 52 +INDIRI4 +CNSTI4 10 +NEI4 $128 +LABELV $134 +line 280 +;280: { +line 281 +;281: if (buf[startpoint] == '\0' || buf[startpoint] == 9 || buf[startpoint] == ' ' || buf[startpoint] == '\n') +ADDRLP4 56 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $139 +ADDRLP4 56 +INDIRI4 +CNSTI4 9 +EQI4 $139 +ADDRLP4 56 +INDIRI4 +CNSTI4 32 +EQI4 $139 +ADDRLP4 56 +INDIRI4 +CNSTI4 10 +NEI4 $135 +LABELV $139 +line 282 +;282: { +line 283 +;283: found = 1; +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +line 284 +;284: break; +ADDRGP4 $127 +JUMPV +LABELV $135 +line 286 +;285: } +;286: } +LABELV $128 +line 288 +;287: +;288: placesecond = strstr(place+1, key); +ADDRLP4 12 +INDIRP4 +CNSTI4 1 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 56 +INDIRP4 +ASGNP4 +line 290 +;289: +;290: if (placesecond) +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $140 +line 291 +;291: { +line 292 +;292: startpoint += placesecond - place; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDI4 +ASGNI4 +line 293 +;293: startletter += placesecond - place; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDI4 +ASGNI4 +line 294 +;294: place = placesecond; +ADDRLP4 12 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 295 +;295: } +ADDRGP4 $141 +JUMPV +LABELV $140 +line 297 +;296: else +;297: { +line 298 +;298: place = NULL; +ADDRLP4 12 +CNSTP4 0 +ASGNP4 +line 299 +;299: break; +ADDRGP4 $127 +JUMPV +LABELV $141 +line 302 +;300: } +;301: +;302: } +LABELV $126 +line 277 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $125 +LABELV $127 +line 304 +;303: +;304: if (!found || !place || !buf[startpoint] || buf[startpoint] == '\0') +ADDRLP4 44 +CNSTI4 0 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRLP4 44 +INDIRI4 +EQI4 $146 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $146 +ADDRLP4 48 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 48 +INDIRI4 +ADDRLP4 44 +INDIRI4 +EQI4 $146 +ADDRLP4 48 +INDIRI4 +ADDRLP4 44 +INDIRI4 +NEI4 $148 +LABELV $146 +line 305 +;305: { +line 306 +;306: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $107 +JUMPV +LABELV $147 +line 310 +;307: } +;308: +;309: while (buf[startpoint] == ' ' || buf[startpoint] == 9 || buf[startpoint] == '\n') +;310: { +line 311 +;311: startpoint++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 312 +;312: } +LABELV $148 +line 309 +ADDRLP4 52 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 32 +EQI4 $147 +ADDRLP4 52 +INDIRI4 +CNSTI4 9 +EQI4 $147 +ADDRLP4 52 +INDIRI4 +CNSTI4 10 +EQI4 $147 +line 314 +;313: +;314: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $151 +JUMPV +LABELV $150 +line 317 +;315: +;316: while (buf[startpoint] && buf[startpoint] != '\0' && buf[startpoint] != '\n') +;317: { +line 318 +;318: outbuf[i] = buf[startpoint]; +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 319 +;319: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 320 +;320: startpoint++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 321 +;321: } +LABELV $151 +line 316 +ADDRLP4 56 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 60 +CNSTI4 0 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ADDRLP4 60 +INDIRI4 +EQI4 $154 +ADDRLP4 56 +INDIRI4 +ADDRLP4 60 +INDIRI4 +EQI4 $154 +ADDRLP4 56 +INDIRI4 +CNSTI4 10 +NEI4 $150 +LABELV $154 +line 323 +;322: +;323: outbuf[i] = '\0'; +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 325 +;324: +;325: return 1; +CNSTI4 1 +RETI4 +LABELV $107 +endproc GetPairedValue 64 8 +export BotDoChat +proc BotDoChat 96 12 +line 329 +;326:} +;327: +;328:int BotDoChat(bot_state_t *bs, char *section, int always) +;329:{ +line 340 +;330: char *chatgroup; +;331: int rVal; +;332: int inc_1; +;333: int inc_2; +;334: int inc_n; +;335: int lines; +;336: int checkedline; +;337: int getthisline; +;338: gentity_t *cobject; +;339: +;340: if (!bs->canChat) +ADDRFP4 0 +INDIRP4 +CNSTI4 2080 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $156 +line 341 +;341: { +line 342 +;342: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $155 +JUMPV +LABELV $156 +line 345 +;343: } +;344: +;345: if (bs->doChat) +ADDRFP4 0 +INDIRP4 +CNSTI4 2224 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $158 +line 346 +;346: { //already have a chat scheduled +line 347 +;347: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $155 +JUMPV +LABELV $158 +line 350 +;348: } +;349: +;350: if (trap_Cvar_VariableIntegerValue("sp_language")) +ADDRGP4 $162 +ARGP4 +ADDRLP4 36 +ADDRGP4 trap_Cvar_VariableIntegerValue +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $160 +line 351 +;351: { //no chatting unless English. +line 352 +;352: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $155 +JUMPV +LABELV $160 +line 355 +;353: } +;354: +;355: if (Q_irand(1, 10) > bs->chatFrequency && !always) +CNSTI4 1 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 40 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2084 +ADDP4 +INDIRI4 +LEI4 $163 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $163 +line 356 +;356: { +line 357 +;357: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $155 +JUMPV +LABELV $163 +line 360 +;358: } +;359: +;360: bs->chatTeam = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 2228 +ADDP4 +CNSTI4 0 +ASGNI4 +line 362 +;361: +;362: chatgroup = (char *)B_TempAlloc(MAX_CHAT_BUFFER_SIZE); +CNSTI4 8192 +ARGI4 +ADDRLP4 44 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 44 +INDIRP4 +ASGNP4 +line 364 +;363: +;364: rVal = GetValueGroup(gBotChatBuffer[bs->client], section, chatgroup); +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 13 +LSHI4 +ADDRGP4 gBotChatBuffer +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 GetValueGroup +CALLI4 +ASGNI4 +ADDRLP4 32 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 366 +;365: +;366: if (!rVal) //the bot has no group defined for the specified chat event +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $165 +line 367 +;367: { +line 368 +;368: B_TempFree(MAX_CHAT_BUFFER_SIZE); //chatgroup +CNSTI4 8192 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 369 +;369: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $155 +JUMPV +LABELV $165 +line 372 +;370: } +;371: +;372: inc_1 = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 373 +;373: inc_2 = 2; +ADDRLP4 8 +CNSTI4 2 +ASGNI4 +ADDRGP4 $168 +JUMPV +LABELV $167 +line 376 +;374: +;375: while (chatgroup[inc_2] && chatgroup[inc_2] != '\0') +;376: { +line 377 +;377: if (chatgroup[inc_2] != 13 && chatgroup[inc_2] != 9) +ADDRLP4 52 +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 13 +EQI4 $170 +ADDRLP4 52 +INDIRI4 +CNSTI4 9 +EQI4 $170 +line 378 +;378: { +line 379 +;379: chatgroup[inc_1] = chatgroup[inc_2]; +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 380 +;380: inc_1++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 381 +;381: } +LABELV $170 +line 382 +;382: inc_2++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 383 +;383: } +LABELV $168 +line 375 +ADDRLP4 52 +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 56 +CNSTI4 0 +ASGNI4 +ADDRLP4 52 +INDIRI4 +ADDRLP4 56 +INDIRI4 +EQI4 $172 +ADDRLP4 52 +INDIRI4 +ADDRLP4 56 +INDIRI4 +NEI4 $167 +LABELV $172 +line 384 +;384: chatgroup[inc_1] = '\0'; +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 386 +;385: +;386: inc_1 = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 388 +;387: +;388: lines = 0; +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +ADDRGP4 $174 +JUMPV +LABELV $173 +line 391 +;389: +;390: while (chatgroup[inc_1] && chatgroup[inc_1] != '\0') +;391: { +line 392 +;392: if (chatgroup[inc_1] == '\n') +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $176 +line 393 +;393: { +line 394 +;394: lines++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 395 +;395: } +LABELV $176 +line 396 +;396: inc_1++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 397 +;397: } +LABELV $174 +line 390 +ADDRLP4 60 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 64 +CNSTI4 0 +ASGNI4 +ADDRLP4 60 +INDIRI4 +ADDRLP4 64 +INDIRI4 +EQI4 $178 +ADDRLP4 60 +INDIRI4 +ADDRLP4 64 +INDIRI4 +NEI4 $173 +LABELV $178 +line 399 +;398: +;399: if (!lines) +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $179 +line 400 +;400: { +line 401 +;401: B_TempFree(MAX_CHAT_BUFFER_SIZE); //chatgroup +CNSTI4 8192 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 402 +;402: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $155 +JUMPV +LABELV $179 +line 405 +;403: } +;404: +;405: getthisline = Q_irand(0, (lines+1)); +CNSTI4 0 +ARGI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 68 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 20 +ADDRLP4 68 +INDIRI4 +ASGNI4 +line 407 +;406: +;407: if (getthisline < 1) +ADDRLP4 20 +INDIRI4 +CNSTI4 1 +GEI4 $181 +line 408 +;408: { +line 409 +;409: getthisline = 1; +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +line 410 +;410: } +LABELV $181 +line 411 +;411: if (getthisline > lines) +ADDRLP4 20 +INDIRI4 +ADDRLP4 28 +INDIRI4 +LEI4 $183 +line 412 +;412: { +line 413 +;413: getthisline = lines; +ADDRLP4 20 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 414 +;414: } +LABELV $183 +line 416 +;415: +;416: checkedline = 1; +ADDRLP4 24 +CNSTI4 1 +ASGNI4 +line 418 +;417: +;418: inc_1 = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $186 +JUMPV +LABELV $185 +line 421 +;419: +;420: while (checkedline != getthisline) +;421: { +line 422 +;422: if (chatgroup[inc_1] && chatgroup[inc_1] != '\0') +ADDRLP4 72 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +ADDRLP4 72 +INDIRI4 +ADDRLP4 76 +INDIRI4 +EQI4 $188 +ADDRLP4 72 +INDIRI4 +ADDRLP4 76 +INDIRI4 +EQI4 $188 +line 423 +;423: { +line 424 +;424: if (chatgroup[inc_1] == '\n') +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $190 +line 425 +;425: { +line 426 +;426: inc_1++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 427 +;427: checkedline++; +ADDRLP4 24 +ADDRLP4 24 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 428 +;428: } +LABELV $190 +line 429 +;429: } +LABELV $188 +line 431 +;430: +;431: if (checkedline == getthisline) +ADDRLP4 24 +INDIRI4 +ADDRLP4 20 +INDIRI4 +NEI4 $192 +line 432 +;432: { +line 433 +;433: break; +ADDRGP4 $187 +JUMPV +LABELV $192 +line 436 +;434: } +;435: +;436: inc_1++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 437 +;437: } +LABELV $186 +line 420 +ADDRLP4 24 +INDIRI4 +ADDRLP4 20 +INDIRI4 +NEI4 $185 +LABELV $187 +line 440 +;438: +;439: //we're at the starting position of the desired line here +;440: inc_2 = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $195 +JUMPV +LABELV $194 +line 443 +;441: +;442: while (chatgroup[inc_1] != '\n') +;443: { +line 444 +;444: chatgroup[inc_2] = chatgroup[inc_1]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 445 +;445: inc_2++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 446 +;446: inc_1++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 447 +;447: } +LABELV $195 +line 442 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $194 +line 448 +;448: chatgroup[inc_2] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 451 +;449: +;450: //trap_EA_Say(bs->client, chatgroup); +;451: inc_1 = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 452 +;452: inc_2 = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 454 +;453: +;454: if (strlen(chatgroup) > MAX_CHAT_LINE_SIZE) +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 128 +LEI4 $200 +line 455 +;455: { +line 456 +;456: B_TempFree(MAX_CHAT_BUFFER_SIZE); //chatgroup +CNSTI4 8192 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 457 +;457: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $155 +JUMPV +LABELV $199 +line 461 +;458: } +;459: +;460: while (chatgroup[inc_1]) +;461: { +line 462 +;462: if (chatgroup[inc_1] == '%' && chatgroup[inc_1+1] != '%') +ADDRLP4 84 +CNSTI4 37 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 84 +INDIRI4 +NEI4 $202 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 84 +INDIRI4 +EQI4 $202 +line 463 +;463: { +line 464 +;464: inc_1++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 466 +;465: +;466: if (chatgroup[inc_1] == 's' && bs->chatObject) +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 115 +NEI4 $204 +ADDRFP4 0 +INDIRP4 +CNSTI4 2232 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $204 +line 467 +;467: { +line 468 +;468: cobject = bs->chatObject; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 2232 +ADDP4 +INDIRP4 +ASGNP4 +line 469 +;469: } +ADDRGP4 $205 +JUMPV +LABELV $204 +line 470 +;470: else if (chatgroup[inc_1] == 'a' && bs->chatAltObject) +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 97 +NEI4 $206 +ADDRFP4 0 +INDIRP4 +CNSTI4 2236 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $206 +line 471 +;471: { +line 472 +;472: cobject = bs->chatAltObject; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 2236 +ADDP4 +INDIRP4 +ASGNP4 +line 473 +;473: } +ADDRGP4 $207 +JUMPV +LABELV $206 +line 475 +;474: else +;475: { +line 476 +;476: cobject = NULL; +ADDRLP4 16 +CNSTP4 0 +ASGNP4 +line 477 +;477: } +LABELV $207 +LABELV $205 +line 479 +;478: +;479: if (cobject && cobject->client) +ADDRLP4 92 +CNSTU4 0 +ASGNU4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +ADDRLP4 92 +INDIRU4 +EQU4 $203 +ADDRLP4 16 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 92 +INDIRU4 +EQU4 $203 +line 480 +;480: { +line 481 +;481: inc_n = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 $211 +JUMPV +LABELV $210 +line 484 +;482: +;483: while (cobject->client->pers.netname[inc_n]) +;484: { +line 485 +;485: bs->currentChat[inc_2] = cobject->client->pers.netname[inc_n]; +ADDRLP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2088 +ADDP4 +ADDP4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ADDP4 +INDIRI1 +ASGNI1 +line 486 +;486: inc_2++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 487 +;487: inc_n++; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 488 +;488: } +LABELV $211 +line 483 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $210 +line 489 +;489: inc_2--; //to make up for the auto-increment below +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 490 +;490: } +line 491 +;491: } +ADDRGP4 $203 +JUMPV +LABELV $202 +line 493 +;492: else +;493: { +line 494 +;494: bs->currentChat[inc_2] = chatgroup[inc_1]; +ADDRLP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2088 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 495 +;495: } +LABELV $203 +line 496 +;496: inc_2++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 497 +;497: inc_1++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 498 +;498: } +LABELV $200 +line 460 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $199 +line 499 +;499: bs->currentChat[inc_2] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2088 +ADDP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 501 +;500: +;501: if (strcmp(section, "GeneralGreetings") == 0) +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $215 +ARGP4 +ADDRLP4 76 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 0 +NEI4 $213 +line 502 +;502: { +line 503 +;503: bs->doChat = 2; +ADDRFP4 0 +INDIRP4 +CNSTI4 2224 +ADDP4 +CNSTI4 2 +ASGNI4 +line 504 +;504: } +ADDRGP4 $214 +JUMPV +LABELV $213 +line 506 +;505: else +;506: { +line 507 +;507: bs->doChat = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 2224 +ADDP4 +CNSTI4 1 +ASGNI4 +line 508 +;508: } +LABELV $214 +line 509 +;509: bs->chatTime_stored = (strlen(bs->currentChat)*45)+Q_irand(1300, 1500); +ADDRLP4 80 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 80 +INDIRP4 +CNSTI4 2088 +ADDP4 +ARGP4 +ADDRLP4 84 +ADDRGP4 strlen +CALLI4 +ASGNI4 +CNSTI4 1300 +ARGI4 +CNSTI4 1500 +ARGI4 +ADDRLP4 88 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 80 +INDIRP4 +CNSTI4 2220 +ADDP4 +CNSTI4 45 +ADDRLP4 84 +INDIRI4 +MULI4 +ADDRLP4 88 +INDIRI4 +ADDI4 +CVIF4 4 +ASGNF4 +line 510 +;510: bs->chatTime = level.time + bs->chatTime_stored; +ADDRLP4 92 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 2216 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CVIF4 4 +ADDRLP4 92 +INDIRP4 +CNSTI4 2220 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 512 +;511: +;512: B_TempFree(MAX_CHAT_BUFFER_SIZE); //chatgroup +CNSTI4 8192 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 514 +;513: +;514: return 1; +CNSTI4 1 +RETI4 +LABELV $155 +endproc BotDoChat 96 12 +export ParseEmotionalAttachments +proc ParseEmotionalAttachments 60 4 +line 518 +;515:} +;516: +;517:void ParseEmotionalAttachments(bot_state_t *bs, char *buf) +;518:{ +line 519 +;519: int i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 520 +;520: int i_c = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $219 +JUMPV +line 524 +;521: char tbuf[16]; +;522: +;523: while (buf[i] && buf[i] != '}') +;524: { +LABELV $221 +line 526 +;525: while (buf[i] == ' ' || buf[i] == '{' || buf[i] == 9 || buf[i] == 13 || buf[i] == '\n') +;526: { +line 527 +;527: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 528 +;528: } +LABELV $222 +line 525 +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 32 +EQI4 $221 +ADDRLP4 24 +INDIRI4 +CNSTI4 123 +EQI4 $221 +ADDRLP4 24 +INDIRI4 +CNSTI4 9 +EQI4 $221 +ADDRLP4 24 +INDIRI4 +CNSTI4 13 +EQI4 $221 +ADDRLP4 24 +INDIRI4 +CNSTI4 10 +EQI4 $221 +line 530 +;529: +;530: if (buf[i] && buf[i] != '}') +ADDRLP4 28 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $220 +ADDRLP4 28 +INDIRI4 +CNSTI4 125 +EQI4 $220 +line 531 +;531: { +line 532 +;532: i_c = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $227 +JUMPV +LABELV $226 +line 534 +;533: while (buf[i] != '{' && buf[i] != 9 && buf[i] != 13 && buf[i] != '\n') +;534: { +line 535 +;535: bs->loved[bs->lovednum].name[i_c] = buf[i]; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 68 +ADDRLP4 32 +INDIRP4 +CNSTI4 2600 +ADDP4 +INDIRI4 +MULI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 2328 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 536 +;536: i_c++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 537 +;537: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 538 +;538: } +LABELV $227 +line 533 +ADDRLP4 32 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 123 +EQI4 $231 +ADDRLP4 32 +INDIRI4 +CNSTI4 9 +EQI4 $231 +ADDRLP4 32 +INDIRI4 +CNSTI4 13 +EQI4 $231 +ADDRLP4 32 +INDIRI4 +CNSTI4 10 +NEI4 $226 +LABELV $231 +line 539 +;539: bs->loved[bs->lovednum].name[i_c] = '\0'; +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 68 +ADDRLP4 36 +INDIRP4 +CNSTI4 2600 +ADDP4 +INDIRI4 +MULI4 +ADDRLP4 36 +INDIRP4 +CNSTI4 2328 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +ADDP4 +CNSTI1 0 +ASGNI1 +ADDRGP4 $233 +JUMPV +LABELV $232 +line 542 +;540: +;541: while (buf[i] == ' ' || buf[i] == '{' || buf[i] == 9 || buf[i] == 13 || buf[i] == '\n') +;542: { +line 543 +;543: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 544 +;544: } +LABELV $233 +line 541 +ADDRLP4 40 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 32 +EQI4 $232 +ADDRLP4 40 +INDIRI4 +CNSTI4 123 +EQI4 $232 +ADDRLP4 40 +INDIRI4 +CNSTI4 9 +EQI4 $232 +ADDRLP4 40 +INDIRI4 +CNSTI4 13 +EQI4 $232 +ADDRLP4 40 +INDIRI4 +CNSTI4 10 +EQI4 $232 +line 546 +;545: +;546: i_c = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $236 +JUMPV +LABELV $235 +line 549 +;547: +;548: while (buf[i] != '{' && buf[i] != 9 && buf[i] != 13 && buf[i] != '\n') +;549: { +line 550 +;550: tbuf[i_c] = buf[i]; +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 551 +;551: i_c++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 552 +;552: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 553 +;553: } +LABELV $236 +line 548 +ADDRLP4 44 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 123 +EQI4 $240 +ADDRLP4 44 +INDIRI4 +CNSTI4 9 +EQI4 $240 +ADDRLP4 44 +INDIRI4 +CNSTI4 13 +EQI4 $240 +ADDRLP4 44 +INDIRI4 +CNSTI4 10 +NEI4 $235 +LABELV $240 +line 554 +;554: tbuf[i_c] = '\0'; +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 0 +ASGNI1 +line 556 +;555: +;556: bs->loved[bs->lovednum].level = atoi(tbuf); +ADDRLP4 8 +ARGP4 +ADDRLP4 48 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +CNSTI4 68 +ADDRLP4 52 +INDIRP4 +CNSTI4 2600 +ADDP4 +INDIRI4 +MULI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 2328 +ADDP4 +ADDP4 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 558 +;557: +;558: bs->lovednum++; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +CNSTI4 2600 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRLP4 56 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 559 +;559: } +line 561 +;560: else +;561: { +line 562 +;562: break; +LABELV $225 +line 565 +;563: } +;564: +;565: if (bs->lovednum >= MAX_LOVED_ONES) +ADDRFP4 0 +INDIRP4 +CNSTI4 2600 +ADDP4 +INDIRI4 +CNSTI4 4 +LTI4 $241 +line 566 +;566: { +line 567 +;567: return; +ADDRGP4 $217 +JUMPV +LABELV $241 +line 570 +;568: } +;569: +;570: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 571 +;571: } +LABELV $219 +line 523 +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $243 +ADDRLP4 24 +INDIRI4 +CNSTI4 125 +NEI4 $222 +LABELV $243 +LABELV $220 +line 572 +;572:} +LABELV $217 +endproc ParseEmotionalAttachments 60 4 +export ReadChatGroups +proc ReadChatGroups 28 8 +line 575 +;573: +;574:int ReadChatGroups(bot_state_t *bs, char *buf) +;575:{ +line 580 +;576: char *cgroupbegin; +;577: int cgbplace; +;578: int i; +;579: +;580: cgroupbegin = strstr(buf, "BEGIN_CHAT_GROUPS"); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $245 +ARGP4 +ADDRLP4 12 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 582 +;581: +;582: if (!cgroupbegin) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $246 +line 583 +;583: { +line 584 +;584: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $244 +JUMPV +LABELV $246 +line 587 +;585: } +;586: +;587: if (strlen(cgroupbegin) >= MAX_CHAT_BUFFER_SIZE) +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 8192 +LTI4 $248 +line 588 +;588: { +line 589 +;589: G_Printf(S_COLOR_RED "Error: Personality chat section exceeds max size\n"); +ADDRGP4 $250 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 590 +;590: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $244 +JUMPV +LABELV $248 +line 593 +;591: } +;592: +;593: cgbplace = cgroupbegin - buf+1; +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $252 +JUMPV +LABELV $251 +line 596 +;594: +;595: while (buf[cgbplace] != '\n') +;596: { +line 597 +;597: cgbplace++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 598 +;598: } +LABELV $252 +line 595 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $251 +line 600 +;599: +;600: i = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $255 +JUMPV +LABELV $254 +line 603 +;601: +;602: while (buf[cgbplace] && buf[cgbplace] != '\0') +;603: { +line 604 +;604: gBotChatBuffer[bs->client][i] = buf[cgbplace]; +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 13 +LSHI4 +ADDRGP4 gBotChatBuffer +ADDP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 605 +;605: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 606 +;606: cgbplace++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 607 +;607: } +LABELV $255 +line 602 +ADDRLP4 20 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRLP4 24 +INDIRI4 +EQI4 $257 +ADDRLP4 20 +INDIRI4 +ADDRLP4 24 +INDIRI4 +NEI4 $254 +LABELV $257 +line 609 +;608: +;609: gBotChatBuffer[bs->client][i] = '\0'; +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 13 +LSHI4 +ADDRGP4 gBotChatBuffer +ADDP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 611 +;610: +;611: return 1; +CNSTI4 1 +RETI4 +LABELV $244 +endproc ReadChatGroups 28 8 +export BotUtilizePersonality +proc BotUtilizePersonality 160 16 +line 615 +;612:} +;613: +;614:void BotUtilizePersonality(bot_state_t *bs) +;615:{ +line 621 +;616: fileHandle_t f; +;617: int len, rlen; +;618: int failed; +;619: int i; +;620: //char buf[131072]; +;621: char *buf = (char *)B_TempAlloc(131072); +CNSTI4 131072 +ARGI4 +ADDRLP4 32 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 32 +INDIRP4 +ASGNP4 +line 624 +;622: char *readbuf, *group; +;623: +;624: len = trap_FS_FOpenFile(bs->settings.personalityfile, &f, FS_READ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1412 +ADDP4 +ARGP4 +ADDRLP4 24 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 36 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 626 +;625: +;626: failed = 0; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +line 628 +;627: +;628: if (!f) +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $259 +line 629 +;629: { +line 630 +;630: G_Printf(S_COLOR_RED "Error: Specified personality not found\n"); +ADDRGP4 $261 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 631 +;631: B_TempFree(131072); //buf +CNSTI4 131072 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 632 +;632: return; +ADDRGP4 $258 +JUMPV +LABELV $259 +line 635 +;633: } +;634: +;635: if (len >= 131072) +ADDRLP4 0 +INDIRI4 +CNSTI4 131072 +LTI4 $262 +line 636 +;636: { +line 637 +;637: G_Printf(S_COLOR_RED "Personality file exceeds maximum length\n"); +ADDRGP4 $264 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 638 +;638: B_TempFree(131072); //buf +CNSTI4 131072 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 639 +;639: return; +ADDRGP4 $258 +JUMPV +LABELV $262 +line 642 +;640: } +;641: +;642: trap_FS_Read(buf, len, f); +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 644 +;643: +;644: rlen = len; +ADDRLP4 28 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRGP4 $266 +JUMPV +LABELV $265 +line 647 +;645: +;646: while (len < 131072) +;647: { //kill all characters after the file length, since sometimes FS_Read doesn't do that entirely (or so it seems) +line 648 +;648: buf[len] = '\0'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 16 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 649 +;649: len++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 650 +;650: } +LABELV $266 +line 646 +ADDRLP4 0 +INDIRI4 +CNSTI4 131072 +LTI4 $265 +line 652 +;651: +;652: len = rlen; +ADDRLP4 0 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 654 +;653: +;654: readbuf = (char *)B_TempAlloc(1024); +CNSTI4 1024 +ARGI4 +ADDRLP4 40 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 655 +;655: group = (char *)B_TempAlloc(65536); +CNSTI4 65536 +ARGI4 +ADDRLP4 44 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 44 +INDIRP4 +ASGNP4 +line 657 +;656: +;657: if (!GetValueGroup(buf, "GeneralBotInfo", group)) +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRGP4 $270 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 GetValueGroup +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $268 +line 658 +;658: { +line 659 +;659: G_Printf(S_COLOR_RED "Personality file contains no GeneralBotInfo group\n"); +ADDRGP4 $271 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 660 +;660: failed = 1; //set failed so we know to set everything to default values +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +line 661 +;661: } +LABELV $268 +line 663 +;662: +;663: if (!failed && GetPairedValue(group, "reflex", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $272 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $274 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +EQI4 $272 +line 664 +;664: { +line 665 +;665: bs->skills.reflex = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2304 +ADDP4 +ADDRLP4 56 +INDIRI4 +ASGNI4 +line 666 +;666: } +ADDRGP4 $273 +JUMPV +LABELV $272 +line 668 +;667: else +;668: { +line 669 +;669: bs->skills.reflex = 100; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2304 +ADDP4 +CNSTI4 100 +ASGNI4 +line 670 +;670: } +LABELV $273 +line 672 +;671: +;672: if (!failed && GetPairedValue(group, "accuracy", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $275 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $277 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $275 +line 673 +;673: { +line 674 +;674: bs->skills.accuracy = atof(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2308 +ADDP4 +ADDRLP4 60 +INDIRF4 +ASGNF4 +line 675 +;675: } +ADDRGP4 $276 +JUMPV +LABELV $275 +line 677 +;676: else +;677: { +line 678 +;678: bs->skills.accuracy = 10; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2308 +ADDP4 +CNSTF4 1092616192 +ASGNF4 +line 679 +;679: } +LABELV $276 +line 681 +;680: +;681: if (!failed && GetPairedValue(group, "turnspeed", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $278 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $280 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 0 +EQI4 $278 +line 682 +;682: { +line 683 +;683: bs->skills.turnspeed = atof(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2312 +ADDP4 +ADDRLP4 64 +INDIRF4 +ASGNF4 +line 684 +;684: } +ADDRGP4 $279 +JUMPV +LABELV $278 +line 686 +;685: else +;686: { +line 687 +;687: bs->skills.turnspeed = 0.01f; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2312 +ADDP4 +CNSTF4 1008981770 +ASGNF4 +line 688 +;688: } +LABELV $279 +line 690 +;689: +;690: if (!failed && GetPairedValue(group, "turnspeed_combat", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $281 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $283 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 0 +EQI4 $281 +line 691 +;691: { +line 692 +;692: bs->skills.turnspeed_combat = atof(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2316 +ADDP4 +ADDRLP4 68 +INDIRF4 +ASGNF4 +line 693 +;693: } +ADDRGP4 $282 +JUMPV +LABELV $281 +line 695 +;694: else +;695: { +line 696 +;696: bs->skills.turnspeed_combat = 0.05f; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2316 +ADDP4 +CNSTF4 1028443341 +ASGNF4 +line 697 +;697: } +LABELV $282 +line 699 +;698: +;699: if (!failed && GetPairedValue(group, "maxturn", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $284 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $286 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +EQI4 $284 +line 700 +;700: { +line 701 +;701: bs->skills.maxturn = atof(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2320 +ADDP4 +ADDRLP4 72 +INDIRF4 +ASGNF4 +line 702 +;702: } +ADDRGP4 $285 +JUMPV +LABELV $284 +line 704 +;703: else +;704: { +line 705 +;705: bs->skills.maxturn = 360; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2320 +ADDP4 +CNSTF4 1135869952 +ASGNF4 +line 706 +;706: } +LABELV $285 +line 708 +;707: +;708: if (!failed && GetPairedValue(group, "perfectaim", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $287 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $289 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +EQI4 $287 +line 709 +;709: { +line 710 +;710: bs->skills.perfectaim = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 76 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2324 +ADDP4 +ADDRLP4 76 +INDIRI4 +ASGNI4 +line 711 +;711: } +ADDRGP4 $288 +JUMPV +LABELV $287 +line 713 +;712: else +;713: { +line 714 +;714: bs->skills.perfectaim = 0; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2324 +ADDP4 +CNSTI4 0 +ASGNI4 +line 715 +;715: } +LABELV $288 +line 717 +;716: +;717: if (!failed && GetPairedValue(group, "chatability", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $290 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $292 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 76 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 0 +EQI4 $290 +line 718 +;718: { +line 719 +;719: bs->canChat = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2080 +ADDP4 +ADDRLP4 80 +INDIRI4 +ASGNI4 +line 720 +;720: } +ADDRGP4 $291 +JUMPV +LABELV $290 +line 722 +;721: else +;722: { +line 723 +;723: bs->canChat = 0; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2080 +ADDP4 +CNSTI4 0 +ASGNI4 +line 724 +;724: } +LABELV $291 +line 726 +;725: +;726: if (!failed && GetPairedValue(group, "chatfrequency", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $293 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $295 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +CNSTI4 0 +EQI4 $293 +line 727 +;727: { +line 728 +;728: bs->chatFrequency = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 84 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2084 +ADDP4 +ADDRLP4 84 +INDIRI4 +ASGNI4 +line 729 +;729: } +ADDRGP4 $294 +JUMPV +LABELV $293 +line 731 +;730: else +;731: { +line 732 +;732: bs->chatFrequency = 5; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2084 +ADDP4 +CNSTI4 5 +ASGNI4 +line 733 +;733: } +LABELV $294 +line 735 +;734: +;735: if (!failed && GetPairedValue(group, "hatelevel", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $296 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $298 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 84 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 0 +EQI4 $296 +line 736 +;736: { +line 737 +;737: bs->loved_death_thresh = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 88 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2604 +ADDP4 +ADDRLP4 88 +INDIRI4 +ASGNI4 +line 738 +;738: } +ADDRGP4 $297 +JUMPV +LABELV $296 +line 740 +;739: else +;740: { +line 741 +;741: bs->loved_death_thresh = 3; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2604 +ADDP4 +CNSTI4 3 +ASGNI4 +line 742 +;742: } +LABELV $297 +line 744 +;743: +;744: if (!failed && GetPairedValue(group, "camper", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $299 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $301 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 88 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 88 +INDIRI4 +CNSTI4 0 +EQI4 $299 +line 745 +;745: { +line 746 +;746: bs->isCamper = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2048 +ADDP4 +ADDRLP4 92 +INDIRI4 +ASGNI4 +line 747 +;747: } +ADDRGP4 $300 +JUMPV +LABELV $299 +line 749 +;748: else +;749: { +line 750 +;750: bs->isCamper = 0; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2048 +ADDP4 +CNSTI4 0 +ASGNI4 +line 751 +;751: } +LABELV $300 +line 753 +;752: +;753: if (!failed && GetPairedValue(group, "saberspecialist", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $302 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $304 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 92 +INDIRI4 +CNSTI4 0 +EQI4 $302 +line 754 +;754: { +line 755 +;755: bs->saberSpecialist = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 96 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2076 +ADDP4 +ADDRLP4 96 +INDIRI4 +ASGNI4 +line 756 +;756: } +ADDRGP4 $303 +JUMPV +LABELV $302 +line 758 +;757: else +;758: { +line 759 +;759: bs->saberSpecialist = 0; //default +ADDRFP4 0 +INDIRP4 +CNSTI4 2076 +ADDP4 +CNSTI4 0 +ASGNI4 +line 760 +;760: } +LABELV $303 +line 762 +;761: +;762: if (!failed && GetPairedValue(group, "forceinfo", readbuf)) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $305 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $307 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 96 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 96 +INDIRI4 +CNSTI4 0 +EQI4 $305 +line 763 +;763: { +line 764 +;764: Com_sprintf(bs->forceinfo, sizeof(bs->forceinfo), "%s\0", readbuf); +ADDRFP4 0 +INDIRP4 +CNSTI4 2732 +ADDP4 +ARGP4 +CNSTI4 2048 +ARGI4 +ADDRGP4 $308 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 765 +;765: } +ADDRGP4 $306 +JUMPV +LABELV $305 +line 767 +;766: else +;767: { +line 768 +;768: Com_sprintf(bs->forceinfo, sizeof(bs->forceinfo), "%s\0", DEFAULT_FORCEPOWERS); +ADDRFP4 0 +INDIRP4 +CNSTI4 2732 +ADDP4 +ARGP4 +CNSTI4 2048 +ARGI4 +ADDRGP4 $308 +ARGP4 +ADDRGP4 $309 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 769 +;769: } +LABELV $306 +line 771 +;770: +;771: i = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $311 +JUMPV +LABELV $310 +line 774 +;772: +;773: while (i < MAX_CHAT_BUFFER_SIZE) +;774: { //clear out the chat buffer for this bot +line 775 +;775: gBotChatBuffer[bs->client][i] = '\0'; +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 13 +LSHI4 +ADDRGP4 gBotChatBuffer +ADDP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 776 +;776: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 777 +;777: } +LABELV $311 +line 773 +ADDRLP4 4 +INDIRI4 +CNSTI4 8192 +LTI4 $310 +line 779 +;778: +;779: if (bs->canChat) +ADDRFP4 0 +INDIRP4 +CNSTI4 2080 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $313 +line 780 +;780: { +line 781 +;781: if (!ReadChatGroups(bs, buf)) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 100 +ADDRGP4 ReadChatGroups +CALLI4 +ASGNI4 +ADDRLP4 100 +INDIRI4 +CNSTI4 0 +NEI4 $315 +line 782 +;782: { +line 783 +;783: bs->canChat = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 2080 +ADDP4 +CNSTI4 0 +ASGNI4 +line 784 +;784: } +LABELV $315 +line 785 +;785: } +LABELV $313 +line 787 +;786: +;787: if (GetValueGroup(buf, "BotWeaponWeights", group)) +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRGP4 $319 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 100 +ADDRGP4 GetValueGroup +CALLI4 +ASGNI4 +ADDRLP4 100 +INDIRI4 +CNSTI4 0 +EQI4 $317 +line 788 +;788: { +line 789 +;789: if (GetPairedValue(group, "WP_STUN_BATON", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $322 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 104 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 104 +INDIRI4 +CNSTI4 0 +EQI4 $320 +line 790 +;790: { +line 791 +;791: bs->botWeaponWeights[WP_STUN_BATON] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 108 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2616 +ADDP4 +ADDRLP4 108 +INDIRI4 +CVIF4 4 +ASGNF4 +line 792 +;792: } +LABELV $320 +line 794 +;793: +;794: if (GetPairedValue(group, "WP_SABER", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $325 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 108 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 108 +INDIRI4 +CNSTI4 0 +EQI4 $323 +line 795 +;795: { +line 796 +;796: bs->botWeaponWeights[WP_SABER] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 112 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2620 +ADDP4 +ADDRLP4 112 +INDIRI4 +CVIF4 4 +ASGNF4 +line 797 +;797: } +LABELV $323 +line 799 +;798: +;799: if (GetPairedValue(group, "WP_BRYAR_PISTOL", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $328 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 112 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 112 +INDIRI4 +CNSTI4 0 +EQI4 $326 +line 800 +;800: { +line 801 +;801: bs->botWeaponWeights[WP_BRYAR_PISTOL] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 116 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2624 +ADDP4 +ADDRLP4 116 +INDIRI4 +CVIF4 4 +ASGNF4 +line 802 +;802: } +LABELV $326 +line 804 +;803: +;804: if (GetPairedValue(group, "WP_BLASTER", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $331 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 116 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 116 +INDIRI4 +CNSTI4 0 +EQI4 $329 +line 805 +;805: { +line 806 +;806: bs->botWeaponWeights[WP_BLASTER] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 120 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2628 +ADDP4 +ADDRLP4 120 +INDIRI4 +CVIF4 4 +ASGNF4 +line 807 +;807: } +LABELV $329 +line 809 +;808: +;809: if (GetPairedValue(group, "WP_DISRUPTOR", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $334 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 120 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 120 +INDIRI4 +CNSTI4 0 +EQI4 $332 +line 810 +;810: { +line 811 +;811: bs->botWeaponWeights[WP_DISRUPTOR] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 124 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2632 +ADDP4 +ADDRLP4 124 +INDIRI4 +CVIF4 4 +ASGNF4 +line 812 +;812: } +LABELV $332 +line 814 +;813: +;814: if (GetPairedValue(group, "WP_BOWCASTER", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $337 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 124 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 124 +INDIRI4 +CNSTI4 0 +EQI4 $335 +line 815 +;815: { +line 816 +;816: bs->botWeaponWeights[WP_BOWCASTER] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 128 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2636 +ADDP4 +ADDRLP4 128 +INDIRI4 +CVIF4 4 +ASGNF4 +line 817 +;817: } +LABELV $335 +line 819 +;818: +;819: if (GetPairedValue(group, "WP_REPEATER", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $340 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 128 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 128 +INDIRI4 +CNSTI4 0 +EQI4 $338 +line 820 +;820: { +line 821 +;821: bs->botWeaponWeights[WP_REPEATER] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 132 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2640 +ADDP4 +ADDRLP4 132 +INDIRI4 +CVIF4 4 +ASGNF4 +line 822 +;822: } +LABELV $338 +line 824 +;823: +;824: if (GetPairedValue(group, "WP_DEMP2", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $343 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 132 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 132 +INDIRI4 +CNSTI4 0 +EQI4 $341 +line 825 +;825: { +line 826 +;826: bs->botWeaponWeights[WP_DEMP2] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 136 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2644 +ADDP4 +ADDRLP4 136 +INDIRI4 +CVIF4 4 +ASGNF4 +line 827 +;827: } +LABELV $341 +line 829 +;828: +;829: if (GetPairedValue(group, "WP_FLECHETTE", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $346 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 136 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 136 +INDIRI4 +CNSTI4 0 +EQI4 $344 +line 830 +;830: { +line 831 +;831: bs->botWeaponWeights[WP_FLECHETTE] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 140 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2648 +ADDP4 +ADDRLP4 140 +INDIRI4 +CVIF4 4 +ASGNF4 +line 832 +;832: } +LABELV $344 +line 834 +;833: +;834: if (GetPairedValue(group, "WP_ROCKET_LAUNCHER", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $349 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 140 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 140 +INDIRI4 +CNSTI4 0 +EQI4 $347 +line 835 +;835: { +line 836 +;836: bs->botWeaponWeights[WP_ROCKET_LAUNCHER] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 144 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2652 +ADDP4 +ADDRLP4 144 +INDIRI4 +CVIF4 4 +ASGNF4 +line 837 +;837: } +LABELV $347 +line 839 +;838: +;839: if (GetPairedValue(group, "WP_THERMAL", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $352 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 144 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 144 +INDIRI4 +CNSTI4 0 +EQI4 $350 +line 840 +;840: { +line 841 +;841: bs->botWeaponWeights[WP_THERMAL] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 148 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2656 +ADDP4 +ADDRLP4 148 +INDIRI4 +CVIF4 4 +ASGNF4 +line 842 +;842: } +LABELV $350 +line 844 +;843: +;844: if (GetPairedValue(group, "WP_TRIP_MINE", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $355 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 148 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 148 +INDIRI4 +CNSTI4 0 +EQI4 $353 +line 845 +;845: { +line 846 +;846: bs->botWeaponWeights[WP_TRIP_MINE] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 152 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2660 +ADDP4 +ADDRLP4 152 +INDIRI4 +CVIF4 4 +ASGNF4 +line 847 +;847: } +LABELV $353 +line 849 +;848: +;849: if (GetPairedValue(group, "WP_DET_PACK", readbuf)) +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $358 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 152 +ADDRGP4 GetPairedValue +CALLI4 +ASGNI4 +ADDRLP4 152 +INDIRI4 +CNSTI4 0 +EQI4 $356 +line 850 +;850: { +line 851 +;851: bs->botWeaponWeights[WP_DET_PACK] = atoi(readbuf); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 156 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 2664 +ADDP4 +ADDRLP4 156 +INDIRI4 +CVIF4 4 +ASGNF4 +line 852 +;852: } +LABELV $356 +line 853 +;853: } +LABELV $317 +line 855 +;854: +;855: bs->lovednum = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 2600 +ADDP4 +CNSTI4 0 +ASGNI4 +line 857 +;856: +;857: if (GetValueGroup(buf, "EmotionalAttachments", group)) +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRGP4 $361 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 104 +ADDRGP4 GetValueGroup +CALLI4 +ASGNI4 +ADDRLP4 104 +INDIRI4 +CNSTI4 0 +EQI4 $359 +line 858 +;858: { +line 859 +;859: ParseEmotionalAttachments(bs, group); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 ParseEmotionalAttachments +CALLV +pop +line 860 +;860: } +LABELV $359 +line 862 +;861: +;862: B_TempFree(131072); //buf +CNSTI4 131072 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 863 +;863: B_TempFree(1024); //readbuf +CNSTI4 1024 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 864 +;864: B_TempFree(65536); //group +CNSTI4 65536 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 865 +;865: trap_FS_FCloseFile(f); +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 866 +;866:} +LABELV $258 +endproc BotUtilizePersonality 160 16 +import floattime +import gLevelFlags +import nodenum +import nodetable +import gLastPrintedIndex +import gWPNum +import gWPArray +import gWPRenderedFrame +import gBotEdit +import gDeactivated +import gWPRenderTime +bss +export gBotChatBuffer +align 1 +LABELV gBotChatBuffer +skip 262144 +import eFlagBlue +import eFlagRed +import oFlagBlue +import flagBlue +import oFlagRed +import flagRed +import bot_wp_visconnect +import bot_wp_distconnect +import bot_wp_clearweight +import bot_wp_edit +import bot_wp_info +import bot_camp +import bot_attachments +import bot_forgimmick +import bot_forcepowers +import ConcatArgs +import GetBestIdleGoal +import GetNearestVisibleWP +import BotIsAChickenWuss +import OrgVisibleBox +import BotWaypointRender +import StandardBotAI +import NumBots +import BotResetState +import GetBotLibAPI +import trap_ROFF_Purge_Ent +import trap_ROFF_Play +import trap_ROFF_Cache +import trap_ROFF_UpdateEntities +import trap_ROFF_Clean +import trap_SP_GetStringTextString +import trap_SP_Register +import trap_SP_RegisterServer +import trap_SnapVector +import trap_GeneticParentsAndChildSelection +import trap_BotResetWeaponState +import trap_BotFreeWeaponState +import trap_BotAllocWeaponState +import trap_BotLoadWeaponWeights +import trap_BotGetWeaponInfo +import trap_BotChooseBestFightWeapon +import trap_BotAddAvoidSpot +import trap_BotInitMoveState +import trap_BotFreeMoveState +import trap_BotAllocMoveState +import trap_BotPredictVisiblePosition +import trap_BotMovementViewTarget +import trap_BotReachabilityArea +import trap_BotResetLastAvoidReach +import trap_BotResetAvoidReach +import trap_BotMoveInDirection +import trap_BotMoveToGoal +import trap_BotResetMoveState +import trap_BotFreeGoalState +import trap_BotAllocGoalState +import trap_BotMutateGoalFuzzyLogic +import trap_BotSaveGoalFuzzyLogic +import trap_BotInterbreedGoalFuzzyLogic +import trap_BotFreeItemWeights +import trap_BotLoadItemWeights +import trap_BotUpdateEntityItems +import trap_BotInitLevelItems +import trap_BotSetAvoidGoalTime +import trap_BotAvoidGoalTime +import trap_BotGetLevelItemGoal +import trap_BotGetMapLocationGoal +import trap_BotGetNextCampSpotGoal +import trap_BotItemGoalInVisButNotVisible +import trap_BotTouchingGoal +import trap_BotChooseNBGItem +import trap_BotChooseLTGItem +import trap_BotGetSecondGoal +import trap_BotGetTopGoal +import trap_BotGoalName +import trap_BotDumpGoalStack +import trap_BotDumpAvoidGoals +import trap_BotEmptyGoalStack +import trap_BotPopGoal +import trap_BotPushGoal +import trap_BotResetAvoidGoals +import trap_BotRemoveFromAvoidGoals +import trap_BotResetGoalState +import trap_BotSetChatName +import trap_BotSetChatGender +import trap_BotLoadChatFile +import trap_BotReplaceSynonyms +import trap_UnifyWhiteSpaces +import trap_BotMatchVariable +import trap_BotFindMatch +import trap_StringContains +import trap_BotGetChatMessage +import trap_BotEnterChat +import trap_BotChatLength +import trap_BotReplyChat +import trap_BotNumInitialChats +import trap_BotInitialChat +import trap_BotNumConsoleMessages +import trap_BotNextConsoleMessage +import trap_BotRemoveConsoleMessage +import trap_BotQueueConsoleMessage +import trap_BotFreeChatState +import trap_BotAllocChatState +import trap_Characteristic_String +import trap_Characteristic_BInteger +import trap_Characteristic_Integer +import trap_Characteristic_BFloat +import trap_Characteristic_Float +import trap_BotFreeCharacter +import trap_BotLoadCharacter +import trap_EA_ResetInput +import trap_EA_GetInput +import trap_EA_EndRegular +import trap_EA_ForcePower +import trap_EA_Alt_Attack +import trap_EA_View +import trap_EA_Move +import trap_EA_DelayedJump +import trap_EA_Jump +import trap_EA_SelectWeapon +import trap_EA_MoveRight +import trap_EA_MoveLeft +import trap_EA_MoveBack +import trap_EA_MoveForward +import trap_EA_MoveDown +import trap_EA_MoveUp +import trap_EA_Crouch +import trap_EA_Respawn +import trap_EA_Use +import trap_EA_Attack +import trap_EA_Talk +import trap_EA_Gesture +import trap_EA_Action +import trap_EA_Command +import trap_EA_SayTeam +import trap_EA_Say +import trap_AAS_PredictClientMovement +import trap_AAS_Swimming +import trap_AAS_AlternativeRouteGoals +import trap_AAS_PredictRoute +import trap_AAS_EnableRoutingArea +import trap_AAS_AreaTravelTimeToGoalArea +import trap_AAS_AreaReachability +import trap_AAS_IntForBSPEpairKey +import trap_AAS_FloatForBSPEpairKey +import trap_AAS_VectorForBSPEpairKey +import trap_AAS_ValueForBSPEpairKey +import trap_AAS_NextBSPEntity +import trap_AAS_PointContents +import trap_AAS_TraceAreas +import trap_AAS_PointReachabilityAreaIndex +import trap_AAS_PointAreaNum +import trap_AAS_Time +import trap_AAS_PresenceTypeBoundingBox +import trap_AAS_Initialized +import trap_AAS_EntityInfo +import trap_AAS_AreaInfo +import trap_AAS_BBoxAreas +import trap_BotUserCommand +import trap_BotGetServerCommand +import trap_BotGetSnapshotEntity +import trap_BotLibTest +import trap_BotLibUpdateEntity +import trap_BotLibLoadMap +import trap_BotLibStartFrame +import trap_BotLibDefine +import trap_BotLibVarGet +import trap_BotLibVarSet +import trap_BotLibShutdown +import trap_BotLibSetup +import trap_DebugPolygonDelete +import trap_DebugPolygonCreate +import trap_GetEntityToken +import trap_GetUsercmd +import trap_BotFreeClient +import trap_BotAllocateClient +import trap_EntityContact +import trap_EntitiesInBox +import trap_UnlinkEntity +import trap_LinkEntity +import trap_AreasConnected +import trap_AdjustAreaPortalState +import trap_InPVSIgnorePortals +import trap_InPVS +import trap_PointContents +import trap_Trace +import trap_SetBrushModel +import trap_GetServerinfo +import trap_SetUserinfo +import trap_GetUserinfo +import trap_GetConfigstring +import trap_SetConfigstring +import trap_SendServerCommand +import trap_DropClient +import trap_LocateGameData +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_VariableIntegerValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_SendConsoleCommand +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Args +import trap_Argv +import trap_Argc +import trap_Milliseconds +import trap_Error +import trap_Printf +import g_timeouttospec +import g_forceDodge +import g_dismember +import g_singlePlayer +import g_enableBreath +import g_enableDust +import g_rankings +import pmove_msec +import pmove_fixed +import g_smoothClients +import g_blueteam +import g_redteam +import g_debugUp +import g_debugRight +import g_debugForward +import g_filterBan +import g_banIPs +import g_teamForceBalance +import g_teamAutoJoin +import g_allowVote +import g_blood +import g_doWarmup +import g_warmup +import g_motd +import g_synchronousClients +import g_adaptRespawn +import g_weaponTeamRespawn +import g_weaponRespawn +import g_debugDamage +import g_debugAlloc +import g_debugMove +import g_inactivity +import g_forcerespawn +import g_quadfactor +import g_knockback +import g_speed +import g_gravity +import g_needpass +import g_password +import g_friendlySaber +import g_friendlyFire +import g_saberInterpolate +import g_capturelimit +import g_timelimit +import g_duel_fraglimit +import g_fraglimit +import g_duelWeaponDisable +import g_weaponDisable +import g_forcePowerDisable +import g_spawnInvulnerability +import g_forceRegenTime +import g_saberLocking +import g_privateDuel +import g_forceBasedTeams +import g_maxForceRank +import g_dmflags +import g_autoMapCycle +import g_restarted +import g_maxGameClients +import g_maxclients +import g_cheats +import g_dedicated +import g_gametype +import g_entities +import level +import Pickup_Team +import CheckTeamStatus +import TeamplayInfoMessage +import Team_GetLocationMsg +import Team_GetLocation +import SelectSagaSpawnPoint +import SelectCTFSpawnPoint +import Team_FreeEntity +import Team_ReturnFlag +import Team_InitGame +import Team_CheckHurtCarrier +import Team_FragBonuses +import Team_DroppedFlagThink +import AddTeamScore +import TeamColorString +import OtherTeamName +import TeamName +import OtherTeam +import BotAIStartFrame +import BotAIShutdownClient +import BotAISetupClient +import BotAILoadMap +import BotAIShutdown +import BotAISetup +import InFieldOfVision +import BotOrder +import OrgVisible +import InitSagaMode +import G_ClearClientLog +import G_LogExit +import G_LogWeaponOutput +import G_LogWeaponInit +import G_LogWeaponItem +import G_LogWeaponPowerup +import G_LogWeaponFrag +import G_LogWeaponDeath +import G_LogWeaponKill +import G_LogWeaponDamage +import G_LogWeaponFire +import G_LogWeaponPickup +import Jedi_DodgeEvasion +import ForceTelepathy +import ForceThrow +import ForceSeeing +import ForceTeamForceReplenish +import ForceTeamHeal +import ForceAbsorb +import ForceProtect +import ForceGrip +import ForceRage +import ForceSpeed +import ForceHeal +import ForcePowerUsableOn +import WP_ForcePowersUpdate +import WP_SpawnInitForcePowers +import WP_InitForcePowers +import WP_SaberInitBladeData +import WP_SaberCanBlock +import WP_SaberPositionUpdate +import WP_ForcePowerStop +import HasSetSaberOnly +import G_PreDefSound +import G_RefreshNextMap +import G_DoesMapSupportGametype +import BotInterbreedEndMatch +import Svcmd_BotList_f +import Svcmd_AddBot_f +import G_BotConnect +import G_RemoveQueuedBotBegin +import G_CheckBotSpawn +import G_GetBotInfoByName +import G_GetBotInfoByNumber +import G_InitBots +import UpdateTournamentInfo +import G_WriteSessionData +import G_InitWorldSession +import G_InitSessionData +import G_ReadSessionData +import Svcmd_GameMem_f +import G_InitMemory +import G_Alloc +import Team_CheckDroppedItem +import OnSameTeam +import G_RunClient +import ClientEndFrame +import ClientThink +import G_CheckClientTimeouts +import ClientCommand +import ClientBegin +import ClientDisconnect +import ClientUserinfoChanged +import ClientConnect +import G_GetStripEdString +import G_Error +import G_Printf +import SendScoreboardMessageToAllClients +import G_LogPrintf +import G_RunThink +import CheckTeamLeader +import SetLeader +import FindIntermissionPoint +import g_ff_objectives +import DeathmatchScoreboardMessage +import G_SetStats +import MoveClientToIntermission +import BlowDetpacks +import FireWeapon +import G_FilterPacket +import G_ProcessIPBans +import ConsoleCommand +import gJMSaberEnt +import SpotWouldTelefrag +import CalculateRanks +import AddScore +import player_die +import ClientSpawn +import InitBodyQue +import BeginIntermission +import respawn +import CopyToBodyQue +import SelectSpawnPoint +import SetClientViewAngle +import PickTeam +import TeamLeader +import TeamCount +import CheckGauntletAttack +import SnapVectorTowards +import CalcMuzzlePoint +import LogAccuracyHit +import WP_FireGenericBlasterMissile +import WP_FireTurretMissile +import G_PlayerBecomeATST +import ATST_ManageDamageBoxes +import TeleportPlayer +import trigger_teleporter_touch +import Touch_DoorTrigger +import G_RunMover +import WP_FireBlasterMissile +import G_ExplodeMissile +import G_BounceProjectile +import CreateMissile +import G_RunMissile +import G_ReflectMissile +import ExplodeDeath +import TossClientCubes +import TossClientItems +import TossClientWeapon +import body_die +import G_RadiusDamage +import G_Damage +import CanDamage +import trap_G2API_SetBoneAnim +import trap_G2API_GetGLAName +import trap_G2API_SetBoneAngles +import trap_G2API_CleanGhoul2Models +import trap_G2API_RemoveGhoul2Model +import trap_G2API_HasGhoul2ModelOnIndex +import trap_G2API_DuplicateGhoul2Instance +import trap_G2API_CopySpecificGhoul2Model +import trap_G2API_CopyGhoul2Instance +import trap_G2API_SetBoltInfo +import trap_G2API_AddBolt +import trap_G2API_InitGhoul2Model +import trap_G2API_GetBoltMatrix_NoReconstruct +import trap_G2API_GetBoltMatrix +import trap_G2_HaveWeGhoul2Models +import trap_G2_SetGhoul2ModelIndexes +import trap_G2_ListModelBones +import trap_G2_ListModelSurfaces +import G_SkinIndex +import BuildShaderStateConfig +import AddRemap +import G_SetOrigin +import G_AddEvent +import G_AddPredictableEvent +import vtos +import tv +import G_RunObject +import G_TouchSolids +import G_TouchTriggers +import G_EntitiesFree +import G_FreeEntity +import G_KillG2Queue +import G_SendG2KillQueue +import TryUse +import G_EntitySound +import G_SoundAtLoc +import G_Sound +import G_MuteSound +import G_ScreenShake +import G_PlayEffect +import G_TempEntity +import G_Spawn +import G_InitGentity +import G_SetAngles +import G_SetMovedir +import G_UseTargets +import G_PickTarget +import G_RadiusList +import G_Find +import G_KillBox +import G_TeamCommand +import G_EffectIndex +import G_SoundIndex +import G_ModelIndex +import SaveRegisteredItems +import RegisterItem +import ClearRegisteredItems +import Touch_Item +import Add_Ammo +import ArmorIndex +import Think_Weapon +import FinishSpawningItem +import G_SpawnItem +import SetRespawn +import LaunchItem +import Drop_Item +import PrecacheItem +import UseHoldableItem +import RespawnItem +import G_RunItem +import G_CheckTeamItems +import ItemUse_MedPack +import ItemUse_Seeker +import ItemUse_Sentry +import ItemUse_Shield +import ItemUse_Binoculars +import G_GetDuelWinner +import Cmd_EngageDuel_f +import Cmd_ToggleSaber_f +import G_ItemUsable +import Cmd_SaberAttackCycle_f +import Cmd_FollowCycle_f +import SetTeam +import BroadcastTeamChange +import StopFollowing +import Cmd_Score_f +import G_NewString +import G_SpawnEntitiesFromString +import G_SpawnVector +import G_SpawnInt +import G_SpawnFloat +import G_SpawnString +import g2SaberInstance +import precachedKyle +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $361 +char 1 69 +char 1 109 +char 1 111 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 65 +char 1 116 +char 1 116 +char 1 97 +char 1 99 +char 1 104 +char 1 109 +char 1 101 +char 1 110 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $358 +char 1 87 +char 1 80 +char 1 95 +char 1 68 +char 1 69 +char 1 84 +char 1 95 +char 1 80 +char 1 65 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $355 +char 1 87 +char 1 80 +char 1 95 +char 1 84 +char 1 82 +char 1 73 +char 1 80 +char 1 95 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 0 +align 1 +LABELV $352 +char 1 87 +char 1 80 +char 1 95 +char 1 84 +char 1 72 +char 1 69 +char 1 82 +char 1 77 +char 1 65 +char 1 76 +char 1 0 +align 1 +LABELV $349 +char 1 87 +char 1 80 +char 1 95 +char 1 82 +char 1 79 +char 1 67 +char 1 75 +char 1 69 +char 1 84 +char 1 95 +char 1 76 +char 1 65 +char 1 85 +char 1 78 +char 1 67 +char 1 72 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $346 +char 1 87 +char 1 80 +char 1 95 +char 1 70 +char 1 76 +char 1 69 +char 1 67 +char 1 72 +char 1 69 +char 1 84 +char 1 84 +char 1 69 +char 1 0 +align 1 +LABELV $343 +char 1 87 +char 1 80 +char 1 95 +char 1 68 +char 1 69 +char 1 77 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $340 +char 1 87 +char 1 80 +char 1 95 +char 1 82 +char 1 69 +char 1 80 +char 1 69 +char 1 65 +char 1 84 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $337 +char 1 87 +char 1 80 +char 1 95 +char 1 66 +char 1 79 +char 1 87 +char 1 67 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $334 +char 1 87 +char 1 80 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 82 +char 1 85 +char 1 80 +char 1 84 +char 1 79 +char 1 82 +char 1 0 +align 1 +LABELV $331 +char 1 87 +char 1 80 +char 1 95 +char 1 66 +char 1 76 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $328 +char 1 87 +char 1 80 +char 1 95 +char 1 66 +char 1 82 +char 1 89 +char 1 65 +char 1 82 +char 1 95 +char 1 80 +char 1 73 +char 1 83 +char 1 84 +char 1 79 +char 1 76 +char 1 0 +align 1 +LABELV $325 +char 1 87 +char 1 80 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $322 +char 1 87 +char 1 80 +char 1 95 +char 1 83 +char 1 84 +char 1 85 +char 1 78 +char 1 95 +char 1 66 +char 1 65 +char 1 84 +char 1 79 +char 1 78 +char 1 0 +align 1 +LABELV $319 +char 1 66 +char 1 111 +char 1 116 +char 1 87 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 87 +char 1 101 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $309 +char 1 53 +char 1 45 +char 1 49 +char 1 45 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 0 +align 1 +LABELV $308 +char 1 37 +char 1 115 +char 1 0 +char 1 0 +align 1 +LABELV $307 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 0 +align 1 +LABELV $304 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 115 +char 1 112 +char 1 101 +char 1 99 +char 1 105 +char 1 97 +char 1 108 +char 1 105 +char 1 115 +char 1 116 +char 1 0 +align 1 +LABELV $301 +char 1 99 +char 1 97 +char 1 109 +char 1 112 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $298 +char 1 104 +char 1 97 +char 1 116 +char 1 101 +char 1 108 +char 1 101 +char 1 118 +char 1 101 +char 1 108 +char 1 0 +align 1 +LABELV $295 +char 1 99 +char 1 104 +char 1 97 +char 1 116 +char 1 102 +char 1 114 +char 1 101 +char 1 113 +char 1 117 +char 1 101 +char 1 110 +char 1 99 +char 1 121 +char 1 0 +align 1 +LABELV $292 +char 1 99 +char 1 104 +char 1 97 +char 1 116 +char 1 97 +char 1 98 +char 1 105 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 0 +align 1 +LABELV $289 +char 1 112 +char 1 101 +char 1 114 +char 1 102 +char 1 101 +char 1 99 +char 1 116 +char 1 97 +char 1 105 +char 1 109 +char 1 0 +align 1 +LABELV $286 +char 1 109 +char 1 97 +char 1 120 +char 1 116 +char 1 117 +char 1 114 +char 1 110 +char 1 0 +align 1 +LABELV $283 +char 1 116 +char 1 117 +char 1 114 +char 1 110 +char 1 115 +char 1 112 +char 1 101 +char 1 101 +char 1 100 +char 1 95 +char 1 99 +char 1 111 +char 1 109 +char 1 98 +char 1 97 +char 1 116 +char 1 0 +align 1 +LABELV $280 +char 1 116 +char 1 117 +char 1 114 +char 1 110 +char 1 115 +char 1 112 +char 1 101 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $277 +char 1 97 +char 1 99 +char 1 99 +char 1 117 +char 1 114 +char 1 97 +char 1 99 +char 1 121 +char 1 0 +align 1 +LABELV $274 +char 1 114 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 120 +char 1 0 +align 1 +LABELV $271 +char 1 94 +char 1 49 +char 1 80 +char 1 101 +char 1 114 +char 1 115 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 99 +char 1 111 +char 1 110 +char 1 116 +char 1 97 +char 1 105 +char 1 110 +char 1 115 +char 1 32 +char 1 110 +char 1 111 +char 1 32 +char 1 71 +char 1 101 +char 1 110 +char 1 101 +char 1 114 +char 1 97 +char 1 108 +char 1 66 +char 1 111 +char 1 116 +char 1 73 +char 1 110 +char 1 102 +char 1 111 +char 1 32 +char 1 103 +char 1 114 +char 1 111 +char 1 117 +char 1 112 +char 1 10 +char 1 0 +align 1 +LABELV $270 +char 1 71 +char 1 101 +char 1 110 +char 1 101 +char 1 114 +char 1 97 +char 1 108 +char 1 66 +char 1 111 +char 1 116 +char 1 73 +char 1 110 +char 1 102 +char 1 111 +char 1 0 +align 1 +LABELV $264 +char 1 94 +char 1 49 +char 1 80 +char 1 101 +char 1 114 +char 1 115 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 101 +char 1 120 +char 1 99 +char 1 101 +char 1 101 +char 1 100 +char 1 115 +char 1 32 +char 1 109 +char 1 97 +char 1 120 +char 1 105 +char 1 109 +char 1 117 +char 1 109 +char 1 32 +char 1 108 +char 1 101 +char 1 110 +char 1 103 +char 1 116 +char 1 104 +char 1 10 +char 1 0 +align 1 +LABELV $261 +char 1 94 +char 1 49 +char 1 69 +char 1 114 +char 1 114 +char 1 111 +char 1 114 +char 1 58 +char 1 32 +char 1 83 +char 1 112 +char 1 101 +char 1 99 +char 1 105 +char 1 102 +char 1 105 +char 1 101 +char 1 100 +char 1 32 +char 1 112 +char 1 101 +char 1 114 +char 1 115 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 102 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $250 +char 1 94 +char 1 49 +char 1 69 +char 1 114 +char 1 114 +char 1 111 +char 1 114 +char 1 58 +char 1 32 +char 1 80 +char 1 101 +char 1 114 +char 1 115 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 32 +char 1 99 +char 1 104 +char 1 97 +char 1 116 +char 1 32 +char 1 115 +char 1 101 +char 1 99 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 32 +char 1 101 +char 1 120 +char 1 99 +char 1 101 +char 1 101 +char 1 100 +char 1 115 +char 1 32 +char 1 109 +char 1 97 +char 1 120 +char 1 32 +char 1 115 +char 1 105 +char 1 122 +char 1 101 +char 1 10 +char 1 0 +align 1 +LABELV $245 +char 1 66 +char 1 69 +char 1 71 +char 1 73 +char 1 78 +char 1 95 +char 1 67 +char 1 72 +char 1 65 +char 1 84 +char 1 95 +char 1 71 +char 1 82 +char 1 79 +char 1 85 +char 1 80 +char 1 83 +char 1 0 +align 1 +LABELV $215 +char 1 71 +char 1 101 +char 1 110 +char 1 101 +char 1 114 +char 1 97 +char 1 108 +char 1 71 +char 1 114 +char 1 101 +char 1 101 +char 1 116 +char 1 105 +char 1 110 +char 1 103 +char 1 115 +char 1 0 +align 1 +LABELV $162 +char 1 115 +char 1 112 +char 1 95 +char 1 108 +char 1 97 +char 1 110 +char 1 103 +char 1 117 +char 1 97 +char 1 103 +char 1 101 +char 1 0 diff --git a/CODE-mp/game/vm/ai_wpnav.asm b/CODE-mp/game/vm/ai_wpnav.asm new file mode 100644 index 0000000..d93392e --- /dev/null +++ b/CODE-mp/game/vm/ai_wpnav.asm @@ -0,0 +1,20600 @@ +data +export gWPRenderTime +align 4 +LABELV gWPRenderTime +byte 4 0 +export gDeactivated +align 4 +LABELV gDeactivated +byte 4 0 +export gBotEdit +align 4 +LABELV gBotEdit +byte 4 0 +export gWPRenderedFrame +align 4 +LABELV gWPRenderedFrame +byte 4 0 +export gWPNum +align 4 +LABELV gWPNum +byte 4 0 +export gLastPrintedIndex +align 4 +LABELV gLastPrintedIndex +byte 4 -1 +export gLevelFlags +align 4 +LABELV gLevelFlags +byte 4 0 +export GetFlagStr +code +proc GetFlagStr 12 8 +file "../ai_wpnav.c" +line 20 +;1:#include "g_local.h" +;2:#include "q_shared.h" +;3:#include "botlib.h" +;4:#include "ai_main.h" +;5: +;6:float gWPRenderTime = 0; +;7:float gDeactivated = 0; +;8:float gBotEdit = 0; +;9:int gWPRenderedFrame = 0; +;10:wpobject_t *gWPArray[MAX_WPARRAY_SIZE]; +;11:int gWPNum = 0; +;12:int gLastPrintedIndex = -1; +;13: +;14:nodeobject_t nodetable[MAX_NODETABLE_SIZE]; +;15:int nodenum; //so we can connect broken trails +;16: +;17:int gLevelFlags = 0; +;18: +;19:char *GetFlagStr( int flags ) +;20:{ +line 24 +;21: char *flagstr; +;22: int i; +;23: +;24: flagstr = (char *)B_TempAlloc(128); +CNSTI4 128 +ARGI4 +ADDRLP4 8 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 25 +;25: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 27 +;26: +;27: if (!flags) +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $82 +line 28 +;28: { +line 29 +;29: strcpy(flagstr, "none\0"); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $84 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 30 +;30: goto fend; +ADDRGP4 $85 +JUMPV +LABELV $82 +line 33 +;31: } +;32: +;33: if (flags & WPFLAG_JUMP) +ADDRFP4 0 +INDIRI4 +CNSTI4 16 +BANDI4 +CNSTI4 0 +EQI4 $86 +line 34 +;34: { +line 35 +;35: flagstr[i] = 'j'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 106 +ASGNI1 +line 36 +;36: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 37 +;37: } +LABELV $86 +line 39 +;38: +;39: if (flags & WPFLAG_DUCK) +ADDRFP4 0 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +EQI4 $88 +line 40 +;40: { +line 41 +;41: flagstr[i] = 'd'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 100 +ASGNI1 +line 42 +;42: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 43 +;43: } +LABELV $88 +line 45 +;44: +;45: if (flags & WPFLAG_SNIPEORCAMPSTAND) +ADDRFP4 0 +INDIRI4 +CNSTI4 2048 +BANDI4 +CNSTI4 0 +EQI4 $90 +line 46 +;46: { +line 47 +;47: flagstr[i] = 'c'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 99 +ASGNI1 +line 48 +;48: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 49 +;49: } +LABELV $90 +line 51 +;50: +;51: if (flags & WPFLAG_WAITFORFUNC) +ADDRFP4 0 +INDIRI4 +CNSTI4 4096 +BANDI4 +CNSTI4 0 +EQI4 $92 +line 52 +;52: { +line 53 +;53: flagstr[i] = 'f'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 102 +ASGNI1 +line 54 +;54: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 55 +;55: } +LABELV $92 +line 57 +;56: +;57: if (flags & WPFLAG_SNIPEORCAMP) +ADDRFP4 0 +INDIRI4 +CNSTI4 8192 +BANDI4 +CNSTI4 0 +EQI4 $94 +line 58 +;58: { +line 59 +;59: flagstr[i] = 's'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 115 +ASGNI1 +line 60 +;60: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 61 +;61: } +LABELV $94 +line 63 +;62: +;63: if (flags & WPFLAG_ONEWAY_FWD) +ADDRFP4 0 +INDIRI4 +CNSTI4 16384 +BANDI4 +CNSTI4 0 +EQI4 $96 +line 64 +;64: { +line 65 +;65: flagstr[i] = 'x'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 120 +ASGNI1 +line 66 +;66: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 67 +;67: } +LABELV $96 +line 69 +;68: +;69: if (flags & WPFLAG_ONEWAY_BACK) +ADDRFP4 0 +INDIRI4 +CNSTI4 32768 +BANDI4 +CNSTI4 0 +EQI4 $98 +line 70 +;70: { +line 71 +;71: flagstr[i] = 'y'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 121 +ASGNI1 +line 72 +;72: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 73 +;73: } +LABELV $98 +line 75 +;74: +;75: if (flags & WPFLAG_GOALPOINT) +ADDRFP4 0 +INDIRI4 +CNSTI4 65536 +BANDI4 +CNSTI4 0 +EQI4 $100 +line 76 +;76: { +line 77 +;77: flagstr[i] = 'g'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 103 +ASGNI1 +line 78 +;78: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 79 +;79: } +LABELV $100 +line 81 +;80: +;81: if (flags & WPFLAG_NOVIS) +ADDRFP4 0 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $102 +line 82 +;82: { +line 83 +;83: flagstr[i] = 'n'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 110 +ASGNI1 +line 84 +;84: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 85 +;85: } +LABELV $102 +line 87 +;86: +;87: if (flags & WPFLAG_NOMOVEFUNC) +ADDRFP4 0 +INDIRI4 +CNSTI4 2097152 +BANDI4 +CNSTI4 0 +EQI4 $104 +line 88 +;88: { +line 89 +;89: flagstr[i] = 'm'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 109 +ASGNI1 +line 90 +;90: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 91 +;91: } +LABELV $104 +line 93 +;92: +;93: if (flags & WPFLAG_RED_FLAG) +ADDRFP4 0 +INDIRI4 +CNSTI4 131072 +BANDI4 +CNSTI4 0 +EQI4 $106 +line 94 +;94: { +line 95 +;95: if (i) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $108 +line 96 +;96: { +line 97 +;97: flagstr[i] = ' '; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 32 +ASGNI1 +line 98 +;98: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 99 +;99: } +LABELV $108 +line 100 +;100: flagstr[i] = 'r'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 114 +ASGNI1 +line 101 +;101: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 102 +;102: flagstr[i] = 'e'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 101 +ASGNI1 +line 103 +;103: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 104 +;104: flagstr[i] = 'd'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 100 +ASGNI1 +line 105 +;105: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 106 +;106: flagstr[i] = ' '; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 32 +ASGNI1 +line 107 +;107: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 108 +;108: flagstr[i] = 'f'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 102 +ASGNI1 +line 109 +;109: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 110 +;110: flagstr[i] = 'l'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 108 +ASGNI1 +line 111 +;111: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 112 +;112: flagstr[i] = 'a'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 97 +ASGNI1 +line 113 +;113: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 114 +;114: flagstr[i] = 'g'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 103 +ASGNI1 +line 115 +;115: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 116 +;116: } +LABELV $106 +line 118 +;117: +;118: if (flags & WPFLAG_BLUE_FLAG) +ADDRFP4 0 +INDIRI4 +CNSTI4 262144 +BANDI4 +CNSTI4 0 +EQI4 $110 +line 119 +;119: { +line 120 +;120: if (i) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $112 +line 121 +;121: { +line 122 +;122: flagstr[i] = ' '; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 32 +ASGNI1 +line 123 +;123: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 124 +;124: } +LABELV $112 +line 125 +;125: flagstr[i] = 'b'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 98 +ASGNI1 +line 126 +;126: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 127 +;127: flagstr[i] = 'l'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 108 +ASGNI1 +line 128 +;128: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 129 +;129: flagstr[i] = 'u'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 117 +ASGNI1 +line 130 +;130: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 131 +;131: flagstr[i] = 'e'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 101 +ASGNI1 +line 132 +;132: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 133 +;133: flagstr[i] = ' '; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 32 +ASGNI1 +line 134 +;134: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 135 +;135: flagstr[i] = 'f'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 102 +ASGNI1 +line 136 +;136: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 137 +;137: flagstr[i] = 'l'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 108 +ASGNI1 +line 138 +;138: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 139 +;139: flagstr[i] = 'a'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 97 +ASGNI1 +line 140 +;140: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 141 +;141: flagstr[i] = 'g'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 103 +ASGNI1 +line 142 +;142: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 143 +;143: } +LABELV $110 +line 145 +;144: +;145: if (flags & WPFLAG_SAGA_IMPERIALOBJ) +ADDRFP4 0 +INDIRI4 +CNSTI4 1048576 +BANDI4 +CNSTI4 0 +EQI4 $114 +line 146 +;146: { +line 147 +;147: if (i) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $116 +line 148 +;148: { +line 149 +;149: flagstr[i] = ' '; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 32 +ASGNI1 +line 150 +;150: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 151 +;151: } +LABELV $116 +line 152 +;152: flagstr[i] = 's'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 115 +ASGNI1 +line 153 +;153: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 154 +;154: flagstr[i] = 'a'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 97 +ASGNI1 +line 155 +;155: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 156 +;156: flagstr[i] = 'g'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 103 +ASGNI1 +line 157 +;157: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 158 +;158: flagstr[i] = 'a'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 97 +ASGNI1 +line 159 +;159: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 160 +;160: flagstr[i] = '_'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 95 +ASGNI1 +line 161 +;161: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 162 +;162: flagstr[i] = 'i'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 105 +ASGNI1 +line 163 +;163: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 164 +;164: flagstr[i] = 'm'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 109 +ASGNI1 +line 165 +;165: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 166 +;166: flagstr[i] = 'p'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 112 +ASGNI1 +line 167 +;167: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 168 +;168: } +LABELV $114 +line 170 +;169: +;170: if (flags & WPFLAG_SAGA_REBELOBJ) +ADDRFP4 0 +INDIRI4 +CNSTI4 524288 +BANDI4 +CNSTI4 0 +EQI4 $118 +line 171 +;171: { +line 172 +;172: if (i) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $120 +line 173 +;173: { +line 174 +;174: flagstr[i] = ' '; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 32 +ASGNI1 +line 175 +;175: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 176 +;176: } +LABELV $120 +line 177 +;177: flagstr[i] = 's'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 115 +ASGNI1 +line 178 +;178: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 179 +;179: flagstr[i] = 'a'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 97 +ASGNI1 +line 180 +;180: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 181 +;181: flagstr[i] = 'g'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 103 +ASGNI1 +line 182 +;182: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 183 +;183: flagstr[i] = 'a'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 97 +ASGNI1 +line 184 +;184: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 185 +;185: flagstr[i] = '_'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 95 +ASGNI1 +line 186 +;186: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 187 +;187: flagstr[i] = 'r'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 114 +ASGNI1 +line 188 +;188: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 189 +;189: flagstr[i] = 'e'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 101 +ASGNI1 +line 190 +;190: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 191 +;191: flagstr[i] = 'b'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 98 +ASGNI1 +line 192 +;192: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 193 +;193: } +LABELV $118 +line 195 +;194: +;195: flagstr[i] = '\0'; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 197 +;196: +;197: if (i == 0) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $122 +line 198 +;198: { +line 199 +;199: strcpy(flagstr, "unknown\0"); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $124 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 200 +;200: } +LABELV $122 +LABELV $85 +line 203 +;201: +;202:fend: +;203: return flagstr; +ADDRLP4 4 +INDIRP4 +RETP4 +LABELV $81 +endproc GetFlagStr 12 8 +export G_TestLine +proc G_TestLine 12 8 +line 207 +;204:} +;205: +;206:void G_TestLine(vec3_t start, vec3_t end, int color, int time) +;207:{ +line 210 +;208: gentity_t *te; +;209: +;210: te = G_TempEntity( start, EV_TESTLINE ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 99 +ARGI4 +ADDRLP4 4 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 211 +;211: VectorCopy(start, te->s.origin); +ADDRLP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 212 +;212: VectorCopy(end, te->s.origin2); +ADDRLP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +ADDRFP4 4 +INDIRP4 +INDIRB +ASGNB 12 +line 213 +;213: te->s.time2 = time; +ADDRLP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRFP4 12 +INDIRI4 +ASGNI4 +line 214 +;214: te->s.weapon = color; +ADDRLP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 215 +;215: te->r.svFlags |= SVF_BROADCAST; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 216 +;216:} +LABELV $125 +endproc G_TestLine 12 8 +export BotWaypointRender +proc BotWaypointRender 88 32 +line 219 +;217: +;218:void BotWaypointRender(void) +;219:{ +line 231 +;220: int i, n; +;221: int inc_checker; +;222: int bestindex; +;223: int gotbestindex; +;224: float bestdist; +;225: float checkdist; +;226: gentity_t *plum; +;227: gentity_t *viewent; +;228: char *flagstr; +;229: vec3_t a; +;230: +;231: if (!gBotEdit) +ADDRGP4 gBotEdit +INDIRF4 +CNSTF4 0 +NEF4 $127 +line 232 +;232: { +line 233 +;233: return; +ADDRGP4 $126 +JUMPV +LABELV $127 +line 236 +;234: } +;235: +;236: bestindex = 0; +ADDRLP4 36 +CNSTI4 0 +ASGNI4 +line 238 +;237: +;238: if (gWPRenderTime > level.time) +ADDRGP4 gWPRenderTime +INDIRF4 +ADDRGP4 level+32 +INDIRI4 +CVIF4 4 +LEF4 $129 +line 239 +;239: { +line 240 +;240: goto checkprint; +ADDRGP4 $132 +JUMPV +LABELV $129 +line 243 +;241: } +;242: +;243: gWPRenderTime = level.time + 100; +ADDRGP4 gWPRenderTime +ADDRGP4 level+32 +INDIRI4 +CNSTI4 100 +ADDI4 +CVIF4 4 +ASGNF4 +line 245 +;244: +;245: i = gWPRenderedFrame; +ADDRLP4 0 +ADDRGP4 gWPRenderedFrame +INDIRI4 +ASGNI4 +line 246 +;246: inc_checker = gWPRenderedFrame; +ADDRLP4 32 +ADDRGP4 gWPRenderedFrame +INDIRI4 +ASGNI4 +ADDRGP4 $135 +JUMPV +LABELV $134 +line 249 +;247: +;248: while (i < gWPNum) +;249: { +line 250 +;250: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 52 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $137 +ADDRLP4 52 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $137 +line 251 +;251: { +line 252 +;252: plum = G_TempEntity( gWPArray[i]->origin, EV_SCOREPLUM ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 86 +ARGI4 +ADDRLP4 56 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 24 +ADDRLP4 56 +INDIRP4 +ASGNP4 +line 253 +;253: plum->r.svFlags |= SVF_BROADCAST; +ADDRLP4 60 +ADDRLP4 24 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 60 +INDIRP4 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 254 +;254: plum->s.time = i; +ADDRLP4 24 +INDIRP4 +CNSTI4 84 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 256 +;255: +;256: n = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $140 +JUMPV +LABELV $139 +line 259 +;257: +;258: while (n < gWPArray[i]->neighbornum) +;259: { +line 260 +;260: if (gWPArray[i]->neighbors[n].forceJumpTo && gWPArray[gWPArray[i]->neighbors[n].num]) +ADDRLP4 64 +CNSTI4 2 +ASGNI4 +ADDRLP4 68 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 72 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 64 +INDIRI4 +LSHI4 +ADDRLP4 68 +INDIRP4 +ADDP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $142 +ADDRLP4 72 +INDIRP4 +INDIRI4 +ADDRLP4 64 +INDIRI4 +LSHI4 +ADDRLP4 68 +INDIRP4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $142 +line 261 +;261: { +line 262 +;262: G_TestLine(gWPArray[i]->origin, gWPArray[gWPArray[i]->neighbors[n].num]->origin, 0x0000ff, 5000); +ADDRLP4 76 +CNSTI4 2 +ASGNI4 +ADDRLP4 80 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 84 +ADDRLP4 0 +INDIRI4 +ADDRLP4 76 +INDIRI4 +LSHI4 +ADDRLP4 80 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 84 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +INDIRI4 +ADDRLP4 76 +INDIRI4 +LSHI4 +ADDRLP4 80 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 255 +ARGI4 +CNSTI4 5000 +ARGI4 +ADDRGP4 G_TestLine +CALLV +pop +line 263 +;263: } +LABELV $142 +line 264 +;264: n++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 265 +;265: } +LABELV $140 +line 258 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +LTI4 $139 +line 267 +;266: +;267: gWPRenderedFrame++; +ADDRLP4 64 +ADDRGP4 gWPRenderedFrame +ASGNP4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 64 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 268 +;268: } +ADDRGP4 $138 +JUMPV +LABELV $137 +line 270 +;269: else +;270: { +line 271 +;271: gWPRenderedFrame = 0; +ADDRGP4 gWPRenderedFrame +CNSTI4 0 +ASGNI4 +line 272 +;272: break; +ADDRGP4 $136 +JUMPV +LABELV $138 +line 275 +;273: } +;274: +;275: if ((i - inc_checker) > 4) +ADDRLP4 0 +INDIRI4 +ADDRLP4 32 +INDIRI4 +SUBI4 +CNSTI4 4 +LEI4 $144 +line 276 +;276: { +line 277 +;277: break; //don't render too many at once +ADDRGP4 $136 +JUMPV +LABELV $144 +line 279 +;278: } +;279: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 280 +;280: } +LABELV $135 +line 248 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $134 +LABELV $136 +line 282 +;281: +;282: if (i >= gWPNum) +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $146 +line 283 +;283: { +line 284 +;284: gWPRenderTime = level.time + 1500; //wait a bit after we finish doing the whole trail +ADDRGP4 gWPRenderTime +ADDRGP4 level+32 +INDIRI4 +CNSTI4 1500 +ADDI4 +CVIF4 4 +ASGNF4 +line 285 +;285: gWPRenderedFrame = 0; +ADDRGP4 gWPRenderedFrame +CNSTI4 0 +ASGNI4 +line 286 +;286: } +LABELV $146 +LABELV $132 +line 290 +;287: +;288:checkprint: +;289: +;290: if (!bot_wp_info.value) +ADDRGP4 bot_wp_info+8 +INDIRF4 +CNSTF4 0 +NEF4 $149 +line 291 +;291: { +line 292 +;292: return; +ADDRGP4 $126 +JUMPV +LABELV $149 +line 295 +;293: } +;294: +;295: viewent = &g_entities[0]; //only show info to the first client +ADDRLP4 20 +ADDRGP4 g_entities +ASGNP4 +line 297 +;296: +;297: if (!viewent || !viewent->client) +ADDRLP4 56 +CNSTU4 0 +ASGNU4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ADDRLP4 56 +INDIRU4 +EQU4 $154 +ADDRLP4 20 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 56 +INDIRU4 +NEU4 $152 +LABELV $154 +line 298 +;298: { //client isn't in the game yet? +line 299 +;299: return; +ADDRGP4 $126 +JUMPV +LABELV $152 +line 302 +;300: } +;301: +;302: bestdist = 256; //max distance for showing point info +ADDRLP4 40 +CNSTF4 1132462080 +ASGNF4 +line 303 +;303: gotbestindex = 0; +ADDRLP4 44 +CNSTI4 0 +ASGNI4 +line 305 +;304: +;305: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $156 +JUMPV +LABELV $155 +line 308 +;306: +;307: while (i < gWPNum) +;308: { +line 309 +;309: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 60 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $158 +ADDRLP4 60 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $158 +line 310 +;310: { +line 311 +;311: VectorSubtract(viewent->client->ps.origin, gWPArray[i]->origin, a); +ADDRLP4 64 +ADDRLP4 20 +INDIRP4 +CNSTI4 408 +ADDP4 +ASGNP4 +ADDRLP4 68 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 64 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 68 +INDIRP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 8+4 +ADDRLP4 64 +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 68 +INDIRP4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 8+8 +ADDRLP4 20 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 313 +;312: +;313: checkdist = VectorLength(a); +ADDRLP4 8 +ARGP4 +ADDRLP4 72 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 28 +ADDRLP4 72 +INDIRF4 +ASGNF4 +line 315 +;314: +;315: if (checkdist < bestdist) +ADDRLP4 28 +INDIRF4 +ADDRLP4 40 +INDIRF4 +GEF4 $162 +line 316 +;316: { +line 317 +;317: bestdist = checkdist; +ADDRLP4 40 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 318 +;318: bestindex = i; +ADDRLP4 36 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 319 +;319: gotbestindex = 1; +ADDRLP4 44 +CNSTI4 1 +ASGNI4 +line 320 +;320: } +LABELV $162 +line 321 +;321: } +LABELV $158 +line 322 +;322: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 323 +;323: } +LABELV $156 +line 307 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $155 +line 325 +;324: +;325: if (gotbestindex && bestindex != gLastPrintedIndex) +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $164 +ADDRLP4 36 +INDIRI4 +ADDRGP4 gLastPrintedIndex +INDIRI4 +EQI4 $164 +line 326 +;326: { +line 327 +;327: flagstr = GetFlagStr(gWPArray[bestindex]->flags); +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +ADDRGP4 GetFlagStr +CALLP4 +ASGNP4 +ADDRLP4 48 +ADDRLP4 60 +INDIRP4 +ASGNP4 +line 328 +;328: gLastPrintedIndex = bestindex; +ADDRGP4 gLastPrintedIndex +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 329 +;329: G_Printf(S_COLOR_YELLOW "Waypoint %i\nFlags - %i (%s) (w%f)\nOrigin - (%i %i %i)\n", (int)(gWPArray[bestindex]->index), (int)(gWPArray[bestindex]->flags), flagstr, gWPArray[bestindex]->weight, (int)(gWPArray[bestindex]->origin[0]), (int)(gWPArray[bestindex]->origin[1]), (int)(gWPArray[bestindex]->origin[2])); +ADDRGP4 $166 +ARGP4 +ADDRLP4 64 +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 48 +INDIRP4 +ARGP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 64 +INDIRP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 331 +;330: //GetFlagStr allocates 128 bytes for this, if it's changed then obviously this must be as well +;331: B_TempFree(128); //flagstr +CNSTI4 128 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 333 +;332: +;333: plum = G_TempEntity( gWPArray[bestindex]->origin, EV_SCOREPLUM ); +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 86 +ARGI4 +ADDRLP4 68 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 24 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 334 +;334: plum->r.svFlags |= SVF_BROADCAST; +ADDRLP4 72 +ADDRLP4 24 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +ADDRLP4 72 +INDIRP4 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 335 +;335: plum->s.time = bestindex; //render it once +ADDRLP4 24 +INDIRP4 +CNSTI4 84 +ADDP4 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 336 +;336: } +ADDRGP4 $165 +JUMPV +LABELV $164 +line 337 +;337: else if (!gotbestindex) +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +NEI4 $167 +line 338 +;338: { +line 339 +;339: gLastPrintedIndex = -1; +ADDRGP4 gLastPrintedIndex +CNSTI4 -1 +ASGNI4 +line 340 +;340: } +LABELV $167 +LABELV $165 +line 341 +;341:} +LABELV $126 +endproc BotWaypointRender 88 32 +export TransferWPData +proc TransferWPData 84 4 +line 344 +;342: +;343:void TransferWPData(int from, int to) +;344:{ +line 345 +;345: if (!gWPArray[to]) +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $170 +line 346 +;346: { +line 347 +;347: gWPArray[to] = (wpobject_t *)B_Alloc(sizeof(wpobject_t)); +CNSTI4 300 +ARGI4 +ADDRLP4 0 +ADDRGP4 B_Alloc +CALLP4 +ASGNP4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 348 +;348: } +LABELV $170 +line 350 +;349: +;350: if (!gWPArray[to]) +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $172 +line 351 +;351: { +line 352 +;352: G_Printf(S_COLOR_RED "FATAL ERROR: Could not allocated memory for waypoint\n"); +ADDRGP4 $174 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 353 +;353: } +LABELV $172 +line 355 +;354: +;355: gWPArray[to]->flags = gWPArray[from]->flags; +ADDRLP4 0 +CNSTI4 2 +ASGNI4 +ADDRLP4 4 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 8 +CNSTI4 28 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LSHI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LSHI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 356 +;356: gWPArray[to]->weight = gWPArray[from]->weight; +ADDRLP4 12 +CNSTI4 2 +ASGNI4 +ADDRLP4 16 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 20 +CNSTI4 20 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LSHI4 +ADDRLP4 16 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LSHI4 +ADDRLP4 16 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 357 +;357: gWPArray[to]->associated_entity = gWPArray[from]->associated_entity; +ADDRLP4 24 +CNSTI4 2 +ASGNI4 +ADDRLP4 28 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 32 +CNSTI4 32 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 24 +INDIRI4 +LSHI4 +ADDRLP4 28 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 24 +INDIRI4 +LSHI4 +ADDRLP4 28 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 358 +;358: gWPArray[to]->disttonext = gWPArray[from]->disttonext; +ADDRLP4 36 +CNSTI4 2 +ASGNI4 +ADDRLP4 40 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 44 +CNSTI4 24 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 36 +INDIRI4 +LSHI4 +ADDRLP4 40 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 36 +INDIRI4 +LSHI4 +ADDRLP4 40 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 359 +;359: gWPArray[to]->forceJumpTo = gWPArray[from]->forceJumpTo; +ADDRLP4 48 +CNSTI4 2 +ASGNI4 +ADDRLP4 52 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 56 +CNSTI4 36 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 48 +INDIRI4 +LSHI4 +ADDRLP4 52 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 48 +INDIRI4 +LSHI4 +ADDRLP4 52 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 360 +;360: gWPArray[to]->index = to; +ADDRLP4 60 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 60 +INDIRI4 +ASGNI4 +line 361 +;361: gWPArray[to]->inuse = gWPArray[from]->inuse; +ADDRLP4 64 +CNSTI4 2 +ASGNI4 +ADDRLP4 68 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 72 +CNSTI4 12 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 64 +INDIRI4 +LSHI4 +ADDRLP4 68 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 64 +INDIRI4 +LSHI4 +ADDRLP4 68 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 362 +;362: VectorCopy(gWPArray[from]->origin, gWPArray[to]->origin); +ADDRLP4 76 +CNSTI4 2 +ASGNI4 +ADDRLP4 80 +ADDRGP4 gWPArray +ASGNP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 76 +INDIRI4 +LSHI4 +ADDRLP4 80 +INDIRP4 +ADDP4 +INDIRP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 76 +INDIRI4 +LSHI4 +ADDRLP4 80 +INDIRP4 +ADDP4 +INDIRP4 +INDIRB +ASGNB 12 +line 363 +;363:} +LABELV $169 +endproc TransferWPData 84 4 +export CreateNewWP +proc CreateNewWP 8 8 +line 366 +;364: +;365:void CreateNewWP(vec3_t origin, int flags) +;366:{ +line 367 +;367: if (gWPNum >= MAX_WPARRAY_SIZE) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 4096 +LTI4 $176 +line 368 +;368: { +line 369 +;369: G_Printf(S_COLOR_YELLOW "Warning: Waypoint limit hit (%i)\n", MAX_WPARRAY_SIZE); +ADDRGP4 $178 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 370 +;370: return; +ADDRGP4 $175 +JUMPV +LABELV $176 +line 373 +;371: } +;372: +;373: if (!gWPArray[gWPNum]) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $179 +line 374 +;374: { +line 375 +;375: gWPArray[gWPNum] = (wpobject_t *)B_Alloc(sizeof(wpobject_t)); +CNSTI4 300 +ARGI4 +ADDRLP4 0 +ADDRGP4 B_Alloc +CALLP4 +ASGNP4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 376 +;376: } +LABELV $179 +line 378 +;377: +;378: if (!gWPArray[gWPNum]) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $181 +line 379 +;379: { +line 380 +;380: G_Printf(S_COLOR_RED "ERROR: Could not allocated memory for waypoint\n"); +ADDRGP4 $183 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 381 +;381: } +LABELV $181 +line 383 +;382: +;383: gWPArray[gWPNum]->flags = flags; +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 384 +;384: gWPArray[gWPNum]->weight = 0; //calculated elsewhere +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +CNSTF4 0 +ASGNF4 +line 385 +;385: gWPArray[gWPNum]->associated_entity = ENTITYNUM_NONE; //set elsewhere +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTI4 1023 +ASGNI4 +line 386 +;386: gWPArray[gWPNum]->forceJumpTo = 0; +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTI4 0 +ASGNI4 +line 387 +;387: gWPArray[gWPNum]->disttonext = 0; //calculated elsewhere +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 24 +ADDP4 +CNSTF4 0 +ASGNF4 +line 388 +;388: gWPArray[gWPNum]->index = gWPNum; +ADDRLP4 0 +ADDRGP4 gWPNum +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 389 +;389: gWPArray[gWPNum]->inuse = 1; +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 390 +;390: VectorCopy(origin, gWPArray[gWPNum]->origin); +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 391 +;391: gWPNum++; +ADDRLP4 4 +ADDRGP4 gWPNum +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 392 +;392:} +LABELV $175 +endproc CreateNewWP 8 8 +export CreateNewWP_FromObject +proc CreateNewWP_FromObject 52 4 +line 395 +;393: +;394:void CreateNewWP_FromObject(wpobject_t *wp) +;395:{ +line 398 +;396: int i; +;397: +;398: if (gWPNum >= MAX_WPARRAY_SIZE) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 4096 +LTI4 $185 +line 399 +;399: { +line 400 +;400: return; +ADDRGP4 $184 +JUMPV +LABELV $185 +line 403 +;401: } +;402: +;403: if (!gWPArray[gWPNum]) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $187 +line 404 +;404: { +line 405 +;405: gWPArray[gWPNum] = (wpobject_t *)B_Alloc(sizeof(wpobject_t)); +CNSTI4 300 +ARGI4 +ADDRLP4 4 +ADDRGP4 B_Alloc +CALLP4 +ASGNP4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 406 +;406: } +LABELV $187 +line 408 +;407: +;408: if (!gWPArray[gWPNum]) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $189 +line 409 +;409: { +line 410 +;410: G_Printf(S_COLOR_RED "ERROR: Could not allocated memory for waypoint\n"); +ADDRGP4 $183 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 411 +;411: } +LABELV $189 +line 413 +;412: +;413: gWPArray[gWPNum]->flags = wp->flags; +ADDRLP4 4 +CNSTI4 28 +ASGNI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 414 +;414: gWPArray[gWPNum]->weight = wp->weight; +ADDRLP4 8 +CNSTI4 20 +ASGNI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 415 +;415: gWPArray[gWPNum]->associated_entity = wp->associated_entity; +ADDRLP4 12 +CNSTI4 32 +ASGNI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 416 +;416: gWPArray[gWPNum]->disttonext = wp->disttonext; +ADDRLP4 16 +CNSTI4 24 +ASGNI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 417 +;417: gWPArray[gWPNum]->forceJumpTo = wp->forceJumpTo; +ADDRLP4 20 +CNSTI4 36 +ASGNI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 418 +;418: gWPArray[gWPNum]->index = gWPNum; +ADDRLP4 24 +ADDRGP4 gWPNum +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 419 +;419: gWPArray[gWPNum]->inuse = 1; +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 420 +;420: VectorCopy(wp->origin, gWPArray[gWPNum]->origin); +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 421 +;421: gWPArray[gWPNum]->neighbornum = wp->neighbornum; +ADDRLP4 28 +CNSTI4 40 +ASGNI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 423 +;422: +;423: i = wp->neighbornum; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ASGNI4 +ADDRGP4 $192 +JUMPV +LABELV $191 +line 426 +;424: +;425: while (i >= 0) +;426: { +line 427 +;427: gWPArray[gWPNum]->neighbors[i].num = wp->neighbors[i].num; +ADDRLP4 32 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ASGNI4 +ADDRLP4 36 +CNSTI4 44 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +ADDP4 +ADDRLP4 32 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 428 +;428: gWPArray[gWPNum]->neighbors[i].forceJumpTo = wp->neighbors[i].forceJumpTo; +ADDRLP4 40 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ASGNI4 +ADDRLP4 44 +CNSTI4 44 +ASGNI4 +ADDRLP4 48 +CNSTI4 4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +ADDP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +ADDRLP4 40 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +ADDP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 430 +;429: +;430: i--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 431 +;431: } +LABELV $192 +line 425 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $191 +line 433 +;432: +;433: if (gWPArray[gWPNum]->flags & WPFLAG_RED_FLAG) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +CNSTI4 131072 +BANDI4 +CNSTI4 0 +EQI4 $194 +line 434 +;434: { +line 435 +;435: flagRed = gWPArray[gWPNum]; +ADDRGP4 flagRed +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +line 436 +;436: oFlagRed = flagRed; +ADDRGP4 oFlagRed +ADDRGP4 flagRed +INDIRP4 +ASGNP4 +line 437 +;437: } +ADDRGP4 $195 +JUMPV +LABELV $194 +line 438 +;438: else if (gWPArray[gWPNum]->flags & WPFLAG_BLUE_FLAG) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +CNSTI4 262144 +BANDI4 +CNSTI4 0 +EQI4 $196 +line 439 +;439: { +line 440 +;440: flagBlue = gWPArray[gWPNum]; +ADDRGP4 flagBlue +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +line 441 +;441: oFlagBlue = flagBlue; +ADDRGP4 oFlagBlue +ADDRGP4 flagBlue +INDIRP4 +ASGNP4 +line 442 +;442: } +LABELV $196 +LABELV $195 +line 444 +;443: +;444: gWPNum++; +ADDRLP4 32 +ADDRGP4 gWPNum +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 445 +;445:} +LABELV $184 +endproc CreateNewWP_FromObject 52 4 +export RemoveWP +proc RemoveWP 8 12 +line 448 +;446: +;447:void RemoveWP(void) +;448:{ +line 449 +;449: if (gWPNum <= 0) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 0 +GTI4 $199 +line 450 +;450: { +line 451 +;451: return; +ADDRGP4 $198 +JUMPV +LABELV $199 +line 454 +;452: } +;453: +;454: gWPNum--; +ADDRLP4 0 +ADDRGP4 gWPNum +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 456 +;455: +;456: if (!gWPArray[gWPNum] || !gWPArray[gWPNum]->inuse) +ADDRLP4 4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $203 +ADDRLP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $201 +LABELV $203 +line 457 +;457: { +line 458 +;458: return; +ADDRGP4 $198 +JUMPV +LABELV $201 +line 462 +;459: } +;460: +;461: //B_Free((wpobject_t *)gWPArray[gWPNum]); +;462: if (gWPArray[gWPNum]) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $204 +line 463 +;463: { +line 464 +;464: memset( gWPArray[gWPNum], 0, sizeof(gWPArray[gWPNum]) ); +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 4 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 465 +;465: } +LABELV $204 +line 469 +;466: +;467: //gWPArray[gWPNum] = NULL; +;468: +;469: if (gWPArray[gWPNum]) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $206 +line 470 +;470: { +line 471 +;471: gWPArray[gWPNum]->inuse = 0; +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 472 +;472: } +LABELV $206 +line 473 +;473:} +LABELV $198 +endproc RemoveWP 8 12 +export RemoveWP_InTrail +proc RemoveWP_InTrail 28 12 +line 476 +;474: +;475:void RemoveWP_InTrail(int afterindex) +;476:{ +line 482 +;477: int foundindex; +;478: int foundanindex; +;479: int didchange; +;480: int i; +;481: +;482: foundindex = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 483 +;483: foundanindex = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 484 +;484: didchange = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 485 +;485: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 487 +;486: +;487: if (afterindex < 0 || afterindex >= gWPNum) +ADDRLP4 16 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +LTI4 $211 +ADDRLP4 16 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $214 +LABELV $211 +line 488 +;488: { +line 489 +;489: G_Printf(S_COLOR_YELLOW "Waypoint number %i does not exist\n", afterindex); +ADDRGP4 $212 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 490 +;490: return; +ADDRGP4 $208 +JUMPV +LABELV $213 +line 494 +;491: } +;492: +;493: while (i < gWPNum) +;494: { +line 495 +;495: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == afterindex) +ADDRLP4 20 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $216 +ADDRLP4 20 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $216 +ADDRLP4 20 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $216 +line 496 +;496: { +line 497 +;497: foundindex = i; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 498 +;498: foundanindex = 1; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 499 +;499: break; +ADDRGP4 $215 +JUMPV +LABELV $216 +line 502 +;500: } +;501: +;502: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 503 +;503: } +LABELV $214 +line 493 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $213 +LABELV $215 +line 505 +;504: +;505: if (!foundanindex) +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $218 +line 506 +;506: { +line 507 +;507: G_Printf(S_COLOR_YELLOW "Waypoint index %i should exist, but does not (?)\n", afterindex); +ADDRGP4 $220 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 508 +;508: return; +ADDRGP4 $208 +JUMPV +LABELV $218 +line 511 +;509: } +;510: +;511: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $222 +JUMPV +LABELV $221 +line 514 +;512: +;513: while (i <= gWPNum) +;514: { +line 515 +;515: if (gWPArray[i] && gWPArray[i]->index == foundindex) +ADDRLP4 20 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $224 +ADDRLP4 20 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $224 +line 516 +;516: { +line 520 +;517: //B_Free(gWPArray[i]); +;518: +;519: //Keep reusing the memory +;520: memset( gWPArray[i], 0, sizeof(gWPArray[i]) ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 4 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 523 +;521: +;522: //gWPArray[i] = NULL; +;523: gWPArray[i]->inuse = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 524 +;524: didchange = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 525 +;525: } +ADDRGP4 $225 +JUMPV +LABELV $224 +line 526 +;526: else if (gWPArray[i] && didchange) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $226 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $226 +line 527 +;527: { +line 528 +;528: TransferWPData(i, i-1); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ARGI4 +ADDRGP4 TransferWPData +CALLV +pop +line 532 +;529: //B_Free(gWPArray[i]); +;530: +;531: //Keep reusing the memory +;532: memset( gWPArray[i], 0, sizeof(gWPArray[i]) ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 4 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 535 +;533: +;534: //gWPArray[i] = NULL; +;535: gWPArray[i]->inuse = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 536 +;536: } +LABELV $226 +LABELV $225 +line 538 +;537: +;538: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 539 +;539: } +LABELV $222 +line 513 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LEI4 $221 +line 540 +;540: gWPNum--; +ADDRLP4 20 +ADDRGP4 gWPNum +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 541 +;541:} +LABELV $208 +endproc RemoveWP_InTrail 28 12 +export CreateNewWP_InTrail +proc CreateNewWP_InTrail 32 8 +line 544 +;542: +;543:int CreateNewWP_InTrail(vec3_t origin, int flags, int afterindex) +;544:{ +line 549 +;545: int foundindex; +;546: int foundanindex; +;547: int i; +;548: +;549: foundindex = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 550 +;550: foundanindex = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 551 +;551: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 553 +;552: +;553: if (gWPNum >= MAX_WPARRAY_SIZE) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 4096 +LTI4 $229 +line 554 +;554: { +line 555 +;555: G_Printf(S_COLOR_YELLOW "Warning: Waypoint limit hit (%i)\n", MAX_WPARRAY_SIZE); +ADDRGP4 $178 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 556 +;556: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $228 +JUMPV +LABELV $229 +line 559 +;557: } +;558: +;559: if (afterindex < 0 || afterindex >= gWPNum) +ADDRLP4 12 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +LTI4 $233 +ADDRLP4 12 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $235 +LABELV $233 +line 560 +;560: { +line 561 +;561: G_Printf(S_COLOR_YELLOW "Waypoint number %i does not exist\n", afterindex); +ADDRGP4 $212 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 562 +;562: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $228 +JUMPV +LABELV $234 +line 566 +;563: } +;564: +;565: while (i < gWPNum) +;566: { +line 567 +;567: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == afterindex) +ADDRLP4 16 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $237 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $237 +ADDRLP4 16 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +NEI4 $237 +line 568 +;568: { +line 569 +;569: foundindex = i; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 570 +;570: foundanindex = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 571 +;571: break; +ADDRGP4 $236 +JUMPV +LABELV $237 +line 574 +;572: } +;573: +;574: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 575 +;575: } +LABELV $235 +line 565 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $234 +LABELV $236 +line 577 +;576: +;577: if (!foundanindex) +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $239 +line 578 +;578: { +line 579 +;579: G_Printf(S_COLOR_YELLOW "Waypoint index %i should exist, but does not (?)\n", afterindex); +ADDRGP4 $220 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 580 +;580: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $228 +JUMPV +LABELV $239 +line 583 +;581: } +;582: +;583: i = gWPNum; +ADDRLP4 0 +ADDRGP4 gWPNum +INDIRI4 +ASGNI4 +ADDRGP4 $242 +JUMPV +LABELV $241 +line 586 +;584: +;585: while (i >= 0) +;586: { +line 587 +;587: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index != foundindex) +ADDRLP4 16 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $244 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $244 +ADDRLP4 16 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $244 +line 588 +;588: { +line 589 +;589: TransferWPData(i, i+1); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRGP4 TransferWPData +CALLV +pop +line 590 +;590: } +ADDRGP4 $245 +JUMPV +LABELV $244 +line 591 +;591: else if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == foundindex) +ADDRLP4 20 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $246 +ADDRLP4 20 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $246 +ADDRLP4 20 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $246 +line 592 +;592: { +line 593 +;593: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 595 +;594: +;595: if (!gWPArray[i]) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $248 +line 596 +;596: { +line 597 +;597: gWPArray[i] = (wpobject_t *)B_Alloc(sizeof(wpobject_t)); +CNSTI4 300 +ARGI4 +ADDRLP4 24 +ADDRGP4 B_Alloc +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ADDRLP4 24 +INDIRP4 +ASGNP4 +line 598 +;598: } +LABELV $248 +line 600 +;599: +;600: gWPArray[i]->flags = flags; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 601 +;601: gWPArray[i]->weight = 0; //calculated elsewhere +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +CNSTF4 0 +ASGNF4 +line 602 +;602: gWPArray[i]->associated_entity = ENTITYNUM_NONE; //set elsewhere +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTI4 1023 +ASGNI4 +line 603 +;603: gWPArray[i]->disttonext = 0; //calculated elsewhere +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 24 +ADDP4 +CNSTF4 0 +ASGNF4 +line 604 +;604: gWPArray[i]->forceJumpTo = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTI4 0 +ASGNI4 +line 605 +;605: gWPArray[i]->index = i; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 606 +;606: gWPArray[i]->inuse = 1; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 607 +;607: VectorCopy(origin, gWPArray[i]->origin); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 608 +;608: gWPNum++; +ADDRLP4 28 +ADDRGP4 gWPNum +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 609 +;609: break; +ADDRGP4 $243 +JUMPV +LABELV $246 +LABELV $245 +line 612 +;610: } +;611: +;612: i--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 613 +;613: } +LABELV $242 +line 585 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $241 +LABELV $243 +line 615 +;614: +;615: return 1; +CNSTI4 1 +RETI4 +LABELV $228 +endproc CreateNewWP_InTrail 32 8 +export TeleportToWP +proc TeleportToWP 28 8 +line 619 +;616:} +;617: +;618:void TeleportToWP(gentity_t *pl, int afterindex) +;619:{ +line 624 +;620: int foundindex; +;621: int foundanindex; +;622: int i; +;623: +;624: if (!pl || !pl->client) +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTU4 0 +ASGNU4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +EQU4 $253 +ADDRLP4 12 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +NEU4 $251 +LABELV $253 +line 625 +;625: { +line 626 +;626: return; +ADDRGP4 $250 +JUMPV +LABELV $251 +line 629 +;627: } +;628: +;629: foundindex = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 630 +;630: foundanindex = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 631 +;631: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 633 +;632: +;633: if (afterindex < 0 || afterindex >= gWPNum) +ADDRLP4 20 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +LTI4 $256 +ADDRLP4 20 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $258 +LABELV $256 +line 634 +;634: { +line 635 +;635: G_Printf(S_COLOR_YELLOW "Waypoint number %i does not exist\n", afterindex); +ADDRGP4 $212 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 636 +;636: return; +ADDRGP4 $250 +JUMPV +LABELV $257 +line 640 +;637: } +;638: +;639: while (i < gWPNum) +;640: { +line 641 +;641: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == afterindex) +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $260 +ADDRLP4 24 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $260 +ADDRLP4 24 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $260 +line 642 +;642: { +line 643 +;643: foundindex = i; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 644 +;644: foundanindex = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 645 +;645: break; +ADDRGP4 $259 +JUMPV +LABELV $260 +line 648 +;646: } +;647: +;648: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 649 +;649: } +LABELV $258 +line 639 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $257 +LABELV $259 +line 651 +;650: +;651: if (!foundanindex) +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $262 +line 652 +;652: { +line 653 +;653: G_Printf(S_COLOR_YELLOW "Waypoint index %i should exist, but does not (?)\n", afterindex); +ADDRGP4 $220 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 654 +;654: return; +ADDRGP4 $250 +JUMPV +LABELV $262 +line 657 +;655: } +;656: +;657: VectorCopy(gWPArray[foundindex]->origin, pl->client->ps.origin); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +INDIRB +ASGNB 12 +line 659 +;658: +;659: return; +LABELV $250 +endproc TeleportToWP 28 8 +export WPFlagsModify +proc WPFlagsModify 12 8 +line 663 +;660:} +;661: +;662:void WPFlagsModify(int wpnum, int flags) +;663:{ +line 664 +;664: if (wpnum < 0 || wpnum >= gWPNum || !gWPArray[wpnum] || !gWPArray[wpnum]->inuse) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LTI4 $269 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +GEI4 $269 +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $269 +ADDRLP4 8 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $265 +LABELV $269 +line 665 +;665: { +line 666 +;666: G_Printf(S_COLOR_YELLOW "WPFlagsModify: Waypoint %i does not exist\n", wpnum); +ADDRGP4 $270 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 667 +;667: return; +ADDRGP4 $264 +JUMPV +LABELV $265 +line 670 +;668: } +;669: +;670: gWPArray[wpnum]->flags = flags; +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 671 +;671:} +LABELV $264 +endproc WPFlagsModify 12 8 +export NotWithinRange +proc NotWithinRange 16 0 +line 674 +;672: +;673:int NotWithinRange(int base, int extent) +;674:{ +line 675 +;675: if (extent > base && base+5 >= extent) +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LEI4 $272 +ADDRLP4 4 +INDIRI4 +CNSTI4 5 +ADDI4 +ADDRLP4 0 +INDIRI4 +LTI4 $272 +line 676 +;676: { +line 677 +;677: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $271 +JUMPV +LABELV $272 +line 680 +;678: } +;679: +;680: if (extent < base && base-5 <= extent) +ADDRLP4 8 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 12 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +GEI4 $274 +ADDRLP4 12 +INDIRI4 +CNSTI4 5 +SUBI4 +ADDRLP4 8 +INDIRI4 +GTI4 $274 +line 681 +;681: { +line 682 +;682: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $271 +JUMPV +LABELV $274 +line 685 +;683: } +;684: +;685: return 1; +CNSTI4 1 +RETI4 +LABELV $271 +endproc NotWithinRange 16 0 +export NodeHere +proc NodeHere 36 0 +line 689 +;686:} +;687: +;688:int NodeHere(vec3_t spot) +;689:{ +line 692 +;690: int i; +;691: +;692: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $278 +JUMPV +LABELV $277 +line 695 +;693: +;694: while (i < nodenum) +;695: { +line 696 +;696: if ((int)nodetable[i].origin[0] == (int)spot[0] && +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ASGNI4 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 nodetable +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +NEI4 $280 +ADDRLP4 4 +INDIRI4 +ADDRGP4 nodetable+4 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CVFI4 4 +NEI4 $280 +line 698 +;697: (int)nodetable[i].origin[1] == (int)spot[1]) +;698: { +line 699 +;699: if ((int)nodetable[i].origin[2] == (int)spot[2] || +ADDRLP4 12 +CNSTI4 5 +ASGNI4 +ADDRLP4 16 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LSHI4 +ASGNI4 +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CVFI4 4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 20 +INDIRI4 +EQI4 $291 +ADDRLP4 16 +INDIRI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 20 +INDIRI4 +GEI4 $292 +ADDRLP4 16 +INDIRI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 12 +INDIRI4 +ADDI4 +ADDRLP4 20 +INDIRI4 +GTI4 $291 +LABELV $292 +ADDRLP4 24 +CNSTI4 5 +ASGNI4 +ADDRLP4 28 +ADDRLP4 0 +INDIRI4 +ADDRLP4 24 +INDIRI4 +LSHI4 +ASGNI4 +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CVFI4 4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 32 +INDIRI4 +LEI4 $283 +ADDRLP4 28 +INDIRI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 24 +INDIRI4 +SUBI4 +ADDRLP4 32 +INDIRI4 +GEI4 $283 +LABELV $291 +line 702 +;700: ((int)nodetable[i].origin[2] < (int)spot[2] && (int)nodetable[i].origin[2]+5 > (int)spot[2]) || +;701: ((int)nodetable[i].origin[2] > (int)spot[2] && (int)nodetable[i].origin[2]-5 < (int)spot[2])) +;702: { +line 703 +;703: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $276 +JUMPV +LABELV $283 +line 705 +;704: } +;705: } +LABELV $280 +line 706 +;706: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 707 +;707: } +LABELV $278 +line 694 +ADDRLP4 0 +INDIRI4 +ADDRGP4 nodenum +INDIRI4 +LTI4 $277 +line 709 +;708: +;709: return 0; +CNSTI4 0 +RETI4 +LABELV $276 +endproc NodeHere 36 0 +export CanGetToVector +proc CanGetToVector 1084 28 +line 713 +;710:} +;711: +;712:int CanGetToVector(vec3_t org1, vec3_t org2, vec3_t mins, vec3_t maxs) +;713:{ +line 716 +;714: trace_t tr; +;715: +;716: trap_Trace(&tr, org1, mins, maxs, org2, -1, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 718 +;717: +;718: if (tr.fraction == 1 && !tr.startsolid && !tr.allsolid) +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1065353216 +NEF4 $294 +ADDRLP4 1080 +CNSTI4 0 +ASGNI4 +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 1080 +INDIRI4 +NEI4 $294 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1080 +INDIRI4 +NEI4 $294 +line 719 +;719: { +line 720 +;720: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $293 +JUMPV +LABELV $294 +line 723 +;721: } +;722: +;723: return 0; +CNSTI4 0 +RETI4 +LABELV $293 +endproc CanGetToVector 1084 28 +export CanGetToVectorTravel +proc CanGetToVectorTravel 1192 28 +line 727 +;724:} +;725: +;726:int CanGetToVectorTravel(vec3_t org1, vec3_t org2, vec3_t mins, vec3_t maxs) +;727:{ +line 733 +;728: trace_t tr; +;729: vec3_t a, ang, fwd; +;730: vec3_t midpos, dmid; +;731: float startheight, midheight, fLen; +;732: +;733: mins[2] = -13; +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTF4 3243245568 +ASGNF4 +line 734 +;734: maxs[2] = 13; +ADDRFP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTF4 1095761920 +ASGNF4 +line 736 +;735: +;736: trap_Trace(&tr, org1, mins, maxs, org2, -1, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 738 +;737: +;738: if (tr.fraction != 1 || tr.startsolid || tr.allsolid) +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1065353216 +NEF4 $304 +ADDRLP4 1152 +CNSTI4 0 +ASGNI4 +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 1152 +INDIRI4 +NEI4 $304 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1152 +INDIRI4 +EQI4 $299 +LABELV $304 +line 739 +;739: { +line 740 +;740: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $298 +JUMPV +LABELV $299 +line 743 +;741: } +;742: +;743: VectorSubtract(org2, org1, a); +ADDRLP4 1156 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 1160 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1104 +ADDRLP4 1156 +INDIRP4 +INDIRF4 +ADDRLP4 1160 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1164 +CNSTI4 4 +ASGNI4 +ADDRLP4 1104+4 +ADDRLP4 1156 +INDIRP4 +ADDRLP4 1164 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 1160 +INDIRP4 +ADDRLP4 1164 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1168 +CNSTI4 8 +ASGNI4 +ADDRLP4 1104+8 +ADDRFP4 4 +INDIRP4 +ADDRLP4 1168 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 1168 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 745 +;744: +;745: vectoangles(a, ang); +ADDRLP4 1104 +ARGP4 +ADDRLP4 1132 +ARGP4 +ADDRGP4 vectoangles +CALLV +pop +line 747 +;746: +;747: AngleVectors(ang, fwd, NULL, NULL); +ADDRLP4 1132 +ARGP4 +ADDRLP4 1116 +ARGP4 +ADDRLP4 1172 +CNSTP4 0 +ASGNP4 +ADDRLP4 1172 +INDIRP4 +ARGP4 +ADDRLP4 1172 +INDIRP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 749 +;748: +;749: fLen = VectorLength(a)/2; +ADDRLP4 1104 +ARGP4 +ADDRLP4 1176 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 1128 +ADDRLP4 1176 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +ASGNF4 +line 751 +;750: +;751: midpos[0] = org1[0] + fwd[0]*fLen; +ADDRLP4 1080 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 1116 +INDIRF4 +ADDRLP4 1128 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 752 +;752: midpos[1] = org1[1] + fwd[1]*fLen; +ADDRLP4 1080+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 1116+4 +INDIRF4 +ADDRLP4 1128 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 753 +;753: midpos[2] = org1[2] + fwd[2]*fLen; +ADDRLP4 1080+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 1116+8 +INDIRF4 +ADDRLP4 1128 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 755 +;754: +;755: VectorCopy(org1, dmid); +ADDRLP4 1092 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 756 +;756: dmid[2] -= 1024; +ADDRLP4 1092+8 +ADDRLP4 1092+8 +INDIRF4 +CNSTF4 1149239296 +SUBF4 +ASGNF4 +line 758 +;757: +;758: trap_Trace(&tr, midpos, NULL, NULL, dmid, -1, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRLP4 1080 +ARGP4 +ADDRLP4 1180 +CNSTP4 0 +ASGNP4 +ADDRLP4 1180 +INDIRP4 +ARGP4 +ADDRLP4 1180 +INDIRP4 +ARGP4 +ADDRLP4 1092 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 760 +;759: +;760: startheight = org1[2] - tr.endpos[2]; +ADDRLP4 1144 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 0+12+8 +INDIRF4 +SUBF4 +ASGNF4 +line 762 +;761: +;762: VectorCopy(midpos, dmid); +ADDRLP4 1092 +ADDRLP4 1080 +INDIRB +ASGNB 12 +line 763 +;763: dmid[2] -= 1024; +ADDRLP4 1092+8 +ADDRLP4 1092+8 +INDIRF4 +CNSTF4 1149239296 +SUBF4 +ASGNF4 +line 765 +;764: +;765: trap_Trace(&tr, midpos, NULL, NULL, dmid, -1, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRLP4 1080 +ARGP4 +ADDRLP4 1184 +CNSTP4 0 +ASGNP4 +ADDRLP4 1184 +INDIRP4 +ARGP4 +ADDRLP4 1184 +INDIRP4 +ARGP4 +ADDRLP4 1092 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 767 +;766: +;767: if (tr.startsolid || tr.allsolid) +ADDRLP4 1188 +CNSTI4 0 +ASGNI4 +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 1188 +INDIRI4 +NEI4 $318 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1188 +INDIRI4 +EQI4 $315 +LABELV $318 +line 768 +;768: { +line 769 +;769: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $298 +JUMPV +LABELV $315 +line 772 +;770: } +;771: +;772: midheight = midpos[2] - tr.endpos[2]; +ADDRLP4 1148 +ADDRLP4 1080+8 +INDIRF4 +ADDRLP4 0+12+8 +INDIRF4 +SUBF4 +ASGNF4 +line 774 +;773: +;774: if (midheight > startheight*2) +ADDRLP4 1148 +INDIRF4 +CNSTF4 1073741824 +ADDRLP4 1144 +INDIRF4 +MULF4 +LEF4 $322 +line 775 +;775: { +line 776 +;776: return 0; //too steep of a drop.. can't go on +CNSTI4 0 +RETI4 +ADDRGP4 $298 +JUMPV +LABELV $322 +line 779 +;777: } +;778: +;779: return 1; +CNSTI4 1 +RETI4 +LABELV $298 +endproc CanGetToVectorTravel 1192 28 +export ConnectTrail +proc ConnectTrail 17692 28 +line 783 +;780:} +;781: +;782:int ConnectTrail(int startindex, int endindex) +;783:{ +line 801 +;784: int foundit; +;785: int cancontinue; +;786: int i; +;787: int failsafe; +;788: int successnodeindex; +;789: int insertindex; +;790: int prenodestart; +;791: int extendednodes[MAX_NODETABLE_SIZE]; //for storing checked nodes and not trying to extend them each a bazillion times +;792: float fvecmeas; +;793: float baseheight; +;794: vec3_t a; +;795: vec3_t startplace, starttrace; +;796: vec3_t mins, maxs; +;797: vec3_t testspot; +;798: vec3_t validspotpos; +;799: trace_t tr; +;800: +;801: mins[0] = -15; +ADDRLP4 1108 +CNSTF4 3245342720 +ASGNF4 +line 802 +;802: mins[1] = -15; +ADDRLP4 1108+4 +CNSTF4 3245342720 +ASGNF4 +line 803 +;803: mins[2] = 0; +ADDRLP4 1108+8 +CNSTF4 0 +ASGNF4 +line 804 +;804: maxs[0] = 15; +ADDRLP4 1120 +CNSTF4 1097859072 +ASGNF4 +line 805 +;805: maxs[1] = 15; +ADDRLP4 1120+4 +CNSTF4 1097859072 +ASGNF4 +line 806 +;806: maxs[2] = 0; +ADDRLP4 1120+8 +CNSTF4 0 +ASGNF4 +line 808 +;807: +;808: nodenum = 0; +ADDRGP4 nodenum +CNSTI4 0 +ASGNI4 +line 809 +;809: foundit = 0; +ADDRLP4 17556 +CNSTI4 0 +ASGNI4 +line 811 +;810: +;811: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 813 +;812: +;813: successnodeindex = 0; +ADDRLP4 17560 +CNSTI4 0 +ASGNI4 +ADDRGP4 $330 +JUMPV +LABELV $329 +line 816 +;814: +;815: while (i < MAX_NODETABLE_SIZE) //clear it out before using it +;816: { +line 817 +;817: nodetable[i].flags = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+24 +ADDP4 +CNSTI4 0 +ASGNI4 +line 818 +;818: nodetable[i].index = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+16 +ADDP4 +CNSTI4 0 +ASGNI4 +line 819 +;819: nodetable[i].inuse = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 820 +;820: nodetable[i].neighbornum = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+28 +ADDP4 +CNSTI4 0 +ASGNI4 +line 821 +;821: nodetable[i].origin[0] = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +CNSTF4 0 +ASGNF4 +line 822 +;822: nodetable[i].origin[1] = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+4 +ADDP4 +CNSTF4 0 +ASGNF4 +line 823 +;823: nodetable[i].origin[2] = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +CNSTF4 0 +ASGNF4 +line 824 +;824: nodetable[i].weight = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +CNSTF4 0 +ASGNF4 +line 826 +;825: +;826: extendednodes[i] = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1148 +ADDP4 +CNSTI4 0 +ASGNI4 +line 828 +;827: +;828: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 829 +;829: } +LABELV $330 +line 815 +ADDRLP4 0 +INDIRI4 +CNSTI4 4096 +LTI4 $329 +line 831 +;830: +;831: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 833 +;832: +;833: G_Printf(S_COLOR_YELLOW "Point %i is not connected to %i - Repairing...\n", startindex, endindex); +ADDRGP4 $339 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 835 +;834: +;835: VectorCopy(gWPArray[startindex]->origin, startplace); +ADDRLP4 17572 +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +INDIRB +ASGNB 12 +line 837 +;836: +;837: VectorCopy(startplace, starttrace); +ADDRLP4 1096 +ADDRLP4 17572 +INDIRB +ASGNB 12 +line 839 +;838: +;839: starttrace[2] -= 4096; +ADDRLP4 1096+8 +ADDRLP4 1096+8 +INDIRF4 +CNSTF4 1166016512 +SUBF4 +ASGNF4 +line 841 +;840: +;841: trap_Trace(&tr, startplace, NULL, NULL, starttrace, -1, MASK_SOLID); +ADDRLP4 16 +ARGP4 +ADDRLP4 17572 +ARGP4 +ADDRLP4 17584 +CNSTP4 0 +ASGNP4 +ADDRLP4 17584 +INDIRP4 +ARGP4 +ADDRLP4 17584 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 843 +;842: +;843: baseheight = startplace[2] - tr.endpos[2]; +ADDRLP4 1144 +ADDRLP4 17572+8 +INDIRF4 +ADDRLP4 16+12+8 +INDIRF4 +SUBF4 +ASGNF4 +line 845 +;844: +;845: cancontinue = 1; +ADDRLP4 17532 +CNSTI4 1 +ASGNI4 +line 847 +;846: +;847: VectorCopy(startplace, nodetable[nodenum].origin); +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ADDRLP4 17572 +INDIRB +ASGNB 12 +line 848 +;848: nodetable[nodenum].weight = 1; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 849 +;849: nodetable[nodenum].inuse = 1; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 850 +;850: nodetable[nodenum].index = nodenum; +ADDRLP4 17588 +ADDRGP4 nodenum +INDIRI4 +ASGNI4 +ADDRLP4 17588 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+16 +ADDP4 +ADDRLP4 17588 +INDIRI4 +ASGNI4 +line 851 +;851: nodenum++; +ADDRLP4 17592 +ADDRGP4 nodenum +ASGNP4 +ADDRLP4 17592 +INDIRP4 +ADDRLP4 17592 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $348 +JUMPV +LABELV $347 +line 854 +;852: +;853: while (nodenum < MAX_NODETABLE_SIZE && !foundit && cancontinue) +;854: { +line 855 +;855: cancontinue = 0; +ADDRLP4 17532 +CNSTI4 0 +ASGNI4 +line 856 +;856: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 857 +;857: prenodestart = nodenum; +ADDRLP4 17536 +ADDRGP4 nodenum +INDIRI4 +ASGNI4 +ADDRGP4 $351 +JUMPV +LABELV $350 +line 860 +;858: +;859: while (i < prenodestart) +;860: { +line 861 +;861: if (extendednodes[i] != 1) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1148 +ADDP4 +INDIRI4 +CNSTI4 1 +EQI4 $353 +line 862 +;862: { +line 863 +;863: VectorSubtract(gWPArray[endindex]->origin, nodetable[i].origin, a); +ADDRLP4 17596 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 17600 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ASGNI4 +ADDRLP4 1132 +ADDRLP4 17596 +INDIRP4 +INDIRP4 +INDIRF4 +ADDRLP4 17600 +INDIRI4 +ADDRGP4 nodetable +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1132+4 +ADDRLP4 17596 +INDIRP4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 17600 +INDIRI4 +ADDRGP4 nodetable+4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1132+8 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 864 +;864: fvecmeas = VectorLength(a); +ADDRLP4 1132 +ARGP4 +ADDRLP4 17604 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 17540 +ADDRLP4 17604 +INDIRF4 +ASGNF4 +line 866 +;865: +;866: if (fvecmeas < 128 && CanGetToVector(gWPArray[endindex]->origin, nodetable[i].origin, mins, maxs)) +ADDRLP4 17540 +INDIRF4 +CNSTF4 1124073472 +GEF4 $359 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17608 +ADDRGP4 CanGetToVector +CALLI4 +ASGNI4 +ADDRLP4 17608 +INDIRI4 +CNSTI4 0 +EQI4 $359 +line 867 +;867: { +line 868 +;868: foundit = 1; +ADDRLP4 17556 +CNSTI4 1 +ASGNI4 +line 869 +;869: successnodeindex = i; +ADDRLP4 17560 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 870 +;870: break; +ADDRGP4 $352 +JUMPV +LABELV $359 +line 873 +;871: } +;872: +;873: VectorCopy(nodetable[i].origin, testspot); +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +INDIRB +ASGNB 12 +line 874 +;874: testspot[0] += TABLE_BRANCH_DISTANCE; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +CNSTF4 1107296256 +ADDF4 +ASGNF4 +line 876 +;875: +;876: VectorCopy(testspot, starttrace); +ADDRLP4 1096 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 878 +;877: +;878: starttrace[2] -= 4096; +ADDRLP4 1096+8 +ADDRLP4 1096+8 +INDIRF4 +CNSTF4 1166016512 +SUBF4 +ASGNF4 +line 880 +;879: +;880: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID); +ADDRLP4 16 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 17612 +CNSTP4 0 +ASGNP4 +ADDRLP4 17612 +INDIRP4 +ARGP4 +ADDRLP4 17612 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 882 +;881: +;882: testspot[2] = tr.endpos[2]+baseheight; +ADDRLP4 4+8 +ADDRLP4 16+12+8 +INDIRF4 +ADDRLP4 1144 +INDIRF4 +ADDF4 +ASGNF4 +line 884 +;883: +;884: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs)) +ADDRLP4 4 +ARGP4 +ADDRLP4 17616 +ADDRGP4 NodeHere +CALLI4 +ASGNI4 +ADDRLP4 17620 +CNSTI4 0 +ASGNI4 +ADDRLP4 17616 +INDIRI4 +ADDRLP4 17620 +INDIRI4 +NEI4 $365 +ADDRLP4 16+4 +INDIRI4 +ADDRLP4 17620 +INDIRI4 +NEI4 $365 +ADDRLP4 16 +INDIRI4 +ADDRLP4 17620 +INDIRI4 +NEI4 $365 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17624 +ADDRGP4 CanGetToVector +CALLI4 +ASGNI4 +ADDRLP4 17624 +INDIRI4 +CNSTI4 0 +EQI4 $365 +line 885 +;885: { +line 886 +;886: VectorCopy(testspot, nodetable[nodenum].origin); +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 887 +;887: nodetable[nodenum].inuse = 1; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 888 +;888: nodetable[nodenum].index = nodenum; +ADDRLP4 17628 +ADDRGP4 nodenum +INDIRI4 +ASGNI4 +ADDRLP4 17628 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+16 +ADDP4 +ADDRLP4 17628 +INDIRI4 +ASGNI4 +line 889 +;889: nodetable[nodenum].weight = nodetable[i].weight+1; +ADDRLP4 17632 +CNSTI4 5 +ASGNI4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17632 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17632 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 890 +;890: nodetable[nodenum].neighbornum = i; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+28 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 891 +;891: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50) +ADDRLP4 17636 +CNSTI4 5 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17636 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17636 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +SUBF4 +CNSTF4 1112014848 +LEF4 $373 +line 892 +;892: { //if there's a big drop, make sure we know we can't just magically fly back up +line 893 +;893: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+24 +ADDP4 +CNSTI4 16384 +ASGNI4 +line 894 +;894: } +LABELV $373 +line 895 +;895: nodenum++; +ADDRLP4 17640 +ADDRGP4 nodenum +ASGNP4 +ADDRLP4 17640 +INDIRP4 +ADDRLP4 17640 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 896 +;896: cancontinue = 1; +ADDRLP4 17532 +CNSTI4 1 +ASGNI4 +line 897 +;897: } +LABELV $365 +line 899 +;898: +;899: if (nodenum >= MAX_NODETABLE_SIZE) +ADDRGP4 nodenum +INDIRI4 +CNSTI4 4096 +LTI4 $378 +line 900 +;900: { +line 901 +;901: break; //failure +ADDRGP4 $352 +JUMPV +LABELV $378 +line 904 +;902: } +;903: +;904: VectorCopy(nodetable[i].origin, testspot); +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +INDIRB +ASGNB 12 +line 905 +;905: testspot[0] -= TABLE_BRANCH_DISTANCE; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +ASGNF4 +line 907 +;906: +;907: VectorCopy(testspot, starttrace); +ADDRLP4 1096 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 909 +;908: +;909: starttrace[2] -= 4096; +ADDRLP4 1096+8 +ADDRLP4 1096+8 +INDIRF4 +CNSTF4 1166016512 +SUBF4 +ASGNF4 +line 911 +;910: +;911: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID); +ADDRLP4 16 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 17628 +CNSTP4 0 +ASGNP4 +ADDRLP4 17628 +INDIRP4 +ARGP4 +ADDRLP4 17628 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 913 +;912: +;913: testspot[2] = tr.endpos[2]+baseheight; +ADDRLP4 4+8 +ADDRLP4 16+12+8 +INDIRF4 +ADDRLP4 1144 +INDIRF4 +ADDF4 +ASGNF4 +line 915 +;914: +;915: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs)) +ADDRLP4 4 +ARGP4 +ADDRLP4 17632 +ADDRGP4 NodeHere +CALLI4 +ASGNI4 +ADDRLP4 17636 +CNSTI4 0 +ASGNI4 +ADDRLP4 17632 +INDIRI4 +ADDRLP4 17636 +INDIRI4 +NEI4 $384 +ADDRLP4 16+4 +INDIRI4 +ADDRLP4 17636 +INDIRI4 +NEI4 $384 +ADDRLP4 16 +INDIRI4 +ADDRLP4 17636 +INDIRI4 +NEI4 $384 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17640 +ADDRGP4 CanGetToVector +CALLI4 +ASGNI4 +ADDRLP4 17640 +INDIRI4 +CNSTI4 0 +EQI4 $384 +line 916 +;916: { +line 917 +;917: VectorCopy(testspot, nodetable[nodenum].origin); +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 918 +;918: nodetable[nodenum].inuse = 1; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 919 +;919: nodetable[nodenum].index = nodenum; +ADDRLP4 17644 +ADDRGP4 nodenum +INDIRI4 +ASGNI4 +ADDRLP4 17644 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+16 +ADDP4 +ADDRLP4 17644 +INDIRI4 +ASGNI4 +line 920 +;920: nodetable[nodenum].weight = nodetable[i].weight+1; +ADDRLP4 17648 +CNSTI4 5 +ASGNI4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17648 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17648 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 921 +;921: nodetable[nodenum].neighbornum = i; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+28 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 922 +;922: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50) +ADDRLP4 17652 +CNSTI4 5 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17652 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17652 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +SUBF4 +CNSTF4 1112014848 +LEF4 $392 +line 923 +;923: { //if there's a big drop, make sure we know we can't just magically fly back up +line 924 +;924: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+24 +ADDP4 +CNSTI4 16384 +ASGNI4 +line 925 +;925: } +LABELV $392 +line 926 +;926: nodenum++; +ADDRLP4 17656 +ADDRGP4 nodenum +ASGNP4 +ADDRLP4 17656 +INDIRP4 +ADDRLP4 17656 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 927 +;927: cancontinue = 1; +ADDRLP4 17532 +CNSTI4 1 +ASGNI4 +line 928 +;928: } +LABELV $384 +line 930 +;929: +;930: if (nodenum >= MAX_NODETABLE_SIZE) +ADDRGP4 nodenum +INDIRI4 +CNSTI4 4096 +LTI4 $397 +line 931 +;931: { +line 932 +;932: break; //failure +ADDRGP4 $352 +JUMPV +LABELV $397 +line 935 +;933: } +;934: +;935: VectorCopy(nodetable[i].origin, testspot); +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +INDIRB +ASGNB 12 +line 936 +;936: testspot[1] += TABLE_BRANCH_DISTANCE; +ADDRLP4 4+4 +ADDRLP4 4+4 +INDIRF4 +CNSTF4 1107296256 +ADDF4 +ASGNF4 +line 938 +;937: +;938: VectorCopy(testspot, starttrace); +ADDRLP4 1096 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 940 +;939: +;940: starttrace[2] -= 4096; +ADDRLP4 1096+8 +ADDRLP4 1096+8 +INDIRF4 +CNSTF4 1166016512 +SUBF4 +ASGNF4 +line 942 +;941: +;942: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID); +ADDRLP4 16 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 17644 +CNSTP4 0 +ASGNP4 +ADDRLP4 17644 +INDIRP4 +ARGP4 +ADDRLP4 17644 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 944 +;943: +;944: testspot[2] = tr.endpos[2]+baseheight; +ADDRLP4 4+8 +ADDRLP4 16+12+8 +INDIRF4 +ADDRLP4 1144 +INDIRF4 +ADDF4 +ASGNF4 +line 946 +;945: +;946: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs)) +ADDRLP4 4 +ARGP4 +ADDRLP4 17648 +ADDRGP4 NodeHere +CALLI4 +ASGNI4 +ADDRLP4 17652 +CNSTI4 0 +ASGNI4 +ADDRLP4 17648 +INDIRI4 +ADDRLP4 17652 +INDIRI4 +NEI4 $404 +ADDRLP4 16+4 +INDIRI4 +ADDRLP4 17652 +INDIRI4 +NEI4 $404 +ADDRLP4 16 +INDIRI4 +ADDRLP4 17652 +INDIRI4 +NEI4 $404 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17656 +ADDRGP4 CanGetToVector +CALLI4 +ASGNI4 +ADDRLP4 17656 +INDIRI4 +CNSTI4 0 +EQI4 $404 +line 947 +;947: { +line 948 +;948: VectorCopy(testspot, nodetable[nodenum].origin); +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 949 +;949: nodetable[nodenum].inuse = 1; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 950 +;950: nodetable[nodenum].index = nodenum; +ADDRLP4 17660 +ADDRGP4 nodenum +INDIRI4 +ASGNI4 +ADDRLP4 17660 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+16 +ADDP4 +ADDRLP4 17660 +INDIRI4 +ASGNI4 +line 951 +;951: nodetable[nodenum].weight = nodetable[i].weight+1; +ADDRLP4 17664 +CNSTI4 5 +ASGNI4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17664 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17664 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 952 +;952: nodetable[nodenum].neighbornum = i; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+28 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 953 +;953: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50) +ADDRLP4 17668 +CNSTI4 5 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17668 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17668 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +SUBF4 +CNSTF4 1112014848 +LEF4 $412 +line 954 +;954: { //if there's a big drop, make sure we know we can't just magically fly back up +line 955 +;955: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+24 +ADDP4 +CNSTI4 16384 +ASGNI4 +line 956 +;956: } +LABELV $412 +line 957 +;957: nodenum++; +ADDRLP4 17672 +ADDRGP4 nodenum +ASGNP4 +ADDRLP4 17672 +INDIRP4 +ADDRLP4 17672 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 958 +;958: cancontinue = 1; +ADDRLP4 17532 +CNSTI4 1 +ASGNI4 +line 959 +;959: } +LABELV $404 +line 961 +;960: +;961: if (nodenum >= MAX_NODETABLE_SIZE) +ADDRGP4 nodenum +INDIRI4 +CNSTI4 4096 +LTI4 $417 +line 962 +;962: { +line 963 +;963: break; //failure +ADDRGP4 $352 +JUMPV +LABELV $417 +line 966 +;964: } +;965: +;966: VectorCopy(nodetable[i].origin, testspot); +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +INDIRB +ASGNB 12 +line 967 +;967: testspot[1] -= TABLE_BRANCH_DISTANCE; +ADDRLP4 4+4 +ADDRLP4 4+4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +ASGNF4 +line 969 +;968: +;969: VectorCopy(testspot, starttrace); +ADDRLP4 1096 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 971 +;970: +;971: starttrace[2] -= 4096; +ADDRLP4 1096+8 +ADDRLP4 1096+8 +INDIRF4 +CNSTF4 1166016512 +SUBF4 +ASGNF4 +line 973 +;972: +;973: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID); +ADDRLP4 16 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 17660 +CNSTP4 0 +ASGNP4 +ADDRLP4 17660 +INDIRP4 +ARGP4 +ADDRLP4 17660 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 975 +;974: +;975: testspot[2] = tr.endpos[2]+baseheight; +ADDRLP4 4+8 +ADDRLP4 16+12+8 +INDIRF4 +ADDRLP4 1144 +INDIRF4 +ADDF4 +ASGNF4 +line 977 +;976: +;977: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs)) +ADDRLP4 4 +ARGP4 +ADDRLP4 17664 +ADDRGP4 NodeHere +CALLI4 +ASGNI4 +ADDRLP4 17668 +CNSTI4 0 +ASGNI4 +ADDRLP4 17664 +INDIRI4 +ADDRLP4 17668 +INDIRI4 +NEI4 $424 +ADDRLP4 16+4 +INDIRI4 +ADDRLP4 17668 +INDIRI4 +NEI4 $424 +ADDRLP4 16 +INDIRI4 +ADDRLP4 17668 +INDIRI4 +NEI4 $424 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17672 +ADDRGP4 CanGetToVector +CALLI4 +ASGNI4 +ADDRLP4 17672 +INDIRI4 +CNSTI4 0 +EQI4 $424 +line 978 +;978: { +line 979 +;979: VectorCopy(testspot, nodetable[nodenum].origin); +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 980 +;980: nodetable[nodenum].inuse = 1; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 981 +;981: nodetable[nodenum].index = nodenum; +ADDRLP4 17676 +ADDRGP4 nodenum +INDIRI4 +ASGNI4 +ADDRLP4 17676 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+16 +ADDP4 +ADDRLP4 17676 +INDIRI4 +ASGNI4 +line 982 +;982: nodetable[nodenum].weight = nodetable[i].weight+1; +ADDRLP4 17680 +CNSTI4 5 +ASGNI4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17680 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17680 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+20 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 983 +;983: nodetable[nodenum].neighbornum = i; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+28 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 984 +;984: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50) +ADDRLP4 17684 +CNSTI4 5 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17684 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +ADDRGP4 nodenum +INDIRI4 +ADDRLP4 17684 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +SUBF4 +CNSTF4 1112014848 +LEF4 $432 +line 985 +;985: { //if there's a big drop, make sure we know we can't just magically fly back up +line 986 +;986: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD; +ADDRGP4 nodenum +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+24 +ADDP4 +CNSTI4 16384 +ASGNI4 +line 987 +;987: } +LABELV $432 +line 988 +;988: nodenum++; +ADDRLP4 17688 +ADDRGP4 nodenum +ASGNP4 +ADDRLP4 17688 +INDIRP4 +ADDRLP4 17688 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 989 +;989: cancontinue = 1; +ADDRLP4 17532 +CNSTI4 1 +ASGNI4 +line 990 +;990: } +LABELV $424 +line 992 +;991: +;992: if (nodenum >= MAX_NODETABLE_SIZE) +ADDRGP4 nodenum +INDIRI4 +CNSTI4 4096 +LTI4 $437 +line 993 +;993: { +line 994 +;994: break; //failure +ADDRGP4 $352 +JUMPV +LABELV $437 +line 997 +;995: } +;996: +;997: extendednodes[i] = 1; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1148 +ADDP4 +CNSTI4 1 +ASGNI4 +line 998 +;998: } +LABELV $353 +line 1000 +;999: +;1000: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1001 +;1001: } +LABELV $351 +line 859 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17536 +INDIRI4 +LTI4 $350 +LABELV $352 +line 1002 +;1002: } +LABELV $348 +line 853 +ADDRGP4 nodenum +INDIRI4 +CNSTI4 4096 +GEI4 $440 +ADDRLP4 17596 +CNSTI4 0 +ASGNI4 +ADDRLP4 17556 +INDIRI4 +ADDRLP4 17596 +INDIRI4 +NEI4 $440 +ADDRLP4 17532 +INDIRI4 +ADDRLP4 17596 +INDIRI4 +NEI4 $347 +LABELV $440 +line 1004 +;1003: +;1004: if (!foundit) +ADDRLP4 17556 +INDIRI4 +CNSTI4 0 +NEI4 $441 +line 1005 +;1005: { +line 1006 +;1006: G_Printf(S_COLOR_RED "Could not link %i to %i, unreachable by node branching.\n", startindex, endindex); +ADDRGP4 $443 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 1007 +;1007: gWPArray[startindex]->flags |= WPFLAG_ONEWAY_FWD; +ADDRLP4 17600 +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 17600 +INDIRP4 +ADDRLP4 17600 +INDIRP4 +INDIRI4 +CNSTI4 16384 +BORI4 +ASGNI4 +line 1008 +;1008: gWPArray[endindex]->flags |= WPFLAG_ONEWAY_BACK; +ADDRLP4 17604 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 17604 +INDIRP4 +ADDRLP4 17604 +INDIRP4 +INDIRI4 +CNSTI4 32768 +BORI4 +ASGNI4 +line 1009 +;1009: G_Printf(S_COLOR_YELLOW "Since points cannot be connected, point %i has been flagged as only-forward and point %i has been flagged as only-backward.\n", startindex, endindex); +ADDRGP4 $444 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 1022 +;1010: +;1011: /*while (nodenum >= 0) +;1012: { +;1013: if (nodetable[nodenum].origin[0] || nodetable[nodenum].origin[1] || nodetable[nodenum].origin[2]) +;1014: { +;1015: CreateNewWP(nodetable[nodenum].origin, nodetable[nodenum].flags); +;1016: } +;1017: +;1018: nodenum--; +;1019: }*/ +;1020: //The above code transfers nodes into the "rendered" waypoint array. Strictly for debugging. +;1021: +;1022: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $324 +JUMPV +LABELV $441 +line 1025 +;1023: } +;1024: +;1025: i = successnodeindex; +ADDRLP4 0 +ADDRLP4 17560 +INDIRI4 +ASGNI4 +line 1026 +;1026: insertindex = startindex; +ADDRLP4 17568 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 1027 +;1027: failsafe = 0; +ADDRLP4 17564 +CNSTI4 0 +ASGNI4 +line 1028 +;1028: VectorCopy(gWPArray[startindex]->origin, validspotpos); +ADDRLP4 17544 +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +INDIRB +ASGNB 12 +ADDRGP4 $446 +JUMPV +LABELV $445 +line 1031 +;1029: +;1030: while (failsafe < MAX_NODETABLE_SIZE && i < MAX_NODETABLE_SIZE && i >= 0) +;1031: { +line 1032 +;1032: VectorSubtract(validspotpos, nodetable[i].origin, a); +ADDRLP4 17600 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ASGNI4 +ADDRLP4 1132 +ADDRLP4 17544 +INDIRF4 +ADDRLP4 17600 +INDIRI4 +ADDRGP4 nodetable +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1132+4 +ADDRLP4 17544+4 +INDIRF4 +ADDRLP4 17600 +INDIRI4 +ADDRGP4 nodetable+4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1132+8 +ADDRLP4 17544+8 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1033 +;1033: if (!nodetable[nodetable[i].neighbornum].inuse || !CanGetToVectorTravel(validspotpos, /*nodetable[nodetable[i].neighbornum].origin*/nodetable[i].origin, mins, maxs) || VectorLength(a) > 256 || (!CanGetToVectorTravel(validspotpos, gWPArray[endindex]->origin, mins, maxs) && CanGetToVectorTravel(nodetable[i].origin, gWPArray[endindex]->origin, mins, maxs)) ) +ADDRLP4 17604 +CNSTI4 5 +ASGNI4 +ADDRLP4 17608 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17604 +INDIRI4 +LSHI4 +ASGNI4 +ADDRLP4 17608 +INDIRI4 +ADDRGP4 nodetable+28 +ADDP4 +INDIRI4 +ADDRLP4 17604 +INDIRI4 +LSHI4 +ADDRGP4 nodetable+12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $460 +ADDRLP4 17544 +ARGP4 +ADDRLP4 17608 +INDIRI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17612 +ADDRGP4 CanGetToVectorTravel +CALLI4 +ASGNI4 +ADDRLP4 17612 +INDIRI4 +CNSTI4 0 +EQI4 $460 +ADDRLP4 1132 +ARGP4 +ADDRLP4 17616 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 17616 +INDIRF4 +CNSTF4 1132462080 +GTF4 $460 +ADDRLP4 17544 +ARGP4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17620 +ADDRGP4 CanGetToVectorTravel +CALLI4 +ASGNI4 +ADDRLP4 17620 +INDIRI4 +CNSTI4 0 +NEI4 $454 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 17624 +ADDRGP4 CanGetToVectorTravel +CALLI4 +ASGNI4 +ADDRLP4 17624 +INDIRI4 +CNSTI4 0 +EQI4 $454 +LABELV $460 +line 1034 +;1034: { +line 1035 +;1035: if (!CreateNewWP_InTrail(nodetable[i].origin, nodetable[i].flags, insertindex)) +ADDRLP4 17628 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ASGNI4 +ADDRLP4 17628 +INDIRI4 +ADDRGP4 nodetable +ADDP4 +ARGP4 +ADDRLP4 17628 +INDIRI4 +ADDRGP4 nodetable+24 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 17568 +INDIRI4 +ARGI4 +ADDRLP4 17632 +ADDRGP4 CreateNewWP_InTrail +CALLI4 +ASGNI4 +ADDRLP4 17632 +INDIRI4 +CNSTI4 0 +NEI4 $461 +line 1036 +;1036: { +line 1037 +;1037: G_Printf(S_COLOR_RED "Could not link %i to %i, waypoint limit hit.\n", startindex, endindex); +ADDRGP4 $464 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 1038 +;1038: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $324 +JUMPV +LABELV $461 +line 1041 +;1039: } +;1040: +;1041: VectorCopy(nodetable[i].origin, validspotpos); +ADDRLP4 17544 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable +ADDP4 +INDIRB +ASGNB 12 +line 1042 +;1042: } +LABELV $454 +line 1044 +;1043: +;1044: if (i == 0) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $465 +line 1045 +;1045: { +line 1046 +;1046: break; +ADDRGP4 $447 +JUMPV +LABELV $465 +line 1049 +;1047: } +;1048: +;1049: i = nodetable[i].neighbornum; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 nodetable+28 +ADDP4 +INDIRI4 +ASGNI4 +line 1051 +;1050: +;1051: failsafe++; +ADDRLP4 17564 +ADDRLP4 17564 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1052 +;1052: } +LABELV $446 +line 1030 +ADDRLP4 17600 +CNSTI4 4096 +ASGNI4 +ADDRLP4 17564 +INDIRI4 +ADDRLP4 17600 +INDIRI4 +GEI4 $469 +ADDRLP4 0 +INDIRI4 +ADDRLP4 17600 +INDIRI4 +GEI4 $469 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $445 +LABELV $469 +LABELV $447 +line 1054 +;1053: +;1054: G_Printf(S_COLOR_YELLOW "Finished connecting %i to %i.\n", startindex, endindex); +ADDRGP4 $470 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Printf +CALLV +pop +line 1056 +;1055: +;1056: return 1; +CNSTI4 1 +RETI4 +LABELV $324 +endproc ConnectTrail 17692 28 +export OpposingEnds +proc OpposingEnds 44 0 +line 1060 +;1057:} +;1058: +;1059:int OpposingEnds(int start, int end) +;1060:{ +line 1061 +;1061: if (!gWPArray[start] || !gWPArray[start]->inuse || !gWPArray[end] || !gWPArray[end]->inuse) +ADDRLP4 0 +CNSTI4 2 +ASGNI4 +ADDRLP4 4 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 8 +ADDRFP4 0 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LSHI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTU4 0 +ASGNU4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +ADDRLP4 12 +INDIRU4 +EQU4 $476 +ADDRLP4 16 +CNSTI4 12 +ASGNI4 +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +EQI4 $476 +ADDRLP4 24 +ADDRFP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LSHI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 12 +INDIRU4 +EQU4 $476 +ADDRLP4 24 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +NEI4 $472 +LABELV $476 +line 1062 +;1062: { +line 1063 +;1063: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $471 +JUMPV +LABELV $472 +line 1066 +;1064: } +;1065: +;1066: if ((gWPArray[start]->flags & WPFLAG_ONEWAY_FWD) && +ADDRLP4 28 +CNSTI4 2 +ASGNI4 +ADDRLP4 32 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 36 +CNSTI4 28 +ASGNI4 +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 28 +INDIRI4 +LSHI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRI4 +CNSTI4 16384 +BANDI4 +ADDRLP4 40 +INDIRI4 +EQI4 $477 +ADDRFP4 4 +INDIRI4 +ADDRLP4 28 +INDIRI4 +LSHI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRI4 +CNSTI4 32768 +BANDI4 +ADDRLP4 40 +INDIRI4 +EQI4 $477 +line 1068 +;1067: (gWPArray[end]->flags & WPFLAG_ONEWAY_BACK)) +;1068: { +line 1069 +;1069: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $471 +JUMPV +LABELV $477 +line 1072 +;1070: } +;1071: +;1072: return 0; +CNSTI4 0 +RETI4 +LABELV $471 +endproc OpposingEnds 44 0 +export DoorBlockingSection +proc DoorBlockingSection 1144 28 +line 1076 +;1073:} +;1074: +;1075:int DoorBlockingSection(int start, int end) +;1076:{ //if a door blocks the trail, we'll just have to assume the points on each side are in visibility when it's open +line 1081 +;1077: trace_t tr; +;1078: gentity_t *testdoor; +;1079: int start_trace_index; +;1080: +;1081: if (!gWPArray[start] || !gWPArray[start]->inuse || !gWPArray[end] || !gWPArray[end]->inuse) +ADDRLP4 1088 +CNSTI4 2 +ASGNI4 +ADDRLP4 1092 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 1096 +ADDRFP4 0 +INDIRI4 +ADDRLP4 1088 +INDIRI4 +LSHI4 +ADDRLP4 1092 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1100 +CNSTU4 0 +ASGNU4 +ADDRLP4 1096 +INDIRP4 +CVPU4 4 +ADDRLP4 1100 +INDIRU4 +EQU4 $484 +ADDRLP4 1104 +CNSTI4 12 +ASGNI4 +ADDRLP4 1108 +CNSTI4 0 +ASGNI4 +ADDRLP4 1096 +INDIRP4 +ADDRLP4 1104 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 1108 +INDIRI4 +EQI4 $484 +ADDRLP4 1112 +ADDRFP4 4 +INDIRI4 +ADDRLP4 1088 +INDIRI4 +LSHI4 +ADDRLP4 1092 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1112 +INDIRP4 +CVPU4 4 +ADDRLP4 1100 +INDIRU4 +EQU4 $484 +ADDRLP4 1112 +INDIRP4 +ADDRLP4 1104 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 1108 +INDIRI4 +NEI4 $480 +LABELV $484 +line 1082 +;1082: { +line 1083 +;1083: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $479 +JUMPV +LABELV $480 +line 1086 +;1084: } +;1085: +;1086: trap_Trace(&tr, gWPArray[start]->origin, NULL, NULL, gWPArray[end]->origin, -1, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRLP4 1116 +CNSTI4 2 +ASGNI4 +ADDRLP4 1120 +ADDRGP4 gWPArray +ASGNP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 1116 +INDIRI4 +LSHI4 +ADDRLP4 1120 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1124 +CNSTP4 0 +ASGNP4 +ADDRLP4 1124 +INDIRP4 +ARGP4 +ADDRLP4 1124 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 1116 +INDIRI4 +LSHI4 +ADDRLP4 1120 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 1088 +;1087: +;1088: if (tr.fraction == 1) +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1065353216 +NEF4 $485 +line 1089 +;1089: { +line 1090 +;1090: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $479 +JUMPV +LABELV $485 +line 1093 +;1091: } +;1092: +;1093: testdoor = &g_entities[tr.entityNum]; +ADDRLP4 1080 +CNSTI4 828 +ADDRLP4 0+52 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1095 +;1094: +;1095: if (!testdoor) +ADDRLP4 1080 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $489 +line 1096 +;1096: { +line 1097 +;1097: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $479 +JUMPV +LABELV $489 +line 1100 +;1098: } +;1099: +;1100: if (!strstr(testdoor->classname, "func_")) +ADDRLP4 1080 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $493 +ARGP4 +ADDRLP4 1128 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 1128 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $491 +line 1101 +;1101: { +line 1102 +;1102: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $479 +JUMPV +LABELV $491 +line 1105 +;1103: } +;1104: +;1105: start_trace_index = tr.entityNum; +ADDRLP4 1084 +ADDRLP4 0+52 +INDIRI4 +ASGNI4 +line 1107 +;1106: +;1107: trap_Trace(&tr, gWPArray[end]->origin, NULL, NULL, gWPArray[start]->origin, -1, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRLP4 1132 +CNSTI4 2 +ASGNI4 +ADDRLP4 1136 +ADDRGP4 gWPArray +ASGNP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 1132 +INDIRI4 +LSHI4 +ADDRLP4 1136 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1140 +CNSTP4 0 +ASGNP4 +ADDRLP4 1140 +INDIRP4 +ARGP4 +ADDRLP4 1140 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 1132 +INDIRI4 +LSHI4 +ADDRLP4 1136 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 1109 +;1108: +;1109: if (tr.fraction == 1) +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1065353216 +NEF4 $495 +line 1110 +;1110: { +line 1111 +;1111: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $479 +JUMPV +LABELV $495 +line 1114 +;1112: } +;1113: +;1114: if (start_trace_index == tr.entityNum) +ADDRLP4 1084 +INDIRI4 +ADDRLP4 0+52 +INDIRI4 +NEI4 $498 +line 1115 +;1115: { +line 1116 +;1116: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $479 +JUMPV +LABELV $498 +line 1119 +;1117: } +;1118: +;1119: return 0; +CNSTI4 0 +RETI4 +LABELV $479 +endproc DoorBlockingSection 1144 28 +export RepairPaths +proc RepairPaths 108 12 +line 1123 +;1120:} +;1121: +;1122:int RepairPaths(void) +;1123:{ +line 1128 +;1124: int i; +;1125: int ctRet; +;1126: vec3_t a; +;1127: +;1128: if (!gWPNum) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 0 +NEI4 $502 +line 1129 +;1129: { +line 1130 +;1130: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $501 +JUMPV +LABELV $502 +line 1133 +;1131: } +;1132: +;1133: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1135 +;1134: +;1135: trap_Cvar_Update(&bot_wp_distconnect); +ADDRGP4 bot_wp_distconnect +ARGP4 +ADDRGP4 trap_Cvar_Update +CALLV +pop +line 1136 +;1136: trap_Cvar_Update(&bot_wp_visconnect); +ADDRGP4 bot_wp_visconnect +ARGP4 +ADDRGP4 trap_Cvar_Update +CALLV +pop +ADDRGP4 $505 +JUMPV +LABELV $504 +line 1139 +;1137: +;1138: while (i < gWPNum) +;1139: { +line 1140 +;1140: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i+1] && gWPArray[i+1]->inuse) +ADDRLP4 20 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 20 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 28 +CNSTU4 0 +ASGNU4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 28 +INDIRU4 +EQU4 $507 +ADDRLP4 32 +CNSTI4 12 +ASGNI4 +ADDRLP4 36 +CNSTI4 0 +ASGNI4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 36 +INDIRI4 +EQI4 $507 +ADDRLP4 20 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 28 +INDIRU4 +EQU4 $507 +ADDRLP4 20 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 36 +INDIRI4 +EQI4 $507 +line 1141 +;1141: { +line 1142 +;1142: VectorSubtract(gWPArray[i]->origin, gWPArray[i+1]->origin, a); +ADDRLP4 40 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 44 +ADDRLP4 40 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 44 +INDIRP4 +INDIRP4 +INDIRF4 +ADDRLP4 40 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 48 +CNSTI4 4 +ASGNI4 +ADDRLP4 4+4 +ADDRLP4 44 +INDIRP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 52 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 56 +CNSTI4 8 +ASGNI4 +ADDRLP4 4+8 +ADDRLP4 52 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1144 +;1143: +;1144: if (!(gWPArray[i+1]->flags & WPFLAG_NOVIS) && +ADDRLP4 64 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 68 +CNSTI4 28 +ASGNI4 +ADDRLP4 72 +CNSTI4 0 +ASGNI4 +ADDRLP4 64 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +ADDRLP4 72 +INDIRI4 +NEI4 $516 +ADDRLP4 64 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +INDIRI4 +CNSTI4 16 +BANDI4 +ADDRLP4 72 +INDIRI4 +NEI4 $516 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 76 +ADDRGP4 OpposingEnds +CALLI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 0 +NEI4 $516 +ADDRLP4 4 +ARGP4 +ADDRLP4 80 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 80 +INDIRF4 +CNSTF4 1137180672 +LEF4 $524 +ADDRGP4 bot_wp_distconnect+8 +INDIRF4 +CNSTF4 0 +NEF4 $523 +LABELV $524 +ADDRLP4 84 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 84 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 84 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 88 +ADDRGP4 OrgVisible +CALLI4 +ASGNI4 +ADDRLP4 88 +INDIRI4 +CNSTI4 0 +NEI4 $516 +ADDRGP4 bot_wp_visconnect+8 +INDIRF4 +CNSTF4 0 +EQF4 $516 +LABELV $523 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 96 +ADDRGP4 DoorBlockingSection +CALLI4 +ASGNI4 +ADDRLP4 96 +INDIRI4 +CNSTI4 0 +NEI4 $516 +line 1149 +;1145: !(gWPArray[i+1]->flags & WPFLAG_JUMP) && //don't calculate on jump points because they might not always want to be visible (in cases of force jumping) +;1146: !OpposingEnds(i, i+1) && +;1147: ((VectorLength(a) > 400 && bot_wp_distconnect.value) || (!OrgVisible(gWPArray[i]->origin, gWPArray[i+1]->origin, -1) && bot_wp_visconnect.value) ) && +;1148: !DoorBlockingSection(i, i+1)) +;1149: { +line 1150 +;1150: ctRet = ConnectTrail(i, i+1); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 104 +ADDRGP4 ConnectTrail +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 104 +INDIRI4 +ASGNI4 +line 1155 +;1151: /*if (!ctRet) +;1152: { +;1153: return 0; +;1154: }*/ //we still want to write it.. +;1155: } +LABELV $516 +line 1156 +;1156: } +LABELV $507 +line 1158 +;1157: +;1158: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1159 +;1159: } +LABELV $505 +line 1138 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $504 +line 1161 +;1160: +;1161: return 1; +CNSTI4 1 +RETI4 +LABELV $501 +endproc RepairPaths 108 12 +export OrgVisibleCurve +proc OrgVisibleCurve 1100 28 +line 1165 +;1162:} +;1163: +;1164:int OrgVisibleCurve(vec3_t org1, vec3_t mins, vec3_t maxs, vec3_t org2, int ignore) +;1165:{ +line 1169 +;1166: trace_t tr; +;1167: vec3_t evenorg1; +;1168: +;1169: VectorCopy(org1, evenorg1); +ADDRLP4 1080 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 1170 +;1170: evenorg1[2] = org2[2]; +ADDRLP4 1080+8 +ADDRFP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +line 1172 +;1171: +;1172: trap_Trace(&tr, evenorg1, mins, maxs, org2, ignore, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRLP4 1080 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 1174 +;1173: +;1174: if (tr.fraction == 1 && !tr.startsolid && !tr.allsolid) +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1065353216 +NEF4 $527 +ADDRLP4 1092 +CNSTI4 0 +ASGNI4 +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 1092 +INDIRI4 +NEI4 $527 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1092 +INDIRI4 +NEI4 $527 +line 1175 +;1175: { +line 1176 +;1176: trap_Trace(&tr, evenorg1, mins, maxs, org1, ignore, MASK_SOLID); +ADDRLP4 0 +ARGP4 +ADDRLP4 1080 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 1178 +;1177: +;1178: if (tr.fraction == 1 && !tr.startsolid && !tr.allsolid) +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1065353216 +NEF4 $531 +ADDRLP4 1096 +CNSTI4 0 +ASGNI4 +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 1096 +INDIRI4 +NEI4 $531 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1096 +INDIRI4 +NEI4 $531 +line 1179 +;1179: { +line 1180 +;1180: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $525 +JUMPV +LABELV $531 +line 1182 +;1181: } +;1182: } +LABELV $527 +line 1184 +;1183: +;1184: return 0; +CNSTI4 0 +RETI4 +LABELV $525 +endproc OrgVisibleCurve 1100 28 +export CanForceJumpTo +proc CanForceJumpTo 104 20 +line 1188 +;1185:} +;1186: +;1187:int CanForceJumpTo(int baseindex, int testingindex, float distance) +;1188:{ +line 1191 +;1189: float heightdif; +;1190: vec3_t xy_base, xy_test, v, mins, maxs; +;1191: wpobject_t *wpBase = gWPArray[baseindex]; +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +line 1192 +;1192: wpobject_t *wpTest = gWPArray[testingindex]; +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +line 1194 +;1193: +;1194: mins[0] = -15; +ADDRLP4 48 +CNSTF4 3245342720 +ASGNF4 +line 1195 +;1195: mins[1] = -15; +ADDRLP4 48+4 +CNSTF4 3245342720 +ASGNF4 +line 1196 +;1196: mins[2] = -15; //-1 +ADDRLP4 48+8 +CNSTF4 3245342720 +ASGNF4 +line 1197 +;1197: maxs[0] = 15; +ADDRLP4 60 +CNSTF4 1097859072 +ASGNF4 +line 1198 +;1198: maxs[1] = 15; +ADDRLP4 60+4 +CNSTF4 1097859072 +ASGNF4 +line 1199 +;1199: maxs[2] = 15; //1 +ADDRLP4 60+8 +CNSTF4 1097859072 +ASGNF4 +line 1201 +;1200: +;1201: if (!wpBase || !wpBase->inuse || !wpTest || !wpTest->inuse) +ADDRLP4 76 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 76 +INDIRU4 +EQU4 $544 +ADDRLP4 80 +CNSTI4 12 +ASGNI4 +ADDRLP4 84 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 84 +INDIRI4 +EQI4 $544 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 76 +INDIRU4 +EQU4 $544 +ADDRLP4 4 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 84 +INDIRI4 +NEI4 $540 +LABELV $544 +line 1202 +;1202: { +line 1203 +;1203: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $540 +line 1206 +;1204: } +;1205: +;1206: if (distance > 400) +ADDRFP4 8 +INDIRF4 +CNSTF4 1137180672 +LEF4 $545 +line 1207 +;1207: { +line 1208 +;1208: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $545 +line 1211 +;1209: } +;1210: +;1211: VectorCopy(wpBase->origin, xy_base); +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 1212 +;1212: VectorCopy(wpTest->origin, xy_test); +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +INDIRB +ASGNB 12 +line 1214 +;1213: +;1214: xy_base[2] = xy_test[2]; +ADDRLP4 8+8 +ADDRLP4 20+8 +INDIRF4 +ASGNF4 +line 1216 +;1215: +;1216: VectorSubtract(xy_base, xy_test, v); +ADDRLP4 36 +ADDRLP4 8 +INDIRF4 +ADDRLP4 20 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 36+4 +ADDRLP4 8+4 +INDIRF4 +ADDRLP4 20+4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 36+8 +ADDRLP4 8+8 +INDIRF4 +ADDRLP4 20+8 +INDIRF4 +SUBF4 +ASGNF4 +line 1218 +;1217: +;1218: if (VectorLength(v) > MAX_NEIGHBOR_LINK_DISTANCE) +ADDRLP4 36 +ARGP4 +ADDRLP4 92 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 92 +INDIRF4 +CNSTF4 1124073472 +LEF4 $555 +line 1219 +;1219: { +line 1220 +;1220: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $555 +line 1223 +;1221: } +;1222: +;1223: if ((int)wpBase->origin[2] < (int)wpTest->origin[2]) +ADDRLP4 96 +CNSTI4 8 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP4 +INDIRF4 +CVFI4 4 +GEI4 $557 +line 1224 +;1224: { +line 1225 +;1225: heightdif = wpTest->origin[2] - wpBase->origin[2]; +ADDRLP4 100 +CNSTI4 8 +ASGNI4 +ADDRLP4 32 +ADDRLP4 4 +INDIRP4 +ADDRLP4 100 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 100 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1226 +;1226: } +ADDRGP4 $558 +JUMPV +LABELV $557 +line 1228 +;1227: else +;1228: { +line 1229 +;1229: return 0; //err.. +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $558 +line 1232 +;1230: } +;1231: +;1232: if (heightdif < 128) +ADDRLP4 32 +INDIRF4 +CNSTF4 1124073472 +GEF4 $559 +line 1233 +;1233: { //don't bother.. +line 1234 +;1234: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $559 +line 1237 +;1235: } +;1236: +;1237: if (heightdif > 512) +ADDRLP4 32 +INDIRF4 +CNSTF4 1140850688 +LEF4 $561 +line 1238 +;1238: { //too high +line 1239 +;1239: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $561 +line 1242 +;1240: } +;1241: +;1242: if (!OrgVisibleCurve(wpBase->origin, mins, maxs, wpTest->origin, -1)) +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 48 +ARGP4 +ADDRLP4 60 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 100 +ADDRGP4 OrgVisibleCurve +CALLI4 +ASGNI4 +ADDRLP4 100 +INDIRI4 +CNSTI4 0 +NEI4 $563 +line 1243 +;1243: { +line 1244 +;1244: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $563 +line 1247 +;1245: } +;1246: +;1247: if (heightdif > 400) +ADDRLP4 32 +INDIRF4 +CNSTF4 1137180672 +LEF4 $565 +line 1248 +;1248: { +line 1249 +;1249: return 3; +CNSTI4 3 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $565 +line 1251 +;1250: } +;1251: else if (heightdif > 256) +ADDRLP4 32 +INDIRF4 +CNSTF4 1132462080 +LEF4 $567 +line 1252 +;1252: { +line 1253 +;1253: return 2; +CNSTI4 2 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $567 +line 1256 +;1254: } +;1255: else +;1256: { +line 1257 +;1257: return 1; +CNSTI4 1 +RETI4 +LABELV $535 +endproc CanForceJumpTo 104 20 +export CalculatePaths +proc CalculatePaths 160 20 +line 1262 +;1258: } +;1259:} +;1260: +;1261:void CalculatePaths(void) +;1262:{ +line 1270 +;1263: int i; +;1264: int c; +;1265: int forceJumpable; +;1266: float nLDist; +;1267: vec3_t a; +;1268: vec3_t mins, maxs; +;1269: +;1270: if (!gWPNum) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 0 +NEI4 $570 +line 1271 +;1271: { +line 1272 +;1272: return; +ADDRGP4 $569 +JUMPV +LABELV $570 +line 1275 +;1273: } +;1274: +;1275: mins[0] = -15; +ADDRLP4 28 +CNSTF4 3245342720 +ASGNF4 +line 1276 +;1276: mins[1] = -15; +ADDRLP4 28+4 +CNSTF4 3245342720 +ASGNF4 +line 1277 +;1277: mins[2] = -15; //-1 +ADDRLP4 28+8 +CNSTF4 3245342720 +ASGNF4 +line 1278 +;1278: maxs[0] = 15; +ADDRLP4 40 +CNSTF4 1097859072 +ASGNF4 +line 1279 +;1279: maxs[1] = 15; +ADDRLP4 40+4 +CNSTF4 1097859072 +ASGNF4 +line 1280 +;1280: maxs[2] = 15; //1 +ADDRLP4 40+8 +CNSTF4 1097859072 +ASGNF4 +line 1283 +;1281: +;1282: //now clear out all the neighbor data before we recalculate +;1283: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $577 +JUMPV +LABELV $576 +line 1286 +;1284: +;1285: while (i < gWPNum) +;1286: { +line 1287 +;1287: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->neighbornum) +ADDRLP4 52 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $579 +ADDRLP4 56 +CNSTI4 0 +ASGNI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 56 +INDIRI4 +EQI4 $579 +ADDRLP4 52 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ADDRLP4 56 +INDIRI4 +EQI4 $579 +line 1288 +;1288: { +ADDRGP4 $582 +JUMPV +LABELV $581 +line 1290 +;1289: while (gWPArray[i]->neighbornum >= 0) +;1290: { +line 1291 +;1291: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].num = 0; +ADDRLP4 60 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1292 +;1292: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].forceJumpTo = 0; +ADDRLP4 64 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1293 +;1293: gWPArray[i]->neighbornum--; +ADDRLP4 68 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 68 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1294 +;1294: } +LABELV $582 +line 1289 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $581 +line 1295 +;1295: gWPArray[i]->neighbornum = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1296 +;1296: } +LABELV $579 +line 1298 +;1297: +;1298: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1299 +;1299: } +LABELV $577 +line 1285 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $576 +line 1301 +;1300: +;1301: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $585 +JUMPV +LABELV $584 +line 1304 +;1302: +;1303: while (i < gWPNum) +;1304: { +line 1305 +;1305: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 52 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $587 +ADDRLP4 52 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $587 +line 1306 +;1306: { +line 1307 +;1307: c = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $590 +JUMPV +LABELV $589 +line 1310 +;1308: +;1309: while (c < gWPNum) +;1310: { +line 1311 +;1311: if (gWPArray[c] && gWPArray[c]->inuse && i != c && +ADDRLP4 60 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $592 +ADDRLP4 60 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $592 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $592 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 68 +ADDRGP4 NotWithinRange +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +EQI4 $592 +line 1313 +;1312: NotWithinRange(i, c)) +;1313: { +line 1314 +;1314: VectorSubtract(gWPArray[i]->origin, gWPArray[c]->origin, a); +ADDRLP4 72 +CNSTI4 2 +ASGNI4 +ADDRLP4 76 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 80 +ADDRLP4 0 +INDIRI4 +ADDRLP4 72 +INDIRI4 +LSHI4 +ADDRLP4 76 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 84 +ADDRLP4 4 +INDIRI4 +ADDRLP4 72 +INDIRI4 +LSHI4 +ADDRLP4 76 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 80 +INDIRP4 +INDIRP4 +INDIRF4 +ADDRLP4 84 +INDIRP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 88 +CNSTI4 4 +ASGNI4 +ADDRLP4 12+4 +ADDRLP4 80 +INDIRP4 +INDIRP4 +ADDRLP4 88 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 84 +INDIRP4 +INDIRP4 +ADDRLP4 88 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 92 +CNSTI4 2 +ASGNI4 +ADDRLP4 96 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 100 +CNSTI4 8 +ASGNI4 +ADDRLP4 12+8 +ADDRLP4 0 +INDIRI4 +ADDRLP4 92 +INDIRI4 +LSHI4 +ADDRLP4 96 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 100 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 92 +INDIRI4 +LSHI4 +ADDRLP4 96 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 100 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1316 +;1315: +;1316: nLDist = VectorLength(a); +ADDRLP4 12 +ARGP4 +ADDRLP4 104 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 24 +ADDRLP4 104 +INDIRF4 +ASGNF4 +line 1317 +;1317: forceJumpable = CanForceJumpTo(i, c, nLDist); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRF4 +ARGF4 +ADDRLP4 108 +ADDRGP4 CanForceJumpTo +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 108 +INDIRI4 +ASGNI4 +line 1319 +;1318: +;1319: if ((nLDist < MAX_NEIGHBOR_LINK_DISTANCE || forceJumpable) && +ADDRLP4 24 +INDIRF4 +CNSTF4 1124073472 +LTF4 $598 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $596 +LABELV $598 +ADDRLP4 112 +CNSTI4 2 +ASGNI4 +ADDRLP4 116 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 120 +CNSTI4 8 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 112 +INDIRI4 +LSHI4 +ADDRLP4 116 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 120 +INDIRI4 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 112 +INDIRI4 +LSHI4 +ADDRLP4 116 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 120 +INDIRI4 +ADDP4 +INDIRF4 +CVFI4 4 +EQI4 $599 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $596 +LABELV $599 +ADDRLP4 124 +CNSTI4 2 +ASGNI4 +ADDRLP4 128 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 124 +INDIRI4 +LSHI4 +ADDRLP4 128 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ARGP4 +ADDRLP4 40 +ARGP4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 124 +INDIRI4 +LSHI4 +ADDRLP4 128 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 132 +ADDRGP4 OrgVisibleBox +CALLI4 +ASGNI4 +ADDRLP4 136 +CNSTI4 0 +ASGNI4 +ADDRLP4 132 +INDIRI4 +ADDRLP4 136 +INDIRI4 +NEI4 $600 +ADDRLP4 8 +INDIRI4 +ADDRLP4 136 +INDIRI4 +EQI4 $596 +LABELV $600 +line 1322 +;1320: ((int)gWPArray[i]->origin[2] == (int)gWPArray[c]->origin[2] || forceJumpable) && +;1321: (OrgVisibleBox(gWPArray[i]->origin, mins, maxs, gWPArray[c]->origin, -1) || forceJumpable)) +;1322: { +line 1323 +;1323: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].num = c; +ADDRLP4 140 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 140 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 140 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1324 +;1324: if (forceJumpable && ((int)gWPArray[i]->origin[2] != (int)gWPArray[c]->origin[2] || nLDist < MAX_NEIGHBOR_LINK_DISTANCE)) +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $601 +ADDRLP4 144 +CNSTI4 2 +ASGNI4 +ADDRLP4 148 +ADDRGP4 gWPArray +ASGNP4 +ADDRLP4 152 +CNSTI4 8 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 144 +INDIRI4 +LSHI4 +ADDRLP4 148 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 152 +INDIRI4 +ADDP4 +INDIRF4 +CVFI4 4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 144 +INDIRI4 +LSHI4 +ADDRLP4 148 +INDIRP4 +ADDP4 +INDIRP4 +ADDRLP4 152 +INDIRI4 +ADDP4 +INDIRF4 +CVFI4 4 +NEI4 $603 +ADDRLP4 24 +INDIRF4 +CNSTF4 1124073472 +GEF4 $601 +LABELV $603 +line 1325 +;1325: { +line 1326 +;1326: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].forceJumpTo = 999;//forceJumpable; //FJSR +ADDRLP4 156 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 156 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 156 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +CNSTI4 999 +ASGNI4 +line 1327 +;1327: } +ADDRGP4 $602 +JUMPV +LABELV $601 +line 1329 +;1328: else +;1329: { +line 1330 +;1330: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].forceJumpTo = 0; +ADDRLP4 156 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 156 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 156 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1331 +;1331: } +LABELV $602 +line 1332 +;1332: gWPArray[i]->neighbornum++; +ADDRLP4 156 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +ASGNP4 +ADDRLP4 156 +INDIRP4 +ADDRLP4 156 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1333 +;1333: } +LABELV $596 +line 1335 +;1334: +;1335: if (gWPArray[i]->neighbornum >= MAX_NEIGHBOR_SIZE) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 32 +LTI4 $604 +line 1336 +;1336: { +line 1337 +;1337: break; +ADDRGP4 $591 +JUMPV +LABELV $604 +line 1339 +;1338: } +;1339: } +LABELV $592 +line 1340 +;1340: c++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1341 +;1341: } +LABELV $590 +line 1309 +ADDRLP4 4 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $589 +LABELV $591 +line 1342 +;1342: } +LABELV $587 +line 1343 +;1343: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1344 +;1344: } +LABELV $585 +line 1303 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $584 +line 1345 +;1345:} +LABELV $569 +endproc CalculatePaths 160 20 +export GetObjectThatTargets +proc GetObjectThatTargets 8 12 +line 1348 +;1346: +;1347:gentity_t *GetObjectThatTargets(gentity_t *ent) +;1348:{ +line 1349 +;1349: gentity_t *next = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 1351 +;1350: +;1351: if (!ent->targetname) +ADDRFP4 0 +INDIRP4 +CNSTI4 588 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $607 +line 1352 +;1352: { +line 1353 +;1353: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $606 +JUMPV +LABELV $607 +line 1356 +;1354: } +;1355: +;1356: next = G_Find( next, FOFS(target), ent->targetname ); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 584 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 588 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 G_Find +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1358 +;1357: +;1358: if (next) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $609 +line 1359 +;1359: { +line 1360 +;1360: return next; +ADDRLP4 0 +INDIRP4 +RETP4 +ADDRGP4 $606 +JUMPV +LABELV $609 +line 1363 +;1361: } +;1362: +;1363: return NULL; +CNSTP4 0 +RETP4 +LABELV $606 +endproc GetObjectThatTargets 8 12 +export CalculateSagaGoals +proc CalculateSagaGoals 92 8 +line 1367 +;1364:} +;1365: +;1366:void CalculateSagaGoals(void) +;1367:{ +line 1368 +;1368: int i = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 1369 +;1369: int looptracker = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1370 +;1370: int wpindex = 0; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +line 1373 +;1371: vec3_t dif; +;1372: gentity_t *ent; +;1373: gentity_t *tent = NULL, *t2ent = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +ADDRGP4 $613 +JUMPV +LABELV $612 +line 1376 +;1374: +;1375: while (i < MAX_GENTITIES) +;1376: { +line 1377 +;1377: ent = &g_entities[i]; +ADDRLP4 12 +CNSTI4 828 +ADDRLP4 16 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1379 +;1378: +;1379: tent = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 1381 +;1380: +;1381: if (ent && ent->classname && strcmp(ent->classname, "info_saga_objective") == 0) +ADDRLP4 40 +CNSTU4 0 +ASGNU4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +ADDRLP4 40 +INDIRU4 +EQU4 $615 +ADDRLP4 44 +ADDRLP4 12 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CVPU4 4 +ADDRLP4 40 +INDIRU4 +EQU4 $615 +ADDRLP4 44 +INDIRP4 +ARGP4 +ADDRGP4 $617 +ARGP4 +ADDRLP4 48 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $615 +line 1382 +;1382: { +line 1383 +;1383: tent = ent; +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 1384 +;1384: t2ent = GetObjectThatTargets(tent); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 GetObjectThatTargets +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 52 +INDIRP4 +ASGNP4 +line 1385 +;1385: looptracker = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $619 +JUMPV +LABELV $618 +line 1388 +;1386: +;1387: while (t2ent && looptracker < 2048) +;1388: { //looptracker keeps us from getting stuck in case something is set up weird on this map +line 1389 +;1389: tent = t2ent; +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1390 +;1390: t2ent = GetObjectThatTargets(tent); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 GetObjectThatTargets +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 56 +INDIRP4 +ASGNP4 +line 1391 +;1391: looptracker++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1392 +;1392: } +LABELV $619 +line 1387 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $621 +ADDRLP4 8 +INDIRI4 +CNSTI4 2048 +LTI4 $618 +LABELV $621 +line 1394 +;1393: +;1394: if (looptracker >= 2048) +ADDRLP4 8 +INDIRI4 +CNSTI4 2048 +LTI4 $622 +line 1395 +;1395: { //something unpleasent has happened +line 1396 +;1396: tent = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 1397 +;1397: break; +ADDRGP4 $614 +JUMPV +LABELV $622 +line 1399 +;1398: } +;1399: } +LABELV $615 +line 1401 +;1400: +;1401: if (tent && ent && tent != ent) +ADDRLP4 52 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ASGNU4 +ADDRLP4 56 +CNSTU4 0 +ASGNU4 +ADDRLP4 52 +INDIRU4 +ADDRLP4 56 +INDIRU4 +EQU4 $624 +ADDRLP4 60 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +ASGNU4 +ADDRLP4 60 +INDIRU4 +ADDRLP4 56 +INDIRU4 +EQU4 $624 +ADDRLP4 52 +INDIRU4 +ADDRLP4 60 +INDIRU4 +EQU4 $624 +line 1402 +;1402: { //tent should now be the object attached to the mission objective +line 1403 +;1403: dif[0] = (tent->r.absmax[0]+tent->r.absmin[0])/2; +ADDRLP4 24 +ADDRLP4 0 +INDIRP4 +CNSTI4 356 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 344 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1073741824 +DIVF4 +ASGNF4 +line 1404 +;1404: dif[1] = (tent->r.absmax[1]+tent->r.absmin[1])/2; +ADDRLP4 24+4 +ADDRLP4 0 +INDIRP4 +CNSTI4 360 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 348 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1073741824 +DIVF4 +ASGNF4 +line 1405 +;1405: dif[2] = (tent->r.absmax[2]+tent->r.absmin[2])/2; +ADDRLP4 24+8 +ADDRLP4 0 +INDIRP4 +CNSTI4 364 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 352 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1073741824 +DIVF4 +ASGNF4 +line 1407 +;1406: +;1407: wpindex = GetNearestVisibleWP(dif, tent->s.number); +ADDRLP4 24 +ARGP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +ADDRGP4 GetNearestVisibleWP +CALLI4 +ASGNI4 +ADDRLP4 20 +ADDRLP4 76 +INDIRI4 +ASGNI4 +line 1409 +;1408: +;1409: if (wpindex != -1 && gWPArray[wpindex] && gWPArray[wpindex]->inuse) +ADDRLP4 20 +INDIRI4 +CNSTI4 -1 +EQI4 $628 +ADDRLP4 84 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $628 +ADDRLP4 84 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $628 +line 1410 +;1410: { //found the waypoint nearest the center of this objective-related object +line 1411 +;1411: if (ent->side == SAGATEAM_IMPERIAL) +ADDRLP4 12 +INDIRP4 +CNSTI4 440 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $630 +line 1412 +;1412: { +line 1413 +;1413: gWPArray[wpindex]->flags |= WPFLAG_SAGA_IMPERIALOBJ; +ADDRLP4 88 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +ADDRLP4 88 +INDIRP4 +INDIRI4 +CNSTI4 1048576 +BORI4 +ASGNI4 +line 1414 +;1414: } +ADDRGP4 $631 +JUMPV +LABELV $630 +line 1416 +;1415: else +;1416: { +line 1417 +;1417: gWPArray[wpindex]->flags |= WPFLAG_SAGA_REBELOBJ; +ADDRLP4 88 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +ADDRLP4 88 +INDIRP4 +INDIRI4 +CNSTI4 524288 +BORI4 +ASGNI4 +line 1418 +;1418: } +LABELV $631 +line 1420 +;1419: +;1420: gWPArray[wpindex]->associated_entity = tent->s.number; +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 1421 +;1421: } +LABELV $628 +line 1422 +;1422: } +LABELV $624 +line 1424 +;1423: +;1424: i++; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1425 +;1425: } +LABELV $613 +line 1375 +ADDRLP4 16 +INDIRI4 +CNSTI4 1024 +LTI4 $612 +LABELV $614 +line 1426 +;1426:} +LABELV $611 +endproc CalculateSagaGoals 92 8 +data +export botGlobalNavWeaponWeights +align 4 +LABELV botGlobalNavWeaponWeights +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1077936128 +byte 4 1084227584 +byte 4 1082130432 +byte 4 1086324736 +byte 4 1088421888 +byte 4 1090519040 +byte 4 1091567616 +byte 4 1077936128 +byte 4 1077936128 +byte 4 1077936128 +byte 4 0 +skip 4 +export GetNearestVisibleWPToItem +code +proc GetNearestVisibleWPToItem 100 20 +line 1449 +;1427: +;1428:float botGlobalNavWeaponWeights[WP_NUM_WEAPONS] = +;1429:{ +;1430: 0,//WP_NONE, +;1431: +;1432: 0,//WP_STUN_BATON, +;1433: 0,//WP_SABER, // NOTE: lots of code assumes this is the first weapon (... which is crap) so be careful -Ste. +;1434: 0,//WP_BRYAR_PISTOL, +;1435: 3,//WP_BLASTER, +;1436: 5,//WP_DISRUPTOR, +;1437: 4,//WP_BOWCASTER, +;1438: 6,//WP_REPEATER, +;1439: 7,//WP_DEMP2, +;1440: 8,//WP_FLECHETTE, +;1441: 9,//WP_ROCKET_LAUNCHER, +;1442: 3,//WP_THERMAL, +;1443: 3,//WP_TRIP_MINE, +;1444: 3,//WP_DET_PACK, +;1445: 0//WP_EMPLACED_GUN, +;1446:}; +;1447: +;1448:int GetNearestVisibleWPToItem(vec3_t org, int ignore) +;1449:{ +line 1456 +;1450: int i; +;1451: float bestdist; +;1452: float flLen; +;1453: int bestindex; +;1454: vec3_t a, mins, maxs; +;1455: +;1456: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1457 +;1457: bestdist = 64; //has to be less than 64 units to the item or it isn't safe enough +ADDRLP4 20 +CNSTF4 1115684864 +ASGNF4 +line 1458 +;1458: bestindex = -1; +ADDRLP4 48 +CNSTI4 -1 +ASGNI4 +line 1460 +;1459: +;1460: mins[0] = -15; +ADDRLP4 24 +CNSTF4 3245342720 +ASGNF4 +line 1461 +;1461: mins[1] = -15; +ADDRLP4 24+4 +CNSTF4 3245342720 +ASGNF4 +line 1462 +;1462: mins[2] = 0; +ADDRLP4 24+8 +CNSTF4 0 +ASGNF4 +line 1463 +;1463: maxs[0] = 15; +ADDRLP4 36 +CNSTF4 1097859072 +ASGNF4 +line 1464 +;1464: maxs[1] = 15; +ADDRLP4 36+4 +CNSTF4 1097859072 +ASGNF4 +line 1465 +;1465: maxs[2] = 0; +ADDRLP4 36+8 +CNSTF4 0 +ASGNF4 +ADDRGP4 $638 +JUMPV +LABELV $637 +line 1468 +;1466: +;1467: while (i < gWPNum) +;1468: { +line 1469 +;1469: if (gWPArray[i] && gWPArray[i]->inuse && +ADDRLP4 52 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $640 +ADDRLP4 52 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $640 +ADDRLP4 56 +CNSTI4 8 +ASGNI4 +ADDRLP4 60 +ADDRLP4 52 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 64 +CNSTF4 1097859072 +ASGNF4 +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 60 +INDIRF4 +ADDRLP4 64 +INDIRF4 +SUBF4 +ADDRLP4 68 +INDIRF4 +GEF4 $640 +ADDRLP4 60 +INDIRF4 +ADDRLP4 64 +INDIRF4 +ADDF4 +ADDRLP4 68 +INDIRF4 +LEF4 $640 +line 1472 +;1470: gWPArray[i]->origin[2]-15 < org[2] && +;1471: gWPArray[i]->origin[2]+15 > org[2]) +;1472: { +line 1473 +;1473: VectorSubtract(org, gWPArray[i]->origin, a); +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 76 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 72 +INDIRP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 80 +CNSTI4 4 +ASGNI4 +ADDRLP4 4+4 +ADDRLP4 72 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 84 +CNSTI4 8 +ASGNI4 +ADDRLP4 4+8 +ADDRFP4 0 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1474 +;1474: flLen = VectorLength(a); +ADDRLP4 4 +ARGP4 +ADDRLP4 88 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 88 +INDIRF4 +ASGNF4 +line 1476 +;1475: +;1476: if (flLen < bestdist && trap_InPVS(org, gWPArray[i]->origin) && OrgVisibleBox(org, mins, maxs, gWPArray[i]->origin, ignore)) +ADDRLP4 16 +INDIRF4 +ADDRLP4 20 +INDIRF4 +GEF4 $644 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 trap_InPVS +CALLI4 +ASGNI4 +ADDRLP4 92 +INDIRI4 +CNSTI4 0 +EQI4 $644 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 24 +ARGP4 +ADDRLP4 36 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 96 +ADDRGP4 OrgVisibleBox +CALLI4 +ASGNI4 +ADDRLP4 96 +INDIRI4 +CNSTI4 0 +EQI4 $644 +line 1477 +;1477: { +line 1478 +;1478: bestdist = flLen; +ADDRLP4 20 +ADDRLP4 16 +INDIRF4 +ASGNF4 +line 1479 +;1479: bestindex = i; +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1480 +;1480: } +LABELV $644 +line 1481 +;1481: } +LABELV $640 +line 1483 +;1482: +;1483: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1484 +;1484: } +LABELV $638 +line 1467 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $637 +line 1486 +;1485: +;1486: return bestindex; +ADDRLP4 48 +INDIRI4 +RETI4 +LABELV $632 +endproc GetNearestVisibleWPToItem 100 20 +export CalculateWeightGoals +proc CalculateWeightGoals 68 8 +line 1490 +;1487:} +;1488: +;1489:void CalculateWeightGoals(void) +;1490:{ //set waypoint weights depending on weapon and item placement +line 1491 +;1491: int i = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 1492 +;1492: int wpindex = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1496 +;1493: gentity_t *ent; +;1494: float weight; +;1495: +;1496: trap_Cvar_Update(&bot_wp_clearweight); +ADDRGP4 bot_wp_clearweight +ARGP4 +ADDRGP4 trap_Cvar_Update +CALLV +pop +line 1498 +;1497: +;1498: if (bot_wp_clearweight.integer) +ADDRGP4 bot_wp_clearweight+12 +INDIRI4 +CNSTI4 0 +EQI4 $647 +line 1499 +;1499: { //if set then flush out all weight/goal values before calculating them again +ADDRGP4 $651 +JUMPV +LABELV $650 +line 1501 +;1500: while (i < gWPNum) +;1501: { +line 1502 +;1502: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 16 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $653 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $653 +line 1503 +;1503: { +line 1504 +;1504: gWPArray[i]->weight = 0; +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +CNSTF4 0 +ASGNF4 +line 1506 +;1505: +;1506: if (gWPArray[i]->flags & WPFLAG_GOALPOINT) +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +CNSTI4 65536 +BANDI4 +CNSTI4 0 +EQI4 $655 +line 1507 +;1507: { +line 1508 +;1508: gWPArray[i]->flags -= WPFLAG_GOALPOINT; +ADDRLP4 20 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 65536 +SUBI4 +ASGNI4 +line 1509 +;1509: } +LABELV $655 +line 1510 +;1510: } +LABELV $653 +line 1512 +;1511: +;1512: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1513 +;1513: } +LABELV $651 +line 1500 +ADDRLP4 4 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $650 +line 1514 +;1514: } +LABELV $647 +line 1516 +;1515: +;1516: i = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $658 +JUMPV +LABELV $657 +line 1519 +;1517: +;1518: while (i < MAX_GENTITIES) +;1519: { +line 1520 +;1520: ent = &g_entities[i]; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1522 +;1521: +;1522: weight = 0; +ADDRLP4 12 +CNSTF4 0 +ASGNF4 +line 1524 +;1523: +;1524: if (ent && ent->classname) +ADDRLP4 20 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 20 +INDIRU4 +EQU4 $660 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 20 +INDIRU4 +EQU4 $660 +line 1525 +;1525: { +line 1526 +;1526: if (strcmp(ent->classname, "item_seeker") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $664 +ARGP4 +ADDRLP4 24 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $662 +line 1527 +;1527: { +line 1528 +;1528: weight = 2; +ADDRLP4 12 +CNSTF4 1073741824 +ASGNF4 +line 1529 +;1529: } +ADDRGP4 $663 +JUMPV +LABELV $662 +line 1530 +;1530: else if (strcmp(ent->classname, "item_shield") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $667 +ARGP4 +ADDRLP4 28 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $665 +line 1531 +;1531: { +line 1532 +;1532: weight = 2; +ADDRLP4 12 +CNSTF4 1073741824 +ASGNF4 +line 1533 +;1533: } +ADDRGP4 $666 +JUMPV +LABELV $665 +line 1534 +;1534: else if (strcmp(ent->classname, "item_medpac") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $670 +ARGP4 +ADDRLP4 32 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $668 +line 1535 +;1535: { +line 1536 +;1536: weight = 2; +ADDRLP4 12 +CNSTF4 1073741824 +ASGNF4 +line 1537 +;1537: } +ADDRGP4 $669 +JUMPV +LABELV $668 +line 1538 +;1538: else if (strcmp(ent->classname, "item_sentry_gun") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $673 +ARGP4 +ADDRLP4 36 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +NEI4 $671 +line 1539 +;1539: { +line 1540 +;1540: weight = 2; +ADDRLP4 12 +CNSTF4 1073741824 +ASGNF4 +line 1541 +;1541: } +ADDRGP4 $672 +JUMPV +LABELV $671 +line 1542 +;1542: else if (strcmp(ent->classname, "item_force_enlighten_dark") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $676 +ARGP4 +ADDRLP4 40 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +NEI4 $674 +line 1543 +;1543: { +line 1544 +;1544: weight = 5; +ADDRLP4 12 +CNSTF4 1084227584 +ASGNF4 +line 1545 +;1545: } +ADDRGP4 $675 +JUMPV +LABELV $674 +line 1546 +;1546: else if (strcmp(ent->classname, "item_force_enlighten_light") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $679 +ARGP4 +ADDRLP4 44 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +NEI4 $677 +line 1547 +;1547: { +line 1548 +;1548: weight = 5; +ADDRLP4 12 +CNSTF4 1084227584 +ASGNF4 +line 1549 +;1549: } +ADDRGP4 $678 +JUMPV +LABELV $677 +line 1550 +;1550: else if (strcmp(ent->classname, "item_force_boon") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $682 +ARGP4 +ADDRLP4 48 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $680 +line 1551 +;1551: { +line 1552 +;1552: weight = 5; +ADDRLP4 12 +CNSTF4 1084227584 +ASGNF4 +line 1553 +;1553: } +ADDRGP4 $681 +JUMPV +LABELV $680 +line 1554 +;1554: else if (strcmp(ent->classname, "item_ysalimari") == 0) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $685 +ARGP4 +ADDRLP4 52 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +NEI4 $683 +line 1555 +;1555: { +line 1556 +;1556: weight = 2; +ADDRLP4 12 +CNSTF4 1073741824 +ASGNF4 +line 1557 +;1557: } +ADDRGP4 $684 +JUMPV +LABELV $683 +line 1558 +;1558: else if (strstr(ent->classname, "weapon_") && ent->item) +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $688 +ARGP4 +ADDRLP4 56 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 60 +CNSTU4 0 +ASGNU4 +ADDRLP4 56 +INDIRP4 +CVPU4 4 +ADDRLP4 60 +INDIRU4 +EQU4 $686 +ADDRLP4 0 +INDIRP4 +CNSTI4 824 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 60 +INDIRU4 +EQU4 $686 +line 1559 +;1559: { +line 1560 +;1560: weight = botGlobalNavWeaponWeights[ent->item->giTag]; +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +CNSTI4 824 +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 botGlobalNavWeaponWeights +ADDP4 +INDIRF4 +ASGNF4 +line 1561 +;1561: } +ADDRGP4 $687 +JUMPV +LABELV $686 +line 1562 +;1562: else if (ent->item && ent->item->giType == IT_AMMO) +ADDRLP4 64 +ADDRLP4 0 +INDIRP4 +CNSTI4 824 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $689 +ADDRLP4 64 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $689 +line 1563 +;1563: { +line 1564 +;1564: weight = 3; +ADDRLP4 12 +CNSTF4 1077936128 +ASGNF4 +line 1565 +;1565: } +LABELV $689 +LABELV $687 +LABELV $684 +LABELV $681 +LABELV $678 +LABELV $675 +LABELV $672 +LABELV $669 +LABELV $666 +LABELV $663 +line 1566 +;1566: } +LABELV $660 +line 1568 +;1567: +;1568: if (ent && weight) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $691 +ADDRLP4 12 +INDIRF4 +CNSTF4 0 +EQF4 $691 +line 1569 +;1569: { +line 1570 +;1570: wpindex = GetNearestVisibleWPToItem(ent->s.pos.trBase, ent->s.number); +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 GetNearestVisibleWPToItem +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1572 +;1571: +;1572: if (wpindex != -1 && gWPArray[wpindex] && gWPArray[wpindex]->inuse) +ADDRLP4 8 +INDIRI4 +CNSTI4 -1 +EQI4 $693 +ADDRLP4 36 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $693 +ADDRLP4 36 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $693 +line 1573 +;1573: { //found the waypoint nearest the center of this object +line 1574 +;1574: gWPArray[wpindex]->weight = weight; +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 1575 +;1575: gWPArray[wpindex]->flags |= WPFLAG_GOALPOINT; +ADDRLP4 40 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 65536 +BORI4 +ASGNI4 +line 1576 +;1576: gWPArray[wpindex]->associated_entity = ent->s.number; +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 1577 +;1577: } +LABELV $693 +line 1578 +;1578: } +LABELV $691 +line 1580 +;1579: +;1580: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1581 +;1581: } +LABELV $658 +line 1518 +ADDRLP4 4 +INDIRI4 +CNSTI4 1024 +LTI4 $657 +line 1582 +;1582:} +LABELV $646 +endproc CalculateWeightGoals 68 8 +export CalculateJumpRoutes +proc CalculateJumpRoutes 40 0 +line 1585 +;1583: +;1584:void CalculateJumpRoutes(void) +;1585:{ +line 1586 +;1586: int i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1587 +;1587: float nheightdif = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 1588 +;1588: float pheightdif = 0; +ADDRLP4 4 +CNSTF4 0 +ASGNF4 +ADDRGP4 $697 +JUMPV +LABELV $696 +line 1591 +;1589: +;1590: while (i < gWPNum) +;1591: { +line 1592 +;1592: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $699 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $699 +line 1593 +;1593: { +line 1594 +;1594: if (gWPArray[i]->flags & WPFLAG_JUMP) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +CNSTI4 16 +BANDI4 +CNSTI4 0 +EQI4 $701 +line 1595 +;1595: { +line 1596 +;1596: nheightdif = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 1597 +;1597: pheightdif = 0; +ADDRLP4 4 +CNSTF4 0 +ASGNF4 +line 1599 +;1598: +;1599: gWPArray[i]->forceJumpTo = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1601 +;1600: +;1601: if (gWPArray[i-1] && gWPArray[i-1]->inuse && (gWPArray[i-1]->origin[2]+16) < gWPArray[i]->origin[2]) +ADDRLP4 16 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 gWPArray-4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $703 +ADDRLP4 16 +INDIRI4 +ADDRGP4 gWPArray-4 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $703 +ADDRLP4 20 +CNSTI4 8 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 gWPArray-4 +ADDP4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +GEF4 $703 +line 1602 +;1602: { +line 1603 +;1603: nheightdif = (gWPArray[i]->origin[2] - gWPArray[i-1]->origin[2]); +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 28 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 24 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 gWPArray-4 +ADDP4 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1604 +;1604: } +LABELV $703 +line 1606 +;1605: +;1606: if (gWPArray[i+1] && gWPArray[i+1]->inuse && (gWPArray[i+1]->origin[2]+16) < gWPArray[i]->origin[2]) +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $709 +ADDRLP4 24 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $709 +ADDRLP4 28 +CNSTI4 8 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +GEF4 $709 +line 1607 +;1607: { +line 1608 +;1608: pheightdif = (gWPArray[i]->origin[2] - gWPArray[i+1]->origin[2]); +ADDRLP4 32 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 36 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1609 +;1609: } +LABELV $709 +line 1611 +;1610: +;1611: if (nheightdif > pheightdif) +ADDRLP4 8 +INDIRF4 +ADDRLP4 4 +INDIRF4 +LEF4 $715 +line 1612 +;1612: { +line 1613 +;1613: pheightdif = nheightdif; +ADDRLP4 4 +ADDRLP4 8 +INDIRF4 +ASGNF4 +line 1614 +;1614: } +LABELV $715 +line 1616 +;1615: +;1616: if (pheightdif) +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +EQF4 $717 +line 1617 +;1617: { +line 1618 +;1618: if (pheightdif > 500) +ADDRLP4 4 +INDIRF4 +CNSTF4 1140457472 +LEF4 $719 +line 1619 +;1619: { +line 1620 +;1620: gWPArray[i]->forceJumpTo = 999; //FORCE_LEVEL_3; //FJSR +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTI4 999 +ASGNI4 +line 1621 +;1621: } +ADDRGP4 $720 +JUMPV +LABELV $719 +line 1622 +;1622: else if (pheightdif > 256) +ADDRLP4 4 +INDIRF4 +CNSTF4 1132462080 +LEF4 $721 +line 1623 +;1623: { +line 1624 +;1624: gWPArray[i]->forceJumpTo = 999; //FORCE_LEVEL_2; //FJSR +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTI4 999 +ASGNI4 +line 1625 +;1625: } +ADDRGP4 $722 +JUMPV +LABELV $721 +line 1626 +;1626: else if (pheightdif > 128) +ADDRLP4 4 +INDIRF4 +CNSTF4 1124073472 +LEF4 $723 +line 1627 +;1627: { +line 1628 +;1628: gWPArray[i]->forceJumpTo = 999; //FORCE_LEVEL_1; //FJSR +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTI4 999 +ASGNI4 +line 1629 +;1629: } +LABELV $723 +LABELV $722 +LABELV $720 +line 1630 +;1630: } +LABELV $717 +line 1631 +;1631: } +LABELV $701 +line 1632 +;1632: } +LABELV $699 +line 1634 +;1633: +;1634: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1635 +;1635: } +LABELV $697 +line 1590 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $696 +line 1636 +;1636:} +LABELV $695 +endproc CalculateJumpRoutes 40 0 +export LoadPathData +proc LoadPathData 416 16 +line 1639 +;1637: +;1638:int LoadPathData(const char *filename) +;1639:{ +line 1649 +;1640: fileHandle_t f; +;1641: char *fileString; +;1642: char *currentVar; +;1643: char *routePath; +;1644: wpobject_t thiswp; +;1645: int len; +;1646: int i, i_cv; +;1647: int nei_num; +;1648: +;1649: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1650 +;1650: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1652 +;1651: +;1652: routePath = (char *)B_TempAlloc(1024); +CNSTI4 1024 +ARGI4 +ADDRLP4 332 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 328 +ADDRLP4 332 +INDIRP4 +ASGNP4 +line 1654 +;1653: +;1654: Com_sprintf(routePath, 1024, "botroutes/%s.wnt\0", filename); +ADDRLP4 328 +INDIRP4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $726 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1656 +;1655: +;1656: len = trap_FS_FOpenFile(routePath, &f, FS_READ); +ADDRLP4 328 +INDIRP4 +ARGP4 +ADDRLP4 324 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 336 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 320 +ADDRLP4 336 +INDIRI4 +ASGNI4 +line 1658 +;1657: +;1658: B_TempFree(1024); //routePath +CNSTI4 1024 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 1660 +;1659: +;1660: if (!f) +ADDRLP4 324 +INDIRI4 +CNSTI4 0 +NEI4 $727 +line 1661 +;1661: { +line 1662 +;1662: G_Printf(S_COLOR_YELLOW "Bot route data not found\n"); +ADDRGP4 $729 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 1663 +;1663: return 2; +CNSTI4 2 +RETI4 +ADDRGP4 $725 +JUMPV +LABELV $727 +line 1666 +;1664: } +;1665: +;1666: if (len >= 524288) +ADDRLP4 320 +INDIRI4 +CNSTI4 524288 +LTI4 $730 +line 1667 +;1667: { +line 1668 +;1668: G_Printf(S_COLOR_RED "Route file exceeds maximum length\n"); +ADDRGP4 $732 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 1669 +;1669: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $725 +JUMPV +LABELV $730 +line 1672 +;1670: } +;1671: +;1672: fileString = (char *)B_TempAlloc(524288); +CNSTI4 524288 +ARGI4 +ADDRLP4 340 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 340 +INDIRP4 +ASGNP4 +line 1673 +;1673: currentVar = (char *)B_TempAlloc(2048); +CNSTI4 2048 +ARGI4 +ADDRLP4 344 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 344 +INDIRP4 +ASGNP4 +line 1675 +;1674: +;1675: trap_FS_Read(fileString, len, f); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 320 +INDIRI4 +ARGI4 +ADDRLP4 324 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 1677 +;1676: +;1677: if (fileString[i] == 'l') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 108 +NEI4 $733 +line 1678 +;1678: { //contains a "levelflags" entry.. +line 1680 +;1679: char readLFlags[64]; +;1680: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $736 +JUMPV +LABELV $735 +line 1683 +;1681: +;1682: while (fileString[i] != ' ') +;1683: { +line 1684 +;1684: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1685 +;1685: } +LABELV $736 +line 1682 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $735 +line 1686 +;1686: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $739 +JUMPV +LABELV $738 +line 1688 +;1687: while (fileString[i] != '\n') +;1688: { +line 1689 +;1689: readLFlags[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 348 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1690 +;1690: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1691 +;1691: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1692 +;1692: } +LABELV $739 +line 1687 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $738 +line 1693 +;1693: readLFlags[i_cv] = 0; +ADDRLP4 8 +INDIRI4 +ADDRLP4 348 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1694 +;1694: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1696 +;1695: +;1696: gLevelFlags = atoi(readLFlags); +ADDRLP4 348 +ARGP4 +ADDRLP4 412 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRGP4 gLevelFlags +ADDRLP4 412 +INDIRI4 +ASGNI4 +line 1697 +;1697: } +ADDRGP4 $742 +JUMPV +LABELV $733 +line 1699 +;1698: else +;1699: { +line 1700 +;1700: gLevelFlags = 0; +ADDRGP4 gLevelFlags +CNSTI4 0 +ASGNI4 +line 1701 +;1701: } +ADDRGP4 $742 +JUMPV +LABELV $741 +line 1704 +;1702: +;1703: while (i < len) +;1704: { +line 1705 +;1705: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1707 +;1706: +;1707: thiswp.index = 0; +ADDRLP4 16+16 +CNSTI4 0 +ASGNI4 +line 1708 +;1708: thiswp.flags = 0; +ADDRLP4 16+28 +CNSTI4 0 +ASGNI4 +line 1709 +;1709: thiswp.inuse = 0; +ADDRLP4 16+12 +CNSTI4 0 +ASGNI4 +line 1710 +;1710: thiswp.neighbornum = 0; +ADDRLP4 16+40 +CNSTI4 0 +ASGNI4 +line 1711 +;1711: thiswp.origin[0] = 0; +ADDRLP4 16 +CNSTF4 0 +ASGNF4 +line 1712 +;1712: thiswp.origin[1] = 0; +ADDRLP4 16+4 +CNSTF4 0 +ASGNF4 +line 1713 +;1713: thiswp.origin[2] = 0; +ADDRLP4 16+8 +CNSTF4 0 +ASGNF4 +line 1714 +;1714: thiswp.weight = 0; +ADDRLP4 16+20 +CNSTF4 0 +ASGNF4 +line 1715 +;1715: thiswp.associated_entity = ENTITYNUM_NONE; +ADDRLP4 16+32 +CNSTI4 1023 +ASGNI4 +line 1716 +;1716: thiswp.forceJumpTo = 0; +ADDRLP4 16+36 +CNSTI4 0 +ASGNI4 +line 1717 +;1717: thiswp.disttonext = 0; +ADDRLP4 16+24 +CNSTF4 0 +ASGNF4 +line 1718 +;1718: nei_num = 0; +ADDRLP4 316 +CNSTI4 0 +ASGNI4 +ADDRGP4 $755 +JUMPV +LABELV $754 +line 1721 +;1719: +;1720: while (nei_num < MAX_NEIGHBOR_SIZE) +;1721: { +line 1722 +;1722: thiswp.neighbors[nei_num].num = 0; +ADDRLP4 316 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 16+44 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1723 +;1723: thiswp.neighbors[nei_num].forceJumpTo = 0; +ADDRLP4 316 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 16+44+4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1725 +;1724: +;1725: nei_num++; +ADDRLP4 316 +ADDRLP4 316 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1726 +;1726: } +LABELV $755 +line 1720 +ADDRLP4 316 +INDIRI4 +CNSTI4 32 +LTI4 $754 +ADDRGP4 $761 +JUMPV +LABELV $760 +line 1729 +;1727: +;1728: while (fileString[i] != ' ') +;1729: { +line 1730 +;1730: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1731 +;1731: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1732 +;1732: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1733 +;1733: } +LABELV $761 +line 1728 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $760 +line 1734 +;1734: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1736 +;1735: +;1736: thiswp.index = atoi(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 348 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16+16 +ADDRLP4 348 +INDIRI4 +ASGNI4 +line 1738 +;1737: +;1738: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1739 +;1739: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $765 +JUMPV +LABELV $764 +line 1742 +;1740: +;1741: while (fileString[i] != ' ') +;1742: { +line 1743 +;1743: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1744 +;1744: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1745 +;1745: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1746 +;1746: } +LABELV $765 +line 1741 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $764 +line 1747 +;1747: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1749 +;1748: +;1749: thiswp.flags = atoi(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 352 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16+28 +ADDRLP4 352 +INDIRI4 +ASGNI4 +line 1751 +;1750: +;1751: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1752 +;1752: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $769 +JUMPV +LABELV $768 +line 1755 +;1753: +;1754: while (fileString[i] != ' ') +;1755: { +line 1756 +;1756: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1757 +;1757: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1758 +;1758: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1759 +;1759: } +LABELV $769 +line 1754 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $768 +line 1760 +;1760: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1762 +;1761: +;1762: thiswp.weight = atof(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 356 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 16+20 +ADDRLP4 356 +INDIRF4 +ASGNF4 +line 1764 +;1763: +;1764: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1765 +;1765: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1766 +;1766: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $773 +JUMPV +LABELV $772 +line 1769 +;1767: +;1768: while (fileString[i] != ' ') +;1769: { +line 1770 +;1770: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1771 +;1771: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1772 +;1772: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1773 +;1773: } +LABELV $773 +line 1768 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $772 +line 1774 +;1774: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1776 +;1775: +;1776: thiswp.origin[0] = atof(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 360 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 360 +INDIRF4 +ASGNF4 +line 1778 +;1777: +;1778: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1779 +;1779: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $776 +JUMPV +LABELV $775 +line 1782 +;1780: +;1781: while (fileString[i] != ' ') +;1782: { +line 1783 +;1783: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1784 +;1784: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1785 +;1785: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1786 +;1786: } +LABELV $776 +line 1781 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $775 +line 1787 +;1787: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1789 +;1788: +;1789: thiswp.origin[1] = atof(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 364 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 16+4 +ADDRLP4 364 +INDIRF4 +ASGNF4 +line 1791 +;1790: +;1791: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1792 +;1792: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $780 +JUMPV +LABELV $779 +line 1795 +;1793: +;1794: while (fileString[i] != ')') +;1795: { +line 1796 +;1796: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1797 +;1797: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1798 +;1798: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1799 +;1799: } +LABELV $780 +line 1794 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 41 +NEI4 $779 +line 1800 +;1800: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1802 +;1801: +;1802: thiswp.origin[2] = atof(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 368 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 16+8 +ADDRLP4 368 +INDIRF4 +ASGNF4 +line 1804 +;1803: +;1804: i += 4; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +ADDI4 +ASGNI4 +ADDRGP4 $784 +JUMPV +LABELV $783 +line 1807 +;1805: +;1806: while (fileString[i] != '}') +;1807: { +line 1808 +;1808: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $787 +JUMPV +LABELV $786 +line 1810 +;1809: while (fileString[i] != ' ' && fileString[i] != '-') +;1810: { +line 1811 +;1811: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1812 +;1812: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1813 +;1813: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1814 +;1814: } +LABELV $787 +line 1809 +ADDRLP4 372 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 372 +INDIRI4 +CNSTI4 32 +EQI4 $789 +ADDRLP4 372 +INDIRI4 +CNSTI4 45 +NEI4 $786 +LABELV $789 +line 1815 +;1815: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1817 +;1816: +;1817: thiswp.neighbors[thiswp.neighbornum].num = atoi(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 376 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16+40 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 16+44 +ADDP4 +ADDRLP4 376 +INDIRI4 +ASGNI4 +line 1819 +;1818: +;1819: if (fileString[i] == '-') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 45 +NEI4 $792 +line 1820 +;1820: { +line 1821 +;1821: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1822 +;1822: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $795 +JUMPV +LABELV $794 +line 1825 +;1823: +;1824: while (fileString[i] != ' ') +;1825: { +line 1826 +;1826: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1827 +;1827: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1828 +;1828: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1829 +;1829: } +LABELV $795 +line 1824 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $794 +line 1830 +;1830: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1832 +;1831: +;1832: thiswp.neighbors[thiswp.neighbornum].forceJumpTo = 999; //atoi(currentVar); //FJSR +ADDRLP4 16+40 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 16+44+4 +ADDP4 +CNSTI4 999 +ASGNI4 +line 1833 +;1833: } +ADDRGP4 $793 +JUMPV +LABELV $792 +line 1835 +;1834: else +;1835: { +line 1836 +;1836: thiswp.neighbors[thiswp.neighbornum].forceJumpTo = 0; +ADDRLP4 16+40 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 16+44+4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1837 +;1837: } +LABELV $793 +line 1839 +;1838: +;1839: thiswp.neighbornum++; +ADDRLP4 16+40 +ADDRLP4 16+40 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1841 +;1840: +;1841: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1842 +;1842: } +LABELV $784 +line 1806 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $783 +line 1844 +;1843: +;1844: i_cv = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1845 +;1845: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1846 +;1846: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $805 +JUMPV +LABELV $804 +line 1849 +;1847: +;1848: while (fileString[i] != '\n') +;1849: { +line 1850 +;1850: currentVar[i_cv] = fileString[i]; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 1851 +;1851: i_cv++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1852 +;1852: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1853 +;1853: } +LABELV $805 +line 1848 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 10 +NEI4 $804 +line 1854 +;1854: currentVar[i_cv] = '\0'; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1856 +;1855: +;1856: thiswp.disttonext = atof(currentVar); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 372 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 16+24 +ADDRLP4 372 +INDIRF4 +ASGNF4 +line 1858 +;1857: +;1858: CreateNewWP_FromObject(&thiswp); +ADDRLP4 16 +ARGP4 +ADDRGP4 CreateNewWP_FromObject +CALLV +pop +line 1859 +;1859: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1860 +;1860: } +LABELV $742 +line 1703 +ADDRLP4 0 +INDIRI4 +ADDRLP4 320 +INDIRI4 +LTI4 $741 +line 1862 +;1861: +;1862: B_TempFree(524288); //fileString +CNSTI4 524288 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 1863 +;1863: B_TempFree(2048); //currentVar +CNSTI4 2048 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 1865 +;1864: +;1865: trap_FS_FCloseFile(f); +ADDRLP4 324 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 1867 +;1866: +;1867: if (g_gametype.integer == GT_SAGA) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 6 +NEI4 $808 +line 1868 +;1868: { +line 1869 +;1869: CalculateSagaGoals(); +ADDRGP4 CalculateSagaGoals +CALLV +pop +line 1870 +;1870: } +LABELV $808 +line 1872 +;1871: +;1872: CalculateWeightGoals(); +ADDRGP4 CalculateWeightGoals +CALLV +pop +line 1876 +;1873: //calculate weights for idle activity goals when +;1874: //the bot has absolutely nothing else to do +;1875: +;1876: CalculateJumpRoutes(); +ADDRGP4 CalculateJumpRoutes +CALLV +pop +line 1880 +;1877: //Look at jump points and mark them as requiring +;1878: //force jumping as needed +;1879: +;1880: return 1; +CNSTI4 1 +RETI4 +LABELV $725 +endproc LoadPathData 416 16 +export FlagObjects +proc FlagObjects 1172 28 +line 1884 +;1881:} +;1882: +;1883:void FlagObjects(void) +;1884:{ +line 1885 +;1885: int i = 0, bestindex = 0, found = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRLP4 1140 +CNSTI4 0 +ASGNI4 +ADDRLP4 1144 +CNSTI4 0 +ASGNI4 +line 1886 +;1886: float bestdist = 999999, tlen = 0; +ADDRLP4 1112 +CNSTF4 1232348144 +ASGNF4 +ADDRLP4 28 +CNSTF4 0 +ASGNF4 +line 1891 +;1887: gentity_t *flag_red, *flag_blue, *ent; +;1888: vec3_t a, mins, maxs; +;1889: trace_t tr; +;1890: +;1891: flag_red = NULL; +ADDRLP4 20 +CNSTP4 0 +ASGNP4 +line 1892 +;1892: flag_blue = NULL; +ADDRLP4 24 +CNSTP4 0 +ASGNP4 +line 1894 +;1893: +;1894: mins[0] = -15; +ADDRLP4 1116 +CNSTF4 3245342720 +ASGNF4 +line 1895 +;1895: mins[1] = -15; +ADDRLP4 1116+4 +CNSTF4 3245342720 +ASGNF4 +line 1896 +;1896: mins[2] = -5; +ADDRLP4 1116+8 +CNSTF4 3231711232 +ASGNF4 +line 1897 +;1897: maxs[0] = 15; +ADDRLP4 1128 +CNSTF4 1097859072 +ASGNF4 +line 1898 +;1898: maxs[1] = 15; +ADDRLP4 1128+4 +CNSTF4 1097859072 +ASGNF4 +line 1899 +;1899: maxs[2] = 5; +ADDRLP4 1128+8 +CNSTF4 1084227584 +ASGNF4 +ADDRGP4 $817 +JUMPV +LABELV $816 +line 1902 +;1900: +;1901: while (i < MAX_GENTITIES) +;1902: { +line 1903 +;1903: ent = &g_entities[i]; +ADDRLP4 4 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1905 +;1904: +;1905: if (ent && ent->inuse && ent->classname) +ADDRLP4 1152 +CNSTU4 0 +ASGNU4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 1152 +INDIRU4 +EQU4 $819 +ADDRLP4 4 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $819 +ADDRLP4 4 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 1152 +INDIRU4 +EQU4 $819 +line 1906 +;1906: { +line 1907 +;1907: if (!flag_red && strcmp(ent->classname, "team_CTF_redflag") == 0) +ADDRLP4 20 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $821 +ADDRLP4 4 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $823 +ARGP4 +ADDRLP4 1156 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 1156 +INDIRI4 +CNSTI4 0 +NEI4 $821 +line 1908 +;1908: { +line 1909 +;1909: flag_red = ent; +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1910 +;1910: } +ADDRGP4 $822 +JUMPV +LABELV $821 +line 1911 +;1911: else if (!flag_blue && strcmp(ent->classname, "team_CTF_blueflag") == 0) +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $824 +ADDRLP4 4 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $826 +ARGP4 +ADDRLP4 1160 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 1160 +INDIRI4 +CNSTI4 0 +NEI4 $824 +line 1912 +;1912: { +line 1913 +;1913: flag_blue = ent; +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1914 +;1914: } +LABELV $824 +LABELV $822 +line 1916 +;1915: +;1916: if (flag_red && flag_blue) +ADDRLP4 1164 +CNSTU4 0 +ASGNU4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ADDRLP4 1164 +INDIRU4 +EQU4 $827 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 1164 +INDIRU4 +EQU4 $827 +line 1917 +;1917: { +line 1918 +;1918: break; +ADDRGP4 $818 +JUMPV +LABELV $827 +line 1920 +;1919: } +;1920: } +LABELV $819 +line 1922 +;1921: +;1922: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1923 +;1923: } +LABELV $817 +line 1901 +ADDRLP4 0 +INDIRI4 +CNSTI4 1024 +LTI4 $816 +LABELV $818 +line 1925 +;1924: +;1925: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1927 +;1926: +;1927: if (!flag_red || !flag_blue) +ADDRLP4 1148 +CNSTU4 0 +ASGNU4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ADDRLP4 1148 +INDIRU4 +EQU4 $831 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 1148 +INDIRU4 +NEU4 $833 +LABELV $831 +line 1928 +;1928: { +line 1929 +;1929: return; +ADDRGP4 $811 +JUMPV +LABELV $832 +line 1933 +;1930: } +;1931: +;1932: while (i < gWPNum) +;1933: { +line 1934 +;1934: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 1152 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1152 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $835 +ADDRLP4 1152 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $835 +line 1935 +;1935: { +line 1936 +;1936: VectorSubtract(flag_red->s.pos.trBase, gWPArray[i]->origin, a); +ADDRLP4 1160 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 20 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 1160 +INDIRP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 8+4 +ADDRLP4 20 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 1160 +INDIRP4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 8+8 +ADDRLP4 20 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1937 +;1937: tlen = VectorLength(a); +ADDRLP4 8 +ARGP4 +ADDRLP4 1164 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 28 +ADDRLP4 1164 +INDIRF4 +ASGNF4 +line 1939 +;1938: +;1939: if (tlen < bestdist) +ADDRLP4 28 +INDIRF4 +ADDRLP4 1112 +INDIRF4 +GEF4 $839 +line 1940 +;1940: { +line 1941 +;1941: trap_Trace(&tr, flag_red->s.pos.trBase, mins, maxs, gWPArray[i]->origin, flag_red->s.number, MASK_SOLID); +ADDRLP4 32 +ARGP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 24 +ADDP4 +ARGP4 +ADDRLP4 1116 +ARGP4 +ADDRLP4 1128 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 1943 +;1942: +;1943: if (tr.fraction == 1 || tr.entityNum == flag_red->s.number) +ADDRLP4 32+8 +INDIRF4 +CNSTF4 1065353216 +EQF4 $845 +ADDRLP4 32+52 +INDIRI4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +NEI4 $841 +LABELV $845 +line 1944 +;1944: { +line 1945 +;1945: bestdist = tlen; +ADDRLP4 1112 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 1946 +;1946: bestindex = i; +ADDRLP4 1140 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1947 +;1947: found = 1; +ADDRLP4 1144 +CNSTI4 1 +ASGNI4 +line 1948 +;1948: } +LABELV $841 +line 1949 +;1949: } +LABELV $839 +line 1951 +;1950: +;1951: } +LABELV $835 +line 1953 +;1952: +;1953: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1954 +;1954: } +LABELV $833 +line 1932 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $832 +line 1956 +;1955: +;1956: if (found) +ADDRLP4 1144 +INDIRI4 +CNSTI4 0 +EQI4 $846 +line 1957 +;1957: { +line 1958 +;1958: gWPArray[bestindex]->flags |= WPFLAG_RED_FLAG; +ADDRLP4 1152 +ADDRLP4 1140 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 1152 +INDIRP4 +ADDRLP4 1152 +INDIRP4 +INDIRI4 +CNSTI4 131072 +BORI4 +ASGNI4 +line 1959 +;1959: flagRed = gWPArray[bestindex]; +ADDRGP4 flagRed +ADDRLP4 1140 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +line 1960 +;1960: oFlagRed = flagRed; +ADDRGP4 oFlagRed +ADDRGP4 flagRed +INDIRP4 +ASGNP4 +line 1961 +;1961: eFlagRed = flag_red; +ADDRGP4 eFlagRed +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 1962 +;1962: } +LABELV $846 +line 1964 +;1963: +;1964: bestdist = 999999; +ADDRLP4 1112 +CNSTF4 1232348144 +ASGNF4 +line 1965 +;1965: bestindex = 0; +ADDRLP4 1140 +CNSTI4 0 +ASGNI4 +line 1966 +;1966: found = 0; +ADDRLP4 1144 +CNSTI4 0 +ASGNI4 +line 1967 +;1967: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $849 +JUMPV +LABELV $848 +line 1970 +;1968: +;1969: while (i < gWPNum) +;1970: { +line 1971 +;1971: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 1152 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1152 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $851 +ADDRLP4 1152 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $851 +line 1972 +;1972: { +line 1973 +;1973: VectorSubtract(flag_blue->s.pos.trBase, gWPArray[i]->origin, a); +ADDRLP4 1160 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 24 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 1160 +INDIRP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 8+4 +ADDRLP4 24 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 1160 +INDIRP4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 8+8 +ADDRLP4 24 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1974 +;1974: tlen = VectorLength(a); +ADDRLP4 8 +ARGP4 +ADDRLP4 1164 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 28 +ADDRLP4 1164 +INDIRF4 +ASGNF4 +line 1976 +;1975: +;1976: if (tlen < bestdist) +ADDRLP4 28 +INDIRF4 +ADDRLP4 1112 +INDIRF4 +GEF4 $855 +line 1977 +;1977: { +line 1978 +;1978: trap_Trace(&tr, flag_blue->s.pos.trBase, mins, maxs, gWPArray[i]->origin, flag_blue->s.number, MASK_SOLID); +ADDRLP4 32 +ARGP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 24 +ADDP4 +ARGP4 +ADDRLP4 1116 +ARGP4 +ADDRLP4 1128 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_Trace +CALLV +pop +line 1980 +;1979: +;1980: if (tr.fraction == 1 || tr.entityNum == flag_blue->s.number) +ADDRLP4 32+8 +INDIRF4 +CNSTF4 1065353216 +EQF4 $861 +ADDRLP4 32+52 +INDIRI4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +NEI4 $857 +LABELV $861 +line 1981 +;1981: { +line 1982 +;1982: bestdist = tlen; +ADDRLP4 1112 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 1983 +;1983: bestindex = i; +ADDRLP4 1140 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1984 +;1984: found = 1; +ADDRLP4 1144 +CNSTI4 1 +ASGNI4 +line 1985 +;1985: } +LABELV $857 +line 1986 +;1986: } +LABELV $855 +line 1988 +;1987: +;1988: } +LABELV $851 +line 1990 +;1989: +;1990: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1991 +;1991: } +LABELV $849 +line 1969 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $848 +line 1993 +;1992: +;1993: if (found) +ADDRLP4 1144 +INDIRI4 +CNSTI4 0 +EQI4 $862 +line 1994 +;1994: { +line 1995 +;1995: gWPArray[bestindex]->flags |= WPFLAG_BLUE_FLAG; +ADDRLP4 1152 +ADDRLP4 1140 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 1152 +INDIRP4 +ADDRLP4 1152 +INDIRP4 +INDIRI4 +CNSTI4 262144 +BORI4 +ASGNI4 +line 1996 +;1996: flagBlue = gWPArray[bestindex]; +ADDRGP4 flagBlue +ADDRLP4 1140 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +line 1997 +;1997: oFlagBlue = flagBlue; +ADDRGP4 oFlagBlue +ADDRGP4 flagBlue +INDIRP4 +ASGNP4 +line 1998 +;1998: eFlagBlue = flag_blue; +ADDRGP4 eFlagBlue +ADDRLP4 24 +INDIRP4 +ASGNP4 +line 1999 +;1999: } +LABELV $862 +line 2000 +;2000:} +LABELV $811 +endproc FlagObjects 1172 28 +export SavePathData +proc SavePathData 112 36 +line 2003 +;2001: +;2002:int SavePathData(const char *filename) +;2003:{ +line 2012 +;2004: fileHandle_t f; +;2005: char *fileString; +;2006: char *storeString; +;2007: char *routePath; +;2008: vec3_t a; +;2009: float flLen; +;2010: int i, s, n; +;2011: +;2012: fileString = NULL; +ADDRLP4 28 +CNSTP4 0 +ASGNP4 +line 2013 +;2013: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2014 +;2014: s = 0; +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +line 2016 +;2015: +;2016: if (!gWPNum) +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 0 +NEI4 $865 +line 2017 +;2017: { +line 2018 +;2018: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $864 +JUMPV +LABELV $865 +line 2021 +;2019: } +;2020: +;2021: routePath = (char *)B_TempAlloc(1024); +CNSTI4 1024 +ARGI4 +ADDRLP4 44 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 36 +ADDRLP4 44 +INDIRP4 +ASGNP4 +line 2023 +;2022: +;2023: Com_sprintf(routePath, 1024, "botroutes/%s.wnt\0", filename); +ADDRLP4 36 +INDIRP4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $726 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2025 +;2024: +;2025: trap_FS_FOpenFile(routePath, &f, FS_WRITE); +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 32 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +pop +line 2027 +;2026: +;2027: B_TempFree(1024); //routePath +CNSTI4 1024 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 2029 +;2028: +;2029: if (!f) +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $867 +line 2030 +;2030: { +line 2031 +;2031: G_Printf(S_COLOR_RED "ERROR: Could not open file to write path data\n"); +ADDRGP4 $869 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2032 +;2032: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $864 +JUMPV +LABELV $867 +line 2035 +;2033: } +;2034: +;2035: if (!RepairPaths()) //check if we can see all waypoints from the last. If not, try to branch over. +ADDRLP4 48 +ADDRGP4 RepairPaths +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $870 +line 2036 +;2036: { +line 2037 +;2037: trap_FS_FCloseFile(f); +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 2038 +;2038: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $864 +JUMPV +LABELV $870 +line 2041 +;2039: } +;2040: +;2041: CalculatePaths(); //make everything nice and connected before saving +ADDRGP4 CalculatePaths +CALLV +pop +line 2043 +;2042: +;2043: FlagObjects(); //currently only used for flagging waypoints nearest CTF flags +ADDRGP4 FlagObjects +CALLV +pop +line 2045 +;2044: +;2045: fileString = (char *)B_TempAlloc(524288); +CNSTI4 524288 +ARGI4 +ADDRLP4 52 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 28 +ADDRLP4 52 +INDIRP4 +ASGNP4 +line 2046 +;2046: storeString = (char *)B_TempAlloc(4096); +CNSTI4 4096 +ARGI4 +ADDRLP4 56 +ADDRGP4 B_TempAlloc +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 56 +INDIRP4 +ASGNP4 +line 2048 +;2047: +;2048: Com_sprintf(fileString, 524288, "%i %i %f (%f %f %f) { ", gWPArray[i]->index, gWPArray[i]->flags, gWPArray[i]->weight, gWPArray[i]->origin[0], gWPArray[i]->origin[1], gWPArray[i]->origin[2]); +ADDRLP4 28 +INDIRP4 +ARGP4 +CNSTI4 524288 +ARGI4 +ADDRGP4 $872 +ARGP4 +ADDRLP4 60 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2050 +;2049: +;2050: n = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $874 +JUMPV +LABELV $873 +line 2053 +;2051: +;2052: while (n < gWPArray[i]->neighbornum) +;2053: { +line 2054 +;2054: if (gWPArray[i]->neighbors[n].forceJumpTo) +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $876 +line 2055 +;2055: { +line 2056 +;2056: Com_sprintf(storeString, 4096, "%s%i-%i ", storeString, gWPArray[i]->neighbors[n].num, gWPArray[i]->neighbors[n].forceJumpTo); +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 $878 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 68 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2057 +;2057: } +ADDRGP4 $877 +JUMPV +LABELV $876 +line 2059 +;2058: else +;2059: { +line 2060 +;2060: Com_sprintf(storeString, 4096, "%s%i ", storeString, gWPArray[i]->neighbors[n].num); +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 $879 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2061 +;2061: } +LABELV $877 +line 2062 +;2062: n++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2063 +;2063: } +LABELV $874 +line 2052 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +LTI4 $873 +line 2065 +;2064: +;2065: if (gWPArray[i+1] && gWPArray[i+1]->inuse && gWPArray[i+1]->index) +ADDRLP4 64 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $880 +ADDRLP4 68 +CNSTI4 0 +ASGNI4 +ADDRLP4 64 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 68 +INDIRI4 +EQI4 $880 +ADDRLP4 64 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRLP4 68 +INDIRI4 +EQI4 $880 +line 2066 +;2066: { +line 2067 +;2067: VectorSubtract(gWPArray[i]->origin, gWPArray[i+1]->origin, a); +ADDRLP4 72 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 76 +ADDRLP4 72 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 76 +INDIRP4 +INDIRP4 +INDIRF4 +ADDRLP4 72 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 80 +CNSTI4 4 +ASGNI4 +ADDRLP4 16+4 +ADDRLP4 76 +INDIRP4 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 72 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 84 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 88 +CNSTI4 8 +ASGNI4 +ADDRLP4 16+8 +ADDRLP4 84 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 88 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 84 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 88 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 2068 +;2068: flLen = VectorLength(a); +ADDRLP4 16 +ARGP4 +ADDRLP4 92 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 92 +INDIRF4 +ASGNF4 +line 2069 +;2069: } +ADDRGP4 $881 +JUMPV +LABELV $880 +line 2071 +;2070: else +;2071: { +line 2072 +;2072: flLen = 0; +ADDRLP4 12 +CNSTF4 0 +ASGNF4 +line 2073 +;2073: } +LABELV $881 +line 2075 +;2074: +;2075: gWPArray[i]->disttonext = flLen; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 2077 +;2076: +;2077: Com_sprintf(fileString, 524288, "%s} %f\n", fileString, flLen); +ADDRLP4 28 +INDIRP4 +ARGP4 +CNSTI4 524288 +ARGI4 +ADDRGP4 $890 +ARGP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2079 +;2078: +;2079: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $892 +JUMPV +LABELV $891 +line 2082 +;2080: +;2081: while (i < gWPNum) +;2082: { +line 2084 +;2083: //sprintf(fileString, "%s%i %i %f (%f %f %f) { ", fileString, gWPArray[i]->index, gWPArray[i]->flags, gWPArray[i]->weight, gWPArray[i]->origin[0], gWPArray[i]->origin[1], gWPArray[i]->origin[2]); +;2084: Com_sprintf(storeString, 4096, "%i %i %f (%f %f %f) { ", gWPArray[i]->index, gWPArray[i]->flags, gWPArray[i]->weight, gWPArray[i]->origin[0], gWPArray[i]->origin[1], gWPArray[i]->origin[2]); +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 $872 +ARGP4 +ADDRLP4 76 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 76 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 76 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 76 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2086 +;2085: +;2086: n = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $895 +JUMPV +LABELV $894 +line 2089 +;2087: +;2088: while (n < gWPArray[i]->neighbornum) +;2089: { +line 2090 +;2090: if (gWPArray[i]->neighbors[n].forceJumpTo) +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $897 +line 2091 +;2091: { +line 2092 +;2092: Com_sprintf(storeString, 4096, "%s%i-%i ", storeString, gWPArray[i]->neighbors[n].num, gWPArray[i]->neighbors[n].forceJumpTo); +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 $878 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 84 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 84 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2093 +;2093: } +ADDRGP4 $898 +JUMPV +LABELV $897 +line 2095 +;2094: else +;2095: { +line 2096 +;2096: Com_sprintf(storeString, 4096, "%s%i ", storeString, gWPArray[i]->neighbors[n].num); +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 $879 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2097 +;2097: } +LABELV $898 +line 2098 +;2098: n++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2099 +;2099: } +LABELV $895 +line 2088 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +LTI4 $894 +line 2101 +;2100: +;2101: if (gWPArray[i+1] && gWPArray[i+1]->inuse && gWPArray[i+1]->index) +ADDRLP4 80 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $899 +ADDRLP4 84 +CNSTI4 0 +ASGNI4 +ADDRLP4 80 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 84 +INDIRI4 +EQI4 $899 +ADDRLP4 80 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDRLP4 84 +INDIRI4 +EQI4 $899 +line 2102 +;2102: { +line 2103 +;2103: VectorSubtract(gWPArray[i]->origin, gWPArray[i+1]->origin, a); +ADDRLP4 88 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 92 +ADDRLP4 88 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 92 +INDIRP4 +INDIRP4 +INDIRF4 +ADDRLP4 88 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 96 +CNSTI4 4 +ASGNI4 +ADDRLP4 16+4 +ADDRLP4 92 +INDIRP4 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 100 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 104 +CNSTI4 8 +ASGNI4 +ADDRLP4 16+8 +ADDRLP4 100 +INDIRI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ADDRLP4 104 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 100 +INDIRI4 +ADDRGP4 gWPArray+4 +ADDP4 +INDIRP4 +ADDRLP4 104 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 2104 +;2104: flLen = VectorLength(a); +ADDRLP4 16 +ARGP4 +ADDRLP4 108 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 108 +INDIRF4 +ASGNF4 +line 2105 +;2105: } +ADDRGP4 $900 +JUMPV +LABELV $899 +line 2107 +;2106: else +;2107: { +line 2108 +;2108: flLen = 0; +ADDRLP4 12 +CNSTF4 0 +ASGNF4 +line 2109 +;2109: } +LABELV $900 +line 2111 +;2110: +;2111: gWPArray[i]->disttonext = flLen; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 2113 +;2112: +;2113: Com_sprintf(storeString, 4096, "%s} %f\n", storeString, flLen); +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 $890 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2115 +;2114: +;2115: strcat(fileString, storeString); +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 2117 +;2116: +;2117: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2118 +;2118: } +LABELV $892 +line 2081 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $891 +line 2120 +;2119: +;2120: trap_FS_Write(fileString, strlen(fileString), f); +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 76 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 76 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Write +CALLV +pop +line 2122 +;2121: +;2122: B_TempFree(524288); //fileString +CNSTI4 524288 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 2123 +;2123: B_TempFree(4096); //storeString +CNSTI4 4096 +ARGI4 +ADDRGP4 B_TempFree +CALLV +pop +line 2125 +;2124: +;2125: trap_FS_FCloseFile(f); +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 2127 +;2126: +;2127: G_Printf("Path data has been saved and updated. You may need to restart the level for some things to be properly calculated.\n"); +ADDRGP4 $909 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2129 +;2128: +;2129: return 1; +CNSTI4 1 +RETI4 +LABELV $864 +endproc SavePathData 112 36 +export LoadPath_ThisLevel +proc LoadPath_ThisLevel 304 16 +line 2133 +;2130:} +;2131: +;2132:void LoadPath_ThisLevel(void) +;2133:{ +line 2135 +;2134: vmCvar_t mapname; +;2135: int i = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2136 +;2136: gentity_t *ent = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 2138 +;2137: +;2138: trap_Cvar_Register( &mapname, "mapname", "", CVAR_SERVERINFO | CVAR_ROM ); +ADDRLP4 8 +ARGP4 +ADDRGP4 $911 +ARGP4 +ADDRGP4 $912 +ARGP4 +CNSTI4 68 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 2140 +;2139: +;2140: if (LoadPathData(mapname.string) == 2) +ADDRLP4 8+16 +ARGP4 +ADDRLP4 280 +ADDRGP4 LoadPathData +CALLI4 +ASGNI4 +ADDRLP4 280 +INDIRI4 +CNSTI4 2 +NEI4 $913 +line 2141 +;2141: { +line 2143 +;2142: //enter "edit" mode if cheats enabled? +;2143: } +LABELV $913 +line 2145 +;2144: +;2145: trap_Cvar_Update(&bot_wp_edit); +ADDRGP4 bot_wp_edit +ARGP4 +ADDRGP4 trap_Cvar_Update +CALLV +pop +line 2147 +;2146: +;2147: if (bot_wp_edit.value) +ADDRGP4 bot_wp_edit+8 +INDIRF4 +CNSTF4 0 +EQF4 $916 +line 2148 +;2148: { +line 2149 +;2149: gBotEdit = 1; +ADDRGP4 gBotEdit +CNSTF4 1065353216 +ASGNF4 +line 2150 +;2150: } +ADDRGP4 $920 +JUMPV +LABELV $916 +line 2152 +;2151: else +;2152: { +line 2153 +;2153: gBotEdit = 0; +ADDRGP4 gBotEdit +CNSTF4 0 +ASGNF4 +line 2154 +;2154: } +ADDRGP4 $920 +JUMPV +LABELV $919 +line 2158 +;2155: +;2156: //set the flag entities +;2157: while (i < MAX_GENTITIES) +;2158: { +line 2159 +;2159: ent = &g_entities[i]; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 2161 +;2160: +;2161: if (ent && ent->inuse && ent->classname) +ADDRLP4 288 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 288 +INDIRU4 +EQU4 $922 +ADDRLP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $922 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 288 +INDIRU4 +EQU4 $922 +line 2162 +;2162: { +line 2163 +;2163: if (!eFlagRed && strcmp(ent->classname, "team_CTF_redflag") == 0) +ADDRGP4 eFlagRed +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $924 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $823 +ARGP4 +ADDRLP4 292 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 292 +INDIRI4 +CNSTI4 0 +NEI4 $924 +line 2164 +;2164: { +line 2165 +;2165: eFlagRed = ent; +ADDRGP4 eFlagRed +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 2166 +;2166: } +ADDRGP4 $925 +JUMPV +LABELV $924 +line 2167 +;2167: else if (!eFlagBlue && strcmp(ent->classname, "team_CTF_blueflag") == 0) +ADDRGP4 eFlagBlue +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $926 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $826 +ARGP4 +ADDRLP4 296 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 296 +INDIRI4 +CNSTI4 0 +NEI4 $926 +line 2168 +;2168: { +line 2169 +;2169: eFlagBlue = ent; +ADDRGP4 eFlagBlue +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 2170 +;2170: } +LABELV $926 +LABELV $925 +line 2172 +;2171: +;2172: if (eFlagRed && eFlagBlue) +ADDRLP4 300 +CNSTU4 0 +ASGNU4 +ADDRGP4 eFlagRed +INDIRP4 +CVPU4 4 +ADDRLP4 300 +INDIRU4 +EQU4 $928 +ADDRGP4 eFlagBlue +INDIRP4 +CVPU4 4 +ADDRLP4 300 +INDIRU4 +EQU4 $928 +line 2173 +;2173: { +line 2174 +;2174: break; +ADDRGP4 $921 +JUMPV +LABELV $928 +line 2176 +;2175: } +;2176: } +LABELV $922 +line 2178 +;2177: +;2178: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2179 +;2179: } +LABELV $920 +line 2157 +ADDRLP4 4 +INDIRI4 +CNSTI4 1024 +LTI4 $919 +LABELV $921 +line 2180 +;2180:} +LABELV $910 +endproc LoadPath_ThisLevel 304 16 +export GetClosestSpawn +proc GetClosestSpawn 60 8 +line 2183 +;2181: +;2182:gentity_t *GetClosestSpawn(gentity_t *ent) +;2183:{ +line 2185 +;2184: gentity_t *spawn; +;2185: gentity_t *closestSpawn = NULL; +ADDRLP4 12 +CNSTP4 0 +ASGNP4 +line 2186 +;2186: float closestDist = -1; +ADDRLP4 8 +CNSTF4 3212836864 +ASGNF4 +line 2187 +;2187: int i = MAX_CLIENTS; +ADDRLP4 4 +CNSTI4 32 +ASGNI4 +line 2189 +;2188: +;2189: spawn = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +ADDRGP4 $932 +JUMPV +LABELV $931 +line 2192 +;2190: +;2191: while (i < MAX_GENTITIES) +;2192: { +line 2193 +;2193: spawn = &g_entities[i]; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 2195 +;2194: +;2195: if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $934 +ADDRLP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $934 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $936 +ARGP4 +ADDRLP4 20 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $938 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $937 +ARGP4 +ADDRLP4 24 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $934 +LABELV $938 +line 2196 +;2196: { +line 2200 +;2197: float checkDist; +;2198: vec3_t vSub; +;2199: +;2200: VectorSubtract(ent->client->ps.origin, spawn->r.currentOrigin, vSub); +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +ASGNP4 +ADDRLP4 28 +ADDRLP4 44 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 368 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 28+4 +ADDRLP4 44 +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 372 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 28+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 376 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 2201 +;2201: checkDist = VectorLength(vSub); +ADDRLP4 28 +ARGP4 +ADDRLP4 52 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 40 +ADDRLP4 52 +INDIRF4 +ASGNF4 +line 2203 +;2202: +;2203: if (closestDist == -1 || checkDist < closestDist) +ADDRLP4 8 +INDIRF4 +CNSTF4 3212836864 +EQF4 $943 +ADDRLP4 40 +INDIRF4 +ADDRLP4 8 +INDIRF4 +GEF4 $941 +LABELV $943 +line 2204 +;2204: { +line 2205 +;2205: closestSpawn = spawn; +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 2206 +;2206: closestDist = checkDist; +ADDRLP4 8 +ADDRLP4 40 +INDIRF4 +ASGNF4 +line 2207 +;2207: } +LABELV $941 +line 2208 +;2208: } +LABELV $934 +line 2210 +;2209: +;2210: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2211 +;2211: } +LABELV $932 +line 2191 +ADDRLP4 4 +INDIRI4 +CNSTI4 1024 +LTI4 $931 +line 2213 +;2212: +;2213: return closestSpawn; +ADDRLP4 12 +INDIRP4 +RETP4 +LABELV $930 +endproc GetClosestSpawn 60 8 +export GetNextSpawnInIndex +proc GetNextSpawnInIndex 24 8 +line 2217 +;2214:} +;2215: +;2216:gentity_t *GetNextSpawnInIndex(gentity_t *currentSpawn) +;2217:{ +line 2219 +;2218: gentity_t *spawn; +;2219: gentity_t *nextSpawn = NULL; +ADDRLP4 8 +CNSTP4 0 +ASGNP4 +line 2220 +;2220: int i = currentSpawn->s.number+1; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2222 +;2221: +;2222: spawn = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +ADDRGP4 $946 +JUMPV +LABELV $945 +line 2225 +;2223: +;2224: while (i < MAX_GENTITIES) +;2225: { +line 2226 +;2226: spawn = &g_entities[i]; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 2228 +;2227: +;2228: if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $948 +ADDRLP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $948 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $936 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $950 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $937 +ARGP4 +ADDRLP4 20 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $948 +LABELV $950 +line 2229 +;2229: { +line 2230 +;2230: nextSpawn = spawn; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 2231 +;2231: break; +ADDRGP4 $947 +JUMPV +LABELV $948 +line 2234 +;2232: } +;2233: +;2234: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2235 +;2235: } +LABELV $946 +line 2224 +ADDRLP4 4 +INDIRI4 +CNSTI4 1024 +LTI4 $945 +LABELV $947 +line 2237 +;2236: +;2237: if (!nextSpawn) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $951 +line 2238 +;2238: { //loop back around to 0 +line 2239 +;2239: i = MAX_CLIENTS; +ADDRLP4 4 +CNSTI4 32 +ASGNI4 +ADDRGP4 $954 +JUMPV +LABELV $953 +line 2242 +;2240: +;2241: while (i < MAX_GENTITIES) +;2242: { +line 2243 +;2243: spawn = &g_entities[i]; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 2245 +;2244: +;2245: if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $956 +ADDRLP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $956 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $936 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $958 +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $937 +ARGP4 +ADDRLP4 20 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $956 +LABELV $958 +line 2246 +;2246: { +line 2247 +;2247: nextSpawn = spawn; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 2248 +;2248: break; +ADDRGP4 $955 +JUMPV +LABELV $956 +line 2251 +;2249: } +;2250: +;2251: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2252 +;2252: } +LABELV $954 +line 2241 +ADDRLP4 4 +INDIRI4 +CNSTI4 1024 +LTI4 $953 +LABELV $955 +line 2253 +;2253: } +LABELV $951 +line 2255 +;2254: +;2255: return nextSpawn; +ADDRLP4 8 +INDIRP4 +RETP4 +LABELV $944 +endproc GetNextSpawnInIndex 24 8 +export AcceptBotCommand +proc AcceptBotCommand 344 16 +line 2259 +;2256:} +;2257: +;2258:int AcceptBotCommand(char *cmd, gentity_t *pl) +;2259:{ +line 2265 +;2260: int OptionalArgument, i; +;2261: int FlagsFromArgument; +;2262: char *OptionalSArgument, *RequiredSArgument; +;2263: vmCvar_t mapname; +;2264: +;2265: if (!gBotEdit) +ADDRGP4 gBotEdit +INDIRF4 +CNSTF4 0 +NEF4 $960 +line 2266 +;2266: { +line 2267 +;2267: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $960 +line 2270 +;2268: } +;2269: +;2270: OptionalArgument = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 2271 +;2271: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2272 +;2272: FlagsFromArgument = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 2273 +;2273: OptionalSArgument = NULL; +ADDRLP4 8 +CNSTP4 0 +ASGNP4 +line 2274 +;2274: RequiredSArgument = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 2279 +;2275: +;2276: //if a waypoint editing related command is issued, bots will deactivate. +;2277: //once bot_wp_save is issued and the trail is recalculated, bots will activate again. +;2278: +;2279: if (!pl || !pl->client) +ADDRLP4 292 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 296 +CNSTU4 0 +ASGNU4 +ADDRLP4 292 +INDIRP4 +CVPU4 4 +ADDRLP4 296 +INDIRU4 +EQU4 $964 +ADDRLP4 292 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 296 +INDIRU4 +NEU4 $962 +LABELV $964 +line 2280 +;2280: { +line 2281 +;2281: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $962 +line 2284 +;2282: } +;2283: +;2284: if (Q_stricmp (cmd, "bot_wp_cmdlist") == 0) //lists all the bot waypoint commands. +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $967 +ARGP4 +ADDRLP4 300 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 300 +INDIRI4 +CNSTI4 0 +NEI4 $965 +line 2285 +;2285: { +line 2286 +;2286: G_Printf(S_COLOR_YELLOW "bot_wp_add" S_COLOR_WHITE " - Add a waypoint (optional int parameter will insert the point after the specified waypoint index in a trail)\n\n"); +ADDRGP4 $968 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2287 +;2287: G_Printf(S_COLOR_YELLOW "bot_wp_rem" S_COLOR_WHITE " - Remove a waypoint (removes last unless waypoint index is specified as a parameter)\n\n"); +ADDRGP4 $969 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2288 +;2288: G_Printf(S_COLOR_YELLOW "bot_wp_addflagged" S_COLOR_WHITE " - Same as wp_add, but adds a flagged point (type bot_wp_addflagged for help)\n\n"); +ADDRGP4 $970 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2289 +;2289: G_Printf(S_COLOR_YELLOW "bot_wp_switchflags" S_COLOR_WHITE " - Switches flags on an existing waypoint (type bot_wp_switchflags for help)\n\n"); +ADDRGP4 $971 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2290 +;2290: G_Printf(S_COLOR_YELLOW "bot_wp_tele" S_COLOR_WHITE " - Teleport yourself to the specified waypoint's location\n"); +ADDRGP4 $972 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2291 +;2291: G_Printf(S_COLOR_YELLOW "bot_wp_killoneways" S_COLOR_WHITE " - Removes oneway (backward and forward) flags on all waypoints in the level\n\n"); +ADDRGP4 $973 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2292 +;2292: G_Printf(S_COLOR_YELLOW "bot_wp_save" S_COLOR_WHITE " - Saves all waypoint data into a file for later use\n"); +ADDRGP4 $974 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2294 +;2293: +;2294: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $965 +line 2297 +;2295: } +;2296: +;2297: if (Q_stricmp (cmd, "bot_wp_add") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $977 +ARGP4 +ADDRLP4 304 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 304 +INDIRI4 +CNSTI4 0 +NEI4 $975 +line 2298 +;2298: { +line 2299 +;2299: gDeactivated = 1; +ADDRGP4 gDeactivated +CNSTF4 1065353216 +ASGNF4 +line 2300 +;2300: OptionalSArgument = ConcatArgs( 1 ); +CNSTI4 1 +ARGI4 +ADDRLP4 308 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 308 +INDIRP4 +ASGNP4 +line 2302 +;2301: +;2302: if (OptionalSArgument) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $978 +line 2303 +;2303: { +line 2304 +;2304: OptionalArgument = atoi(OptionalSArgument); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 312 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 312 +INDIRI4 +ASGNI4 +line 2305 +;2305: } +LABELV $978 +line 2307 +;2306: +;2307: if (OptionalSArgument && OptionalSArgument[0]) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $980 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $980 +line 2308 +;2308: { +line 2309 +;2309: CreateNewWP_InTrail(pl->client->ps.origin, 0, OptionalArgument); +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 CreateNewWP_InTrail +CALLI4 +pop +line 2310 +;2310: } +ADDRGP4 $981 +JUMPV +LABELV $980 +line 2312 +;2311: else +;2312: { +line 2313 +;2313: CreateNewWP(pl->client->ps.origin, 0); +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 CreateNewWP +CALLV +pop +line 2314 +;2314: } +LABELV $981 +line 2315 +;2315: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $975 +line 2318 +;2316: } +;2317: +;2318: if (Q_stricmp (cmd, "bot_wp_rem") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $984 +ARGP4 +ADDRLP4 308 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 308 +INDIRI4 +CNSTI4 0 +NEI4 $982 +line 2319 +;2319: { +line 2320 +;2320: gDeactivated = 1; +ADDRGP4 gDeactivated +CNSTF4 1065353216 +ASGNF4 +line 2322 +;2321: +;2322: OptionalSArgument = ConcatArgs( 1 ); +CNSTI4 1 +ARGI4 +ADDRLP4 312 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 312 +INDIRP4 +ASGNP4 +line 2324 +;2323: +;2324: if (OptionalSArgument) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $985 +line 2325 +;2325: { +line 2326 +;2326: OptionalArgument = atoi(OptionalSArgument); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 316 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 316 +INDIRI4 +ASGNI4 +line 2327 +;2327: } +LABELV $985 +line 2329 +;2328: +;2329: if (OptionalSArgument && OptionalSArgument[0]) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $987 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $987 +line 2330 +;2330: { +line 2331 +;2331: RemoveWP_InTrail(OptionalArgument); +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 RemoveWP_InTrail +CALLV +pop +line 2332 +;2332: } +ADDRGP4 $988 +JUMPV +LABELV $987 +line 2334 +;2333: else +;2334: { +line 2335 +;2335: RemoveWP(); +ADDRGP4 RemoveWP +CALLV +pop +line 2336 +;2336: } +LABELV $988 +line 2338 +;2337: +;2338: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $982 +line 2341 +;2339: } +;2340: +;2341: if (Q_stricmp (cmd, "bot_wp_tele") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $991 +ARGP4 +ADDRLP4 312 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 312 +INDIRI4 +CNSTI4 0 +NEI4 $989 +line 2342 +;2342: { +line 2343 +;2343: gDeactivated = 1; +ADDRGP4 gDeactivated +CNSTF4 1065353216 +ASGNF4 +line 2344 +;2344: OptionalSArgument = ConcatArgs( 1 ); +CNSTI4 1 +ARGI4 +ADDRLP4 316 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 316 +INDIRP4 +ASGNP4 +line 2346 +;2345: +;2346: if (OptionalSArgument) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $992 +line 2347 +;2347: { +line 2348 +;2348: OptionalArgument = atoi(OptionalSArgument); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 320 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 320 +INDIRI4 +ASGNI4 +line 2349 +;2349: } +LABELV $992 +line 2351 +;2350: +;2351: if (OptionalSArgument && OptionalSArgument[0]) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $994 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $994 +line 2352 +;2352: { +line 2353 +;2353: TeleportToWP(pl, OptionalArgument); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 TeleportToWP +CALLV +pop +line 2354 +;2354: } +ADDRGP4 $995 +JUMPV +LABELV $994 +line 2356 +;2355: else +;2356: { +line 2357 +;2357: G_Printf(S_COLOR_YELLOW "You didn't specify an index. Assuming last.\n"); +ADDRGP4 $996 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2358 +;2358: TeleportToWP(pl, gWPNum-1); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 gWPNum +INDIRI4 +CNSTI4 1 +SUBI4 +ARGI4 +ADDRGP4 TeleportToWP +CALLV +pop +line 2359 +;2359: } +LABELV $995 +line 2360 +;2360: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $989 +line 2363 +;2361: } +;2362: +;2363: if (Q_stricmp (cmd, "bot_wp_spawntele") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $999 +ARGP4 +ADDRLP4 316 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 316 +INDIRI4 +CNSTI4 0 +NEI4 $997 +line 2364 +;2364: { +line 2365 +;2365: gentity_t *closestSpawn = GetClosestSpawn(pl); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 324 +ADDRGP4 GetClosestSpawn +CALLP4 +ASGNP4 +ADDRLP4 320 +ADDRLP4 324 +INDIRP4 +ASGNP4 +line 2367 +;2366: +;2367: if (!closestSpawn) +ADDRLP4 320 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1000 +line 2368 +;2368: { //There should always be a spawn point.. +line 2369 +;2369: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $1000 +line 2372 +;2370: } +;2371: +;2372: closestSpawn = GetNextSpawnInIndex(closestSpawn); +ADDRLP4 320 +INDIRP4 +ARGP4 +ADDRLP4 328 +ADDRGP4 GetNextSpawnInIndex +CALLP4 +ASGNP4 +ADDRLP4 320 +ADDRLP4 328 +INDIRP4 +ASGNP4 +line 2374 +;2373: +;2374: if (closestSpawn) +ADDRLP4 320 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1002 +line 2375 +;2375: { +line 2376 +;2376: VectorCopy(closestSpawn->r.currentOrigin, pl->client->ps.origin); +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 320 +INDIRP4 +CNSTI4 368 +ADDP4 +INDIRB +ASGNB 12 +line 2377 +;2377: } +LABELV $1002 +line 2378 +;2378: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $997 +line 2381 +;2379: } +;2380: +;2381: if (Q_stricmp (cmd, "bot_wp_addflagged") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $1006 +ARGP4 +ADDRLP4 320 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 320 +INDIRI4 +CNSTI4 0 +NEI4 $1004 +line 2382 +;2382: { +line 2383 +;2383: gDeactivated = 1; +ADDRGP4 gDeactivated +CNSTF4 1065353216 +ASGNF4 +line 2385 +;2384: +;2385: RequiredSArgument = ConcatArgs( 1 ); +CNSTI4 1 +ARGI4 +ADDRLP4 324 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 324 +INDIRP4 +ASGNP4 +line 2387 +;2386: +;2387: if (!RequiredSArgument || !RequiredSArgument[0]) +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1009 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1012 +LABELV $1009 +line 2388 +;2388: { +line 2389 +;2389: G_Printf(S_COLOR_YELLOW "Flag string needed for bot_wp_addflagged\nj - Jump point\nd - Duck point\nc - Snipe or camp standing\nf - Wait for func\nm - Do not move to when func is under\ns - Snipe or camp\nx - Oneway, forward\ny - Oneway, back\ng - Mission goal\nn - No visibility\nExample (for a point the bot would jump at, and reverse on when traveling a trail backwards):\nbot_wp_addflagged jx\n"); +ADDRGP4 $1010 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2390 +;2390: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $1011 +line 2394 +;2391: } +;2392: +;2393: while (RequiredSArgument[i]) +;2394: { +line 2395 +;2395: if (RequiredSArgument[i] == 'j') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 106 +NEI4 $1014 +line 2396 +;2396: { +line 2397 +;2397: FlagsFromArgument |= WPFLAG_JUMP; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 16 +BORI4 +ASGNI4 +line 2398 +;2398: } +ADDRGP4 $1015 +JUMPV +LABELV $1014 +line 2399 +;2399: else if (RequiredSArgument[i] == 'd') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 100 +NEI4 $1016 +line 2400 +;2400: { +line 2401 +;2401: FlagsFromArgument |= WPFLAG_DUCK; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 2402 +;2402: } +ADDRGP4 $1017 +JUMPV +LABELV $1016 +line 2403 +;2403: else if (RequiredSArgument[i] == 'c') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 99 +NEI4 $1018 +line 2404 +;2404: { +line 2405 +;2405: FlagsFromArgument |= WPFLAG_SNIPEORCAMPSTAND; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 2048 +BORI4 +ASGNI4 +line 2406 +;2406: } +ADDRGP4 $1019 +JUMPV +LABELV $1018 +line 2407 +;2407: else if (RequiredSArgument[i] == 'f') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 102 +NEI4 $1020 +line 2408 +;2408: { +line 2409 +;2409: FlagsFromArgument |= WPFLAG_WAITFORFUNC; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 4096 +BORI4 +ASGNI4 +line 2410 +;2410: } +ADDRGP4 $1021 +JUMPV +LABELV $1020 +line 2411 +;2411: else if (RequiredSArgument[i] == 's') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 115 +NEI4 $1022 +line 2412 +;2412: { +line 2413 +;2413: FlagsFromArgument |= WPFLAG_SNIPEORCAMP; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 8192 +BORI4 +ASGNI4 +line 2414 +;2414: } +ADDRGP4 $1023 +JUMPV +LABELV $1022 +line 2415 +;2415: else if (RequiredSArgument[i] == 'x') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 120 +NEI4 $1024 +line 2416 +;2416: { +line 2417 +;2417: FlagsFromArgument |= WPFLAG_ONEWAY_FWD; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 16384 +BORI4 +ASGNI4 +line 2418 +;2418: } +ADDRGP4 $1025 +JUMPV +LABELV $1024 +line 2419 +;2419: else if (RequiredSArgument[i] == 'y') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 121 +NEI4 $1026 +line 2420 +;2420: { +line 2421 +;2421: FlagsFromArgument |= WPFLAG_ONEWAY_BACK; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 32768 +BORI4 +ASGNI4 +line 2422 +;2422: } +ADDRGP4 $1027 +JUMPV +LABELV $1026 +line 2423 +;2423: else if (RequiredSArgument[i] == 'g') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 103 +NEI4 $1028 +line 2424 +;2424: { +line 2425 +;2425: FlagsFromArgument |= WPFLAG_GOALPOINT; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 65536 +BORI4 +ASGNI4 +line 2426 +;2426: } +ADDRGP4 $1029 +JUMPV +LABELV $1028 +line 2427 +;2427: else if (RequiredSArgument[i] == 'n') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 110 +NEI4 $1030 +line 2428 +;2428: { +line 2429 +;2429: FlagsFromArgument |= WPFLAG_NOVIS; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1024 +BORI4 +ASGNI4 +line 2430 +;2430: } +ADDRGP4 $1031 +JUMPV +LABELV $1030 +line 2431 +;2431: else if (RequiredSArgument[i] == 'm') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 109 +NEI4 $1032 +line 2432 +;2432: { +line 2433 +;2433: FlagsFromArgument |= WPFLAG_NOMOVEFUNC; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 2097152 +BORI4 +ASGNI4 +line 2434 +;2434: } +LABELV $1032 +LABELV $1031 +LABELV $1029 +LABELV $1027 +LABELV $1025 +LABELV $1023 +LABELV $1021 +LABELV $1019 +LABELV $1017 +LABELV $1015 +line 2436 +;2435: +;2436: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2437 +;2437: } +LABELV $1012 +line 2393 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1011 +line 2439 +;2438: +;2439: OptionalSArgument = ConcatArgs( 2 ); +CNSTI4 2 +ARGI4 +ADDRLP4 332 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 332 +INDIRP4 +ASGNP4 +line 2441 +;2440: +;2441: if (OptionalSArgument) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1034 +line 2442 +;2442: { +line 2443 +;2443: OptionalArgument = atoi(OptionalSArgument); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 336 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 336 +INDIRI4 +ASGNI4 +line 2444 +;2444: } +LABELV $1034 +line 2446 +;2445: +;2446: if (OptionalSArgument && OptionalSArgument[0]) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1036 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $1036 +line 2447 +;2447: { +line 2448 +;2448: CreateNewWP_InTrail(pl->client->ps.origin, FlagsFromArgument, OptionalArgument); +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 CreateNewWP_InTrail +CALLI4 +pop +line 2449 +;2449: } +ADDRGP4 $1037 +JUMPV +LABELV $1036 +line 2451 +;2450: else +;2451: { +line 2452 +;2452: CreateNewWP(pl->client->ps.origin, FlagsFromArgument); +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRGP4 CreateNewWP +CALLV +pop +line 2453 +;2453: } +LABELV $1037 +line 2454 +;2454: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $1004 +line 2457 +;2455: } +;2456: +;2457: if (Q_stricmp (cmd, "bot_wp_switchflags") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $1040 +ARGP4 +ADDRLP4 324 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 324 +INDIRI4 +CNSTI4 0 +NEI4 $1038 +line 2458 +;2458: { +line 2459 +;2459: gDeactivated = 1; +ADDRGP4 gDeactivated +CNSTF4 1065353216 +ASGNF4 +line 2461 +;2460: +;2461: RequiredSArgument = ConcatArgs( 1 ); +CNSTI4 1 +ARGI4 +ADDRLP4 328 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 328 +INDIRP4 +ASGNP4 +line 2463 +;2462: +;2463: if (!RequiredSArgument || !RequiredSArgument[0]) +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1043 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1046 +LABELV $1043 +line 2464 +;2464: { +line 2465 +;2465: G_Printf(S_COLOR_YELLOW "Flag string needed for bot_wp_switchflags\nType bot_wp_addflagged for a list of flags and their corresponding characters, or use 0 for no flags.\nSyntax: bot_wp_switchflags \n"); +ADDRGP4 $1044 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2466 +;2466: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $1045 +line 2470 +;2467: } +;2468: +;2469: while (RequiredSArgument[i]) +;2470: { +line 2471 +;2471: if (RequiredSArgument[i] == 'j') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 106 +NEI4 $1048 +line 2472 +;2472: { +line 2473 +;2473: FlagsFromArgument |= WPFLAG_JUMP; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 16 +BORI4 +ASGNI4 +line 2474 +;2474: } +ADDRGP4 $1049 +JUMPV +LABELV $1048 +line 2475 +;2475: else if (RequiredSArgument[i] == 'd') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 100 +NEI4 $1050 +line 2476 +;2476: { +line 2477 +;2477: FlagsFromArgument |= WPFLAG_DUCK; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 2478 +;2478: } +ADDRGP4 $1051 +JUMPV +LABELV $1050 +line 2479 +;2479: else if (RequiredSArgument[i] == 'c') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 99 +NEI4 $1052 +line 2480 +;2480: { +line 2481 +;2481: FlagsFromArgument |= WPFLAG_SNIPEORCAMPSTAND; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 2048 +BORI4 +ASGNI4 +line 2482 +;2482: } +ADDRGP4 $1053 +JUMPV +LABELV $1052 +line 2483 +;2483: else if (RequiredSArgument[i] == 'f') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 102 +NEI4 $1054 +line 2484 +;2484: { +line 2485 +;2485: FlagsFromArgument |= WPFLAG_WAITFORFUNC; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 4096 +BORI4 +ASGNI4 +line 2486 +;2486: } +ADDRGP4 $1055 +JUMPV +LABELV $1054 +line 2487 +;2487: else if (RequiredSArgument[i] == 's') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 115 +NEI4 $1056 +line 2488 +;2488: { +line 2489 +;2489: FlagsFromArgument |= WPFLAG_SNIPEORCAMP; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 8192 +BORI4 +ASGNI4 +line 2490 +;2490: } +ADDRGP4 $1057 +JUMPV +LABELV $1056 +line 2491 +;2491: else if (RequiredSArgument[i] == 'x') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 120 +NEI4 $1058 +line 2492 +;2492: { +line 2493 +;2493: FlagsFromArgument |= WPFLAG_ONEWAY_FWD; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 16384 +BORI4 +ASGNI4 +line 2494 +;2494: } +ADDRGP4 $1059 +JUMPV +LABELV $1058 +line 2495 +;2495: else if (RequiredSArgument[i] == 'y') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 121 +NEI4 $1060 +line 2496 +;2496: { +line 2497 +;2497: FlagsFromArgument |= WPFLAG_ONEWAY_BACK; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 32768 +BORI4 +ASGNI4 +line 2498 +;2498: } +ADDRGP4 $1061 +JUMPV +LABELV $1060 +line 2499 +;2499: else if (RequiredSArgument[i] == 'g') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 103 +NEI4 $1062 +line 2500 +;2500: { +line 2501 +;2501: FlagsFromArgument |= WPFLAG_GOALPOINT; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 65536 +BORI4 +ASGNI4 +line 2502 +;2502: } +ADDRGP4 $1063 +JUMPV +LABELV $1062 +line 2503 +;2503: else if (RequiredSArgument[i] == 'n') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 110 +NEI4 $1064 +line 2504 +;2504: { +line 2505 +;2505: FlagsFromArgument |= WPFLAG_NOVIS; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1024 +BORI4 +ASGNI4 +line 2506 +;2506: } +ADDRGP4 $1065 +JUMPV +LABELV $1064 +line 2507 +;2507: else if (RequiredSArgument[i] == 'm') +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 109 +NEI4 $1066 +line 2508 +;2508: { +line 2509 +;2509: FlagsFromArgument |= WPFLAG_NOMOVEFUNC; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 2097152 +BORI4 +ASGNI4 +line 2510 +;2510: } +LABELV $1066 +LABELV $1065 +LABELV $1063 +LABELV $1061 +LABELV $1059 +LABELV $1057 +LABELV $1055 +LABELV $1053 +LABELV $1051 +LABELV $1049 +line 2512 +;2511: +;2512: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2513 +;2513: } +LABELV $1046 +line 2469 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1045 +line 2515 +;2514: +;2515: OptionalSArgument = ConcatArgs( 2 ); +CNSTI4 2 +ARGI4 +ADDRLP4 336 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 336 +INDIRP4 +ASGNP4 +line 2517 +;2516: +;2517: if (OptionalSArgument) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1068 +line 2518 +;2518: { +line 2519 +;2519: OptionalArgument = atoi(OptionalSArgument); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 340 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 340 +INDIRI4 +ASGNI4 +line 2520 +;2520: } +LABELV $1068 +line 2522 +;2521: +;2522: if (OptionalSArgument && OptionalSArgument[0]) +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1070 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $1070 +line 2523 +;2523: { +line 2524 +;2524: WPFlagsModify(OptionalArgument, FlagsFromArgument); +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRGP4 WPFlagsModify +CALLV +pop +line 2525 +;2525: } +ADDRGP4 $1071 +JUMPV +LABELV $1070 +line 2527 +;2526: else +;2527: { +line 2528 +;2528: G_Printf(S_COLOR_YELLOW "Waypoint number (to modify) needed for bot_wp_switchflags\nSyntax: bot_wp_switchflags \n"); +ADDRGP4 $1072 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 2529 +;2529: } +LABELV $1071 +line 2530 +;2530: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $1038 +line 2533 +;2531: } +;2532: +;2533: if (Q_stricmp (cmd, "bot_wp_killoneways") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $1075 +ARGP4 +ADDRLP4 328 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 328 +INDIRI4 +CNSTI4 0 +NEI4 $1073 +line 2534 +;2534: { +line 2535 +;2535: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1077 +JUMPV +LABELV $1076 +line 2538 +;2536: +;2537: while (i < gWPNum) +;2538: { +line 2539 +;2539: if (gWPArray[i] && gWPArray[i]->inuse) +ADDRLP4 332 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 332 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1079 +ADDRLP4 332 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1079 +line 2540 +;2540: { +line 2541 +;2541: if (gWPArray[i]->flags & WPFLAG_ONEWAY_FWD) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +CNSTI4 16384 +BANDI4 +CNSTI4 0 +EQI4 $1081 +line 2542 +;2542: { +line 2543 +;2543: gWPArray[i]->flags -= WPFLAG_ONEWAY_FWD; +ADDRLP4 336 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 336 +INDIRP4 +ADDRLP4 336 +INDIRP4 +INDIRI4 +CNSTI4 16384 +SUBI4 +ASGNI4 +line 2544 +;2544: } +LABELV $1081 +line 2545 +;2545: if (gWPArray[i]->flags & WPFLAG_ONEWAY_BACK) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +CNSTI4 32768 +BANDI4 +CNSTI4 0 +EQI4 $1083 +line 2546 +;2546: { +line 2547 +;2547: gWPArray[i]->flags -= WPFLAG_ONEWAY_BACK; +ADDRLP4 336 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 gWPArray +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 336 +INDIRP4 +ADDRLP4 336 +INDIRP4 +INDIRI4 +CNSTI4 32768 +SUBI4 +ASGNI4 +line 2548 +;2548: } +LABELV $1083 +line 2549 +;2549: } +LABELV $1079 +line 2551 +;2550: +;2551: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2552 +;2552: } +LABELV $1077 +line 2537 +ADDRLP4 0 +INDIRI4 +ADDRGP4 gWPNum +INDIRI4 +LTI4 $1076 +line 2554 +;2553: +;2554: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $1073 +line 2557 +;2555: } +;2556: +;2557: if (Q_stricmp (cmd, "bot_wp_save") == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $1087 +ARGP4 +ADDRLP4 332 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 332 +INDIRI4 +CNSTI4 0 +NEI4 $1085 +line 2558 +;2558: { +line 2559 +;2559: gDeactivated = 0; +ADDRGP4 gDeactivated +CNSTF4 0 +ASGNF4 +line 2560 +;2560: trap_Cvar_Register( &mapname, "mapname", "", CVAR_SERVERINFO | CVAR_ROM ); +ADDRLP4 20 +ARGP4 +ADDRGP4 $911 +ARGP4 +ADDRGP4 $912 +ARGP4 +CNSTI4 68 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 2561 +;2561: SavePathData(mapname.string); +ADDRLP4 20+16 +ARGP4 +ADDRGP4 SavePathData +CALLI4 +pop +line 2562 +;2562: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $959 +JUMPV +LABELV $1085 +line 2565 +;2563: } +;2564: +;2565: return 0; +CNSTI4 0 +RETI4 +LABELV $959 +endproc AcceptBotCommand 344 16 +import floattime +bss +export nodenum +align 4 +LABELV nodenum +skip 4 +export nodetable +align 4 +LABELV nodetable +skip 131072 +export gWPArray +align 4 +LABELV gWPArray +skip 16384 +import gBotChatBuffer +import eFlagBlue +import eFlagRed +import oFlagBlue +import flagBlue +import oFlagRed +import flagRed +import bot_wp_visconnect +import bot_wp_distconnect +import bot_wp_clearweight +import bot_wp_edit +import bot_wp_info +import bot_camp +import bot_attachments +import bot_forgimmick +import bot_forcepowers +import ConcatArgs +import GetBestIdleGoal +import GetNearestVisibleWP +import BotIsAChickenWuss +import OrgVisibleBox +import StandardBotAI +import BotDoChat +import BotUtilizePersonality +import NumBots +import BotResetState +import B_Free +import B_Alloc +import B_TempFree +import B_TempAlloc +import GetBotLibAPI +import trap_ROFF_Purge_Ent +import trap_ROFF_Play +import trap_ROFF_Cache +import trap_ROFF_UpdateEntities +import trap_ROFF_Clean +import trap_SP_GetStringTextString +import trap_SP_Register +import trap_SP_RegisterServer +import trap_SnapVector +import trap_GeneticParentsAndChildSelection +import trap_BotResetWeaponState +import trap_BotFreeWeaponState +import trap_BotAllocWeaponState +import trap_BotLoadWeaponWeights +import trap_BotGetWeaponInfo +import trap_BotChooseBestFightWeapon +import trap_BotAddAvoidSpot +import trap_BotInitMoveState +import trap_BotFreeMoveState +import trap_BotAllocMoveState +import trap_BotPredictVisiblePosition +import trap_BotMovementViewTarget +import trap_BotReachabilityArea +import trap_BotResetLastAvoidReach +import trap_BotResetAvoidReach +import trap_BotMoveInDirection +import trap_BotMoveToGoal +import trap_BotResetMoveState +import trap_BotFreeGoalState +import trap_BotAllocGoalState +import trap_BotMutateGoalFuzzyLogic +import trap_BotSaveGoalFuzzyLogic +import trap_BotInterbreedGoalFuzzyLogic +import trap_BotFreeItemWeights +import trap_BotLoadItemWeights +import trap_BotUpdateEntityItems +import trap_BotInitLevelItems +import trap_BotSetAvoidGoalTime +import trap_BotAvoidGoalTime +import trap_BotGetLevelItemGoal +import trap_BotGetMapLocationGoal +import trap_BotGetNextCampSpotGoal +import trap_BotItemGoalInVisButNotVisible +import trap_BotTouchingGoal +import trap_BotChooseNBGItem +import trap_BotChooseLTGItem +import trap_BotGetSecondGoal +import trap_BotGetTopGoal +import trap_BotGoalName +import trap_BotDumpGoalStack +import trap_BotDumpAvoidGoals +import trap_BotEmptyGoalStack +import trap_BotPopGoal +import trap_BotPushGoal +import trap_BotResetAvoidGoals +import trap_BotRemoveFromAvoidGoals +import trap_BotResetGoalState +import trap_BotSetChatName +import trap_BotSetChatGender +import trap_BotLoadChatFile +import trap_BotReplaceSynonyms +import trap_UnifyWhiteSpaces +import trap_BotMatchVariable +import trap_BotFindMatch +import trap_StringContains +import trap_BotGetChatMessage +import trap_BotEnterChat +import trap_BotChatLength +import trap_BotReplyChat +import trap_BotNumInitialChats +import trap_BotInitialChat +import trap_BotNumConsoleMessages +import trap_BotNextConsoleMessage +import trap_BotRemoveConsoleMessage +import trap_BotQueueConsoleMessage +import trap_BotFreeChatState +import trap_BotAllocChatState +import trap_Characteristic_String +import trap_Characteristic_BInteger +import trap_Characteristic_Integer +import trap_Characteristic_BFloat +import trap_Characteristic_Float +import trap_BotFreeCharacter +import trap_BotLoadCharacter +import trap_EA_ResetInput +import trap_EA_GetInput +import trap_EA_EndRegular +import trap_EA_ForcePower +import trap_EA_Alt_Attack +import trap_EA_View +import trap_EA_Move +import trap_EA_DelayedJump +import trap_EA_Jump +import trap_EA_SelectWeapon +import trap_EA_MoveRight +import trap_EA_MoveLeft +import trap_EA_MoveBack +import trap_EA_MoveForward +import trap_EA_MoveDown +import trap_EA_MoveUp +import trap_EA_Crouch +import trap_EA_Respawn +import trap_EA_Use +import trap_EA_Attack +import trap_EA_Talk +import trap_EA_Gesture +import trap_EA_Action +import trap_EA_Command +import trap_EA_SayTeam +import trap_EA_Say +import trap_AAS_PredictClientMovement +import trap_AAS_Swimming +import trap_AAS_AlternativeRouteGoals +import trap_AAS_PredictRoute +import trap_AAS_EnableRoutingArea +import trap_AAS_AreaTravelTimeToGoalArea +import trap_AAS_AreaReachability +import trap_AAS_IntForBSPEpairKey +import trap_AAS_FloatForBSPEpairKey +import trap_AAS_VectorForBSPEpairKey +import trap_AAS_ValueForBSPEpairKey +import trap_AAS_NextBSPEntity +import trap_AAS_PointContents +import trap_AAS_TraceAreas +import trap_AAS_PointReachabilityAreaIndex +import trap_AAS_PointAreaNum +import trap_AAS_Time +import trap_AAS_PresenceTypeBoundingBox +import trap_AAS_Initialized +import trap_AAS_EntityInfo +import trap_AAS_AreaInfo +import trap_AAS_BBoxAreas +import trap_BotUserCommand +import trap_BotGetServerCommand +import trap_BotGetSnapshotEntity +import trap_BotLibTest +import trap_BotLibUpdateEntity +import trap_BotLibLoadMap +import trap_BotLibStartFrame +import trap_BotLibDefine +import trap_BotLibVarGet +import trap_BotLibVarSet +import trap_BotLibShutdown +import trap_BotLibSetup +import trap_DebugPolygonDelete +import trap_DebugPolygonCreate +import trap_GetEntityToken +import trap_GetUsercmd +import trap_BotFreeClient +import trap_BotAllocateClient +import trap_EntityContact +import trap_EntitiesInBox +import trap_UnlinkEntity +import trap_LinkEntity +import trap_AreasConnected +import trap_AdjustAreaPortalState +import trap_InPVSIgnorePortals +import trap_InPVS +import trap_PointContents +import trap_Trace +import trap_SetBrushModel +import trap_GetServerinfo +import trap_SetUserinfo +import trap_GetUserinfo +import trap_GetConfigstring +import trap_SetConfigstring +import trap_SendServerCommand +import trap_DropClient +import trap_LocateGameData +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_VariableIntegerValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_SendConsoleCommand +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Args +import trap_Argv +import trap_Argc +import trap_Milliseconds +import trap_Error +import trap_Printf +import g_timeouttospec +import g_forceDodge +import g_dismember +import g_singlePlayer +import g_enableBreath +import g_enableDust +import g_rankings +import pmove_msec +import pmove_fixed +import g_smoothClients +import g_blueteam +import g_redteam +import g_debugUp +import g_debugRight +import g_debugForward +import g_filterBan +import g_banIPs +import g_teamForceBalance +import g_teamAutoJoin +import g_allowVote +import g_blood +import g_doWarmup +import g_warmup +import g_motd +import g_synchronousClients +import g_adaptRespawn +import g_weaponTeamRespawn +import g_weaponRespawn +import g_debugDamage +import g_debugAlloc +import g_debugMove +import g_inactivity +import g_forcerespawn +import g_quadfactor +import g_knockback +import g_speed +import g_gravity +import g_needpass +import g_password +import g_friendlySaber +import g_friendlyFire +import g_saberInterpolate +import g_capturelimit +import g_timelimit +import g_duel_fraglimit +import g_fraglimit +import g_duelWeaponDisable +import g_weaponDisable +import g_forcePowerDisable +import g_spawnInvulnerability +import g_forceRegenTime +import g_saberLocking +import g_privateDuel +import g_forceBasedTeams +import g_maxForceRank +import g_dmflags +import g_autoMapCycle +import g_restarted +import g_maxGameClients +import g_maxclients +import g_cheats +import g_dedicated +import g_gametype +import g_entities +import level +import Pickup_Team +import CheckTeamStatus +import TeamplayInfoMessage +import Team_GetLocationMsg +import Team_GetLocation +import SelectSagaSpawnPoint +import SelectCTFSpawnPoint +import Team_FreeEntity +import Team_ReturnFlag +import Team_InitGame +import Team_CheckHurtCarrier +import Team_FragBonuses +import Team_DroppedFlagThink +import AddTeamScore +import TeamColorString +import OtherTeamName +import TeamName +import OtherTeam +import BotAIStartFrame +import BotAIShutdownClient +import BotAISetupClient +import BotAILoadMap +import BotAIShutdown +import BotAISetup +import B_CleanupAlloc +import B_InitAlloc +import InFieldOfVision +import BotOrder +import OrgVisible +import InitSagaMode +import G_ClearClientLog +import G_LogExit +import G_LogWeaponOutput +import G_LogWeaponInit +import G_LogWeaponItem +import G_LogWeaponPowerup +import G_LogWeaponFrag +import G_LogWeaponDeath +import G_LogWeaponKill +import G_LogWeaponDamage +import G_LogWeaponFire +import G_LogWeaponPickup +import Jedi_DodgeEvasion +import ForceTelepathy +import ForceThrow +import ForceSeeing +import ForceTeamForceReplenish +import ForceTeamHeal +import ForceAbsorb +import ForceProtect +import ForceGrip +import ForceRage +import ForceSpeed +import ForceHeal +import ForcePowerUsableOn +import WP_ForcePowersUpdate +import WP_SpawnInitForcePowers +import WP_InitForcePowers +import WP_SaberInitBladeData +import WP_SaberCanBlock +import WP_SaberPositionUpdate +import WP_ForcePowerStop +import HasSetSaberOnly +import G_PreDefSound +import G_RefreshNextMap +import G_DoesMapSupportGametype +import BotInterbreedEndMatch +import Svcmd_BotList_f +import Svcmd_AddBot_f +import G_BotConnect +import G_RemoveQueuedBotBegin +import G_CheckBotSpawn +import G_GetBotInfoByName +import G_GetBotInfoByNumber +import G_InitBots +import UpdateTournamentInfo +import G_WriteSessionData +import G_InitWorldSession +import G_InitSessionData +import G_ReadSessionData +import Svcmd_GameMem_f +import G_InitMemory +import G_Alloc +import Team_CheckDroppedItem +import OnSameTeam +import G_RunClient +import ClientEndFrame +import ClientThink +import G_CheckClientTimeouts +import ClientCommand +import ClientBegin +import ClientDisconnect +import ClientUserinfoChanged +import ClientConnect +import G_GetStripEdString +import G_Error +import G_Printf +import SendScoreboardMessageToAllClients +import G_LogPrintf +import G_RunThink +import CheckTeamLeader +import SetLeader +import FindIntermissionPoint +import g_ff_objectives +import DeathmatchScoreboardMessage +import G_SetStats +import MoveClientToIntermission +import BlowDetpacks +import FireWeapon +import G_FilterPacket +import G_ProcessIPBans +import ConsoleCommand +import gJMSaberEnt +import SpotWouldTelefrag +import CalculateRanks +import AddScore +import player_die +import ClientSpawn +import InitBodyQue +import BeginIntermission +import respawn +import CopyToBodyQue +import SelectSpawnPoint +import SetClientViewAngle +import PickTeam +import TeamLeader +import TeamCount +import CheckGauntletAttack +import SnapVectorTowards +import CalcMuzzlePoint +import LogAccuracyHit +import WP_FireGenericBlasterMissile +import WP_FireTurretMissile +import G_PlayerBecomeATST +import ATST_ManageDamageBoxes +import TeleportPlayer +import trigger_teleporter_touch +import Touch_DoorTrigger +import G_RunMover +import WP_FireBlasterMissile +import G_ExplodeMissile +import G_BounceProjectile +import CreateMissile +import G_RunMissile +import G_ReflectMissile +import ExplodeDeath +import TossClientCubes +import TossClientItems +import TossClientWeapon +import body_die +import G_RadiusDamage +import G_Damage +import CanDamage +import trap_G2API_SetBoneAnim +import trap_G2API_GetGLAName +import trap_G2API_SetBoneAngles +import trap_G2API_CleanGhoul2Models +import trap_G2API_RemoveGhoul2Model +import trap_G2API_HasGhoul2ModelOnIndex +import trap_G2API_DuplicateGhoul2Instance +import trap_G2API_CopySpecificGhoul2Model +import trap_G2API_CopyGhoul2Instance +import trap_G2API_SetBoltInfo +import trap_G2API_AddBolt +import trap_G2API_InitGhoul2Model +import trap_G2API_GetBoltMatrix_NoReconstruct +import trap_G2API_GetBoltMatrix +import trap_G2_HaveWeGhoul2Models +import trap_G2_SetGhoul2ModelIndexes +import trap_G2_ListModelBones +import trap_G2_ListModelSurfaces +import G_SkinIndex +import BuildShaderStateConfig +import AddRemap +import G_SetOrigin +import G_AddEvent +import G_AddPredictableEvent +import vtos +import tv +import G_RunObject +import G_TouchSolids +import G_TouchTriggers +import G_EntitiesFree +import G_FreeEntity +import G_KillG2Queue +import G_SendG2KillQueue +import TryUse +import G_EntitySound +import G_SoundAtLoc +import G_Sound +import G_MuteSound +import G_ScreenShake +import G_PlayEffect +import G_TempEntity +import G_Spawn +import G_InitGentity +import G_SetAngles +import G_SetMovedir +import G_UseTargets +import G_PickTarget +import G_RadiusList +import G_Find +import G_KillBox +import G_TeamCommand +import G_EffectIndex +import G_SoundIndex +import G_ModelIndex +import SaveRegisteredItems +import RegisterItem +import ClearRegisteredItems +import Touch_Item +import Add_Ammo +import ArmorIndex +import Think_Weapon +import FinishSpawningItem +import G_SpawnItem +import SetRespawn +import LaunchItem +import Drop_Item +import PrecacheItem +import UseHoldableItem +import RespawnItem +import G_RunItem +import G_CheckTeamItems +import ItemUse_MedPack +import ItemUse_Seeker +import ItemUse_Sentry +import ItemUse_Shield +import ItemUse_Binoculars +import G_GetDuelWinner +import Cmd_EngageDuel_f +import Cmd_ToggleSaber_f +import G_ItemUsable +import Cmd_SaberAttackCycle_f +import Cmd_FollowCycle_f +import SetTeam +import BroadcastTeamChange +import StopFollowing +import Cmd_Score_f +import G_NewString +import G_SpawnEntitiesFromString +import G_SpawnVector +import G_SpawnInt +import G_SpawnFloat +import G_SpawnString +import g2SaberInstance +import precachedKyle +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $1087 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 97 +char 1 118 +char 1 101 +char 1 0 +align 1 +LABELV $1075 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 107 +char 1 105 +char 1 108 +char 1 108 +char 1 111 +char 1 110 +char 1 101 +char 1 119 +char 1 97 +char 1 121 +char 1 115 +char 1 0 +align 1 +LABELV $1072 +char 1 94 +char 1 51 +char 1 87 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 110 +char 1 117 +char 1 109 +char 1 98 +char 1 101 +char 1 114 +char 1 32 +char 1 40 +char 1 116 +char 1 111 +char 1 32 +char 1 109 +char 1 111 +char 1 100 +char 1 105 +char 1 102 +char 1 121 +char 1 41 +char 1 32 +char 1 110 +char 1 101 +char 1 101 +char 1 100 +char 1 101 +char 1 100 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 10 +char 1 83 +char 1 121 +char 1 110 +char 1 116 +char 1 97 +char 1 120 +char 1 58 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 32 +char 1 60 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 62 +char 1 32 +char 1 60 +char 1 110 +char 1 62 +char 1 10 +char 1 0 +align 1 +LABELV $1044 +char 1 94 +char 1 51 +char 1 70 +char 1 108 +char 1 97 +char 1 103 +char 1 32 +char 1 115 +char 1 116 +char 1 114 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 110 +char 1 101 +char 1 101 +char 1 100 +char 1 101 +char 1 100 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 10 +char 1 84 +char 1 121 +char 1 112 +char 1 101 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 97 +char 1 32 +char 1 108 +char 1 105 +char 1 115 +char 1 116 +char 1 32 +char 1 111 +char 1 102 +char 1 32 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 32 +char 1 97 +char 1 110 +char 1 100 +char 1 32 +char 1 116 +char 1 104 +char 1 101 +char 1 105 +char 1 114 +char 1 32 +char 1 99 +char 1 111 +char 1 114 +char 1 114 +char 1 101 +char 1 115 +char 1 112 +char 1 111 +char 1 110 +char 1 100 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 99 +char 1 104 +char 1 97 +char 1 114 +char 1 97 +char 1 99 +char 1 116 +char 1 101 +char 1 114 +char 1 115 +char 1 44 +char 1 32 +char 1 111 +char 1 114 +char 1 32 +char 1 117 +char 1 115 +char 1 101 +char 1 32 +char 1 48 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 110 +char 1 111 +char 1 32 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 46 +char 1 10 +char 1 83 +char 1 121 +char 1 110 +char 1 116 +char 1 97 +char 1 120 +char 1 58 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 32 +char 1 60 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 62 +char 1 32 +char 1 60 +char 1 110 +char 1 62 +char 1 10 +char 1 0 +align 1 +LABELV $1040 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 0 +align 1 +LABELV $1010 +char 1 94 +char 1 51 +char 1 70 +char 1 108 +char 1 97 +char 1 103 +char 1 32 +char 1 115 +char 1 116 +char 1 114 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 110 +char 1 101 +char 1 101 +char 1 100 +char 1 101 +char 1 100 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 10 +char 1 106 +char 1 32 +char 1 45 +char 1 32 +char 1 74 +char 1 117 +char 1 109 +char 1 112 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 10 +char 1 100 +char 1 32 +char 1 45 +char 1 32 +char 1 68 +char 1 117 +char 1 99 +char 1 107 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 10 +char 1 99 +char 1 32 +char 1 45 +char 1 32 +char 1 83 +char 1 110 +char 1 105 +char 1 112 +char 1 101 +char 1 32 +char 1 111 +char 1 114 +char 1 32 +char 1 99 +char 1 97 +char 1 109 +char 1 112 +char 1 32 +char 1 115 +char 1 116 +char 1 97 +char 1 110 +char 1 100 +char 1 105 +char 1 110 +char 1 103 +char 1 10 +char 1 102 +char 1 32 +char 1 45 +char 1 32 +char 1 87 +char 1 97 +char 1 105 +char 1 116 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 102 +char 1 117 +char 1 110 +char 1 99 +char 1 10 +char 1 109 +char 1 32 +char 1 45 +char 1 32 +char 1 68 +char 1 111 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 119 +char 1 104 +char 1 101 +char 1 110 +char 1 32 +char 1 102 +char 1 117 +char 1 110 +char 1 99 +char 1 32 +char 1 105 +char 1 115 +char 1 32 +char 1 117 +char 1 110 +char 1 100 +char 1 101 +char 1 114 +char 1 10 +char 1 115 +char 1 32 +char 1 45 +char 1 32 +char 1 83 +char 1 110 +char 1 105 +char 1 112 +char 1 101 +char 1 32 +char 1 111 +char 1 114 +char 1 32 +char 1 99 +char 1 97 +char 1 109 +char 1 112 +char 1 10 +char 1 120 +char 1 32 +char 1 45 +char 1 32 +char 1 79 +char 1 110 +char 1 101 +char 1 119 +char 1 97 +char 1 121 +char 1 44 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 119 +char 1 97 +char 1 114 +char 1 100 +char 1 10 +char 1 121 +char 1 32 +char 1 45 +char 1 32 +char 1 79 +char 1 110 +char 1 101 +char 1 119 +char 1 97 +char 1 121 +char 1 44 +char 1 32 +char 1 98 +char 1 97 +char 1 99 +char 1 107 +char 1 10 +char 1 103 +char 1 32 +char 1 45 +char 1 32 +char 1 77 +char 1 105 +char 1 115 +char 1 115 +char 1 105 +char 1 111 +char 1 110 +char 1 32 +char 1 103 +char 1 111 +char 1 97 +char 1 108 +char 1 10 +char 1 110 +char 1 32 +char 1 45 +char 1 32 +char 1 78 +char 1 111 +char 1 32 +char 1 118 +char 1 105 +char 1 115 +char 1 105 +char 1 98 +char 1 105 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 10 +char 1 69 +char 1 120 +char 1 97 +char 1 109 +char 1 112 +char 1 108 +char 1 101 +char 1 32 +char 1 40 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 97 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 116 +char 1 104 +char 1 101 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 32 +char 1 119 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 32 +char 1 106 +char 1 117 +char 1 109 +char 1 112 +char 1 32 +char 1 97 +char 1 116 +char 1 44 +char 1 32 +char 1 97 +char 1 110 +char 1 100 +char 1 32 +char 1 114 +char 1 101 +char 1 118 +char 1 101 +char 1 114 +char 1 115 +char 1 101 +char 1 32 +char 1 111 +char 1 110 +char 1 32 +char 1 119 +char 1 104 +char 1 101 +char 1 110 +char 1 32 +char 1 116 +char 1 114 +char 1 97 +char 1 118 +char 1 101 +char 1 108 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 97 +char 1 32 +char 1 116 +char 1 114 +char 1 97 +char 1 105 +char 1 108 +char 1 32 +char 1 98 +char 1 97 +char 1 99 +char 1 107 +char 1 119 +char 1 97 +char 1 114 +char 1 100 +char 1 115 +char 1 41 +char 1 58 +char 1 10 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 32 +char 1 106 +char 1 120 +char 1 10 +char 1 0 +align 1 +LABELV $1006 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $999 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 112 +char 1 97 +char 1 119 +char 1 110 +char 1 116 +char 1 101 +char 1 108 +char 1 101 +char 1 0 +align 1 +LABELV $996 +char 1 94 +char 1 51 +char 1 89 +char 1 111 +char 1 117 +char 1 32 +char 1 100 +char 1 105 +char 1 100 +char 1 110 +char 1 39 +char 1 116 +char 1 32 +char 1 115 +char 1 112 +char 1 101 +char 1 99 +char 1 105 +char 1 102 +char 1 121 +char 1 32 +char 1 97 +char 1 110 +char 1 32 +char 1 105 +char 1 110 +char 1 100 +char 1 101 +char 1 120 +char 1 46 +char 1 32 +char 1 65 +char 1 115 +char 1 115 +char 1 117 +char 1 109 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 46 +char 1 10 +char 1 0 +align 1 +LABELV $991 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 116 +char 1 101 +char 1 108 +char 1 101 +char 1 0 +align 1 +LABELV $984 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 114 +char 1 101 +char 1 109 +char 1 0 +align 1 +LABELV $977 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 0 +align 1 +LABELV $974 +char 1 94 +char 1 51 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 97 +char 1 118 +char 1 101 +char 1 94 +char 1 55 +char 1 32 +char 1 45 +char 1 32 +char 1 83 +char 1 97 +char 1 118 +char 1 101 +char 1 115 +char 1 32 +char 1 97 +char 1 108 +char 1 108 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 100 +char 1 97 +char 1 116 +char 1 97 +char 1 32 +char 1 105 +char 1 110 +char 1 116 +char 1 111 +char 1 32 +char 1 97 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 108 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 32 +char 1 117 +char 1 115 +char 1 101 +char 1 10 +char 1 0 +align 1 +LABELV $973 +char 1 94 +char 1 51 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 107 +char 1 105 +char 1 108 +char 1 108 +char 1 111 +char 1 110 +char 1 101 +char 1 119 +char 1 97 +char 1 121 +char 1 115 +char 1 94 +char 1 55 +char 1 32 +char 1 45 +char 1 32 +char 1 82 +char 1 101 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 115 +char 1 32 +char 1 111 +char 1 110 +char 1 101 +char 1 119 +char 1 97 +char 1 121 +char 1 32 +char 1 40 +char 1 98 +char 1 97 +char 1 99 +char 1 107 +char 1 119 +char 1 97 +char 1 114 +char 1 100 +char 1 32 +char 1 97 +char 1 110 +char 1 100 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 119 +char 1 97 +char 1 114 +char 1 100 +char 1 41 +char 1 32 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 32 +char 1 111 +char 1 110 +char 1 32 +char 1 97 +char 1 108 +char 1 108 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 115 +char 1 32 +char 1 105 +char 1 110 +char 1 32 +char 1 116 +char 1 104 +char 1 101 +char 1 32 +char 1 108 +char 1 101 +char 1 118 +char 1 101 +char 1 108 +char 1 10 +char 1 10 +char 1 0 +align 1 +LABELV $972 +char 1 94 +char 1 51 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 116 +char 1 101 +char 1 108 +char 1 101 +char 1 94 +char 1 55 +char 1 32 +char 1 45 +char 1 32 +char 1 84 +char 1 101 +char 1 108 +char 1 101 +char 1 112 +char 1 111 +char 1 114 +char 1 116 +char 1 32 +char 1 121 +char 1 111 +char 1 117 +char 1 114 +char 1 115 +char 1 101 +char 1 108 +char 1 102 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 116 +char 1 104 +char 1 101 +char 1 32 +char 1 115 +char 1 112 +char 1 101 +char 1 99 +char 1 105 +char 1 102 +char 1 105 +char 1 101 +char 1 100 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 39 +char 1 115 +char 1 32 +char 1 108 +char 1 111 +char 1 99 +char 1 97 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 10 +char 1 0 +align 1 +LABELV $971 +char 1 94 +char 1 51 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 94 +char 1 55 +char 1 32 +char 1 45 +char 1 32 +char 1 83 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 101 +char 1 115 +char 1 32 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 32 +char 1 111 +char 1 110 +char 1 32 +char 1 97 +char 1 110 +char 1 32 +char 1 101 +char 1 120 +char 1 105 +char 1 115 +char 1 116 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 40 +char 1 116 +char 1 121 +char 1 112 +char 1 101 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 115 +char 1 119 +char 1 105 +char 1 116 +char 1 99 +char 1 104 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 104 +char 1 101 +char 1 108 +char 1 112 +char 1 41 +char 1 10 +char 1 10 +char 1 0 +align 1 +LABELV $970 +char 1 94 +char 1 51 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 94 +char 1 55 +char 1 32 +char 1 45 +char 1 32 +char 1 83 +char 1 97 +char 1 109 +char 1 101 +char 1 32 +char 1 97 +char 1 115 +char 1 32 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 44 +char 1 32 +char 1 98 +char 1 117 +char 1 116 +char 1 32 +char 1 97 +char 1 100 +char 1 100 +char 1 115 +char 1 32 +char 1 97 +char 1 32 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 40 +char 1 116 +char 1 121 +char 1 112 +char 1 101 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 104 +char 1 101 +char 1 108 +char 1 112 +char 1 41 +char 1 10 +char 1 10 +char 1 0 +align 1 +LABELV $969 +char 1 94 +char 1 51 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 114 +char 1 101 +char 1 109 +char 1 94 +char 1 55 +char 1 32 +char 1 45 +char 1 32 +char 1 82 +char 1 101 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 32 +char 1 97 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 40 +char 1 114 +char 1 101 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 115 +char 1 32 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 32 +char 1 117 +char 1 110 +char 1 108 +char 1 101 +char 1 115 +char 1 115 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 105 +char 1 110 +char 1 100 +char 1 101 +char 1 120 +char 1 32 +char 1 105 +char 1 115 +char 1 32 +char 1 115 +char 1 112 +char 1 101 +char 1 99 +char 1 105 +char 1 102 +char 1 105 +char 1 101 +char 1 100 +char 1 32 +char 1 97 +char 1 115 +char 1 32 +char 1 97 +char 1 32 +char 1 112 +char 1 97 +char 1 114 +char 1 97 +char 1 109 +char 1 101 +char 1 116 +char 1 101 +char 1 114 +char 1 41 +char 1 10 +char 1 10 +char 1 0 +align 1 +LABELV $968 +char 1 94 +char 1 51 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 97 +char 1 100 +char 1 100 +char 1 94 +char 1 55 +char 1 32 +char 1 45 +char 1 32 +char 1 65 +char 1 100 +char 1 100 +char 1 32 +char 1 97 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 40 +char 1 111 +char 1 112 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 32 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 112 +char 1 97 +char 1 114 +char 1 97 +char 1 109 +char 1 101 +char 1 116 +char 1 101 +char 1 114 +char 1 32 +char 1 119 +char 1 105 +char 1 108 +char 1 108 +char 1 32 +char 1 105 +char 1 110 +char 1 115 +char 1 101 +char 1 114 +char 1 116 +char 1 32 +char 1 116 +char 1 104 +char 1 101 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 97 +char 1 102 +char 1 116 +char 1 101 +char 1 114 +char 1 32 +char 1 116 +char 1 104 +char 1 101 +char 1 32 +char 1 115 +char 1 112 +char 1 101 +char 1 99 +char 1 105 +char 1 102 +char 1 105 +char 1 101 +char 1 100 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 105 +char 1 110 +char 1 100 +char 1 101 +char 1 120 +char 1 32 +char 1 105 +char 1 110 +char 1 32 +char 1 97 +char 1 32 +char 1 116 +char 1 114 +char 1 97 +char 1 105 +char 1 108 +char 1 41 +char 1 10 +char 1 10 +char 1 0 +align 1 +LABELV $967 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 119 +char 1 112 +char 1 95 +char 1 99 +char 1 109 +char 1 100 +char 1 108 +char 1 105 +char 1 115 +char 1 116 +char 1 0 +align 1 +LABELV $937 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 95 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 95 +char 1 100 +char 1 101 +char 1 97 +char 1 116 +char 1 104 +char 1 109 +char 1 97 +char 1 116 +char 1 99 +char 1 104 +char 1 0 +align 1 +LABELV $936 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 95 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 95 +char 1 115 +char 1 116 +char 1 97 +char 1 114 +char 1 116 +char 1 0 +align 1 +LABELV $912 +char 1 0 +align 1 +LABELV $911 +char 1 109 +char 1 97 +char 1 112 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 0 +align 1 +LABELV $909 +char 1 80 +char 1 97 +char 1 116 +char 1 104 +char 1 32 +char 1 100 +char 1 97 +char 1 116 +char 1 97 +char 1 32 +char 1 104 +char 1 97 +char 1 115 +char 1 32 +char 1 98 +char 1 101 +char 1 101 +char 1 110 +char 1 32 +char 1 115 +char 1 97 +char 1 118 +char 1 101 +char 1 100 +char 1 32 +char 1 97 +char 1 110 +char 1 100 +char 1 32 +char 1 117 +char 1 112 +char 1 100 +char 1 97 +char 1 116 +char 1 101 +char 1 100 +char 1 46 +char 1 32 +char 1 89 +char 1 111 +char 1 117 +char 1 32 +char 1 109 +char 1 97 +char 1 121 +char 1 32 +char 1 110 +char 1 101 +char 1 101 +char 1 100 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 114 +char 1 101 +char 1 115 +char 1 116 +char 1 97 +char 1 114 +char 1 116 +char 1 32 +char 1 116 +char 1 104 +char 1 101 +char 1 32 +char 1 108 +char 1 101 +char 1 118 +char 1 101 +char 1 108 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 115 +char 1 111 +char 1 109 +char 1 101 +char 1 32 +char 1 116 +char 1 104 +char 1 105 +char 1 110 +char 1 103 +char 1 115 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 98 +char 1 101 +char 1 32 +char 1 112 +char 1 114 +char 1 111 +char 1 112 +char 1 101 +char 1 114 +char 1 108 +char 1 121 +char 1 32 +char 1 99 +char 1 97 +char 1 108 +char 1 99 +char 1 117 +char 1 108 +char 1 97 +char 1 116 +char 1 101 +char 1 100 +char 1 46 +char 1 10 +char 1 0 +align 1 +LABELV $890 +char 1 37 +char 1 115 +char 1 125 +char 1 32 +char 1 37 +char 1 102 +char 1 10 +char 1 0 +align 1 +LABELV $879 +char 1 37 +char 1 115 +char 1 37 +char 1 105 +char 1 32 +char 1 0 +align 1 +LABELV $878 +char 1 37 +char 1 115 +char 1 37 +char 1 105 +char 1 45 +char 1 37 +char 1 105 +char 1 32 +char 1 0 +align 1 +LABELV $872 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 102 +char 1 32 +char 1 40 +char 1 37 +char 1 102 +char 1 32 +char 1 37 +char 1 102 +char 1 32 +char 1 37 +char 1 102 +char 1 41 +char 1 32 +char 1 123 +char 1 32 +char 1 0 +align 1 +LABELV $869 +char 1 94 +char 1 49 +char 1 69 +char 1 82 +char 1 82 +char 1 79 +char 1 82 +char 1 58 +char 1 32 +char 1 67 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 111 +char 1 112 +char 1 101 +char 1 110 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 119 +char 1 114 +char 1 105 +char 1 116 +char 1 101 +char 1 32 +char 1 112 +char 1 97 +char 1 116 +char 1 104 +char 1 32 +char 1 100 +char 1 97 +char 1 116 +char 1 97 +char 1 10 +char 1 0 +align 1 +LABELV $826 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 95 +char 1 67 +char 1 84 +char 1 70 +char 1 95 +char 1 98 +char 1 108 +char 1 117 +char 1 101 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 0 +align 1 +LABELV $823 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 95 +char 1 67 +char 1 84 +char 1 70 +char 1 95 +char 1 114 +char 1 101 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 0 +align 1 +LABELV $732 +char 1 94 +char 1 49 +char 1 82 +char 1 111 +char 1 117 +char 1 116 +char 1 101 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 101 +char 1 120 +char 1 99 +char 1 101 +char 1 101 +char 1 100 +char 1 115 +char 1 32 +char 1 109 +char 1 97 +char 1 120 +char 1 105 +char 1 109 +char 1 117 +char 1 109 +char 1 32 +char 1 108 +char 1 101 +char 1 110 +char 1 103 +char 1 116 +char 1 104 +char 1 10 +char 1 0 +align 1 +LABELV $729 +char 1 94 +char 1 51 +char 1 66 +char 1 111 +char 1 116 +char 1 32 +char 1 114 +char 1 111 +char 1 117 +char 1 116 +char 1 101 +char 1 32 +char 1 100 +char 1 97 +char 1 116 +char 1 97 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 102 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $726 +char 1 98 +char 1 111 +char 1 116 +char 1 114 +char 1 111 +char 1 117 +char 1 116 +char 1 101 +char 1 115 +char 1 47 +char 1 37 +char 1 115 +char 1 46 +char 1 119 +char 1 110 +char 1 116 +char 1 0 +char 1 0 +align 1 +LABELV $688 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 0 +align 1 +LABELV $685 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 121 +char 1 115 +char 1 97 +char 1 108 +char 1 105 +char 1 109 +char 1 97 +char 1 114 +char 1 105 +char 1 0 +align 1 +LABELV $682 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 95 +char 1 98 +char 1 111 +char 1 111 +char 1 110 +char 1 0 +align 1 +LABELV $679 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 95 +char 1 101 +char 1 110 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 101 +char 1 110 +char 1 95 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 0 +align 1 +LABELV $676 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 95 +char 1 101 +char 1 110 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 101 +char 1 110 +char 1 95 +char 1 100 +char 1 97 +char 1 114 +char 1 107 +char 1 0 +align 1 +LABELV $673 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 101 +char 1 110 +char 1 116 +char 1 114 +char 1 121 +char 1 95 +char 1 103 +char 1 117 +char 1 110 +char 1 0 +align 1 +LABELV $670 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 109 +char 1 101 +char 1 100 +char 1 112 +char 1 97 +char 1 99 +char 1 0 +align 1 +LABELV $667 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 0 +align 1 +LABELV $664 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 101 +char 1 101 +char 1 107 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $617 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 95 +char 1 115 +char 1 97 +char 1 103 +char 1 97 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 105 +char 1 118 +char 1 101 +char 1 0 +align 1 +LABELV $493 +char 1 102 +char 1 117 +char 1 110 +char 1 99 +char 1 95 +char 1 0 +align 1 +LABELV $470 +char 1 94 +char 1 51 +char 1 70 +char 1 105 +char 1 110 +char 1 105 +char 1 115 +char 1 104 +char 1 101 +char 1 100 +char 1 32 +char 1 99 +char 1 111 +char 1 110 +char 1 110 +char 1 101 +char 1 99 +char 1 116 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 37 +char 1 105 +char 1 46 +char 1 10 +char 1 0 +align 1 +LABELV $464 +char 1 94 +char 1 49 +char 1 67 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 108 +char 1 105 +char 1 110 +char 1 107 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 37 +char 1 105 +char 1 44 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 108 +char 1 105 +char 1 109 +char 1 105 +char 1 116 +char 1 32 +char 1 104 +char 1 105 +char 1 116 +char 1 46 +char 1 10 +char 1 0 +align 1 +LABELV $444 +char 1 94 +char 1 51 +char 1 83 +char 1 105 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 115 +char 1 32 +char 1 99 +char 1 97 +char 1 110 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 98 +char 1 101 +char 1 32 +char 1 99 +char 1 111 +char 1 110 +char 1 110 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 44 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 104 +char 1 97 +char 1 115 +char 1 32 +char 1 98 +char 1 101 +char 1 101 +char 1 110 +char 1 32 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 32 +char 1 97 +char 1 115 +char 1 32 +char 1 111 +char 1 110 +char 1 108 +char 1 121 +char 1 45 +char 1 102 +char 1 111 +char 1 114 +char 1 119 +char 1 97 +char 1 114 +char 1 100 +char 1 32 +char 1 97 +char 1 110 +char 1 100 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 104 +char 1 97 +char 1 115 +char 1 32 +char 1 98 +char 1 101 +char 1 101 +char 1 110 +char 1 32 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 103 +char 1 101 +char 1 100 +char 1 32 +char 1 97 +char 1 115 +char 1 32 +char 1 111 +char 1 110 +char 1 108 +char 1 121 +char 1 45 +char 1 98 +char 1 97 +char 1 99 +char 1 107 +char 1 119 +char 1 97 +char 1 114 +char 1 100 +char 1 46 +char 1 10 +char 1 0 +align 1 +LABELV $443 +char 1 94 +char 1 49 +char 1 67 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 108 +char 1 105 +char 1 110 +char 1 107 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 37 +char 1 105 +char 1 44 +char 1 32 +char 1 117 +char 1 110 +char 1 114 +char 1 101 +char 1 97 +char 1 99 +char 1 104 +char 1 97 +char 1 98 +char 1 108 +char 1 101 +char 1 32 +char 1 98 +char 1 121 +char 1 32 +char 1 110 +char 1 111 +char 1 100 +char 1 101 +char 1 32 +char 1 98 +char 1 114 +char 1 97 +char 1 110 +char 1 99 +char 1 104 +char 1 105 +char 1 110 +char 1 103 +char 1 46 +char 1 10 +char 1 0 +align 1 +LABELV $339 +char 1 94 +char 1 51 +char 1 80 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 105 +char 1 115 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 99 +char 1 111 +char 1 110 +char 1 110 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 45 +char 1 32 +char 1 82 +char 1 101 +char 1 112 +char 1 97 +char 1 105 +char 1 114 +char 1 105 +char 1 110 +char 1 103 +char 1 46 +char 1 46 +char 1 46 +char 1 10 +char 1 0 +align 1 +LABELV $270 +char 1 94 +char 1 51 +char 1 87 +char 1 80 +char 1 70 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 77 +char 1 111 +char 1 100 +char 1 105 +char 1 102 +char 1 121 +char 1 58 +char 1 32 +char 1 87 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 100 +char 1 111 +char 1 101 +char 1 115 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 101 +char 1 120 +char 1 105 +char 1 115 +char 1 116 +char 1 10 +char 1 0 +align 1 +LABELV $220 +char 1 94 +char 1 51 +char 1 87 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 105 +char 1 110 +char 1 100 +char 1 101 +char 1 120 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 115 +char 1 104 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 32 +char 1 101 +char 1 120 +char 1 105 +char 1 115 +char 1 116 +char 1 44 +char 1 32 +char 1 98 +char 1 117 +char 1 116 +char 1 32 +char 1 100 +char 1 111 +char 1 101 +char 1 115 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 40 +char 1 63 +char 1 41 +char 1 10 +char 1 0 +align 1 +LABELV $212 +char 1 94 +char 1 51 +char 1 87 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 110 +char 1 117 +char 1 109 +char 1 98 +char 1 101 +char 1 114 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 100 +char 1 111 +char 1 101 +char 1 115 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 101 +char 1 120 +char 1 105 +char 1 115 +char 1 116 +char 1 10 +char 1 0 +align 1 +LABELV $183 +char 1 94 +char 1 49 +char 1 69 +char 1 82 +char 1 82 +char 1 79 +char 1 82 +char 1 58 +char 1 32 +char 1 67 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 97 +char 1 108 +char 1 108 +char 1 111 +char 1 99 +char 1 97 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 109 +char 1 101 +char 1 109 +char 1 111 +char 1 114 +char 1 121 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 10 +char 1 0 +align 1 +LABELV $178 +char 1 94 +char 1 51 +char 1 87 +char 1 97 +char 1 114 +char 1 110 +char 1 105 +char 1 110 +char 1 103 +char 1 58 +char 1 32 +char 1 87 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 108 +char 1 105 +char 1 109 +char 1 105 +char 1 116 +char 1 32 +char 1 104 +char 1 105 +char 1 116 +char 1 32 +char 1 40 +char 1 37 +char 1 105 +char 1 41 +char 1 10 +char 1 0 +align 1 +LABELV $174 +char 1 94 +char 1 49 +char 1 70 +char 1 65 +char 1 84 +char 1 65 +char 1 76 +char 1 32 +char 1 69 +char 1 82 +char 1 82 +char 1 79 +char 1 82 +char 1 58 +char 1 32 +char 1 67 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 97 +char 1 108 +char 1 108 +char 1 111 +char 1 99 +char 1 97 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 109 +char 1 101 +char 1 109 +char 1 111 +char 1 114 +char 1 121 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 119 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 10 +char 1 0 +align 1 +LABELV $166 +char 1 94 +char 1 51 +char 1 87 +char 1 97 +char 1 121 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 37 +char 1 105 +char 1 10 +char 1 70 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 32 +char 1 45 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 40 +char 1 37 +char 1 115 +char 1 41 +char 1 32 +char 1 40 +char 1 119 +char 1 37 +char 1 102 +char 1 41 +char 1 10 +char 1 79 +char 1 114 +char 1 105 +char 1 103 +char 1 105 +char 1 110 +char 1 32 +char 1 45 +char 1 32 +char 1 40 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 41 +char 1 10 +char 1 0 +align 1 +LABELV $124 +char 1 117 +char 1 110 +char 1 107 +char 1 110 +char 1 111 +char 1 119 +char 1 110 +char 1 0 +char 1 0 +align 1 +LABELV $84 +char 1 110 +char 1 111 +char 1 110 +char 1 101 +char 1 0 +char 1 0 diff --git a/CODE-mp/game/vm/bg_lib.asm b/CODE-mp/game/vm/bg_lib.asm new file mode 100644 index 0000000..66a24de --- /dev/null +++ b/CODE-mp/game/vm/bg_lib.asm @@ -0,0 +1,5877 @@ +code +proc swapfunc 24 0 +file "../bg_lib.c" +line 81 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:// Copyright (C) 1999-2000 Id Software, Inc. +;4:// +;5:// bg_lib,c -- standard C library replacement routines used by code +;6:// compiled for the virtual machine +;7: +;8:#include "q_shared.h" +;9: +;10:/*- +;11: * Copyright (c) 1992, 1993 +;12: * The Regents of the University of California. All rights reserved. +;13: * +;14: * Redistribution and use in source and binary forms, with or without +;15: * modification, are permitted provided that the following conditions +;16: * are met: +;17: * 1. Redistributions of source code must retain the above copyright +;18: * notice, this list of conditions and the following disclaimer. +;19: * 2. Redistributions in binary form must reproduce the above copyright +;20: * notice, this list of conditions and the following disclaimer in the +;21: * documentation and/or other materials provided with the distribution. +;22: * 3. All advertising materials mentioning features or use of this software +;23: * must display the following acknowledgement: +;24: * This product includes software developed by the University of +;25: * California, Berkeley and its contributors. +;26: * 4. Neither the name of the University nor the names of its contributors +;27: * may be used to endorse or promote products derived from this software +;28: * without specific prior written permission. +;29: * +;30: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +;31: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;32: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +;33: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +;34: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;35: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +;36: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;37: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +;38: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +;39: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +;40: * SUCH DAMAGE. +;41: */ +;42: +;43:#if defined(LIBC_SCCS) && !defined(lint) +;44:#if 0 +;45:static char sccsid[] = "@(#)qsort.c 8.1 (Berkeley) 6/4/93"; +;46:#endif +;47:static const char rcsid[] = +;48: "$Id: bg_lib.c,v 1.23 2000/02/04 06:46:50 zoid Exp $"; +;49:#endif /* LIBC_SCCS and not lint */ +;50: +;51:// bk001127 - needed for DLL's +;52:#if !defined( Q3_VM ) +;53:typedef int cmp_t(const void *, const void *); +;54:#endif +;55: +;56:static char* med3(char *, char *, char *, cmp_t *); +;57:static void swapfunc(char *, char *, int, int); +;58: +;59:#ifndef min +;60:#define min(a, b) (a) < (b) ? a : b +;61:#endif +;62: +;63:/* +;64: * Qsort routine from Bentley & McIlroy's "Engineering a Sort Function". +;65: */ +;66:#define swapcode(TYPE, parmi, parmj, n) { \ +;67: long i = (n) / sizeof (TYPE); \ +;68: register TYPE *pi = (TYPE *) (parmi); \ +;69: register TYPE *pj = (TYPE *) (parmj); \ +;70: do { \ +;71: register TYPE t = *pi; \ +;72: *pi++ = *pj; \ +;73: *pj++ = t; \ +;74: } while (--i > 0); \ +;75:} +;76: +;77:#define SWAPINIT(a, es) swaptype = ((char *)a - (char *)0) % sizeof(long) || \ +;78: es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1; +;79: +;80:static void swapfunc( char* a, char* b, int n, int swaptype) +;81:{ +line 82 +;82: if(swaptype <= 1) +ADDRFP4 12 +INDIRI4 +CNSTI4 1 +GTI4 $37 +line 83 +;83: swapcode(long, a, b, n) +ADDRLP4 8 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +CNSTI4 2 +RSHU4 +CVUI4 4 +ASGNI4 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +LABELV $39 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +LABELV $40 +ADDRLP4 12 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +GTI4 $39 +ADDRGP4 $38 +JUMPV +LABELV $37 +line 85 +;84: else +;85: swapcode(char, a, b, n) +ADDRLP4 8 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +CVUI4 4 +ASGNI4 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +LABELV $42 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 12 +INDIRI1 +ASGNI1 +LABELV $43 +ADDRLP4 12 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +GTI4 $42 +LABELV $38 +line 86 +;86:} +LABELV $36 +endproc swapfunc 24 0 +proc med3 40 8 +line 99 +;87: +;88:#define swap(a, b) \ +;89: if (swaptype == 0) { \ +;90: long t = *(long *)(a); \ +;91: *(long *)(a) = *(long *)(b); \ +;92: *(long *)(b) = t; \ +;93: } else \ +;94: swapfunc(a, b, es, swaptype) +;95: +;96:#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype) +;97: +;98:static char *med3(char* a, char* b, char* c, cmp_t* cmp) +;99:{ +line 100 +;100: return cmp(a, b) < 0 ? +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +GEI4 $51 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +GEI4 $53 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $54 +JUMPV +LABELV $53 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +GEI4 $55 +ADDRLP4 8 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRGP4 $56 +JUMPV +LABELV $55 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +LABELV $56 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +LABELV $54 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $52 +JUMPV +LABELV $51 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +LEI4 $57 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $58 +JUMPV +LABELV $57 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +GEI4 $59 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $60 +JUMPV +LABELV $59 +ADDRLP4 16 +ADDRFP4 8 +INDIRP4 +ASGNP4 +LABELV $60 +ADDRLP4 12 +ADDRLP4 16 +INDIRP4 +ASGNP4 +LABELV $58 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +ASGNP4 +LABELV $52 +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $45 +endproc med3 40 8 +export qsort +proc qsort 104 16 +line 106 +;101: (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a )) +;102: :(cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c )); +;103:} +;104: +;105:void qsort( void* a, size_t n, size_t es, cmp_t* cmp) +;106:{ +LABELV $62 +line 110 +;107: char *pa, *pb, *pc, *pd, *pl, *pm, *pn; +;108: int d, r, swaptype, swap_cnt; +;109: +;110:loop: SWAPINIT(a, es); +ADDRLP4 52 +CNSTU4 3 +ASGNU4 +ADDRLP4 56 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CVUI4 4 +CVIU4 4 +ADDRLP4 52 +INDIRU4 +BANDU4 +ADDRLP4 56 +INDIRU4 +NEU4 $67 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +ADDRLP4 52 +INDIRU4 +BANDU4 +ADDRLP4 56 +INDIRU4 +EQU4 $65 +LABELV $67 +ADDRLP4 44 +CNSTI4 2 +ASGNI4 +ADDRGP4 $66 +JUMPV +LABELV $65 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +CNSTU4 4 +NEU4 $68 +ADDRLP4 48 +CNSTI4 0 +ASGNI4 +ADDRGP4 $69 +JUMPV +LABELV $68 +ADDRLP4 48 +CNSTI4 1 +ASGNI4 +LABELV $69 +ADDRLP4 44 +ADDRLP4 48 +INDIRI4 +ASGNI4 +LABELV $66 +ADDRLP4 16 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 111 +;111: swap_cnt = 0; +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +line 112 +;112: if (n < 7) { +ADDRFP4 4 +INDIRI4 +CNSTI4 7 +GEI4 $70 +line 113 +;113: for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es) +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRGP4 $75 +JUMPV +LABELV $72 +line 114 +;114: for (pl = pm; pl > (char *)a && cmp(pl - es, pl) > 0; +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +ASGNP4 +ADDRGP4 $79 +JUMPV +LABELV $76 +line 116 +;115: pl -= es) +;116: swap(pl, pl - es); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $80 +ADDRLP4 60 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ADDRLP4 60 +INDIRI4 +ASGNI4 +ADDRGP4 $81 +JUMPV +LABELV $80 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 64 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 64 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $81 +LABELV $77 +line 115 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +LABELV $79 +line 114 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +LEU4 $82 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +GTI4 $76 +LABELV $82 +LABELV $73 +line 113 +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $75 +ADDRLP4 32 +INDIRP4 +CVPU4 4 +ADDRFP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CVPU4 4 +LTU4 $72 +line 117 +;117: return; +ADDRGP4 $61 +JUMPV +LABELV $70 +line 119 +;118: } +;119: pm = (char *)a + (n / 2) * es; +ADDRLP4 32 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +DIVI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 120 +;120: if (n > 7) { +ADDRFP4 4 +INDIRI4 +CNSTI4 7 +LEI4 $83 +line 121 +;121: pl = a; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 122 +;122: pn = (char *)a + (n - 1) * es; +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 123 +;123: if (n > 40) { +ADDRFP4 4 +INDIRI4 +CNSTI4 40 +LEI4 $85 +line 124 +;124: d = (n / 8) * es; +ADDRLP4 40 +ADDRFP4 4 +INDIRI4 +CNSTI4 8 +DIVI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ASGNI4 +line 125 +;125: pl = med3(pl, pl + d, pl + 2 * d, cmp); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRLP4 40 +INDIRI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ARGP4 +ADDRLP4 64 +INDIRI4 +CNSTI4 1 +LSHI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 126 +;126: pm = med3(pm - d, pm, pm + d, cmp); +ADDRLP4 76 +ADDRLP4 40 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 76 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 76 +INDIRI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 80 +INDIRP4 +ASGNP4 +line 127 +;127: pn = med3(pn - 2 * d, pn - d, pn, cmp); +ADDRLP4 88 +ADDRLP4 40 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 88 +INDIRI4 +CNSTI4 1 +LSHI4 +SUBP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 88 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 36 +ADDRLP4 92 +INDIRP4 +ASGNP4 +line 128 +;128: } +LABELV $85 +line 129 +;129: pm = med3(pl, pm, pn, cmp); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 60 +INDIRP4 +ASGNP4 +line 130 +;130: } +LABELV $83 +line 131 +;131: swap(a, pm); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $87 +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ASGNI4 +ADDRGP4 $88 +JUMPV +LABELV $87 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $88 +line 132 +;132: pa = pb = (char *)a + es; +ADDRLP4 60 +ADDRFP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 60 +INDIRP4 +ASGNP4 +ADDRLP4 20 +ADDRLP4 60 +INDIRP4 +ASGNP4 +line 134 +;133: +;134: pc = pd = (char *)a + (n - 1) * es; +ADDRLP4 64 +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 24 +ADDRLP4 64 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 64 +INDIRP4 +ASGNP4 +line 135 +;135: for (;;) { +ADDRGP4 $94 +JUMPV +LABELV $93 +line 136 +;136: while (pb <= pc && (r = cmp(pb, a)) <= 0) { +line 137 +;137: if (r == 0) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $96 +line 138 +;138: swap_cnt = 1; +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +line 139 +;139: swap(pa, pb); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $98 +ADDRLP4 68 +ADDRLP4 20 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ASGNI4 +ADDRGP4 $99 +JUMPV +LABELV $98 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $99 +line 140 +;140: pa += es; +ADDRLP4 20 +ADDRFP4 8 +INDIRI4 +ADDRLP4 20 +INDIRP4 +ADDP4 +ASGNP4 +line 141 +;141: } +LABELV $96 +line 142 +;142: pb += es; +ADDRLP4 4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ASGNP4 +line 143 +;143: } +LABELV $94 +line 136 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +GTU4 $100 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 72 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +LEI4 $93 +LABELV $100 +ADDRGP4 $102 +JUMPV +LABELV $101 +line 144 +;144: while (pb <= pc && (r = cmp(pc, a)) >= 0) { +line 145 +;145: if (r == 0) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $104 +line 146 +;146: swap_cnt = 1; +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +line 147 +;147: swap(pc, pd); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $106 +ADDRLP4 76 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 76 +INDIRI4 +ASGNI4 +ADDRGP4 $107 +JUMPV +LABELV $106 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $107 +line 148 +;148: pd -= es; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +line 149 +;149: } +LABELV $104 +line 150 +;150: pc -= es; +ADDRLP4 8 +ADDRLP4 8 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +line 151 +;151: } +LABELV $102 +line 144 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +GTU4 $108 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 80 +INDIRI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +CNSTI4 0 +GEI4 $101 +LABELV $108 +line 152 +;152: if (pb > pc) +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +LEU4 $109 +line 153 +;153: break; +ADDRGP4 $91 +JUMPV +LABELV $109 +line 154 +;154: swap(pb, pc); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $111 +ADDRLP4 84 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ASGNI4 +ADDRGP4 $112 +JUMPV +LABELV $111 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $112 +line 155 +;155: swap_cnt = 1; +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +line 156 +;156: pb += es; +ADDRLP4 4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ASGNP4 +line 157 +;157: pc -= es; +ADDRLP4 8 +ADDRLP4 8 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +line 158 +;158: } +line 135 +ADDRGP4 $94 +JUMPV +LABELV $91 +line 159 +;159: if (swap_cnt == 0) { /* Switch to insertion sort */ +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $113 +line 160 +;160: for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es) +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRGP4 $118 +JUMPV +LABELV $115 +line 161 +;161: for (pl = pm; pl > (char *)a && cmp(pl - es, pl) > 0; +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +ASGNP4 +ADDRGP4 $122 +JUMPV +LABELV $119 +line 163 +;162: pl -= es) +;163: swap(pl, pl - es); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $123 +ADDRLP4 68 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ADDRLP4 68 +INDIRI4 +ASGNI4 +ADDRGP4 $124 +JUMPV +LABELV $123 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 72 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 72 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $124 +LABELV $120 +line 162 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +LABELV $122 +line 161 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +LEU4 $125 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +CNSTI4 0 +GTI4 $119 +LABELV $125 +LABELV $116 +line 160 +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $118 +ADDRLP4 32 +INDIRP4 +CVPU4 4 +ADDRFP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CVPU4 4 +LTU4 $115 +line 164 +;164: return; +ADDRGP4 $61 +JUMPV +LABELV $113 +line 167 +;165: } +;166: +;167: pn = (char *)a + n * es; +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 168 +;168: r = min(pa - (char *)a, pb - pa); +ADDRLP4 72 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ASGNU4 +ADDRLP4 72 +INDIRU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 72 +INDIRU4 +SUBU4 +CVUI4 4 +GEI4 $127 +ADDRLP4 68 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRGP4 $128 +JUMPV +LABELV $127 +ADDRLP4 68 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +LABELV $128 +ADDRLP4 12 +ADDRLP4 68 +INDIRI4 +ASGNI4 +line 169 +;169: vecswap(a, pb - r, r); +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +LEI4 $129 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $129 +line 170 +;170: r = min(pd - pc, pn - pd - es); +ADDRLP4 84 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ASGNU4 +ADDRLP4 84 +INDIRU4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +ADDRLP4 84 +INDIRU4 +SUBU4 +CVUI4 4 +ADDRFP4 8 +INDIRI4 +SUBI4 +GEI4 $132 +ADDRLP4 80 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRGP4 $133 +JUMPV +LABELV $132 +ADDRLP4 80 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRFP4 8 +INDIRI4 +SUBI4 +ASGNI4 +LABELV $133 +ADDRLP4 12 +ADDRLP4 80 +INDIRI4 +ASGNI4 +line 171 +;171: vecswap(pb, pn - r, r); +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +LEI4 $134 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 12 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $134 +line 172 +;172: if ((r = pb - pa) > es) +ADDRLP4 92 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 92 +INDIRI4 +ASGNI4 +ADDRLP4 92 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LEI4 $136 +line 173 +;173: qsort(a, r / es, es, cmp); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 96 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 96 +INDIRI4 +DIVI4 +ARGI4 +ADDRLP4 96 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 qsort +CALLV +pop +LABELV $136 +line 174 +;174: if ((r = pd - pc) > es) { +ADDRLP4 100 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 100 +INDIRI4 +ASGNI4 +ADDRLP4 100 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LEI4 $138 +line 176 +;175: /* Iterate rather than recurse to save stack space */ +;176: a = pn - r; +ADDRFP4 0 +ADDRLP4 36 +INDIRP4 +ADDRLP4 12 +INDIRI4 +SUBP4 +ASGNP4 +line 177 +;177: n = r / es; +ADDRFP4 4 +ADDRLP4 12 +INDIRI4 +ADDRFP4 8 +INDIRI4 +DIVI4 +ASGNI4 +line 178 +;178: goto loop; +ADDRGP4 $62 +JUMPV +LABELV $138 +line 181 +;179: } +;180:/* qsort(pn - r, r / es, es, cmp);*/ +;181:} +LABELV $61 +endproc qsort 104 16 +export strlen +proc strlen 4 0 +line 191 +;182: +;183://================================================================================== +;184: +;185: +;186:// this file is excluded from release builds because of intrinsics +;187: +;188:// bk001211 - gcc errors on compiling strcpy: parse error before `__extension__' +;189:#if defined ( Q3_VM ) +;190: +;191:size_t strlen( const char *string ) { +line 194 +;192: const char *s; +;193: +;194: s = string; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $142 +JUMPV +LABELV $141 +line 195 +;195: while ( *s ) { +line 196 +;196: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 197 +;197: } +LABELV $142 +line 195 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $141 +line 198 +;198: return s - string; +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +RETI4 +LABELV $140 +endproc strlen 4 0 +export strcat +proc strcat 16 0 +line 202 +;199:} +;200: +;201: +;202:char *strcat( char *strDestination, const char *strSource ) { +line 205 +;203: char *s; +;204: +;205: s = strDestination; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $146 +JUMPV +LABELV $145 +line 206 +;206: while ( *s ) { +line 207 +;207: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 208 +;208: } +LABELV $146 +line 206 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $145 +ADDRGP4 $149 +JUMPV +LABELV $148 +line 209 +;209: while ( *strSource ) { +line 210 +;210: *s++ = *strSource++; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI1 +ASGNI1 +line 211 +;211: } +LABELV $149 +line 209 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $148 +line 212 +;212: *s = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 213 +;213: return strDestination; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $144 +endproc strcat 16 0 +export strcpy +proc strcpy 16 0 +line 216 +;214:} +;215: +;216:char *strcpy( char *strDestination, const char *strSource ) { +line 219 +;217: char *s; +;218: +;219: s = strDestination; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $153 +JUMPV +LABELV $152 +line 220 +;220: while ( *strSource ) { +line 221 +;221: *s++ = *strSource++; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI1 +ASGNI1 +line 222 +;222: } +LABELV $153 +line 220 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $152 +line 223 +;223: *s = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 224 +;224: return strDestination; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $151 +endproc strcpy 16 0 +export strcmp +proc strcmp 12 0 +line 228 +;225:} +;226: +;227: +;228:int strcmp( const char *string1, const char *string2 ) { +ADDRGP4 $157 +JUMPV +LABELV $156 +line 229 +;229: while ( *string1 == *string2 && *string1 && *string2 ) { +line 230 +;230: string1++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 231 +;231: string2++; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 232 +;232: } +LABELV $157 +line 229 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $160 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $160 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +NEI4 $156 +LABELV $160 +line 233 +;233: return *string1 - *string2; +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +SUBI4 +RETI4 +LABELV $155 +endproc strcmp 12 0 +export strchr +proc strchr 0 0 +line 237 +;234:} +;235: +;236: +;237:char *strchr( const char *string, int c ) { +ADDRGP4 $163 +JUMPV +LABELV $162 +line 238 +;238: while ( *string ) { +line 239 +;239: if ( *string == c ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRFP4 4 +INDIRI4 +NEI4 $165 +line 240 +;240: return ( char * )string; +ADDRFP4 0 +INDIRP4 +RETP4 +ADDRGP4 $161 +JUMPV +LABELV $165 +line 242 +;241: } +;242: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 243 +;243: } +LABELV $163 +line 238 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $162 +line 244 +;244: return (char *)0; +CNSTP4 0 +RETP4 +LABELV $161 +endproc strchr 0 0 +export strstr +proc strstr 8 0 +line 247 +;245:} +;246: +;247:char *strstr( const char *string, const char *strCharSet ) { +ADDRGP4 $169 +JUMPV +LABELV $168 +line 248 +;248: while ( *string ) { +line 251 +;249: int i; +;250: +;251: for ( i = 0 ; strCharSet[i] ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $174 +JUMPV +LABELV $171 +line 252 +;252: if ( string[i] != strCharSet[i] ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +EQI4 $175 +line 253 +;253: break; +ADDRGP4 $173 +JUMPV +LABELV $175 +line 255 +;254: } +;255: } +LABELV $172 +line 251 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $174 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $171 +LABELV $173 +line 256 +;256: if ( !strCharSet[i] ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $177 +line 257 +;257: return (char *)string; +ADDRFP4 0 +INDIRP4 +RETP4 +ADDRGP4 $167 +JUMPV +LABELV $177 +line 259 +;258: } +;259: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 260 +;260: } +LABELV $169 +line 248 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $168 +line 261 +;261: return (char *)0; +CNSTP4 0 +RETP4 +LABELV $167 +endproc strstr 8 0 +export tolower +proc tolower 4 0 +line 269 +;262:} +;263:#endif // bk001211 +;264: +;265:// bk001120 - presumably needed for Mac +;266://#if !defined(_MSC_VER) && !defined(__linux__) +;267:// bk001127 - undid undo +;268:#if defined ( Q3_VM ) +;269:int tolower( int c ) { +line 270 +;270: if ( c >= 'A' && c <= 'Z' ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 65 +LTI4 $180 +ADDRLP4 0 +INDIRI4 +CNSTI4 90 +GTI4 $180 +line 271 +;271: c += 'a' - 'A'; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 32 +ADDI4 +ASGNI4 +line 272 +;272: } +LABELV $180 +line 273 +;273: return c; +ADDRFP4 0 +INDIRI4 +RETI4 +LABELV $179 +endproc tolower 4 0 +export toupper +proc toupper 4 0 +line 277 +;274:} +;275: +;276: +;277:int toupper( int c ) { +line 278 +;278: if ( c >= 'a' && c <= 'z' ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 97 +LTI4 $183 +ADDRLP4 0 +INDIRI4 +CNSTI4 122 +GTI4 $183 +line 279 +;279: c += 'A' - 'a'; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -32 +ADDI4 +ASGNI4 +line 280 +;280: } +LABELV $183 +line 281 +;281: return c; +ADDRFP4 0 +INDIRI4 +RETI4 +LABELV $182 +endproc toupper 4 0 +export memmove +proc memmove 8 0 +line 287 +;282:} +;283: +;284:#endif +;285://#ifndef _MSC_VER +;286: +;287:void *memmove( void *dest, const void *src, size_t count ) { +line 290 +;288: int i; +;289: +;290: if ( dest > src ) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +LEU4 $186 +line 291 +;291: for ( i = count-1 ; i >= 0 ; i-- ) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRGP4 $191 +JUMPV +LABELV $188 +line 292 +;292: ((char *)dest)[i] = ((char *)src)[i]; +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 293 +;293: } +LABELV $189 +line 291 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +LABELV $191 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $188 +line 294 +;294: } else { +ADDRGP4 $187 +JUMPV +LABELV $186 +line 295 +;295: for ( i = 0 ; i < count ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $195 +JUMPV +LABELV $192 +line 296 +;296: ((char *)dest)[i] = ((char *)src)[i]; +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 297 +;297: } +LABELV $193 +line 295 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $195 +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LTI4 $192 +line 298 +;298: } +LABELV $187 +line 299 +;299: return dest; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $185 +endproc memmove 8 0 +export tan +proc tan 8 4 +line 757 +;300:} +;301: +;302: +;303:#if 0 +;304: +;305:double floor( double x ) { +;306: return (int)(x + 0x40000000) - 0x40000000; +;307:} +;308: +;309:void *memset( void *dest, int c, size_t count ) { +;310: while ( count-- ) { +;311: ((char *)dest)[count] = c; +;312: } +;313: return dest; +;314:} +;315: +;316:void *memcpy( void *dest, const void *src, size_t count ) { +;317: while ( count-- ) { +;318: ((char *)dest)[count] = ((char *)src)[count]; +;319: } +;320: return dest; +;321:} +;322: +;323:char *strncpy( char *strDest, const char *strSource, size_t count ) { +;324: char *s; +;325: +;326: s = strDest; +;327: while ( *strSource && count ) { +;328: *s++ = *strSource++; +;329: count--; +;330: } +;331: while ( count-- ) { +;332: *s++ = 0; +;333: } +;334: return strDest; +;335:} +;336: +;337:double sqrt( double x ) { +;338: float y; +;339: float delta; +;340: float maxError; +;341: +;342: if ( x <= 0 ) { +;343: return 0; +;344: } +;345: +;346: // initial guess +;347: y = x / 2; +;348: +;349: // refine +;350: maxError = x * 0.001; +;351: +;352: do { +;353: delta = ( y * y ) - x; +;354: y -= delta / ( 2 * y ); +;355: } while ( delta > maxError || delta < -maxError ); +;356: +;357: return y; +;358:} +;359: +;360: +;361:float sintable[1024] = { +;362:0.000000,0.001534,0.003068,0.004602,0.006136,0.007670,0.009204,0.010738, +;363:0.012272,0.013805,0.015339,0.016873,0.018407,0.019940,0.021474,0.023008, +;364:0.024541,0.026075,0.027608,0.029142,0.030675,0.032208,0.033741,0.035274, +;365:0.036807,0.038340,0.039873,0.041406,0.042938,0.044471,0.046003,0.047535, +;366:0.049068,0.050600,0.052132,0.053664,0.055195,0.056727,0.058258,0.059790, +;367:0.061321,0.062852,0.064383,0.065913,0.067444,0.068974,0.070505,0.072035, +;368:0.073565,0.075094,0.076624,0.078153,0.079682,0.081211,0.082740,0.084269, +;369:0.085797,0.087326,0.088854,0.090381,0.091909,0.093436,0.094963,0.096490, +;370:0.098017,0.099544,0.101070,0.102596,0.104122,0.105647,0.107172,0.108697, +;371:0.110222,0.111747,0.113271,0.114795,0.116319,0.117842,0.119365,0.120888, +;372:0.122411,0.123933,0.125455,0.126977,0.128498,0.130019,0.131540,0.133061, +;373:0.134581,0.136101,0.137620,0.139139,0.140658,0.142177,0.143695,0.145213, +;374:0.146730,0.148248,0.149765,0.151281,0.152797,0.154313,0.155828,0.157343, +;375:0.158858,0.160372,0.161886,0.163400,0.164913,0.166426,0.167938,0.169450, +;376:0.170962,0.172473,0.173984,0.175494,0.177004,0.178514,0.180023,0.181532, +;377:0.183040,0.184548,0.186055,0.187562,0.189069,0.190575,0.192080,0.193586, +;378:0.195090,0.196595,0.198098,0.199602,0.201105,0.202607,0.204109,0.205610, +;379:0.207111,0.208612,0.210112,0.211611,0.213110,0.214609,0.216107,0.217604, +;380:0.219101,0.220598,0.222094,0.223589,0.225084,0.226578,0.228072,0.229565, +;381:0.231058,0.232550,0.234042,0.235533,0.237024,0.238514,0.240003,0.241492, +;382:0.242980,0.244468,0.245955,0.247442,0.248928,0.250413,0.251898,0.253382, +;383:0.254866,0.256349,0.257831,0.259313,0.260794,0.262275,0.263755,0.265234, +;384:0.266713,0.268191,0.269668,0.271145,0.272621,0.274097,0.275572,0.277046, +;385:0.278520,0.279993,0.281465,0.282937,0.284408,0.285878,0.287347,0.288816, +;386:0.290285,0.291752,0.293219,0.294685,0.296151,0.297616,0.299080,0.300543, +;387:0.302006,0.303468,0.304929,0.306390,0.307850,0.309309,0.310767,0.312225, +;388:0.313682,0.315138,0.316593,0.318048,0.319502,0.320955,0.322408,0.323859, +;389:0.325310,0.326760,0.328210,0.329658,0.331106,0.332553,0.334000,0.335445, +;390:0.336890,0.338334,0.339777,0.341219,0.342661,0.344101,0.345541,0.346980, +;391:0.348419,0.349856,0.351293,0.352729,0.354164,0.355598,0.357031,0.358463, +;392:0.359895,0.361326,0.362756,0.364185,0.365613,0.367040,0.368467,0.369892, +;393:0.371317,0.372741,0.374164,0.375586,0.377007,0.378428,0.379847,0.381266, +;394:0.382683,0.384100,0.385516,0.386931,0.388345,0.389758,0.391170,0.392582, +;395:0.393992,0.395401,0.396810,0.398218,0.399624,0.401030,0.402435,0.403838, +;396:0.405241,0.406643,0.408044,0.409444,0.410843,0.412241,0.413638,0.415034, +;397:0.416430,0.417824,0.419217,0.420609,0.422000,0.423390,0.424780,0.426168, +;398:0.427555,0.428941,0.430326,0.431711,0.433094,0.434476,0.435857,0.437237, +;399:0.438616,0.439994,0.441371,0.442747,0.444122,0.445496,0.446869,0.448241, +;400:0.449611,0.450981,0.452350,0.453717,0.455084,0.456449,0.457813,0.459177, +;401:0.460539,0.461900,0.463260,0.464619,0.465976,0.467333,0.468689,0.470043, +;402:0.471397,0.472749,0.474100,0.475450,0.476799,0.478147,0.479494,0.480839, +;403:0.482184,0.483527,0.484869,0.486210,0.487550,0.488889,0.490226,0.491563, +;404:0.492898,0.494232,0.495565,0.496897,0.498228,0.499557,0.500885,0.502212, +;405:0.503538,0.504863,0.506187,0.507509,0.508830,0.510150,0.511469,0.512786, +;406:0.514103,0.515418,0.516732,0.518045,0.519356,0.520666,0.521975,0.523283, +;407:0.524590,0.525895,0.527199,0.528502,0.529804,0.531104,0.532403,0.533701, +;408:0.534998,0.536293,0.537587,0.538880,0.540171,0.541462,0.542751,0.544039, +;409:0.545325,0.546610,0.547894,0.549177,0.550458,0.551738,0.553017,0.554294, +;410:0.555570,0.556845,0.558119,0.559391,0.560662,0.561931,0.563199,0.564466, +;411:0.565732,0.566996,0.568259,0.569521,0.570781,0.572040,0.573297,0.574553, +;412:0.575808,0.577062,0.578314,0.579565,0.580814,0.582062,0.583309,0.584554, +;413:0.585798,0.587040,0.588282,0.589521,0.590760,0.591997,0.593232,0.594466, +;414:0.595699,0.596931,0.598161,0.599389,0.600616,0.601842,0.603067,0.604290, +;415:0.605511,0.606731,0.607950,0.609167,0.610383,0.611597,0.612810,0.614022, +;416:0.615232,0.616440,0.617647,0.618853,0.620057,0.621260,0.622461,0.623661, +;417:0.624859,0.626056,0.627252,0.628446,0.629638,0.630829,0.632019,0.633207, +;418:0.634393,0.635578,0.636762,0.637944,0.639124,0.640303,0.641481,0.642657, +;419:0.643832,0.645005,0.646176,0.647346,0.648514,0.649681,0.650847,0.652011, +;420:0.653173,0.654334,0.655493,0.656651,0.657807,0.658961,0.660114,0.661266, +;421:0.662416,0.663564,0.664711,0.665856,0.667000,0.668142,0.669283,0.670422, +;422:0.671559,0.672695,0.673829,0.674962,0.676093,0.677222,0.678350,0.679476, +;423:0.680601,0.681724,0.682846,0.683965,0.685084,0.686200,0.687315,0.688429, +;424:0.689541,0.690651,0.691759,0.692866,0.693971,0.695075,0.696177,0.697278, +;425:0.698376,0.699473,0.700569,0.701663,0.702755,0.703845,0.704934,0.706021, +;426:0.707107,0.708191,0.709273,0.710353,0.711432,0.712509,0.713585,0.714659, +;427:0.715731,0.716801,0.717870,0.718937,0.720003,0.721066,0.722128,0.723188, +;428:0.724247,0.725304,0.726359,0.727413,0.728464,0.729514,0.730563,0.731609, +;429:0.732654,0.733697,0.734739,0.735779,0.736817,0.737853,0.738887,0.739920, +;430:0.740951,0.741980,0.743008,0.744034,0.745058,0.746080,0.747101,0.748119, +;431:0.749136,0.750152,0.751165,0.752177,0.753187,0.754195,0.755201,0.756206, +;432:0.757209,0.758210,0.759209,0.760207,0.761202,0.762196,0.763188,0.764179, +;433:0.765167,0.766154,0.767139,0.768122,0.769103,0.770083,0.771061,0.772036, +;434:0.773010,0.773983,0.774953,0.775922,0.776888,0.777853,0.778817,0.779778, +;435:0.780737,0.781695,0.782651,0.783605,0.784557,0.785507,0.786455,0.787402, +;436:0.788346,0.789289,0.790230,0.791169,0.792107,0.793042,0.793975,0.794907, +;437:0.795837,0.796765,0.797691,0.798615,0.799537,0.800458,0.801376,0.802293, +;438:0.803208,0.804120,0.805031,0.805940,0.806848,0.807753,0.808656,0.809558, +;439:0.810457,0.811355,0.812251,0.813144,0.814036,0.814926,0.815814,0.816701, +;440:0.817585,0.818467,0.819348,0.820226,0.821103,0.821977,0.822850,0.823721, +;441:0.824589,0.825456,0.826321,0.827184,0.828045,0.828904,0.829761,0.830616, +;442:0.831470,0.832321,0.833170,0.834018,0.834863,0.835706,0.836548,0.837387, +;443:0.838225,0.839060,0.839894,0.840725,0.841555,0.842383,0.843208,0.844032, +;444:0.844854,0.845673,0.846491,0.847307,0.848120,0.848932,0.849742,0.850549, +;445:0.851355,0.852159,0.852961,0.853760,0.854558,0.855354,0.856147,0.856939, +;446:0.857729,0.858516,0.859302,0.860085,0.860867,0.861646,0.862424,0.863199, +;447:0.863973,0.864744,0.865514,0.866281,0.867046,0.867809,0.868571,0.869330, +;448:0.870087,0.870842,0.871595,0.872346,0.873095,0.873842,0.874587,0.875329, +;449:0.876070,0.876809,0.877545,0.878280,0.879012,0.879743,0.880471,0.881197, +;450:0.881921,0.882643,0.883363,0.884081,0.884797,0.885511,0.886223,0.886932, +;451:0.887640,0.888345,0.889048,0.889750,0.890449,0.891146,0.891841,0.892534, +;452:0.893224,0.893913,0.894599,0.895284,0.895966,0.896646,0.897325,0.898001, +;453:0.898674,0.899346,0.900016,0.900683,0.901349,0.902012,0.902673,0.903332, +;454:0.903989,0.904644,0.905297,0.905947,0.906596,0.907242,0.907886,0.908528, +;455:0.909168,0.909806,0.910441,0.911075,0.911706,0.912335,0.912962,0.913587, +;456:0.914210,0.914830,0.915449,0.916065,0.916679,0.917291,0.917901,0.918508, +;457:0.919114,0.919717,0.920318,0.920917,0.921514,0.922109,0.922701,0.923291, +;458:0.923880,0.924465,0.925049,0.925631,0.926210,0.926787,0.927363,0.927935, +;459:0.928506,0.929075,0.929641,0.930205,0.930767,0.931327,0.931884,0.932440, +;460:0.932993,0.933544,0.934093,0.934639,0.935184,0.935726,0.936266,0.936803, +;461:0.937339,0.937872,0.938404,0.938932,0.939459,0.939984,0.940506,0.941026, +;462:0.941544,0.942060,0.942573,0.943084,0.943593,0.944100,0.944605,0.945107, +;463:0.945607,0.946105,0.946601,0.947094,0.947586,0.948075,0.948561,0.949046, +;464:0.949528,0.950008,0.950486,0.950962,0.951435,0.951906,0.952375,0.952842, +;465:0.953306,0.953768,0.954228,0.954686,0.955141,0.955594,0.956045,0.956494, +;466:0.956940,0.957385,0.957826,0.958266,0.958703,0.959139,0.959572,0.960002, +;467:0.960431,0.960857,0.961280,0.961702,0.962121,0.962538,0.962953,0.963366, +;468:0.963776,0.964184,0.964590,0.964993,0.965394,0.965793,0.966190,0.966584, +;469:0.966976,0.967366,0.967754,0.968139,0.968522,0.968903,0.969281,0.969657, +;470:0.970031,0.970403,0.970772,0.971139,0.971504,0.971866,0.972226,0.972584, +;471:0.972940,0.973293,0.973644,0.973993,0.974339,0.974684,0.975025,0.975365, +;472:0.975702,0.976037,0.976370,0.976700,0.977028,0.977354,0.977677,0.977999, +;473:0.978317,0.978634,0.978948,0.979260,0.979570,0.979877,0.980182,0.980485, +;474:0.980785,0.981083,0.981379,0.981673,0.981964,0.982253,0.982539,0.982824, +;475:0.983105,0.983385,0.983662,0.983937,0.984210,0.984480,0.984749,0.985014, +;476:0.985278,0.985539,0.985798,0.986054,0.986308,0.986560,0.986809,0.987057, +;477:0.987301,0.987544,0.987784,0.988022,0.988258,0.988491,0.988722,0.988950, +;478:0.989177,0.989400,0.989622,0.989841,0.990058,0.990273,0.990485,0.990695, +;479:0.990903,0.991108,0.991311,0.991511,0.991710,0.991906,0.992099,0.992291, +;480:0.992480,0.992666,0.992850,0.993032,0.993212,0.993389,0.993564,0.993737, +;481:0.993907,0.994075,0.994240,0.994404,0.994565,0.994723,0.994879,0.995033, +;482:0.995185,0.995334,0.995481,0.995625,0.995767,0.995907,0.996045,0.996180, +;483:0.996313,0.996443,0.996571,0.996697,0.996820,0.996941,0.997060,0.997176, +;484:0.997290,0.997402,0.997511,0.997618,0.997723,0.997825,0.997925,0.998023, +;485:0.998118,0.998211,0.998302,0.998390,0.998476,0.998559,0.998640,0.998719, +;486:0.998795,0.998870,0.998941,0.999011,0.999078,0.999142,0.999205,0.999265, +;487:0.999322,0.999378,0.999431,0.999481,0.999529,0.999575,0.999619,0.999660, +;488:0.999699,0.999735,0.999769,0.999801,0.999831,0.999858,0.999882,0.999905, +;489:0.999925,0.999942,0.999958,0.999971,0.999981,0.999989,0.999995,0.999999 +;490:}; +;491: +;492:double sin( double x ) { +;493: int index; +;494: int quad; +;495: +;496: index = 1024 * x / (M_PI * 0.5); +;497: quad = ( index >> 10 ) & 3; +;498: index &= 1023; +;499: switch ( quad ) { +;500: case 0: +;501: return sintable[index]; +;502: case 1: +;503: return sintable[1023-index]; +;504: case 2: +;505: return -sintable[index]; +;506: case 3: +;507: return -sintable[1023-index]; +;508: } +;509: return 0; +;510:} +;511: +;512: +;513:double cos( double x ) { +;514: int index; +;515: int quad; +;516: +;517: index = 1024 * x / (M_PI * 0.5); +;518: quad = ( index >> 10 ) & 3; +;519: index &= 1023; +;520: switch ( quad ) { +;521: case 3: +;522: return sintable[index]; +;523: case 0: +;524: return sintable[1023-index]; +;525: case 1: +;526: return -sintable[index]; +;527: case 2: +;528: return -sintable[1023-index]; +;529: } +;530: return 0; +;531:} +;532: +;533: +;534:/* +;535:void create_acostable( void ) { +;536: int i; +;537: FILE *fp; +;538: float a; +;539: +;540: fp = fopen("c:\\acostable.txt", "w"); +;541: fprintf(fp, "float acostable[] = {"); +;542: for (i = 0; i < 1024; i++) { +;543: if (!(i & 7)) +;544: fprintf(fp, "\n"); +;545: a = acos( (float) -1 + i / 512 ); +;546: fprintf(fp, "%1.8f,", a); +;547: } +;548: fprintf(fp, "\n}\n"); +;549: fclose(fp); +;550:} +;551:*/ +;552: +;553:float acostable[] = { +;554:3.14159265,3.07908248,3.05317551,3.03328655,3.01651113,3.00172442,2.98834964,2.97604422, +;555:2.96458497,2.95381690,2.94362719,2.93393068,2.92466119,2.91576615,2.90720289,2.89893629, +;556:2.89093699,2.88318015,2.87564455,2.86831188,2.86116621,2.85419358,2.84738169,2.84071962, +;557:2.83419760,2.82780691,2.82153967,2.81538876,2.80934770,2.80341062,2.79757211,2.79182724, +;558:2.78617145,2.78060056,2.77511069,2.76969824,2.76435988,2.75909250,2.75389319,2.74875926, +;559:2.74368816,2.73867752,2.73372510,2.72882880,2.72398665,2.71919677,2.71445741,2.70976688, +;560:2.70512362,2.70052613,2.69597298,2.69146283,2.68699438,2.68256642,2.67817778,2.67382735, +;561:2.66951407,2.66523692,2.66099493,2.65678719,2.65261279,2.64847088,2.64436066,2.64028133, +;562:2.63623214,2.63221238,2.62822133,2.62425835,2.62032277,2.61641398,2.61253138,2.60867440, +;563:2.60484248,2.60103507,2.59725167,2.59349176,2.58975488,2.58604053,2.58234828,2.57867769, +;564:2.57502832,2.57139977,2.56779164,2.56420354,2.56063509,2.55708594,2.55355572,2.55004409, +;565:2.54655073,2.54307530,2.53961750,2.53617701,2.53275354,2.52934680,2.52595650,2.52258238, +;566:2.51922417,2.51588159,2.51255441,2.50924238,2.50594525,2.50266278,2.49939476,2.49614096, +;567:2.49290115,2.48967513,2.48646269,2.48326362,2.48007773,2.47690482,2.47374472,2.47059722, +;568:2.46746215,2.46433933,2.46122860,2.45812977,2.45504269,2.45196720,2.44890314,2.44585034, +;569:2.44280867,2.43977797,2.43675809,2.43374890,2.43075025,2.42776201,2.42478404,2.42181622, +;570:2.41885841,2.41591048,2.41297232,2.41004380,2.40712480,2.40421521,2.40131491,2.39842379, +;571:2.39554173,2.39266863,2.38980439,2.38694889,2.38410204,2.38126374,2.37843388,2.37561237, +;572:2.37279910,2.36999400,2.36719697,2.36440790,2.36162673,2.35885335,2.35608768,2.35332964, +;573:2.35057914,2.34783610,2.34510044,2.34237208,2.33965094,2.33693695,2.33423003,2.33153010, +;574:2.32883709,2.32615093,2.32347155,2.32079888,2.31813284,2.31547337,2.31282041,2.31017388, +;575:2.30753373,2.30489988,2.30227228,2.29965086,2.29703556,2.29442632,2.29182309,2.28922580, +;576:2.28663439,2.28404881,2.28146900,2.27889490,2.27632647,2.27376364,2.27120637,2.26865460, +;577:2.26610827,2.26356735,2.26103177,2.25850149,2.25597646,2.25345663,2.25094195,2.24843238, +;578:2.24592786,2.24342836,2.24093382,2.23844420,2.23595946,2.23347956,2.23100444,2.22853408, +;579:2.22606842,2.22360742,2.22115104,2.21869925,2.21625199,2.21380924,2.21137096,2.20893709, +;580:2.20650761,2.20408248,2.20166166,2.19924511,2.19683280,2.19442469,2.19202074,2.18962092, +;581:2.18722520,2.18483354,2.18244590,2.18006225,2.17768257,2.17530680,2.17293493,2.17056692, +;582:2.16820274,2.16584236,2.16348574,2.16113285,2.15878367,2.15643816,2.15409630,2.15175805, +;583:2.14942338,2.14709226,2.14476468,2.14244059,2.14011997,2.13780279,2.13548903,2.13317865, +;584:2.13087163,2.12856795,2.12626757,2.12397047,2.12167662,2.11938600,2.11709859,2.11481435, +;585:2.11253326,2.11025530,2.10798044,2.10570867,2.10343994,2.10117424,2.09891156,2.09665185, +;586:2.09439510,2.09214129,2.08989040,2.08764239,2.08539725,2.08315496,2.08091550,2.07867884, +;587:2.07644495,2.07421383,2.07198545,2.06975978,2.06753681,2.06531651,2.06309887,2.06088387, +;588:2.05867147,2.05646168,2.05425445,2.05204979,2.04984765,2.04764804,2.04545092,2.04325628, +;589:2.04106409,2.03887435,2.03668703,2.03450211,2.03231957,2.03013941,2.02796159,2.02578610, +;590:2.02361292,2.02144204,2.01927344,2.01710710,2.01494300,2.01278113,2.01062146,2.00846399, +;591:2.00630870,2.00415556,2.00200457,1.99985570,1.99770895,1.99556429,1.99342171,1.99128119, +;592:1.98914271,1.98700627,1.98487185,1.98273942,1.98060898,1.97848051,1.97635399,1.97422942, +;593:1.97210676,1.96998602,1.96786718,1.96575021,1.96363511,1.96152187,1.95941046,1.95730088, +;594:1.95519310,1.95308712,1.95098292,1.94888050,1.94677982,1.94468089,1.94258368,1.94048818, +;595:1.93839439,1.93630228,1.93421185,1.93212308,1.93003595,1.92795046,1.92586659,1.92378433, +;596:1.92170367,1.91962459,1.91754708,1.91547113,1.91339673,1.91132385,1.90925250,1.90718266, +;597:1.90511432,1.90304746,1.90098208,1.89891815,1.89685568,1.89479464,1.89273503,1.89067683, +;598:1.88862003,1.88656463,1.88451060,1.88245794,1.88040664,1.87835668,1.87630806,1.87426076, +;599:1.87221477,1.87017008,1.86812668,1.86608457,1.86404371,1.86200412,1.85996577,1.85792866, +;600:1.85589277,1.85385809,1.85182462,1.84979234,1.84776125,1.84573132,1.84370256,1.84167495, +;601:1.83964848,1.83762314,1.83559892,1.83357582,1.83155381,1.82953289,1.82751305,1.82549429, +;602:1.82347658,1.82145993,1.81944431,1.81742973,1.81541617,1.81340362,1.81139207,1.80938151, +;603:1.80737194,1.80536334,1.80335570,1.80134902,1.79934328,1.79733848,1.79533460,1.79333164, +;604:1.79132959,1.78932843,1.78732817,1.78532878,1.78333027,1.78133261,1.77933581,1.77733985, +;605:1.77534473,1.77335043,1.77135695,1.76936428,1.76737240,1.76538132,1.76339101,1.76140148, +;606:1.75941271,1.75742470,1.75543743,1.75345090,1.75146510,1.74948002,1.74749565,1.74551198, +;607:1.74352900,1.74154672,1.73956511,1.73758417,1.73560389,1.73362426,1.73164527,1.72966692, +;608:1.72768920,1.72571209,1.72373560,1.72175971,1.71978441,1.71780969,1.71583556,1.71386199, +;609:1.71188899,1.70991653,1.70794462,1.70597325,1.70400241,1.70203209,1.70006228,1.69809297, +;610:1.69612416,1.69415584,1.69218799,1.69022062,1.68825372,1.68628727,1.68432127,1.68235571, +;611:1.68039058,1.67842588,1.67646160,1.67449772,1.67253424,1.67057116,1.66860847,1.66664615, +;612:1.66468420,1.66272262,1.66076139,1.65880050,1.65683996,1.65487975,1.65291986,1.65096028, +;613:1.64900102,1.64704205,1.64508338,1.64312500,1.64116689,1.63920905,1.63725148,1.63529416, +;614:1.63333709,1.63138026,1.62942366,1.62746728,1.62551112,1.62355517,1.62159943,1.61964388, +;615:1.61768851,1.61573332,1.61377831,1.61182346,1.60986877,1.60791422,1.60595982,1.60400556, +;616:1.60205142,1.60009739,1.59814349,1.59618968,1.59423597,1.59228235,1.59032882,1.58837536, +;617:1.58642196,1.58446863,1.58251535,1.58056211,1.57860891,1.57665574,1.57470259,1.57274945, +;618:1.57079633,1.56884320,1.56689007,1.56493692,1.56298375,1.56103055,1.55907731,1.55712403, +;619:1.55517069,1.55321730,1.55126383,1.54931030,1.54735668,1.54540297,1.54344917,1.54149526, +;620:1.53954124,1.53758710,1.53563283,1.53367843,1.53172389,1.52976919,1.52781434,1.52585933, +;621:1.52390414,1.52194878,1.51999323,1.51803748,1.51608153,1.51412537,1.51216900,1.51021240, +;622:1.50825556,1.50629849,1.50434117,1.50238360,1.50042576,1.49846765,1.49650927,1.49455060, +;623:1.49259163,1.49063237,1.48867280,1.48671291,1.48475270,1.48279215,1.48083127,1.47887004, +;624:1.47690845,1.47494650,1.47298419,1.47102149,1.46905841,1.46709493,1.46513106,1.46316677, +;625:1.46120207,1.45923694,1.45727138,1.45530538,1.45333893,1.45137203,1.44940466,1.44743682, +;626:1.44546850,1.44349969,1.44153038,1.43956057,1.43759024,1.43561940,1.43364803,1.43167612, +;627:1.42970367,1.42773066,1.42575709,1.42378296,1.42180825,1.41983295,1.41785705,1.41588056, +;628:1.41390346,1.41192573,1.40994738,1.40796840,1.40598877,1.40400849,1.40202755,1.40004594, +;629:1.39806365,1.39608068,1.39409701,1.39211264,1.39012756,1.38814175,1.38615522,1.38416795, +;630:1.38217994,1.38019117,1.37820164,1.37621134,1.37422025,1.37222837,1.37023570,1.36824222, +;631:1.36624792,1.36425280,1.36225684,1.36026004,1.35826239,1.35626387,1.35426449,1.35226422, +;632:1.35026307,1.34826101,1.34625805,1.34425418,1.34224937,1.34024364,1.33823695,1.33622932, +;633:1.33422072,1.33221114,1.33020059,1.32818904,1.32617649,1.32416292,1.32214834,1.32013273, +;634:1.31811607,1.31609837,1.31407960,1.31205976,1.31003885,1.30801684,1.30599373,1.30396951, +;635:1.30194417,1.29991770,1.29789009,1.29586133,1.29383141,1.29180031,1.28976803,1.28773456, +;636:1.28569989,1.28366400,1.28162688,1.27958854,1.27754894,1.27550809,1.27346597,1.27142257, +;637:1.26937788,1.26733189,1.26528459,1.26323597,1.26118602,1.25913471,1.25708205,1.25502803, +;638:1.25297262,1.25091583,1.24885763,1.24679802,1.24473698,1.24267450,1.24061058,1.23854519, +;639:1.23647833,1.23440999,1.23234015,1.23026880,1.22819593,1.22612152,1.22404557,1.22196806, +;640:1.21988898,1.21780832,1.21572606,1.21364219,1.21155670,1.20946958,1.20738080,1.20529037, +;641:1.20319826,1.20110447,1.19900898,1.19691177,1.19481283,1.19271216,1.19060973,1.18850553, +;642:1.18639955,1.18429178,1.18218219,1.18007079,1.17795754,1.17584244,1.17372548,1.17160663, +;643:1.16948589,1.16736324,1.16523866,1.16311215,1.16098368,1.15885323,1.15672081,1.15458638, +;644:1.15244994,1.15031147,1.14817095,1.14602836,1.14388370,1.14173695,1.13958808,1.13743709, +;645:1.13528396,1.13312866,1.13097119,1.12881153,1.12664966,1.12448556,1.12231921,1.12015061, +;646:1.11797973,1.11580656,1.11363107,1.11145325,1.10927308,1.10709055,1.10490563,1.10271831, +;647:1.10052856,1.09833638,1.09614174,1.09394462,1.09174500,1.08954287,1.08733820,1.08513098, +;648:1.08292118,1.08070879,1.07849378,1.07627614,1.07405585,1.07183287,1.06960721,1.06737882, +;649:1.06514770,1.06291382,1.06067715,1.05843769,1.05619540,1.05395026,1.05170226,1.04945136, +;650:1.04719755,1.04494080,1.04268110,1.04041841,1.03815271,1.03588399,1.03361221,1.03133735, +;651:1.02905939,1.02677830,1.02449407,1.02220665,1.01991603,1.01762219,1.01532509,1.01302471, +;652:1.01072102,1.00841400,1.00610363,1.00378986,1.00147268,0.99915206,0.99682798,0.99450039, +;653:0.99216928,0.98983461,0.98749636,0.98515449,0.98280898,0.98045980,0.97810691,0.97575030, +;654:0.97338991,0.97102573,0.96865772,0.96628585,0.96391009,0.96153040,0.95914675,0.95675912, +;655:0.95436745,0.95197173,0.94957191,0.94716796,0.94475985,0.94234754,0.93993099,0.93751017, +;656:0.93508504,0.93265556,0.93022170,0.92778341,0.92534066,0.92289341,0.92044161,0.91798524, +;657:0.91552424,0.91305858,0.91058821,0.90811309,0.90563319,0.90314845,0.90065884,0.89816430, +;658:0.89566479,0.89316028,0.89065070,0.88813602,0.88561619,0.88309116,0.88056088,0.87802531, +;659:0.87548438,0.87293806,0.87038629,0.86782901,0.86526619,0.86269775,0.86012366,0.85754385, +;660:0.85495827,0.85236686,0.84976956,0.84716633,0.84455709,0.84194179,0.83932037,0.83669277, +;661:0.83405893,0.83141877,0.82877225,0.82611928,0.82345981,0.82079378,0.81812110,0.81544172, +;662:0.81275556,0.81006255,0.80736262,0.80465570,0.80194171,0.79922057,0.79649221,0.79375655, +;663:0.79101352,0.78826302,0.78550497,0.78273931,0.77996593,0.77718475,0.77439569,0.77159865, +;664:0.76879355,0.76598029,0.76315878,0.76032891,0.75749061,0.75464376,0.75178826,0.74892402, +;665:0.74605092,0.74316887,0.74027775,0.73737744,0.73446785,0.73154885,0.72862033,0.72568217, +;666:0.72273425,0.71977644,0.71680861,0.71383064,0.71084240,0.70784376,0.70483456,0.70181469, +;667:0.69878398,0.69574231,0.69268952,0.68962545,0.68654996,0.68346288,0.68036406,0.67725332, +;668:0.67413051,0.67099544,0.66784794,0.66468783,0.66151492,0.65832903,0.65512997,0.65191753, +;669:0.64869151,0.64545170,0.64219789,0.63892987,0.63564741,0.63235028,0.62903824,0.62571106, +;670:0.62236849,0.61901027,0.61563615,0.61224585,0.60883911,0.60541564,0.60197515,0.59851735, +;671:0.59504192,0.59154856,0.58803694,0.58450672,0.58095756,0.57738911,0.57380101,0.57019288, +;672:0.56656433,0.56291496,0.55924437,0.55555212,0.55183778,0.54810089,0.54434099,0.54055758, +;673:0.53675018,0.53291825,0.52906127,0.52517867,0.52126988,0.51733431,0.51337132,0.50938028, +;674:0.50536051,0.50131132,0.49723200,0.49312177,0.48897987,0.48480547,0.48059772,0.47635573, +;675:0.47207859,0.46776530,0.46341487,0.45902623,0.45459827,0.45012983,0.44561967,0.44106652, +;676:0.43646903,0.43182577,0.42713525,0.42239588,0.41760600,0.41276385,0.40786755,0.40291513, +;677:0.39790449,0.39283339,0.38769946,0.38250016,0.37723277,0.37189441,0.36648196,0.36099209, +;678:0.35542120,0.34976542,0.34402054,0.33818204,0.33224495,0.32620390,0.32005298,0.31378574, +;679:0.30739505,0.30087304,0.29421096,0.28739907,0.28042645,0.27328078,0.26594810,0.25841250, +;680:0.25065566,0.24265636,0.23438976,0.22582651,0.21693146,0.20766198,0.19796546,0.18777575, +;681:0.17700769,0.16554844,0.15324301,0.13986823,0.12508152,0.10830610,0.08841715,0.06251018, +;682:} +;683: +;684:double acos( double x ) { +;685: int index; +;686: +;687: if (x < -1) +;688: x = -1; +;689: if (x > 1) +;690: x = 1; +;691: index = (float) (1.0 + x) * 511.9; +;692: return acostable[index]; +;693:} +;694: +;695:double atan2( double y, double x ) { +;696: float base; +;697: float temp; +;698: float dir; +;699: float test; +;700: int i; +;701: +;702: if ( x < 0 ) { +;703: if ( y >= 0 ) { +;704: // quad 1 +;705: base = M_PI / 2; +;706: temp = x; +;707: x = y; +;708: y = -temp; +;709: } else { +;710: // quad 2 +;711: base = M_PI; +;712: x = -x; +;713: y = -y; +;714: } +;715: } else { +;716: if ( y < 0 ) { +;717: // quad 3 +;718: base = 3 * M_PI / 2; +;719: temp = x; +;720: x = -y; +;721: y = temp; +;722: } +;723: } +;724: +;725: if ( y > x ) { +;726: base += M_PI/2; +;727: temp = x; +;728: x = y; +;729: y = temp; +;730: dir = -1; +;731: } else { +;732: dir = 1; +;733: } +;734: +;735: // calcualte angle in octant 0 +;736: if ( x == 0 ) { +;737: return base; +;738: } +;739: y /= x; +;740: +;741: for ( i = 0 ; i < 512 ; i++ ) { +;742: test = sintable[i] / sintable[1023-i]; +;743: if ( test > y ) { +;744: break; +;745: } +;746: } +;747: +;748: return base + dir * i * ( M_PI/2048); +;749:} +;750: +;751: +;752:#endif +;753: +;754:#ifdef Q3_VM +;755:// bk001127 - guarded this tan replacement +;756:// ld: undefined versioned symbol name tan@@GLIBC_2.0 +;757:double tan( double x ) { +line 758 +;758: return sin(x) / cos(x); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 4 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ADDRLP4 4 +INDIRF4 +DIVF4 +RETF4 +LABELV $196 +endproc tan 8 4 +data +align 4 +LABELV randSeed +byte 4 0 +export srand +code +proc srand 0 0 +line 765 +;759:} +;760:#endif +;761: +;762: +;763:static int randSeed = 0; +;764: +;765:void srand( unsigned seed ) { +line 766 +;766: randSeed = seed; +ADDRGP4 randSeed +ADDRFP4 0 +INDIRU4 +CVUI4 4 +ASGNI4 +line 767 +;767:} +LABELV $197 +endproc srand 0 0 +export rand +proc rand 4 0 +line 769 +;768: +;769:int rand( void ) { +line 770 +;770: randSeed = (69069 * randSeed + 1); +ADDRLP4 0 +ADDRGP4 randSeed +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 69069 +ADDRLP4 0 +INDIRP4 +INDIRI4 +MULI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 771 +;771: return randSeed & 0x7fff; +ADDRGP4 randSeed +INDIRI4 +CNSTI4 32767 +BANDI4 +RETI4 +LABELV $198 +endproc rand 4 0 +export atof +proc atof 32 0 +line 774 +;772:} +;773: +;774:double atof( const char *string ) { +ADDRGP4 $201 +JUMPV +LABELV $200 +line 781 +;775: float sign; +;776: float value; +;777: int c; +;778: +;779: +;780: // skip whitespace +;781: while ( *string <= ' ' ) { +line 782 +;782: if ( !*string ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $203 +line 783 +;783: return 0; +CNSTF4 0 +RETF4 +ADDRGP4 $199 +JUMPV +LABELV $203 +line 785 +;784: } +;785: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 786 +;786: } +LABELV $201 +line 781 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $200 +line 789 +;787: +;788: // check sign +;789: switch ( *string ) { +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 43 +EQI4 $208 +ADDRLP4 12 +INDIRI4 +CNSTI4 45 +EQI4 $209 +ADDRGP4 $205 +JUMPV +LABELV $208 +line 791 +;790: case '+': +;791: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 792 +;792: sign = 1; +ADDRLP4 8 +CNSTF4 1065353216 +ASGNF4 +line 793 +;793: break; +ADDRGP4 $206 +JUMPV +LABELV $209 +line 795 +;794: case '-': +;795: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 796 +;796: sign = -1; +ADDRLP4 8 +CNSTF4 3212836864 +ASGNF4 +line 797 +;797: break; +ADDRGP4 $206 +JUMPV +LABELV $205 +line 799 +;798: default: +;799: sign = 1; +ADDRLP4 8 +CNSTF4 1065353216 +ASGNF4 +line 800 +;800: break; +LABELV $206 +line 804 +;801: } +;802: +;803: // read digits +;804: value = 0; +ADDRLP4 4 +CNSTF4 0 +ASGNF4 +line 805 +;805: c = string[0]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 806 +;806: if ( c != '.' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +EQI4 $210 +LABELV $212 +line 807 +;807: do { +line 808 +;808: c = *string++; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 20 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 809 +;809: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $217 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $215 +LABELV $217 +line 810 +;810: break; +ADDRGP4 $211 +JUMPV +LABELV $215 +line 812 +;811: } +;812: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 813 +;813: value = value * 10 + c; +ADDRLP4 4 +CNSTF4 1092616192 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 814 +;814: } while ( 1 ); +LABELV $213 +ADDRGP4 $212 +JUMPV +line 815 +;815: } else { +ADDRGP4 $211 +JUMPV +LABELV $210 +line 816 +;816: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 817 +;817: } +LABELV $211 +line 820 +;818: +;819: // check for decimal point +;820: if ( c == '.' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +NEI4 $218 +line 823 +;821: double fraction; +;822: +;823: fraction = 0.1; +ADDRLP4 20 +CNSTF4 1036831949 +ASGNF4 +LABELV $220 +line 824 +;824: do { +line 825 +;825: c = *string++; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 826 +;826: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $225 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $223 +LABELV $225 +line 827 +;827: break; +ADDRGP4 $222 +JUMPV +LABELV $223 +line 829 +;828: } +;829: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 830 +;830: value += c * fraction; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDRLP4 20 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 831 +;831: fraction *= 0.1; +ADDRLP4 20 +CNSTF4 1036831949 +ADDRLP4 20 +INDIRF4 +MULF4 +ASGNF4 +line 832 +;832: } while ( 1 ); +LABELV $221 +ADDRGP4 $220 +JUMPV +LABELV $222 +line 834 +;833: +;834: } +LABELV $218 +line 838 +;835: +;836: // not handling 10e10 notation... +;837: +;838: return value * sign; +ADDRLP4 4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +MULF4 +RETF4 +LABELV $199 +endproc atof 32 0 +export _atof +proc _atof 36 0 +line 841 +;839:} +;840: +;841:double _atof( const char **stringPtr ) { +line 845 +;842: const char *string; +;843: float sign; +;844: float value; +;845: int c = '0'; // bk001211 - uninitialized use possible +ADDRLP4 0 +CNSTI4 48 +ASGNI4 +line 847 +;846: +;847: string = *stringPtr; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRGP4 $228 +JUMPV +LABELV $227 +line 850 +;848: +;849: // skip whitespace +;850: while ( *string <= ' ' ) { +line 851 +;851: if ( !*string ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $230 +line 852 +;852: *stringPtr = string; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 853 +;853: return 0; +CNSTF4 0 +RETF4 +ADDRGP4 $226 +JUMPV +LABELV $230 +line 855 +;854: } +;855: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 856 +;856: } +LABELV $228 +line 850 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $227 +line 859 +;857: +;858: // check sign +;859: switch ( *string ) { +ADDRLP4 16 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 43 +EQI4 $235 +ADDRLP4 16 +INDIRI4 +CNSTI4 45 +EQI4 $236 +ADDRGP4 $232 +JUMPV +LABELV $235 +line 861 +;860: case '+': +;861: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 862 +;862: sign = 1; +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 863 +;863: break; +ADDRGP4 $233 +JUMPV +LABELV $236 +line 865 +;864: case '-': +;865: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 866 +;866: sign = -1; +ADDRLP4 12 +CNSTF4 3212836864 +ASGNF4 +line 867 +;867: break; +ADDRGP4 $233 +JUMPV +LABELV $232 +line 869 +;868: default: +;869: sign = 1; +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 870 +;870: break; +LABELV $233 +line 874 +;871: } +;872: +;873: // read digits +;874: value = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 875 +;875: if ( string[0] != '.' ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 46 +EQI4 $237 +LABELV $239 +line 876 +;876: do { +line 877 +;877: c = *string++; +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 878 +;878: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $244 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $242 +LABELV $244 +line 879 +;879: break; +ADDRGP4 $241 +JUMPV +LABELV $242 +line 881 +;880: } +;881: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 882 +;882: value = value * 10 + c; +ADDRLP4 8 +CNSTF4 1092616192 +ADDRLP4 8 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 883 +;883: } while ( 1 ); +LABELV $240 +ADDRGP4 $239 +JUMPV +LABELV $241 +line 884 +;884: } +LABELV $237 +line 887 +;885: +;886: // check for decimal point +;887: if ( c == '.' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +NEI4 $245 +line 890 +;888: double fraction; +;889: +;890: fraction = 0.1; +ADDRLP4 24 +CNSTF4 1036831949 +ASGNF4 +LABELV $247 +line 891 +;891: do { +line 892 +;892: c = *string++; +ADDRLP4 28 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 28 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 28 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 893 +;893: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $252 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $250 +LABELV $252 +line 894 +;894: break; +ADDRGP4 $249 +JUMPV +LABELV $250 +line 896 +;895: } +;896: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 897 +;897: value += c * fraction; +ADDRLP4 8 +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDRLP4 24 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 898 +;898: fraction *= 0.1; +ADDRLP4 24 +CNSTF4 1036831949 +ADDRLP4 24 +INDIRF4 +MULF4 +ASGNF4 +line 899 +;899: } while ( 1 ); +LABELV $248 +ADDRGP4 $247 +JUMPV +LABELV $249 +line 901 +;900: +;901: } +LABELV $245 +line 904 +;902: +;903: // not handling 10e10 notation... +;904: *stringPtr = string; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 906 +;905: +;906: return value * sign; +ADDRLP4 8 +INDIRF4 +ADDRLP4 12 +INDIRF4 +MULF4 +RETF4 +LABELV $226 +endproc _atof 36 0 +export atoi +proc atoi 28 0 +line 915 +;907:} +;908: +;909: +;910:// bk001120 - presumably needed for Mac +;911://#if !defined ( _MSC_VER ) && ! defined ( __linux__ ) +;912: +;913:// bk001127 - undid undo +;914:#if defined ( Q3_VM ) +;915:int atoi( const char *string ) { +ADDRGP4 $255 +JUMPV +LABELV $254 +line 922 +;916: int sign; +;917: int value; +;918: int c; +;919: +;920: +;921: // skip whitespace +;922: while ( *string <= ' ' ) { +line 923 +;923: if ( !*string ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $257 +line 924 +;924: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $253 +JUMPV +LABELV $257 +line 926 +;925: } +;926: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 927 +;927: } +LABELV $255 +line 922 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $254 +line 930 +;928: +;929: // check sign +;930: switch ( *string ) { +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 43 +EQI4 $262 +ADDRLP4 12 +INDIRI4 +CNSTI4 45 +EQI4 $263 +ADDRGP4 $259 +JUMPV +LABELV $262 +line 932 +;931: case '+': +;932: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 933 +;933: sign = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 934 +;934: break; +ADDRGP4 $260 +JUMPV +LABELV $263 +line 936 +;935: case '-': +;936: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 937 +;937: sign = -1; +ADDRLP4 8 +CNSTI4 -1 +ASGNI4 +line 938 +;938: break; +ADDRGP4 $260 +JUMPV +LABELV $259 +line 940 +;939: default: +;940: sign = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 941 +;941: break; +LABELV $260 +line 945 +;942: } +;943: +;944: // read digits +;945: value = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $264 +line 946 +;946: do { +line 947 +;947: c = *string++; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 20 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 948 +;948: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $269 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $267 +LABELV $269 +line 949 +;949: break; +ADDRGP4 $266 +JUMPV +LABELV $267 +line 951 +;950: } +;951: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 952 +;952: value = value * 10 + c; +ADDRLP4 4 +CNSTI4 10 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 953 +;953: } while ( 1 ); +LABELV $265 +ADDRGP4 $264 +JUMPV +LABELV $266 +line 957 +;954: +;955: // not handling 10e10 notation... +;956: +;957: return value * sign; +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +MULI4 +RETI4 +LABELV $253 +endproc atoi 28 0 +export _atoi +proc _atoi 32 0 +line 961 +;958:} +;959: +;960: +;961:int _atoi( const char **stringPtr ) { +line 967 +;962: int sign; +;963: int value; +;964: int c; +;965: const char *string; +;966: +;967: string = *stringPtr; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRGP4 $272 +JUMPV +LABELV $271 +line 970 +;968: +;969: // skip whitespace +;970: while ( *string <= ' ' ) { +line 971 +;971: if ( !*string ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $274 +line 972 +;972: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $270 +JUMPV +LABELV $274 +line 974 +;973: } +;974: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 975 +;975: } +LABELV $272 +line 970 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $271 +line 978 +;976: +;977: // check sign +;978: switch ( *string ) { +ADDRLP4 16 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 43 +EQI4 $279 +ADDRLP4 16 +INDIRI4 +CNSTI4 45 +EQI4 $280 +ADDRGP4 $276 +JUMPV +LABELV $279 +line 980 +;979: case '+': +;980: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 981 +;981: sign = 1; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 982 +;982: break; +ADDRGP4 $277 +JUMPV +LABELV $280 +line 984 +;983: case '-': +;984: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 985 +;985: sign = -1; +ADDRLP4 12 +CNSTI4 -1 +ASGNI4 +line 986 +;986: break; +ADDRGP4 $277 +JUMPV +LABELV $276 +line 988 +;987: default: +;988: sign = 1; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 989 +;989: break; +LABELV $277 +line 993 +;990: } +;991: +;992: // read digits +;993: value = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +LABELV $281 +line 994 +;994: do { +line 995 +;995: c = *string++; +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 996 +;996: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $286 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $284 +LABELV $286 +line 997 +;997: break; +ADDRGP4 $283 +JUMPV +LABELV $284 +line 999 +;998: } +;999: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 1000 +;1000: value = value * 10 + c; +ADDRLP4 8 +CNSTI4 10 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 1001 +;1001: } while ( 1 ); +LABELV $282 +ADDRGP4 $281 +JUMPV +LABELV $283 +line 1005 +;1002: +;1003: // not handling 10e10 notation... +;1004: +;1005: *stringPtr = string; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1007 +;1006: +;1007: return value * sign; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +MULI4 +RETI4 +LABELV $270 +endproc _atoi 32 0 +export abs +proc abs 4 0 +line 1010 +;1008:} +;1009: +;1010:int abs( int n ) { +line 1011 +;1011: return n < 0 ? -n : n; +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $289 +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +NEGI4 +ASGNI4 +ADDRGP4 $290 +JUMPV +LABELV $289 +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +LABELV $290 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $287 +endproc abs 4 0 +export fabs +proc fabs 4 0 +line 1014 +;1012:} +;1013: +;1014:double fabs( double x ) { +line 1015 +;1015: return x < 0 ? -x : x; +ADDRFP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $293 +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +NEGF4 +ASGNF4 +ADDRGP4 $294 +JUMPV +LABELV $293 +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ASGNF4 +LABELV $294 +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $291 +endproc fabs 4 0 +export AddInt +proc AddInt 56 0 +line 1037 +;1016:} +;1017: +;1018: +;1019: +;1020://========================================================= +;1021: +;1022: +;1023:#define ALT 0x00000001 /* alternate form */ +;1024:#define HEXPREFIX 0x00000002 /* add 0x or 0X prefix */ +;1025:#define LADJUST 0x00000004 /* left adjustment */ +;1026:#define LONGDBL 0x00000008 /* long double */ +;1027:#define LONGINT 0x00000010 /* long integer */ +;1028:#define QUADINT 0x00000020 /* quad integer */ +;1029:#define SHORTINT 0x00000040 /* short integer */ +;1030:#define ZEROPAD 0x00000080 /* zero (as opposed to blank) pad */ +;1031:#define FPT 0x00000100 /* floating point number */ +;1032: +;1033:#define to_digit(c) ((c) - '0') +;1034:#define is_digit(c) ((unsigned)to_digit(c) <= 9) +;1035:#define to_char(n) ((n) + '0') +;1036: +;1037:void AddInt( char **buf_p, int val, int width, int flags ) { +line 1043 +;1038: char text[32]; +;1039: int digits; +;1040: int signedVal; +;1041: char *buf; +;1042: +;1043: digits = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1044 +;1044: signedVal = val; +ADDRLP4 40 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 1045 +;1045: if ( val < 0 ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $296 +line 1046 +;1046: val = -val; +ADDRFP4 4 +ADDRFP4 4 +INDIRI4 +NEGI4 +ASGNI4 +line 1047 +;1047: } +LABELV $296 +LABELV $298 +line 1048 +;1048: do { +line 1049 +;1049: text[digits++] = '0' + val % 10; +ADDRLP4 44 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRFP4 4 +INDIRI4 +CNSTI4 10 +MODI4 +CNSTI4 48 +ADDI4 +CVII1 4 +ASGNI1 +line 1050 +;1050: val /= 10; +ADDRFP4 4 +ADDRFP4 4 +INDIRI4 +CNSTI4 10 +DIVI4 +ASGNI4 +line 1051 +;1051: } while ( val ); +LABELV $299 +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $298 +line 1053 +;1052: +;1053: if ( signedVal < 0 ) { +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +GEI4 $301 +line 1054 +;1054: text[digits++] = '-'; +ADDRLP4 44 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 45 +ASGNI1 +line 1055 +;1055: } +LABELV $301 +line 1057 +;1056: +;1057: buf = *buf_p; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 1059 +;1058: +;1059: if( !( flags & LADJUST ) ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $312 +ADDRGP4 $306 +JUMPV +LABELV $305 +line 1060 +;1060: while ( digits < width ) { +line 1061 +;1061: *buf++ = ( flags & ZEROPAD ) ? '0' : ' '; +ADDRLP4 48 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRFP4 12 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +EQI4 $309 +ADDRLP4 44 +CNSTI4 48 +ASGNI4 +ADDRGP4 $310 +JUMPV +LABELV $309 +ADDRLP4 44 +CNSTI4 32 +ASGNI4 +LABELV $310 +ADDRLP4 48 +INDIRP4 +ADDRLP4 44 +INDIRI4 +CVII1 4 +ASGNI1 +line 1062 +;1062: width--; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1063 +;1063: } +LABELV $306 +line 1060 +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LTI4 $305 +line 1064 +;1064: } +ADDRGP4 $312 +JUMPV +LABELV $311 +line 1066 +;1065: +;1066: while ( digits-- ) { +line 1067 +;1067: *buf++ = text[digits]; +ADDRLP4 44 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 44 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRI1 +ASGNI1 +line 1068 +;1068: width--; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1069 +;1069: } +LABELV $312 +line 1066 +ADDRLP4 44 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +NEI4 $311 +line 1071 +;1070: +;1071: if( flags & LADJUST ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $314 +ADDRGP4 $317 +JUMPV +LABELV $316 +line 1072 +;1072: while ( width-- ) { +line 1073 +;1073: *buf++ = ( flags & ZEROPAD ) ? '0' : ' '; +ADDRLP4 52 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 52 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRFP4 12 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +EQI4 $320 +ADDRLP4 48 +CNSTI4 48 +ASGNI4 +ADDRGP4 $321 +JUMPV +LABELV $320 +ADDRLP4 48 +CNSTI4 32 +ASGNI4 +LABELV $321 +ADDRLP4 52 +INDIRP4 +ADDRLP4 48 +INDIRI4 +CVII1 4 +ASGNI1 +line 1074 +;1074: } +LABELV $317 +line 1072 +ADDRLP4 48 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRFP4 8 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $316 +line 1075 +;1075: } +LABELV $314 +line 1077 +;1076: +;1077: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1078 +;1078:} +LABELV $295 +endproc AddInt 56 0 +export AddFloat +proc AddFloat 60 0 +line 1080 +;1079: +;1080:void AddFloat( char **buf_p, float fval, int width, int prec ) { +line 1088 +;1081: char text[32]; +;1082: int digits; +;1083: float signedVal; +;1084: char *buf; +;1085: int val; +;1086: +;1087: // get the sign +;1088: signedVal = fval; +ADDRLP4 44 +ADDRFP4 4 +INDIRF4 +ASGNF4 +line 1089 +;1089: if ( fval < 0 ) { +ADDRFP4 4 +INDIRF4 +CNSTF4 0 +GEF4 $323 +line 1090 +;1090: fval = -fval; +ADDRFP4 4 +ADDRFP4 4 +INDIRF4 +NEGF4 +ASGNF4 +line 1091 +;1091: } +LABELV $323 +line 1094 +;1092: +;1093: // write the float number +;1094: digits = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1095 +;1095: val = (int)fval; +ADDRLP4 4 +ADDRFP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +LABELV $325 +line 1096 +;1096: do { +line 1097 +;1097: text[digits++] = '0' + val % 10; +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +MODI4 +CNSTI4 48 +ADDI4 +CVII1 4 +ASGNI1 +line 1098 +;1098: val /= 10; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +DIVI4 +ASGNI4 +line 1099 +;1099: } while ( val ); +LABELV $326 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $325 +line 1101 +;1100: +;1101: if ( signedVal < 0 ) { +ADDRLP4 44 +INDIRF4 +CNSTF4 0 +GEF4 $328 +line 1102 +;1102: text[digits++] = '-'; +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 45 +ASGNI1 +line 1103 +;1103: } +LABELV $328 +line 1105 +;1104: +;1105: buf = *buf_p; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRGP4 $331 +JUMPV +LABELV $330 +line 1107 +;1106: +;1107: while ( digits < width ) { +line 1108 +;1108: *buf++ = ' '; +ADDRLP4 48 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI1 32 +ASGNI1 +line 1109 +;1109: width--; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1110 +;1110: } +LABELV $331 +line 1107 +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LTI4 $330 +ADDRGP4 $334 +JUMPV +LABELV $333 +line 1112 +;1111: +;1112: while ( digits-- ) { +line 1113 +;1113: *buf++ = text[digits]; +ADDRLP4 48 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRI1 +ASGNI1 +line 1114 +;1114: } +LABELV $334 +line 1112 +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $333 +line 1116 +;1115: +;1116: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 1118 +;1117: +;1118: if (prec < 0) +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +GEI4 $336 +line 1119 +;1119: prec = 6; +ADDRFP4 12 +CNSTI4 6 +ASGNI4 +LABELV $336 +line 1121 +;1120: // write the fraction +;1121: digits = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $339 +JUMPV +LABELV $338 +line 1122 +;1122: while (digits < prec) { +line 1123 +;1123: fval -= (int) fval; +ADDRLP4 52 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRFP4 4 +ADDRLP4 52 +INDIRF4 +ADDRLP4 52 +INDIRF4 +CVFI4 4 +CVIF4 4 +SUBF4 +ASGNF4 +line 1124 +;1124: fval *= 10.0; +ADDRFP4 4 +CNSTF4 1092616192 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 1125 +;1125: val = (int) fval; +ADDRLP4 4 +ADDRFP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1126 +;1126: text[digits++] = '0' + val % 10; +ADDRLP4 56 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 56 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +MODI4 +CNSTI4 48 +ADDI4 +CVII1 4 +ASGNI1 +line 1127 +;1127: } +LABELV $339 +line 1122 +ADDRLP4 0 +INDIRI4 +ADDRFP4 12 +INDIRI4 +LTI4 $338 +line 1129 +;1128: +;1129: if (digits > 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LEI4 $341 +line 1130 +;1130: buf = *buf_p; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 1131 +;1131: *buf++ = '.'; +ADDRLP4 52 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 52 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI1 46 +ASGNI1 +line 1132 +;1132: for (prec = 0; prec < digits; prec++) { +ADDRFP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 $346 +JUMPV +LABELV $343 +line 1133 +;1133: *buf++ = text[prec]; +ADDRLP4 56 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 56 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRFP4 12 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRI1 +ASGNI1 +line 1134 +;1134: } +LABELV $344 +line 1132 +ADDRFP4 12 +ADDRFP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $346 +ADDRFP4 12 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LTI4 $343 +line 1135 +;1135: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 1136 +;1136: } +LABELV $341 +line 1137 +;1137:} +LABELV $322 +endproc AddFloat 60 0 +export AddString +proc AddString 20 4 +line 1140 +;1138: +;1139: +;1140:void AddString( char **buf_p, char *string, int width, int prec ) { +line 1144 +;1141: int size; +;1142: char *buf; +;1143: +;1144: buf = *buf_p; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 1146 +;1145: +;1146: if ( string == NULL ) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $348 +line 1147 +;1147: string = "(null)"; +ADDRFP4 4 +ADDRGP4 $350 +ASGNP4 +line 1148 +;1148: prec = -1; +ADDRFP4 12 +CNSTI4 -1 +ASGNI4 +line 1149 +;1149: } +LABELV $348 +line 1151 +;1150: +;1151: if ( prec >= 0 ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +LTI4 $351 +line 1152 +;1152: for( size = 0; size < prec; size++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $356 +JUMPV +LABELV $353 +line 1153 +;1153: if( string[size] == '\0' ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $357 +line 1154 +;1154: break; +ADDRGP4 $352 +JUMPV +LABELV $357 +line 1156 +;1155: } +;1156: } +LABELV $354 +line 1152 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $356 +ADDRLP4 0 +INDIRI4 +ADDRFP4 12 +INDIRI4 +LTI4 $353 +line 1157 +;1157: } +ADDRGP4 $352 +JUMPV +LABELV $351 +line 1158 +;1158: else { +line 1159 +;1159: size = strlen( string ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1160 +;1160: } +LABELV $352 +line 1162 +;1161: +;1162: width -= size; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +ADDRLP4 0 +INDIRI4 +SUBI4 +ASGNI4 +ADDRGP4 $360 +JUMPV +LABELV $359 +line 1164 +;1163: +;1164: while( size-- ) { +line 1165 +;1165: *buf++ = *string++; +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI1 +ASGNI1 +line 1166 +;1166: } +LABELV $360 +line 1164 +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $359 +ADDRGP4 $363 +JUMPV +LABELV $362 +line 1168 +;1167: +;1168: while( width-- > 0 ) { +line 1169 +;1169: *buf++ = ' '; +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI1 32 +ASGNI1 +line 1170 +;1170: } +LABELV $363 +line 1168 +ADDRLP4 12 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRFP4 8 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +GTI4 $362 +line 1172 +;1171: +;1172: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1173 +;1173:} +LABELV $347 +endproc AddString 20 4 +export vsprintf +proc vsprintf 72 16 +line 1183 +;1174: +;1175:/* +;1176:vsprintf +;1177: +;1178:I'm not going to support a bunch of the more arcane stuff in here +;1179:just to keep it simpler. For example, the '*' and '$' are not +;1180:currently supported. I've tried to make it so that it will just +;1181:parse and ignore formats we don't support. +;1182:*/ +;1183:int vsprintf( char *buffer, const char *fmt, va_list argptr ) { +line 1193 +;1184: int *arg; +;1185: char *buf_p; +;1186: char ch; +;1187: int flags; +;1188: int width; +;1189: int prec; +;1190: int n; +;1191: char sign; +;1192: +;1193: buf_p = buffer; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 1194 +;1194: arg = (int *)argptr; +ADDRLP4 24 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRGP4 $367 +JUMPV +LABELV $366 +line 1196 +;1195: +;1196: while( qtrue ) { +line 1198 +;1197: // run through the format string until we hit a '%' or '\0' +;1198: for ( ch = *fmt; (ch = *fmt) != '\0' && ch != '%'; fmt++ ) { +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRGP4 $372 +JUMPV +LABELV $369 +line 1199 +;1199: *buf_p++ = ch; +ADDRLP4 32 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 32 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 0 +INDIRI1 +ASGNI1 +line 1200 +;1200: } +LABELV $370 +line 1198 +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +LABELV $372 +ADDRLP4 29 +ADDRFP4 4 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 0 +ADDRLP4 29 +INDIRI1 +ASGNI1 +ADDRLP4 29 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $373 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 37 +NEI4 $369 +LABELV $373 +line 1201 +;1201: if ( ch == '\0' ) { +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $374 +line 1202 +;1202: goto done; +ADDRGP4 $376 +JUMPV +LABELV $374 +line 1206 +;1203: } +;1204: +;1205: // skip over the '%' +;1206: fmt++; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1209 +;1207: +;1208: // reset formatting state +;1209: flags = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 1210 +;1210: width = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 1211 +;1211: prec = -1; +ADDRLP4 20 +CNSTI4 -1 +ASGNI4 +line 1212 +;1212: sign = '\0'; +ADDRLP4 28 +CNSTI1 0 +ASGNI1 +LABELV $377 +line 1215 +;1213: +;1214:rflag: +;1215: ch = *fmt++; +ADDRLP4 32 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 32 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +INDIRI1 +ASGNI1 +LABELV $378 +line 1217 +;1216:reswitch: +;1217: switch( ch ) { +ADDRLP4 36 +ADDRLP4 0 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 99 +LTI4 $400 +ADDRLP4 36 +INDIRI4 +CNSTI4 105 +GTI4 $401 +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $402-396 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $402 +address $395 +address $396 +address $379 +address $397 +address $379 +address $379 +address $396 +code +LABELV $400 +ADDRLP4 36 +INDIRI4 +CNSTI4 37 +LTI4 $379 +ADDRLP4 36 +INDIRI4 +CNSTI4 57 +GTI4 $379 +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $404-148 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $404 +address $399 +address $379 +address $379 +address $379 +address $379 +address $379 +address $379 +address $379 +address $382 +address $383 +address $379 +address $390 +address $391 +address $391 +address $391 +address $391 +address $391 +address $391 +address $391 +address $391 +address $391 +code +LABELV $401 +ADDRLP4 36 +INDIRI4 +CNSTI4 115 +EQI4 $398 +ADDRGP4 $379 +JUMPV +LABELV $382 +line 1219 +;1218: case '-': +;1219: flags |= LADJUST; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 1220 +;1220: goto rflag; +ADDRGP4 $377 +JUMPV +LABELV $383 +line 1222 +;1221: case '.': +;1222: n = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $385 +JUMPV +LABELV $384 +line 1223 +;1223: while( is_digit( ( ch = *fmt++ ) ) ) { +line 1224 +;1224: n = 10 * n + ( ch - '0' ); +ADDRLP4 8 +CNSTI4 10 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +ADDI4 +ASGNI4 +line 1225 +;1225: } +LABELV $385 +line 1223 +ADDRLP4 48 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 52 +ADDRLP4 48 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 0 +ADDRLP4 52 +INDIRI1 +ASGNI1 +ADDRLP4 52 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CVIU4 4 +CNSTU4 9 +LEU4 $384 +line 1226 +;1226: prec = n < 0 ? -1 : n; +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +GEI4 $388 +ADDRLP4 56 +CNSTI4 -1 +ASGNI4 +ADDRGP4 $389 +JUMPV +LABELV $388 +ADDRLP4 56 +ADDRLP4 8 +INDIRI4 +ASGNI4 +LABELV $389 +ADDRLP4 20 +ADDRLP4 56 +INDIRI4 +ASGNI4 +line 1227 +;1227: goto reswitch; +ADDRGP4 $378 +JUMPV +LABELV $390 +line 1229 +;1228: case '0': +;1229: flags |= ZEROPAD; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 128 +BORI4 +ASGNI4 +line 1230 +;1230: goto rflag; +ADDRGP4 $377 +JUMPV +LABELV $391 +line 1240 +;1231: case '1': +;1232: case '2': +;1233: case '3': +;1234: case '4': +;1235: case '5': +;1236: case '6': +;1237: case '7': +;1238: case '8': +;1239: case '9': +;1240: n = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +LABELV $392 +line 1241 +;1241: do { +line 1242 +;1242: n = 10 * n + ( ch - '0' ); +ADDRLP4 8 +CNSTI4 10 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +ADDI4 +ASGNI4 +line 1243 +;1243: ch = *fmt++; +ADDRLP4 60 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 60 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 60 +INDIRP4 +INDIRI1 +ASGNI1 +line 1244 +;1244: } while( is_digit( ch ) ); +LABELV $393 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CVIU4 4 +CNSTU4 9 +LEU4 $392 +line 1245 +;1245: width = n; +ADDRLP4 12 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1246 +;1246: goto reswitch; +ADDRGP4 $378 +JUMPV +LABELV $395 +line 1248 +;1247: case 'c': +;1248: *buf_p++ = (char)*arg; +ADDRLP4 60 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 60 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CVII1 4 +ASGNI1 +line 1249 +;1249: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1250 +;1250: break; +ADDRGP4 $380 +JUMPV +LABELV $396 +line 1253 +;1251: case 'd': +;1252: case 'i': +;1253: AddInt( &buf_p, *arg, width, flags ); +ADDRLP4 4 +ARGP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 AddInt +CALLV +pop +line 1254 +;1254: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1255 +;1255: break; +ADDRGP4 $380 +JUMPV +LABELV $397 +line 1257 +;1256: case 'f': +;1257: AddFloat( &buf_p, *(double *)arg, width, prec ); +ADDRLP4 4 +ARGP4 +ADDRLP4 24 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRGP4 AddFloat +CALLV +pop +line 1259 +;1258:#ifdef __LCC__ +;1259: arg += 1; // everything is 32 bit in my compiler +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1263 +;1260:#else +;1261: arg += 2; +;1262:#endif +;1263: break; +ADDRGP4 $380 +JUMPV +LABELV $398 +line 1265 +;1264: case 's': +;1265: AddString( &buf_p, (char *)*arg, width, prec ); +ADDRLP4 4 +ARGP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CVIU4 4 +CVUP4 4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRGP4 AddString +CALLV +pop +line 1266 +;1266: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1267 +;1267: break; +ADDRGP4 $380 +JUMPV +LABELV $399 +line 1269 +;1268: case '%': +;1269: *buf_p++ = ch; +ADDRLP4 64 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 64 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 0 +INDIRI1 +ASGNI1 +line 1270 +;1270: break; +ADDRGP4 $380 +JUMPV +LABELV $379 +line 1272 +;1271: default: +;1272: *buf_p++ = (char)*arg; +ADDRLP4 68 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 68 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CVII1 4 +ASGNI1 +line 1273 +;1273: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1274 +;1274: break; +LABELV $380 +line 1276 +;1275: } +;1276: } +LABELV $367 +line 1196 +ADDRGP4 $366 +JUMPV +LABELV $376 +line 1279 +;1277: +;1278:done: +;1279: *buf_p = 0; +ADDRLP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1280 +;1280: return buf_p - buffer; +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +RETI4 +LABELV $365 +endproc vsprintf 72 16 +export sscanf +proc sscanf 28 4 +line 1285 +;1281:} +;1282: +;1283: +;1284:/* this is really crappy */ +;1285:int sscanf( const char *buffer, const char *fmt, ... ) { +line 1290 +;1286: int cmd; +;1287: int **arg; +;1288: int count; +;1289: +;1290: arg = (int **)&fmt + 1; +ADDRLP4 4 +ADDRFP4 4+4 +ASGNP4 +line 1291 +;1291: count = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $409 +JUMPV +LABELV $408 +line 1293 +;1292: +;1293: while ( *fmt ) { +line 1294 +;1294: if ( fmt[0] != '%' ) { +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 37 +EQI4 $411 +line 1295 +;1295: fmt++; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1296 +;1296: continue; +ADDRGP4 $409 +JUMPV +LABELV $411 +line 1299 +;1297: } +;1298: +;1299: cmd = fmt[1]; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 1300 +;1300: fmt += 2; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 1302 +;1301: +;1302: switch ( cmd ) { +ADDRLP4 16 +CNSTI4 100 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $415 +ADDRLP4 0 +INDIRI4 +CNSTI4 102 +EQI4 $416 +ADDRLP4 0 +INDIRI4 +CNSTI4 105 +EQI4 $415 +ADDRLP4 0 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LTI4 $413 +LABELV $417 +ADDRLP4 0 +INDIRI4 +CNSTI4 117 +EQI4 $415 +ADDRGP4 $413 +JUMPV +LABELV $415 +line 1306 +;1303: case 'i': +;1304: case 'd': +;1305: case 'u': +;1306: **arg = _atoi( &buffer ); +ADDRFP4 0 +ARGP4 +ADDRLP4 20 +ADDRGP4 _atoi +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 1307 +;1307: break; +ADDRGP4 $414 +JUMPV +LABELV $416 +line 1309 +;1308: case 'f': +;1309: *(float *)*arg = _atof( &buffer ); +ADDRFP4 0 +ARGP4 +ADDRLP4 24 +ADDRGP4 _atof +CALLF4 +ASGNF4 +ADDRLP4 4 +INDIRP4 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 1310 +;1310: break; +LABELV $413 +LABELV $414 +line 1312 +;1311: } +;1312: arg++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1313 +;1313: } +LABELV $409 +line 1293 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $408 +line 1315 +;1314: +;1315: return count; +ADDRLP4 8 +INDIRI4 +RETI4 +LABELV $406 +endproc sscanf 28 4 +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import strncpy +lit +align 1 +LABELV $350 +char 1 40 +char 1 110 +char 1 117 +char 1 108 +char 1 108 +char 1 41 +char 1 0 diff --git a/CODE-mp/game/vm/bg_misc.asm b/CODE-mp/game/vm/bg_misc.asm new file mode 100644 index 0000000..bddf741 --- /dev/null +++ b/CODE-mp/game/vm/bg_misc.asm @@ -0,0 +1,17606 @@ +data +export forceMasteryLevels +align 4 +LABELV forceMasteryLevels +address $120 +address $121 +address $122 +address $123 +address $124 +address $125 +address $126 +address $127 +export forceMasteryPoints +align 4 +LABELV forceMasteryPoints +byte 4 0 +byte 4 5 +byte 4 10 +byte 4 20 +byte 4 30 +byte 4 50 +byte 4 75 +byte 4 100 +export bgForcePowerCost +align 4 +LABELV bgForcePowerCost +byte 4 0 +byte 4 2 +byte 4 4 +byte 4 6 +byte 4 0 +byte 4 0 +byte 4 2 +byte 4 6 +byte 4 0 +byte 4 2 +byte 4 4 +byte 4 6 +byte 4 0 +byte 4 1 +byte 4 3 +byte 4 6 +byte 4 0 +byte 4 1 +byte 4 3 +byte 4 6 +byte 4 0 +byte 4 4 +byte 4 6 +byte 4 8 +byte 4 0 +byte 4 1 +byte 4 3 +byte 4 6 +byte 4 0 +byte 4 2 +byte 4 5 +byte 4 8 +byte 4 0 +byte 4 4 +byte 4 6 +byte 4 8 +byte 4 0 +byte 4 2 +byte 4 5 +byte 4 8 +byte 4 0 +byte 4 1 +byte 4 3 +byte 4 6 +byte 4 0 +byte 4 1 +byte 4 3 +byte 4 6 +byte 4 0 +byte 4 1 +byte 4 3 +byte 4 6 +byte 4 0 +byte 4 2 +byte 4 4 +byte 4 6 +byte 4 0 +byte 4 2 +byte 4 5 +byte 4 8 +byte 4 0 +byte 4 1 +byte 4 5 +byte 4 8 +byte 4 0 +byte 4 1 +byte 4 5 +byte 4 8 +byte 4 0 +byte 4 4 +byte 4 6 +byte 4 8 +export forcePowerSorted +align 4 +LABELV forcePowerSorted +byte 4 5 +byte 4 0 +byte 4 10 +byte 4 9 +byte 4 11 +byte 4 1 +byte 4 2 +byte 4 3 +byte 4 4 +byte 4 14 +byte 4 7 +byte 4 13 +byte 4 8 +byte 4 6 +byte 4 12 +byte 4 15 +byte 4 16 +byte 4 17 +export forcePowerDarkLight +align 4 +LABELV forcePowerDarkLight +byte 4 1 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1 +byte 4 2 +byte 4 2 +byte 4 2 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 2 +byte 4 2 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +export WeaponReadyAnim +align 4 +LABELV WeaponReadyAnim +byte 4 954 +byte 4 964 +byte 4 553 +byte 4 963 +byte 4 964 +byte 4 964 +byte 4 964 +byte 4 964 +byte 4 964 +byte 4 964 +byte 4 964 +byte 4 971 +byte 4 971 +byte 4 971 +byte 4 550 +byte 4 962 +export WeaponAttackAnim +align 4 +LABELV WeaponAttackAnim +byte 4 106 +byte 4 108 +byte 4 553 +byte 4 107 +byte 4 108 +byte 4 108 +byte 4 108 +byte 4 108 +byte 4 108 +byte 4 108 +byte 4 108 +byte 4 125 +byte 4 108 +byte 4 108 +byte 4 550 +byte 4 106 +export BG_LegalizedForcePowers +code +proc BG_LegalizedForcePowers 436 12 +file "../bg_misc.c" +line 171 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:// bg_misc.c -- both games misc functions, all completely stateless +;4: +;5:#include "q_shared.h" +;6:#include "bg_public.h" +;7: +;8:#ifdef QAGAME +;9:#include "g_local.h" +;10:#endif +;11: +;12:#ifdef UI_EXPORTS +;13:#include "../ui/ui_local.h" +;14:#endif +;15: +;16:#ifndef UI_EXPORTS +;17:#ifndef QAGAME +;18:#include "../cgame/cg_local.h" +;19:#endif +;20:#endif +;21: +;22://rww - not putting @ in front of these because +;23://we don't need them in a cgame striped lookup. +;24://Let me know if this causes problems, pat. +;25:char *forceMasteryLevels[NUM_FORCE_MASTERY_LEVELS] = +;26:{ +;27: "MASTERY0", //"Uninitiated", // FORCE_MASTERY_UNINITIATED, +;28: "MASTERY1", //"Initiate", // FORCE_MASTERY_INITIATE, +;29: "MASTERY2", //"Padawan", // FORCE_MASTERY_PADAWAN, +;30: "MASTERY3", //"Jedi", // FORCE_MASTERY_JEDI, +;31: "MASTERY4", //"Jedi Adept", // FORCE_MASTERY_JEDI_GUARDIAN, +;32: "MASTERY5", //"Jedi Guardian", // FORCE_MASTERY_JEDI_ADEPT, +;33: "MASTERY6", //"Jedi Knight", // FORCE_MASTERY_JEDI_KNIGHT, +;34: "MASTERY7", //"Jedi Master" // FORCE_MASTERY_JEDI_MASTER, +;35:}; +;36: +;37:int forceMasteryPoints[NUM_FORCE_MASTERY_LEVELS] = +;38:{ +;39: 0, // FORCE_MASTERY_UNINITIATED, +;40: 5, // FORCE_MASTERY_INITIATE, +;41: 10, // FORCE_MASTERY_PADAWAN, +;42: 20, // FORCE_MASTERY_JEDI, +;43: 30, // FORCE_MASTERY_JEDI_GUARDIAN, +;44: 50, // FORCE_MASTERY_JEDI_ADEPT, +;45: 75, // FORCE_MASTERY_JEDI_KNIGHT, +;46: 100 // FORCE_MASTERY_JEDI_MASTER, +;47:}; +;48: +;49:int bgForcePowerCost[NUM_FORCE_POWERS][NUM_FORCE_POWER_LEVELS] = //0 == neutral +;50:{ +;51: { 0, 2, 4, 6 }, // Heal // FP_HEAL +;52: { 0, 0, 2, 6 }, // Jump //FP_LEVITATION,//hold/duration +;53: { 0, 2, 4, 6 }, // Speed //FP_SPEED,//duration +;54: { 0, 1, 3, 6 }, // Push //FP_PUSH,//hold/duration +;55: { 0, 1, 3, 6 }, // Pull //FP_PULL,//hold/duration +;56: { 0, 4, 6, 8 }, // Mind Trick //FP_TELEPATHY,//instant +;57: { 0, 1, 3, 6 }, // Grip //FP_GRIP,//hold/duration +;58: { 0, 2, 5, 8 }, // Lightning //FP_LIGHTNING,//hold/duration +;59: { 0, 4, 6, 8 }, // Dark Rage //FP_RAGE,//duration +;60: { 0, 2, 5, 8 }, // Protection //FP_PROTECT,//duration +;61: { 0, 1, 3, 6 }, // Absorb //FP_ABSORB,//duration +;62: { 0, 1, 3, 6 }, // Team Heal //FP_TEAM_HEAL,//instant +;63: { 0, 1, 3, 6 }, // Team Force //FP_TEAM_FORCE,//instant +;64: { 0, 2, 4, 6 }, // Drain //FP_DRAIN,//hold/duration +;65: { 0, 2, 5, 8 }, // Sight //FP_SEE,//duration +;66: { 0, 1, 5, 8 }, // Saber Attack //FP_SABERATTACK, +;67: { 0, 1, 5, 8 }, // Saber Defend //FP_SABERDEFEND, +;68: { 0, 4, 6, 8 } // Saber Throw //FP_SABERTHROW, +;69: //NUM_FORCE_POWERS +;70:}; +;71: +;72:int forcePowerSorted[NUM_FORCE_POWERS] = +;73:{ //rww - always use this order when drawing force powers for any reason +;74: FP_TELEPATHY, +;75: FP_HEAL, +;76: FP_ABSORB, +;77: FP_PROTECT, +;78: FP_TEAM_HEAL, +;79: FP_LEVITATION, +;80: FP_SPEED, +;81: FP_PUSH, +;82: FP_PULL, +;83: FP_SEE, +;84: FP_LIGHTNING, +;85: FP_DRAIN, +;86: FP_RAGE, +;87: FP_GRIP, +;88: FP_TEAM_FORCE, +;89: FP_SABERATTACK, +;90: FP_SABERDEFEND, +;91: FP_SABERTHROW +;92:}; +;93: +;94:int forcePowerDarkLight[NUM_FORCE_POWERS] = //0 == neutral +;95:{ //nothing should be usable at rank 0.. +;96: FORCE_LIGHTSIDE,//FP_HEAL,//instant +;97: 0,//FP_LEVITATION,//hold/duration +;98: 0,//FP_SPEED,//duration +;99: 0,//FP_PUSH,//hold/duration +;100: 0,//FP_PULL,//hold/duration +;101: FORCE_LIGHTSIDE,//FP_TELEPATHY,//instant +;102: FORCE_DARKSIDE,//FP_GRIP,//hold/duration +;103: FORCE_DARKSIDE,//FP_LIGHTNING,//hold/duration +;104: FORCE_DARKSIDE,//FP_RAGE,//duration +;105: FORCE_LIGHTSIDE,//FP_PROTECT,//duration +;106: FORCE_LIGHTSIDE,//FP_ABSORB,//duration +;107: FORCE_LIGHTSIDE,//FP_TEAM_HEAL,//instant +;108: FORCE_DARKSIDE,//FP_TEAM_FORCE,//instant +;109: FORCE_DARKSIDE,//FP_DRAIN,//hold/duration +;110: 0,//FP_SEE,//duration +;111: 0,//FP_SABERATTACK, +;112: 0,//FP_SABERDEFEND, +;113: 0//FP_SABERTHROW, +;114: //NUM_FORCE_POWERS +;115:}; +;116: +;117:int WeaponReadyAnim[WP_NUM_WEAPONS] = +;118:{ +;119: TORSO_DROPWEAP1,//WP_NONE, +;120: +;121: TORSO_WEAPONREADY3,//WP_STUN_BATON, +;122: BOTH_STAND2,//WP_SABER, +;123: TORSO_WEAPONREADY2,//WP_BRYAR_PISTOL, +;124: TORSO_WEAPONREADY3,//WP_BLASTER, +;125: TORSO_WEAPONREADY3,//TORSO_WEAPONREADY4,//WP_DISRUPTOR, +;126: TORSO_WEAPONREADY3,//TORSO_WEAPONREADY5,//WP_BOWCASTER, +;127: TORSO_WEAPONREADY3,//TORSO_WEAPONREADY6,//WP_REPEATER, +;128: TORSO_WEAPONREADY3,//TORSO_WEAPONREADY7,//WP_DEMP2, +;129: TORSO_WEAPONREADY3,//TORSO_WEAPONREADY8,//WP_FLECHETTE, +;130: TORSO_WEAPONREADY3,//TORSO_WEAPONREADY9,//WP_ROCKET_LAUNCHER, +;131: TORSO_WEAPONREADY10,//WP_THERMAL, +;132: TORSO_WEAPONREADY10,//TORSO_WEAPONREADY11,//WP_TRIP_MINE, +;133: TORSO_WEAPONREADY10,//TORSO_WEAPONREADY12,//WP_DET_PACK, +;134: +;135: //NOT VALID (e.g. should never really be used): +;136: BOTH_STAND1,//WP_EMPLACED_GUN, +;137: TORSO_WEAPONREADY1//WP_TURRET, +;138:}; +;139: +;140:int WeaponAttackAnim[WP_NUM_WEAPONS] = +;141:{ +;142: BOTH_ATTACK1,//WP_NONE, //(shouldn't happen) +;143: +;144: BOTH_ATTACK3,//WP_STUN_BATON, +;145: BOTH_STAND2,//WP_SABER, //(has its own handling) +;146: BOTH_ATTACK2,//WP_BRYAR_PISTOL, +;147: BOTH_ATTACK3,//WP_BLASTER, +;148: BOTH_ATTACK3,//BOTH_ATTACK4,//WP_DISRUPTOR, +;149: BOTH_ATTACK3,//BOTH_ATTACK5,//WP_BOWCASTER, +;150: BOTH_ATTACK3,//BOTH_ATTACK6,//WP_REPEATER, +;151: BOTH_ATTACK3,//BOTH_ATTACK7,//WP_DEMP2, +;152: BOTH_ATTACK3,//BOTH_ATTACK8,//WP_FLECHETTE, +;153: BOTH_ATTACK3,//BOTH_ATTACK9,//WP_ROCKET_LAUNCHER, +;154: BOTH_THERMAL_THROW,//WP_THERMAL, +;155: BOTH_ATTACK3,//BOTH_ATTACK11,//WP_TRIP_MINE, +;156: BOTH_ATTACK3,//BOTH_ATTACK12,//WP_DET_PACK, +;157: +;158: //NOT VALID (e.g. should never really be used): +;159: BOTH_STAND1,//WP_EMPLACED_GUN, +;160: BOTH_ATTACK1//WP_TURRET, +;161:}; +;162: +;163: +;164://The magical function to end all functions. +;165://This will take the force power string in powerOut and parse through it, then legalize +;166://it based on the supposed rank and spit it into powerOut, returning true if it was legal +;167://to begin with and false if not. +;168://fpDisabled is actually only expected (needed) from the server, because the ui disables +;169://force power selection anyway when force powers are disabled on the server. +;170:qboolean BG_LegalizedForcePowers(char *powerOut, int maxRank, qboolean freeSaber, int teamForce, int gametype, int fpDisabled) +;171:{ +line 174 +;172: char powerBuf[128]; +;173: char readBuf[128]; +;174: qboolean maintainsValidity = qtrue; +ADDRLP4 352 +CNSTI4 1 +ASGNI4 +line 175 +;175: int powerLen = strlen(powerOut); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 360 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 356 +ADDRLP4 360 +INDIRI4 +ASGNI4 +line 176 +;176: int i = 0; +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +line 177 +;177: int c = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 178 +;178: int allowedPoints = 0; +ADDRLP4 88 +CNSTI4 0 +ASGNI4 +line 179 +;179: int usedPoints = 0; +ADDRLP4 80 +CNSTI4 0 +ASGNI4 +line 180 +;180: int countDown = 0; +ADDRLP4 84 +CNSTI4 0 +ASGNI4 +line 185 +;181: +;182: int final_Side; +;183: int final_Powers[NUM_FORCE_POWERS]; +;184: +;185: if (powerLen >= 128) +ADDRLP4 356 +INDIRI4 +CNSTI4 128 +LTI4 $129 +line 186 +;186: { //This should not happen. If it does, this is obviously a bogus string. +line 188 +;187: //They can have this string. Because I said so. +;188: strcpy(powerBuf, "7-1-032330000000001333"); +ADDRLP4 92 +ARGP4 +ADDRGP4 $131 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 189 +;189: maintainsValidity = qfalse; +ADDRLP4 352 +CNSTI4 0 +ASGNI4 +line 190 +;190: } +ADDRGP4 $130 +JUMPV +LABELV $129 +line 192 +;191: else +;192: { +line 193 +;193: strcpy(powerBuf, powerOut); //copy it as the original +ADDRLP4 92 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 194 +;194: } +LABELV $130 +line 197 +;195: +;196: //first of all, print the max rank into the string as the rank +;197: strcpy(powerOut, va("%i-", maxRank)); +ADDRGP4 $132 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 364 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 364 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +ADDRGP4 $134 +JUMPV +LABELV $133 +line 200 +;198: +;199: while (i < 128 && powerBuf[i] && powerBuf[i] != '-') +;200: { +line 201 +;201: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 202 +;202: } +LABELV $134 +line 199 +ADDRLP4 76 +INDIRI4 +CNSTI4 128 +GEI4 $137 +ADDRLP4 372 +ADDRLP4 76 +INDIRI4 +ADDRLP4 92 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 372 +INDIRI4 +CNSTI4 0 +EQI4 $137 +ADDRLP4 372 +INDIRI4 +CNSTI4 45 +NEI4 $133 +LABELV $137 +line 203 +;203: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $139 +JUMPV +LABELV $138 +line 205 +;204: while (i < 128 && powerBuf[i] && powerBuf[i] != '-') +;205: { +line 206 +;206: readBuf[c] = powerBuf[i]; +ADDRLP4 0 +INDIRI4 +ADDRLP4 220 +ADDP4 +ADDRLP4 76 +INDIRI4 +ADDRLP4 92 +ADDP4 +INDIRI1 +ASGNI1 +line 207 +;207: c++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 208 +;208: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 209 +;209: } +LABELV $139 +line 204 +ADDRLP4 76 +INDIRI4 +CNSTI4 128 +GEI4 $142 +ADDRLP4 380 +ADDRLP4 76 +INDIRI4 +ADDRLP4 92 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 380 +INDIRI4 +CNSTI4 0 +EQI4 $142 +ADDRLP4 380 +INDIRI4 +CNSTI4 45 +NEI4 $138 +LABELV $142 +line 210 +;210: readBuf[c] = 0; +ADDRLP4 0 +INDIRI4 +ADDRLP4 220 +ADDP4 +CNSTI1 0 +ASGNI1 +line 211 +;211: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 213 +;212: //at this point, readBuf contains the intended side +;213: final_Side = atoi(readBuf); +ADDRLP4 220 +ARGP4 +ADDRLP4 384 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 348 +ADDRLP4 384 +INDIRI4 +ASGNI4 +line 215 +;214: +;215: if (final_Side != FORCE_LIGHTSIDE && +ADDRLP4 348 +INDIRI4 +CNSTI4 1 +EQI4 $143 +ADDRLP4 348 +INDIRI4 +CNSTI4 2 +EQI4 $143 +line 217 +;216: final_Side != FORCE_DARKSIDE) +;217: { //Not a valid side. You will be dark. Because I said so. (this is something that should never actually happen unless you purposely feed in an invalid config) +line 218 +;218: final_Side = FORCE_DARKSIDE; +ADDRLP4 348 +CNSTI4 2 +ASGNI4 +line 219 +;219: maintainsValidity = qfalse; +ADDRLP4 352 +CNSTI4 0 +ASGNI4 +line 220 +;220: } +LABELV $143 +line 222 +;221: +;222: if (teamForce) +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $145 +line 223 +;223: { //If we are under force-aligned teams, make sure we're on the right side. +line 224 +;224: if (final_Side != teamForce) +ADDRLP4 348 +INDIRI4 +ADDRFP4 12 +INDIRI4 +EQI4 $147 +line 225 +;225: { +line 226 +;226: final_Side = teamForce; +ADDRLP4 348 +ADDRFP4 12 +INDIRI4 +ASGNI4 +line 229 +;227: //maintainsValidity = qfalse; +;228: //Not doing this, for now. Let them join the team with their filtered powers. +;229: } +LABELV $147 +line 230 +;230: } +LABELV $145 +line 234 +;231: +;232: //Now we have established a valid rank, and a valid side. +;233: //Read the force powers in, and cut them down based on the various rules supplied. +;234: c = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $150 +JUMPV +LABELV $149 +line 236 +;235: while (i < 128 && powerBuf[i] && powerBuf[i] != '\n' && c < NUM_FORCE_POWERS) +;236: { +line 237 +;237: readBuf[0] = powerBuf[i]; +ADDRLP4 220 +ADDRLP4 76 +INDIRI4 +ADDRLP4 92 +ADDP4 +INDIRI1 +ASGNI1 +line 238 +;238: readBuf[1] = 0; +ADDRLP4 220+1 +CNSTI1 0 +ASGNI1 +line 239 +;239: final_Powers[c] = atoi(readBuf); +ADDRLP4 220 +ARGP4 +ADDRLP4 392 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +ADDRLP4 392 +INDIRI4 +ASGNI4 +line 240 +;240: c++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 241 +;241: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 242 +;242: } +LABELV $150 +line 235 +ADDRLP4 76 +INDIRI4 +CNSTI4 128 +GEI4 $155 +ADDRLP4 396 +ADDRLP4 76 +INDIRI4 +ADDRLP4 92 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 396 +INDIRI4 +CNSTI4 0 +EQI4 $155 +ADDRLP4 396 +INDIRI4 +CNSTI4 10 +EQI4 $155 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $149 +LABELV $155 +line 246 +;243: +;244: //final_Powers now contains all the stuff from the string +;245: //Set the maximum allowed points used based on the max rank level, and count the points actually used. +;246: allowedPoints = forceMasteryPoints[maxRank]; +ADDRLP4 88 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 forceMasteryPoints +ADDP4 +INDIRI4 +ASGNI4 +line 248 +;247: +;248: i = 0; +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +ADDRGP4 $157 +JUMPV +LABELV $156 +line 250 +;249: while (i < NUM_FORCE_POWERS) +;250: { //if this power doesn't match the side we're on, then 0 it now. +line 251 +;251: if (final_Powers[i] && +ADDRLP4 400 +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 404 +CNSTI4 0 +ASGNI4 +ADDRLP4 400 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ADDRLP4 404 +INDIRI4 +EQI4 $159 +ADDRLP4 408 +ADDRLP4 400 +INDIRI4 +ADDRGP4 forcePowerDarkLight +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 408 +INDIRI4 +ADDRLP4 404 +INDIRI4 +EQI4 $159 +ADDRLP4 408 +INDIRI4 +ADDRLP4 348 +INDIRI4 +EQI4 $159 +line 254 +;252: forcePowerDarkLight[i] && +;253: forcePowerDarkLight[i] != final_Side) +;254: { +line 255 +;255: final_Powers[i] = 0; +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 258 +;256: //This is only likely to happen with g_forceBasedTeams. Let it slide. +;257: //maintainsValidity = 0; +;258: } +LABELV $159 +line 260 +;259: +;260: if ( final_Powers[i] && +ADDRLP4 416 +CNSTI4 0 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ADDRLP4 416 +INDIRI4 +EQI4 $161 +ADDRFP4 20 +INDIRI4 +CNSTI4 1 +ADDRLP4 76 +INDIRI4 +LSHI4 +BANDI4 +ADDRLP4 416 +INDIRI4 +EQI4 $161 +line 262 +;261: (fpDisabled & (1 << i)) ) +;262: { //if this power is disabled on the server via said server option, then we don't get it. +line 263 +;263: final_Powers[i] = 0; +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 264 +;264: } +LABELV $161 +line 266 +;265: +;266: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 267 +;267: } +LABELV $157 +line 249 +ADDRLP4 76 +INDIRI4 +CNSTI4 18 +LTI4 $156 +line 269 +;268: +;269: if (gametype < GT_TEAM) +ADDRFP4 16 +INDIRI4 +CNSTI4 5 +GEI4 $163 +line 270 +;270: { //don't bother with team powers then +line 271 +;271: final_Powers[FP_TEAM_HEAL] = 0; +ADDRLP4 4+44 +CNSTI4 0 +ASGNI4 +line 272 +;272: final_Powers[FP_TEAM_FORCE] = 0; +ADDRLP4 4+48 +CNSTI4 0 +ASGNI4 +line 273 +;273: } +LABELV $163 +line 275 +;274: +;275: usedPoints = 0; +ADDRLP4 80 +CNSTI4 0 +ASGNI4 +line 276 +;276: i = 0; +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +ADDRGP4 $168 +JUMPV +LABELV $167 +line 278 +;277: while (i < NUM_FORCE_POWERS) +;278: { +line 279 +;279: countDown = 0; +ADDRLP4 84 +CNSTI4 0 +ASGNI4 +line 281 +;280: +;281: countDown = final_Powers[i]; +ADDRLP4 84 +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRGP4 $171 +JUMPV +LABELV $170 +line 284 +;282: +;283: while (countDown > 0) +;284: { +line 285 +;285: usedPoints += bgForcePowerCost[i][countDown]; //[fp index][fp level] +ADDRLP4 80 +ADDRLP4 80 +INDIRI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRGP4 bgForcePowerCost +ADDP4 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 287 +;286: //if this is jump, or we have a free saber and it's offense or defense, take the level back down on level 1 +;287: if ( countDown == 1 && +ADDRLP4 400 +CNSTI4 1 +ASGNI4 +ADDRLP4 84 +INDIRI4 +ADDRLP4 400 +INDIRI4 +NEI4 $173 +ADDRLP4 76 +INDIRI4 +ADDRLP4 400 +INDIRI4 +EQI4 $176 +ADDRLP4 76 +INDIRI4 +CNSTI4 15 +NEI4 $177 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $176 +LABELV $177 +ADDRLP4 76 +INDIRI4 +CNSTI4 16 +NEI4 $173 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $173 +LABELV $176 +line 291 +;288: ((i == FP_LEVITATION) || +;289: (i == FP_SABERATTACK && freeSaber) || +;290: (i == FP_SABERDEFEND && freeSaber)) ) +;291: { +line 292 +;292: usedPoints -= bgForcePowerCost[i][countDown]; +ADDRLP4 80 +ADDRLP4 80 +INDIRI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRGP4 bgForcePowerCost +ADDP4 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 293 +;293: } +LABELV $173 +line 294 +;294: countDown--; +ADDRLP4 84 +ADDRLP4 84 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 295 +;295: } +LABELV $171 +line 283 +ADDRLP4 84 +INDIRI4 +CNSTI4 0 +GTI4 $170 +line 297 +;296: +;297: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 298 +;298: } +LABELV $168 +line 277 +ADDRLP4 76 +INDIRI4 +CNSTI4 18 +LTI4 $167 +line 300 +;299: +;300: if (usedPoints > allowedPoints) +ADDRLP4 80 +INDIRI4 +ADDRLP4 88 +INDIRI4 +LEI4 $178 +line 301 +;301: { //Time to do the fancy stuff. (meaning, slowly cut parts off while taking a guess at what is most or least important in the config) +line 302 +;302: int attemptedCycles = 0; +ADDRLP4 408 +CNSTI4 0 +ASGNI4 +line 303 +;303: int powerCycle = 2; +ADDRLP4 400 +CNSTI4 2 +ASGNI4 +line 304 +;304: int minPow = 0; +ADDRLP4 404 +CNSTI4 0 +ASGNI4 +line 306 +;305: +;306: if (freeSaber) +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $180 +line 307 +;307: { +line 308 +;308: minPow = 1; +ADDRLP4 404 +CNSTI4 1 +ASGNI4 +line 309 +;309: } +LABELV $180 +line 311 +;310: +;311: maintainsValidity = qfalse; +ADDRLP4 352 +CNSTI4 0 +ASGNI4 +ADDRGP4 $183 +JUMPV +LABELV $182 +line 314 +;312: +;313: while (usedPoints > allowedPoints) +;314: { +line 315 +;315: c = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $186 +JUMPV +LABELV $185 +line 318 +;316: +;317: while (c < NUM_FORCE_POWERS && usedPoints > allowedPoints) +;318: { +line 319 +;319: if (final_Powers[c] && final_Powers[c] < powerCycle) +ADDRLP4 412 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 412 +INDIRI4 +CNSTI4 0 +EQI4 $188 +ADDRLP4 412 +INDIRI4 +ADDRLP4 400 +INDIRI4 +GEI4 $188 +line 320 +;320: { //kill in order of lowest powers, because the higher powers are probably more important +line 321 +;321: if (c == FP_SABERATTACK && +ADDRLP4 0 +INDIRI4 +CNSTI4 15 +NEI4 $207 +ADDRLP4 4+64 +INDIRI4 +ADDRLP4 404 +INDIRI4 +GTI4 $194 +ADDRLP4 4+68 +INDIRI4 +CNSTI4 0 +LEI4 $207 +LABELV $194 +line 323 +;322: (final_Powers[FP_SABERDEFEND] > minPow || final_Powers[FP_SABERTHROW] > 0)) +;323: { //if we're on saber attack, only suck it down if we have no def or throw either +line 324 +;324: int whichOne = FP_SABERTHROW; //first try throw +ADDRLP4 416 +CNSTI4 17 +ASGNI4 +line 326 +;325: +;326: if (!final_Powers[whichOne]) +ADDRLP4 416 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $198 +line 327 +;327: { +line 328 +;328: whichOne = FP_SABERDEFEND; //if no throw, drain defense +ADDRLP4 416 +CNSTI4 16 +ASGNI4 +line 329 +;329: } +ADDRGP4 $198 +JUMPV +LABELV $197 +line 332 +;330: +;331: while (final_Powers[whichOne] > 0 && usedPoints > allowedPoints) +;332: { +line 333 +;333: if ( final_Powers[whichOne] > 1 || +ADDRLP4 416 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +CNSTI4 1 +GTI4 $204 +ADDRLP4 416 +INDIRI4 +CNSTI4 15 +NEI4 $203 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $191 +LABELV $203 +ADDRLP4 416 +INDIRI4 +CNSTI4 16 +NEI4 $204 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $191 +LABELV $204 +line 336 +;334: ( (whichOne != FP_SABERATTACK || !freeSaber) && +;335: (whichOne != FP_SABERDEFEND || !freeSaber) ) ) +;336: { //don't take attack or defend down on level 1 still, if it's free +line 337 +;337: usedPoints -= bgForcePowerCost[whichOne][final_Powers[whichOne]]; +ADDRLP4 428 +CNSTI4 2 +ASGNI4 +ADDRLP4 80 +ADDRLP4 80 +INDIRI4 +ADDRLP4 416 +INDIRI4 +ADDRLP4 428 +INDIRI4 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ADDRLP4 428 +INDIRI4 +LSHI4 +ADDRLP4 416 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRGP4 bgForcePowerCost +ADDP4 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 338 +;338: final_Powers[whichOne]--; +ADDRLP4 432 +ADDRLP4 416 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +ASGNP4 +ADDRLP4 432 +INDIRP4 +ADDRLP4 432 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 339 +;339: } +line 341 +;340: else +;341: { +line 342 +;342: break; +LABELV $201 +line 344 +;343: } +;344: } +LABELV $198 +line 331 +ADDRLP4 416 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $205 +ADDRLP4 80 +INDIRI4 +ADDRLP4 88 +INDIRI4 +GTI4 $197 +LABELV $205 +line 345 +;345: } +ADDRGP4 $191 +JUMPV +line 347 +;346: else +;347: { +LABELV $206 +line 349 +;348: while (final_Powers[c] > 0 && usedPoints > allowedPoints) +;349: { +line 350 +;350: if ( final_Powers[c] > 1 || +ADDRLP4 420 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ADDRLP4 420 +INDIRI4 +GTI4 $213 +ADDRLP4 0 +INDIRI4 +ADDRLP4 420 +INDIRI4 +EQI4 $208 +ADDRLP4 0 +INDIRI4 +CNSTI4 15 +NEI4 $212 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $208 +LABELV $212 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +NEI4 $213 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $208 +LABELV $213 +line 354 +;351: ((c != FP_LEVITATION) && +;352: (c != FP_SABERATTACK || !freeSaber) && +;353: (c != FP_SABERDEFEND || !freeSaber)) ) +;354: { +line 355 +;355: usedPoints -= bgForcePowerCost[c][final_Powers[c]]; +ADDRLP4 428 +CNSTI4 2 +ASGNI4 +ADDRLP4 80 +ADDRLP4 80 +INDIRI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 428 +INDIRI4 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ADDRLP4 428 +INDIRI4 +LSHI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRGP4 bgForcePowerCost +ADDP4 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 356 +;356: final_Powers[c]--; +ADDRLP4 432 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +ASGNP4 +ADDRLP4 432 +INDIRP4 +ADDRLP4 432 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 357 +;357: } +line 359 +;358: else +;359: { +line 360 +;360: break; +LABELV $210 +line 362 +;361: } +;362: } +LABELV $207 +line 348 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $214 +ADDRLP4 80 +INDIRI4 +ADDRLP4 88 +INDIRI4 +GTI4 $206 +LABELV $214 +LABELV $208 +line 363 +;363: } +LABELV $191 +line 364 +;364: } +LABELV $188 +line 366 +;365: +;366: c++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 367 +;367: } +LABELV $186 +line 317 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +GEI4 $215 +ADDRLP4 80 +INDIRI4 +ADDRLP4 88 +INDIRI4 +GTI4 $185 +LABELV $215 +line 369 +;368: +;369: powerCycle++; +ADDRLP4 400 +ADDRLP4 400 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 370 +;370: attemptedCycles++; +ADDRLP4 408 +ADDRLP4 408 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 372 +;371: +;372: if (attemptedCycles > NUM_FORCE_POWERS) +ADDRLP4 408 +INDIRI4 +CNSTI4 18 +LEI4 $216 +line 373 +;373: { //I think this should be impossible. But just in case. +line 374 +;374: break; +ADDRGP4 $184 +JUMPV +LABELV $216 +line 376 +;375: } +;376: } +LABELV $183 +line 313 +ADDRLP4 80 +INDIRI4 +ADDRLP4 88 +INDIRI4 +GTI4 $182 +LABELV $184 +line 378 +;377: +;378: if (usedPoints > allowedPoints) +ADDRLP4 80 +INDIRI4 +ADDRLP4 88 +INDIRI4 +LEI4 $218 +line 379 +;379: { //Still? Fine then.. we will kill all of your powers, except the freebies. +line 380 +;380: i = 0; +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +ADDRGP4 $221 +JUMPV +LABELV $220 +line 383 +;381: +;382: while (i < NUM_FORCE_POWERS) +;383: { +line 384 +;384: final_Powers[i] = 0; +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 385 +;385: if (i == FP_LEVITATION || +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +EQI4 $226 +ADDRLP4 76 +INDIRI4 +CNSTI4 15 +NEI4 $227 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $226 +LABELV $227 +ADDRLP4 76 +INDIRI4 +CNSTI4 16 +NEI4 $223 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $223 +LABELV $226 +line 388 +;386: (i == FP_SABERATTACK && freeSaber) || +;387: (i == FP_SABERDEFEND && freeSaber)) +;388: { +line 389 +;389: final_Powers[i] = 1; +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +CNSTI4 1 +ASGNI4 +line 390 +;390: } +LABELV $223 +line 391 +;391: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 392 +;392: } +LABELV $221 +line 382 +ADDRLP4 76 +INDIRI4 +CNSTI4 18 +LTI4 $220 +line 393 +;393: usedPoints = 0; +ADDRLP4 80 +CNSTI4 0 +ASGNI4 +line 394 +;394: } +LABELV $218 +line 395 +;395: } +LABELV $178 +line 397 +;396: +;397: if (final_Powers[FP_SABERATTACK] < 1) +ADDRLP4 4+60 +INDIRI4 +CNSTI4 1 +GEI4 $228 +line 398 +;398: { +line 399 +;399: final_Powers[FP_SABERDEFEND] = 0; +ADDRLP4 4+64 +CNSTI4 0 +ASGNI4 +line 400 +;400: final_Powers[FP_SABERTHROW] = 0; +ADDRLP4 4+68 +CNSTI4 0 +ASGNI4 +line 401 +;401: } +LABELV $228 +line 403 +;402: +;403: if (freeSaber) +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $233 +line 404 +;404: { +line 405 +;405: if (final_Powers[FP_SABERATTACK] < 1) +ADDRLP4 4+60 +INDIRI4 +CNSTI4 1 +GEI4 $235 +line 406 +;406: { +line 407 +;407: final_Powers[FP_SABERATTACK] = 1; +ADDRLP4 4+60 +CNSTI4 1 +ASGNI4 +line 408 +;408: } +LABELV $235 +line 409 +;409: if (final_Powers[FP_SABERDEFEND] < 1) +ADDRLP4 4+64 +INDIRI4 +CNSTI4 1 +GEI4 $239 +line 410 +;410: { +line 411 +;411: final_Powers[FP_SABERDEFEND] = 1; +ADDRLP4 4+64 +CNSTI4 1 +ASGNI4 +line 412 +;412: } +LABELV $239 +line 413 +;413: } +LABELV $233 +line 414 +;414: if (final_Powers[FP_LEVITATION] < 1) +ADDRLP4 4+4 +INDIRI4 +CNSTI4 1 +GEI4 $243 +line 415 +;415: { +line 416 +;416: final_Powers[FP_LEVITATION] = 1; +ADDRLP4 4+4 +CNSTI4 1 +ASGNI4 +line 417 +;417: } +LABELV $243 +line 419 +;418: +;419: if (fpDisabled) +ADDRFP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $247 +line 420 +;420: { +line 421 +;421: final_Powers[FP_LEVITATION] = 1; +ADDRLP4 4+4 +CNSTI4 1 +ASGNI4 +line 422 +;422: final_Powers[FP_SABERATTACK] = 3; +ADDRLP4 4+60 +CNSTI4 3 +ASGNI4 +line 423 +;423: final_Powers[FP_SABERDEFEND] = 3; +ADDRLP4 4+64 +CNSTI4 3 +ASGNI4 +line 424 +;424: final_Powers[FP_SABERTHROW] = 0; +ADDRLP4 4+68 +CNSTI4 0 +ASGNI4 +line 425 +;425: } +LABELV $247 +line 430 +;426: +;427: //We finally have all the force powers legalized and stored locally. +;428: //Put them all into the string and return the result. We already have +;429: //the rank there, so print the side and the powers now. +;430: Q_strcat(powerOut, 128, va("%i-", final_Side)); +ADDRGP4 $132 +ARGP4 +ADDRLP4 348 +INDIRI4 +ARGI4 +ADDRLP4 400 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRLP4 400 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 432 +;431: +;432: i = strlen(powerOut); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 404 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 76 +ADDRLP4 404 +INDIRI4 +ASGNI4 +line 433 +;433: c = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $254 +JUMPV +LABELV $253 +line 435 +;434: while (c < NUM_FORCE_POWERS) +;435: { +line 436 +;436: strcpy(readBuf, va("%i", final_Powers[c])); +ADDRGP4 $256 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 408 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 220 +ARGP4 +ADDRLP4 408 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 437 +;437: powerOut[i] = readBuf[0]; +ADDRLP4 76 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ADDRLP4 220 +INDIRI1 +ASGNI1 +line 438 +;438: c++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 439 +;439: i++; +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 440 +;440: } +LABELV $254 +line 434 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $253 +line 441 +;441: powerOut[i] = 0; +ADDRLP4 76 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 443 +;442: +;443: return maintainsValidity; +ADDRLP4 352 +INDIRI4 +RETI4 +LABELV $128 +endproc BG_LegalizedForcePowers 436 12 +data +export bg_itemlist +align 4 +LABELV bg_itemlist +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $257 +address $257 +address $258 +address $259 +address $260 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $261 +byte 4 25 +byte 4 3 +byte 4 1 +address $257 +address $257 +address $262 +address $259 +address $263 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $264 +byte 4 100 +byte 4 3 +byte 4 2 +address $257 +address $257 +address $265 +address $266 +address $267 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $268 +byte 4 25 +byte 4 4 +byte 4 0 +address $257 +address $257 +address $269 +address $270 +address $271 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $272 +byte 4 120 +byte 4 6 +byte 4 1 +address $257 +address $257 +address $273 +address $270 +address $274 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $275 +byte 4 120 +byte 4 6 +byte 4 2 +address $257 +address $276 +address $277 +address $270 +address $278 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $279 +byte 4 25 +byte 4 6 +byte 4 3 +address $257 +address $257 +address $280 +address $270 +address $281 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1 +byte 4 6 +byte 4 4 +address $257 +address $257 +address $282 +address $270 +address $283 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $284 +byte 4 60 +byte 4 6 +byte 4 5 +address $257 +address $257 +address $285 +address $270 +address $286 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $287 +byte 4 120 +byte 4 6 +byte 4 6 +address $257 +address $257 +address $288 +address $289 +address $290 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $291 +byte 4 25 +byte 4 5 +byte 4 12 +address $257 +address $257 +address $292 +address $289 +address $293 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $294 +byte 4 25 +byte 4 5 +byte 4 13 +address $257 +address $257 +address $295 +address $296 +address $297 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $298 +byte 4 25 +byte 4 5 +byte 4 14 +address $257 +address $257 +address $299 +address $300 +address $301 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $302 +byte 4 25 +byte 4 5 +byte 4 15 +address $257 +address $257 +address $303 +address $270 +address $304 +byte 4 0 +byte 4 0 +byte 4 0 +address $305 +address $306 +byte 4 100 +byte 4 1 +byte 4 1 +address $257 +address $257 +address $307 +address $270 +address $308 +byte 4 0 +byte 4 0 +byte 4 0 +address $309 +address $310 +byte 4 100 +byte 4 1 +byte 4 2 +address $257 +address $257 +address $311 +address $270 +address $312 +byte 4 0 +byte 4 0 +byte 4 0 +address $313 +address $314 +byte 4 100 +byte 4 1 +byte 4 3 +address $257 +address $257 +address $315 +address $270 +address $316 +byte 4 0 +byte 4 0 +byte 4 0 +address $317 +address $318 +byte 4 100 +byte 4 1 +byte 4 4 +address $257 +address $257 +address $319 +address $270 +address $320 +byte 4 0 +byte 4 0 +byte 4 0 +address $321 +address $322 +byte 4 100 +byte 4 1 +byte 4 5 +address $257 +address $257 +address $323 +address $270 +address $324 +byte 4 0 +byte 4 0 +byte 4 0 +address $325 +address $326 +byte 4 100 +byte 4 1 +byte 4 6 +address $257 +address $257 +address $327 +address $270 +address $328 +byte 4 0 +byte 4 0 +byte 4 0 +address $329 +address $330 +byte 4 100 +byte 4 1 +byte 4 7 +address $257 +address $257 +address $331 +address $270 +address $332 +byte 4 0 +byte 4 0 +byte 4 0 +address $333 +address $334 +byte 4 100 +byte 4 1 +byte 4 8 +address $257 +address $257 +address $335 +address $270 +address $336 +byte 4 0 +byte 4 0 +byte 4 0 +address $337 +address $338 +byte 4 100 +byte 4 1 +byte 4 9 +address $257 +address $257 +address $339 +address $270 +address $340 +byte 4 0 +byte 4 0 +byte 4 0 +address $341 +address $342 +byte 4 3 +byte 4 1 +byte 4 10 +address $257 +address $257 +address $343 +address $270 +address $344 +address $345 +byte 4 0 +byte 4 0 +address $346 +address $347 +byte 4 4 +byte 4 2 +byte 4 7 +address $257 +address $257 +address $348 +address $270 +address $349 +address $350 +byte 4 0 +byte 4 0 +address $351 +address $352 +byte 4 3 +byte 4 2 +byte 4 8 +address $257 +address $257 +address $353 +address $270 +address $354 +address $355 +address $356 +byte 4 0 +address $357 +address $358 +byte 4 3 +byte 4 2 +byte 4 9 +address $257 +address $257 +address $359 +address $270 +address $345 +address $344 +byte 4 0 +byte 4 0 +address $346 +address $347 +byte 4 4 +byte 4 1 +byte 4 11 +address $257 +address $257 +address $360 +address $270 +address $350 +address $349 +byte 4 0 +byte 4 0 +address $351 +address $352 +byte 4 3 +byte 4 1 +byte 4 12 +address $257 +address $257 +address $361 +address $270 +address $355 +address $354 +address $356 +byte 4 0 +address $357 +address $358 +byte 4 3 +byte 4 1 +byte 4 13 +address $257 +address $257 +address $362 +address $270 +address $316 +byte 4 0 +byte 4 0 +byte 4 0 +address $317 +address $318 +byte 4 50 +byte 4 1 +byte 4 14 +address $257 +address $257 +address $363 +address $270 +address $316 +byte 4 0 +byte 4 0 +byte 4 0 +address $317 +address $318 +byte 4 50 +byte 4 1 +byte 4 15 +address $257 +address $257 +address $364 +address $365 +address $366 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $318 +byte 4 100 +byte 4 2 +byte 4 1 +address $257 +address $257 +address $367 +address $365 +address $366 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $368 +byte 4 100 +byte 4 2 +byte 4 2 +address $257 +address $257 +address $369 +address $365 +address $370 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $371 +byte 4 100 +byte 4 2 +byte 4 3 +address $257 +address $257 +address $372 +address $365 +address $373 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $374 +byte 4 100 +byte 4 2 +byte 4 4 +address $257 +address $257 +address $375 +address $365 +address $376 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $377 +byte 4 3 +byte 4 2 +byte 4 5 +address $257 +address $257 +address $378 +byte 4 0 +address $379 +address $380 +byte 4 0 +byte 4 0 +byte 4 0 +address $381 +byte 4 0 +byte 4 8 +byte 4 4 +address $257 +address $257 +address $382 +byte 4 0 +address $383 +address $384 +byte 4 0 +byte 4 0 +byte 4 0 +address $385 +byte 4 0 +byte 4 8 +byte 4 5 +address $257 +address $257 +address $386 +byte 4 0 +address $387 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $388 +byte 4 0 +byte 4 8 +byte 4 6 +address $257 +address $257 +address $389 +address $365 +address $390 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $391 +byte 4 0 +byte 4 8 +byte 4 0 +address $257 +address $257 +address $392 +address $365 +address $393 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $394 +byte 4 0 +byte 4 8 +byte 4 0 +address $257 +address $257 +byte 4 0 +skip 48 +export bg_numItems +align 4 +LABELV bg_numItems +byte 4 42 +export vectoyaw +code +proc vectoyaw 20 8 +line 1235 +;444:} +;445: +;446:/*QUAKED item_***** ( 0 0 0 ) (-16 -16 -16) (16 16 16) suspended +;447:DO NOT USE THIS CLASS, IT JUST HOLDS GENERAL INFORMATION. +;448:The suspended flag will allow items to hang in the air, otherwise they are dropped to the next surface. +;449: +;450:If an item is the target of another entity, it will not spawn in until fired. +;451: +;452:An item fires all of its targets when it is picked up. If the toucher can't carry it, the targets won't be fired. +;453: +;454:"notfree" if set to 1, don't spawn in free for all games +;455:"notteam" if set to 1, don't spawn in team games +;456:"notsingle" if set to 1, don't spawn in single player games +;457:"wait" override the default wait before respawning. -1 = never respawn automatically, which can be used with targeted spawning. +;458:"random" random number of plus or minus seconds varied from the respawn time +;459:"count" override quantity or duration on most items. +;460:*/ +;461: +;462:/*QUAKED misc_shield_floor_unit (1 0 0) (-16 -16 0) (16 16 40) +;463:#MODELNAME="/models/items/a_shield_converter.md3" +;464:Gives shield energy when used. +;465: +;466:"count" - max charge value (default 50) +;467:"chargerate" - rechage 1 point every this many milliseconds (default 3000) +;468:*/ +;469: +;470:gitem_t bg_itemlist[] = +;471:{ +;472: { +;473: NULL, // classname +;474: NULL, // pickup_sound +;475: { NULL, // world_model[0] +;476: NULL, // world_model[1] +;477: 0, 0} , // world_model[2],[3] +;478: NULL, // view_model +;479:/* icon */ NULL, // icon +;480:/* pickup */ //NULL, // pickup_name +;481: 0, // quantity +;482: 0, // giType (IT_*) +;483: 0, // giTag +;484:/* precache */ "", // precaches +;485:/* sounds */ "" // sounds +;486: }, // leave index 0 alone +;487: +;488: // +;489: // Pickups +;490: // +;491: +;492:/*QUAKED item_shield_sm_instant (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;493:Instant shield pickup, restores 25 +;494:*/ +;495: { +;496: "item_shield_sm_instant", +;497: "sound/player/pickupshield.wav", +;498: { "models/map_objects/mp/psd_sm.md3", +;499: 0, 0, 0}, +;500:/* view */ NULL, +;501:/* icon */ "gfx/mp/small_shield", +;502:/* pickup */// "Shield Small", +;503: 25, +;504: IT_ARMOR, +;505: 1, //special for shield - max on pickup is maxhealth*tag, thus small shield goes up to 100 shield +;506:/* precache */ "", +;507:/* sounds */ "" +;508: }, +;509: +;510:/*QUAKED item_shield_lrg_instant (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;511:Instant shield pickup, restores 100 +;512:*/ +;513: { +;514: "item_shield_lrg_instant", +;515: "sound/player/pickupshield.wav", +;516: { "models/map_objects/mp/psd.md3", +;517: 0, 0, 0}, +;518:/* view */ NULL, +;519:/* icon */ "gfx/mp/large_shield", +;520:/* pickup */// "Shield Large", +;521: 100, +;522: IT_ARMOR, +;523: 2, //special for shield - max on pickup is maxhealth*tag, thus large shield goes up to 200 shield +;524:/* precache */ "", +;525:/* sounds */ "" +;526: }, +;527: +;528:/*QUAKED item_medpak_instant (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;529:Instant medpack pickup, heals 25 +;530:*/ +;531: { +;532: "item_medpak_instant", +;533: "sound/player/pickuphealth.wav", +;534: { "models/map_objects/mp/medpac.md3", +;535: 0, 0, 0 }, +;536:/* view */ NULL, +;537:/* icon */ "gfx/hud/i_icon_medkit", +;538:/* pickup */// "Medpack", +;539: 25, +;540: IT_HEALTH, +;541: 0, +;542:/* precache */ "", +;543:/* sounds */ "" +;544: }, +;545: +;546: +;547: // +;548: // ITEMS +;549: // +;550: +;551:/*QUAKED item_seeker (.3 .3 1) (-8 -8 -0) (8 8 16) suspended +;552:30 seconds of seeker drone +;553:*/ +;554: { +;555: "item_seeker", +;556: "sound/weapons/w_pkup.wav", +;557: { "models/items/remote.md3", +;558: 0, 0, 0} , +;559:/* view */ NULL, +;560:/* icon */ "gfx/hud/i_icon_seeker", +;561:/* pickup */// "Seeker Drone", +;562: 120, +;563: IT_HOLDABLE, +;564: HI_SEEKER, +;565:/* precache */ "", +;566:/* sounds */ "" +;567: }, +;568: +;569:/*QUAKED item_shield (.3 .3 1) (-8 -8 -0) (8 8 16) suspended +;570:Portable shield +;571:*/ +;572: { +;573: "item_shield", +;574: "sound/weapons/w_pkup.wav", +;575: { "models/map_objects/mp/shield.md3", +;576: 0, 0, 0} , +;577:/* view */ NULL, +;578:/* icon */ "gfx/hud/i_icon_shieldwall", +;579:/* pickup */// "Forcefield", +;580: 120, +;581: IT_HOLDABLE, +;582: HI_SHIELD, +;583:/* precache */ "", +;584:/* sounds */ "sound/weapons/detpack/stick.wav sound/movers/doors/forcefield_on.wav sound/movers/doors/forcefield_off.wav sound/movers/doors/forcefield_lp.wav sound/effects/bumpfield.wav", +;585: }, +;586: +;587:/*QUAKED item_medpac (.3 .3 1) (-8 -8 -0) (8 8 16) suspended +;588:Bacta canister pickup, heals 25 on use +;589:*/ +;590: { +;591: "item_medpac", //should be item_bacta +;592: "sound/weapons/w_pkup.wav", +;593: { "models/map_objects/mp/bacta.md3", +;594: 0, 0, 0} , +;595:/* view */ NULL, +;596:/* icon */ "gfx/hud/i_icon_bacta", +;597:/* pickup */// "Bacta Canister", +;598: 25, +;599: IT_HOLDABLE, +;600: HI_MEDPAC, +;601:/* precache */ "", +;602:/* sounds */ "" +;603: }, +;604: +;605:/*QUAKED item_datapad (.3 .3 1) (-8 -8 -0) (8 8 16) suspended +;606:Do not place this. +;607:*/ +;608: { +;609: "item_datapad", +;610: "sound/weapons/w_pkup.wav", +;611: { "models/items/datapad.md3", +;612: 0, 0, 0} , +;613:/* view */ NULL, +;614:/* icon */ NULL, +;615:/* pickup */// "Datapad", +;616: 1, +;617: IT_HOLDABLE, +;618: HI_DATAPAD, +;619:/* precache */ "", +;620:/* sounds */ "" +;621: }, +;622: +;623:/*QUAKED item_binoculars (.3 .3 1) (-8 -8 -0) (8 8 16) suspended +;624:These will be standard equipment on the player - DO NOT PLACE +;625:*/ +;626: { +;627: "item_binoculars", +;628: "sound/weapons/w_pkup.wav", +;629: { "models/items/binoculars.md3", +;630: 0, 0, 0} , +;631:/* view */ NULL, +;632:/* icon */ "gfx/hud/i_icon_zoom", +;633:/* pickup */// "Binoculars", +;634: 60, +;635: IT_HOLDABLE, +;636: HI_BINOCULARS, +;637:/* precache */ "", +;638:/* sounds */ "" +;639: }, +;640: +;641:/*QUAKED item_sentry_gun (.3 .3 1) (-8 -8 -0) (8 8 16) suspended +;642:Sentry gun inventory pickup. +;643:*/ +;644: { +;645: "item_sentry_gun", +;646: "sound/weapons/w_pkup.wav", +;647: { "models/items/psgun.glm", +;648: 0, 0, 0} , +;649:/* view */ NULL, +;650:/* icon */ "gfx/hud/i_icon_sentrygun", +;651:/* pickup */// "Sentry Gun", +;652: 120, +;653: IT_HOLDABLE, +;654: HI_SENTRY_GUN, +;655:/* precache */ "", +;656:/* sounds */ "" +;657: }, +;658: +;659:/*QUAKED item_force_enlighten_light (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;660:Adds one rank to all Force powers temporarily. Only light jedi can use. +;661:*/ +;662: { +;663: "item_force_enlighten_light", +;664: "sound/player/enlightenment.wav", +;665: { "models/map_objects/mp/jedi_enlightenment.md3", +;666: 0, 0, 0} , +;667:/* view */ NULL, +;668:/* icon */ "gfx/hud/mpi_jlight", +;669:/* pickup */// "Light Force Enlightenment", +;670: 25, +;671: IT_POWERUP, +;672: PW_FORCE_ENLIGHTENED_LIGHT, +;673:/* precache */ "", +;674:/* sounds */ "" +;675: }, +;676: +;677:/*QUAKED item_force_enlighten_dark (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;678:Adds one rank to all Force powers temporarily. Only dark jedi can use. +;679:*/ +;680: { +;681: "item_force_enlighten_dark", +;682: "sound/player/enlightenment.wav", +;683: { "models/map_objects/mp/dk_enlightenment.md3", +;684: 0, 0, 0} , +;685:/* view */ NULL, +;686:/* icon */ "gfx/hud/mpi_dklight", +;687:/* pickup */// "Dark Force Enlightenment", +;688: 25, +;689: IT_POWERUP, +;690: PW_FORCE_ENLIGHTENED_DARK, +;691:/* precache */ "", +;692:/* sounds */ "" +;693: }, +;694: +;695:/*QUAKED item_force_boon (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;696:Unlimited Force Pool for a short time. +;697:*/ +;698: { +;699: "item_force_boon", +;700: "sound/player/boon.wav", +;701: { "models/map_objects/mp/force_boon.md3", +;702: 0, 0, 0} , +;703:/* view */ NULL, +;704:/* icon */ "gfx/hud/mpi_fboon", +;705:/* pickup */// "Force Boon", +;706: 25, +;707: IT_POWERUP, +;708: PW_FORCE_BOON, +;709:/* precache */ "", +;710:/* sounds */ "" +;711: }, +;712: +;713:/*QUAKED item_ysalimari (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;714:A small lizard carried on the player, which prevents the possessor from using any Force power. However, he is unaffected by any Force power. +;715:*/ +;716: { +;717: "item_ysalimari", +;718: "sound/player/ysalimari.wav", +;719: { "models/map_objects/mp/ysalimari.md3", +;720: 0, 0, 0} , +;721:/* view */ NULL, +;722:/* icon */ "gfx/hud/mpi_ysamari", +;723:/* pickup */// "Ysalamiri", +;724: 25, +;725: IT_POWERUP, +;726: PW_YSALAMIRI, +;727:/* precache */ "", +;728:/* sounds */ "" +;729: }, +;730: +;731: // +;732: // WEAPONS +;733: // +;734: +;735:/*QUAKED weapon_stun_baton (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;736:Don't place this +;737:*/ +;738: { +;739: "weapon_stun_baton", +;740: "sound/weapons/w_pkup.wav", +;741: { "models/weapons2/stun_baton/baton_w.glm", +;742: 0, 0, 0}, +;743:/* view */ "models/weapons2/stun_baton/baton.md3", +;744:/* icon */ "gfx/hud/w_icon_stunbaton", +;745:/* pickup */// "Stun Baton", +;746: 100, +;747: IT_WEAPON, +;748: WP_STUN_BATON, +;749:/* precache */ "", +;750:/* sounds */ "" +;751: }, +;752: +;753:/*QUAKED weapon_saber (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;754:Don't place this +;755:*/ +;756: { +;757: "weapon_saber", +;758: "sound/weapons/w_pkup.wav", +;759: { "models/weapons2/saber/saber_w.glm", +;760: 0, 0, 0}, +;761:/* view */ "models/weapons2/saber/saber_w.md3", +;762:/* icon */ "gfx/hud/w_icon_lightsaber", +;763:/* pickup */// "Lightsaber", +;764: 100, +;765: IT_WEAPON, +;766: WP_SABER, +;767:/* precache */ "", +;768:/* sounds */ "" +;769: }, +;770: +;771:/*QUAKED weapon_bryar_pistol (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;772:Don't place this +;773:*/ +;774: { +;775: "weapon_bryar_pistol", +;776: "sound/weapons/w_pkup.wav", +;777: { "models/weapons2/briar_pistol/briar_pistol_w.glm", +;778: 0, 0, 0}, +;779:/* view */ "models/weapons2/briar_pistol/briar_pistol.md3", +;780:/* icon */ "gfx/hud/w_icon_rifle", +;781:/* pickup */// "Bryar Pistol", +;782: 100, +;783: IT_WEAPON, +;784: WP_BRYAR_PISTOL, +;785:/* precache */ "", +;786:/* sounds */ "" +;787: }, +;788: +;789:/*QUAKED weapon_blaster (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;790:*/ +;791: { +;792: "weapon_blaster", +;793: "sound/weapons/w_pkup.wav", +;794: { "models/weapons2/blaster_r/blaster_w.glm", +;795: 0, 0, 0}, +;796:/* view */ "models/weapons2/blaster_r/blaster.md3", +;797:/* icon */ "gfx/hud/w_icon_blaster", +;798:/* pickup */// "E11 Blaster Rifle", +;799: 100, +;800: IT_WEAPON, +;801: WP_BLASTER, +;802:/* precache */ "", +;803:/* sounds */ "" +;804: }, +;805: +;806:/*QUAKED weapon_disruptor (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;807:*/ +;808: { +;809: "weapon_disruptor", +;810: "sound/weapons/w_pkup.wav", +;811: { "models/weapons2/disruptor/disruptor_w.glm", +;812: 0, 0, 0}, +;813:/* view */ "models/weapons2/disruptor/disruptor.md3", +;814:/* icon */ "gfx/hud/w_icon_disruptor", +;815:/* pickup */// "Tenloss Disruptor Rifle", +;816: 100, +;817: IT_WEAPON, +;818: WP_DISRUPTOR, +;819:/* precache */ "", +;820:/* sounds */ "" +;821: }, +;822: +;823:/*QUAKED weapon_bowcaster (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;824:*/ +;825: { +;826: "weapon_bowcaster", +;827: "sound/weapons/w_pkup.wav", +;828: { "models/weapons2/bowcaster/bowcaster_w.glm", +;829: 0, 0, 0}, +;830:/* view */ "models/weapons2/bowcaster/bowcaster.md3", +;831:/* icon */ "gfx/hud/w_icon_bowcaster", +;832:/* pickup */// "Wookiee Bowcaster", +;833: 100, +;834: IT_WEAPON, +;835: WP_BOWCASTER, +;836:/* precache */ "", +;837:/* sounds */ "" +;838: }, +;839: +;840:/*QUAKED weapon_repeater (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;841:*/ +;842: { +;843: "weapon_repeater", +;844: "sound/weapons/w_pkup.wav", +;845: { "models/weapons2/heavy_repeater/heavy_repeater_w.glm", +;846: 0, 0, 0}, +;847:/* view */ "models/weapons2/heavy_repeater/heavy_repeater.md3", +;848:/* icon */ "gfx/hud/w_icon_repeater", +;849:/* pickup */// "Imperial Heavy Repeater", +;850: 100, +;851: IT_WEAPON, +;852: WP_REPEATER, +;853:/* precache */ "", +;854:/* sounds */ "" +;855: }, +;856: +;857:/*QUAKED weapon_demp2 (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;858:NOTENOTE This weapon is not yet complete. Don't place it. +;859:*/ +;860: { +;861: "weapon_demp2", +;862: "sound/weapons/w_pkup.wav", +;863: { "models/weapons2/demp2/demp2_w.glm", +;864: 0, 0, 0}, +;865:/* view */ "models/weapons2/demp2/demp2.md3", +;866:/* icon */ "gfx/hud/w_icon_demp2", +;867:/* pickup */// "DEMP2", +;868: 100, +;869: IT_WEAPON, +;870: WP_DEMP2, +;871:/* precache */ "", +;872:/* sounds */ "" +;873: }, +;874: +;875:/*QUAKED weapon_flechette (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;876:*/ +;877: { +;878: "weapon_flechette", +;879: "sound/weapons/w_pkup.wav", +;880: { "models/weapons2/golan_arms/golan_arms_w.glm", +;881: 0, 0, 0}, +;882:/* view */ "models/weapons2/golan_arms/golan_arms.md3", +;883:/* icon */ "gfx/hud/w_icon_flechette", +;884:/* pickup */// "Golan Arms Flechette", +;885: 100, +;886: IT_WEAPON, +;887: WP_FLECHETTE, +;888:/* precache */ "", +;889:/* sounds */ "" +;890: }, +;891: +;892:/*QUAKED weapon_rocket_launcher (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;893:*/ +;894: { +;895: "weapon_rocket_launcher", +;896: "sound/weapons/w_pkup.wav", +;897: { "models/weapons2/merr_sonn/merr_sonn_w.glm", +;898: 0, 0, 0}, +;899:/* view */ "models/weapons2/merr_sonn/merr_sonn.md3", +;900:/* icon */ "gfx/hud/w_icon_merrsonn", +;901:/* pickup */// "Merr-Sonn Missile System", +;902: 3, +;903: IT_WEAPON, +;904: WP_ROCKET_LAUNCHER, +;905:/* precache */ "", +;906:/* sounds */ "" +;907: }, +;908: +;909:/*QUAKED ammo_thermal (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;910:*/ +;911: { +;912: "ammo_thermal", +;913: "sound/weapons/w_pkup.wav", +;914: { "models/weapons2/thermal/thermal_pu.md3", +;915: "models/weapons2/thermal/thermal_w.glm", 0, 0}, +;916:/* view */ "models/weapons2/thermal/thermal.md3", +;917:/* icon */ "gfx/hud/w_icon_thermal", +;918:/* pickup */// "Thermal Detonators", +;919: 4, +;920: IT_AMMO, +;921: AMMO_THERMAL, +;922:/* precache */ "", +;923:/* sounds */ "" +;924: }, +;925: +;926:/*QUAKED ammo_tripmine (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;927:*/ +;928: { +;929: "ammo_tripmine", +;930: "sound/weapons/w_pkup.wav", +;931: { "models/weapons2/laser_trap/laser_trap_pu.md3", +;932: "models/weapons2/laser_trap/laser_trap_w.glm", 0, 0}, +;933:/* view */ "models/weapons2/laser_trap/laser_trap.md3", +;934:/* icon */ "gfx/hud/w_icon_tripmine", +;935:/* pickup */// "Trip Mines", +;936: 3, +;937: IT_AMMO, +;938: AMMO_TRIPMINE, +;939:/* precache */ "", +;940:/* sounds */ "" +;941: }, +;942: +;943:/*QUAKED ammo_detpack (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;944:*/ +;945: { +;946: "ammo_detpack", +;947: "sound/weapons/w_pkup.wav", +;948: { "models/weapons2/detpack/det_pack_pu.md3", "models/weapons2/detpack/det_pack_proj.glm", "models/weapons2/detpack/det_pack_w.glm", 0}, +;949:/* view */ "models/weapons2/detpack/det_pack.md3", +;950:/* icon */ "gfx/hud/w_icon_detpack", +;951:/* pickup */// "Det Packs", +;952: 3, +;953: IT_AMMO, +;954: AMMO_DETPACK, +;955:/* precache */ "", +;956:/* sounds */ "" +;957: }, +;958: +;959:/*QUAKED weapon_thermal (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;960:*/ +;961: { +;962: "weapon_thermal", +;963: "sound/weapons/w_pkup.wav", +;964: { "models/weapons2/thermal/thermal_w.glm", "models/weapons2/thermal/thermal_pu.md3", +;965: 0, 0 }, +;966:/* view */ "models/weapons2/thermal/thermal.md3", +;967:/* icon */ "gfx/hud/w_icon_thermal", +;968:/* pickup */// "Thermal Detonator", +;969: 4, +;970: IT_WEAPON, +;971: WP_THERMAL, +;972:/* precache */ "", +;973:/* sounds */ "" +;974: }, +;975: +;976:/*QUAKED weapon_trip_mine (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;977:*/ +;978: { +;979: "weapon_trip_mine", +;980: "sound/weapons/w_pkup.wav", +;981: { "models/weapons2/laser_trap/laser_trap_w.glm", "models/weapons2/laser_trap/laser_trap_pu.md3", +;982: 0, 0}, +;983:/* view */ "models/weapons2/laser_trap/laser_trap.md3", +;984:/* icon */ "gfx/hud/w_icon_tripmine", +;985:/* pickup */// "Trip Mine", +;986: 3, +;987: IT_WEAPON, +;988: WP_TRIP_MINE, +;989:/* precache */ "", +;990:/* sounds */ "" +;991: }, +;992: +;993:/*QUAKED weapon_det_pack (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;994:*/ +;995: { +;996: "weapon_det_pack", +;997: "sound/weapons/w_pkup.wav", +;998: { "models/weapons2/detpack/det_pack_proj.glm", "models/weapons2/detpack/det_pack_pu.md3", "models/weapons2/detpack/det_pack_w.glm", 0}, +;999:/* view */ "models/weapons2/detpack/det_pack.md3", +;1000:/* icon */ "gfx/hud/w_icon_detpack", +;1001:/* pickup */// "Det Pack", +;1002: 3, +;1003: IT_WEAPON, +;1004: WP_DET_PACK, +;1005:/* precache */ "", +;1006:/* sounds */ "" +;1007: }, +;1008: +;1009:/*QUAKED weapon_emplaced (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;1010:*/ +;1011: { +;1012: "weapon_emplaced", +;1013: "sound/weapons/w_pkup.wav", +;1014: { "models/weapons2/blaster_r/blaster_w.glm", +;1015: 0, 0, 0}, +;1016:/* view */ "models/weapons2/blaster_r/blaster.md3", +;1017:/* icon */ "gfx/hud/w_icon_blaster", +;1018:/* pickup */// "Emplaced Gun", +;1019: 50, +;1020: IT_WEAPON, +;1021: WP_EMPLACED_GUN, +;1022:/* precache */ "", +;1023:/* sounds */ "" +;1024: }, +;1025: +;1026: +;1027://NOTE: This is to keep things from messing up because the turret weapon type isn't real +;1028: { +;1029: "weapon_turretwp", +;1030: "sound/weapons/w_pkup.wav", +;1031: { "models/weapons2/blaster_r/blaster_w.glm", +;1032: 0, 0, 0}, +;1033:/* view */ "models/weapons2/blaster_r/blaster.md3", +;1034:/* icon */ "gfx/hud/w_icon_blaster", +;1035:/* pickup */// "Turret Gun", +;1036: 50, +;1037: IT_WEAPON, +;1038: WP_TURRET, +;1039:/* precache */ "", +;1040:/* sounds */ "" +;1041: }, +;1042: +;1043: // +;1044: // AMMO ITEMS +;1045: // +;1046: +;1047:/*QUAKED ammo_force (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;1048:Don't place this +;1049:*/ +;1050: { +;1051: "ammo_force", +;1052: "sound/player/pickupenergy.wav", +;1053: { "models/items/energy_cell.md3", +;1054: 0, 0, 0}, +;1055:/* view */ NULL, +;1056:/* icon */ "gfx/hud/w_icon_blaster", +;1057:/* pickup */// "Force??", +;1058: 100, +;1059: IT_AMMO, +;1060: AMMO_FORCE, +;1061:/* precache */ "", +;1062:/* sounds */ "" +;1063: }, +;1064: +;1065:/*QUAKED ammo_blaster (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;1066:Ammo for the Bryar and Blaster pistols. +;1067:*/ +;1068: { +;1069: "ammo_blaster", +;1070: "sound/player/pickupenergy.wav", +;1071: { "models/items/energy_cell.md3", +;1072: 0, 0, 0}, +;1073:/* view */ NULL, +;1074:/* icon */ "gfx/hud/i_icon_battery", +;1075:/* pickup */// "Blaster Pack", +;1076: 100, +;1077: IT_AMMO, +;1078: AMMO_BLASTER, +;1079:/* precache */ "", +;1080:/* sounds */ "" +;1081: }, +;1082: +;1083:/*QUAKED ammo_powercell (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;1084:Ammo for Tenloss Disruptor, Wookie Bowcaster, and the Destructive Electro Magnetic Pulse (demp2 ) guns +;1085:*/ +;1086: { +;1087: "ammo_powercell", +;1088: "sound/player/pickupenergy.wav", +;1089: { "models/items/power_cell.md3", +;1090: 0, 0, 0}, +;1091:/* view */ NULL, +;1092:/* icon */ "gfx/mp/ammo_power_cell", +;1093:/* pickup */// "Power Cell", +;1094: 100, +;1095: IT_AMMO, +;1096: AMMO_POWERCELL, +;1097:/* precache */ "", +;1098:/* sounds */ "" +;1099: }, +;1100: +;1101:/*QUAKED ammo_metallic_bolts (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;1102:Ammo for Imperial Heavy Repeater and the Golan Arms Flechette +;1103:*/ +;1104: { +;1105: "ammo_metallic_bolts", +;1106: "sound/player/pickupenergy.wav", +;1107: { "models/items/metallic_bolts.md3", +;1108: 0, 0, 0}, +;1109:/* view */ NULL, +;1110:/* icon */ "gfx/mp/ammo_metallic_bolts", +;1111:/* pickup */// "Metallic Bolts", +;1112: 100, +;1113: IT_AMMO, +;1114: AMMO_METAL_BOLTS, +;1115:/* precache */ "", +;1116:/* sounds */ "" +;1117: }, +;1118: +;1119:/*QUAKED ammo_rockets (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;1120:Ammo for Merr-Sonn portable missile launcher +;1121:*/ +;1122: { +;1123: "ammo_rockets", +;1124: "sound/player/pickupenergy.wav", +;1125: { "models/items/rockets.md3", +;1126: 0, 0, 0}, +;1127:/* view */ NULL, +;1128:/* icon */ "gfx/mp/ammo_rockets", +;1129:/* pickup */// "Rockets", +;1130: 3, +;1131: IT_AMMO, +;1132: AMMO_ROCKETS, +;1133:/* precache */ "", +;1134:/* sounds */ "" +;1135: }, +;1136: +;1137: +;1138: // +;1139: // POWERUP ITEMS +;1140: // +;1141:/*QUAKED team_CTF_redflag (1 0 0) (-16 -16 -16) (16 16 16) +;1142:Only in CTF games +;1143:*/ +;1144: { +;1145: "team_CTF_redflag", +;1146: NULL, +;1147: { "models/flags/r_flag.md3", +;1148: "models/flags/r_flag_ysal.md3", 0, 0 }, +;1149:/* view */ NULL, +;1150:/* icon */ "gfx/hud/mpi_rflag", +;1151:/* pickup */// "Red Flag", +;1152: 0, +;1153: IT_TEAM, +;1154: PW_REDFLAG, +;1155:/* precache */ "", +;1156:/* sounds */ "" +;1157: }, +;1158: +;1159:/*QUAKED team_CTF_blueflag (0 0 1) (-16 -16 -16) (16 16 16) +;1160:Only in CTF games +;1161:*/ +;1162: { +;1163: "team_CTF_blueflag", +;1164: NULL, +;1165: { "models/flags/b_flag.md3", +;1166: "models/flags/b_flag_ysal.md3", 0, 0 }, +;1167:/* view */ NULL, +;1168:/* icon */ "gfx/hud/mpi_bflag", +;1169:/* pickup */// "Blue Flag", +;1170: 0, +;1171: IT_TEAM, +;1172: PW_BLUEFLAG, +;1173:/* precache */ "", +;1174:/* sounds */ "" +;1175: }, +;1176: +;1177: // +;1178: // PERSISTANT POWERUP ITEMS +;1179: // +;1180: +;1181: /*QUAKED team_CTF_neutralflag (0 0 1) (-16 -16 -16) (16 16 16) +;1182:Only in One Flag CTF games +;1183:*/ +;1184: { +;1185: "team_CTF_neutralflag", +;1186: NULL, +;1187: { "models/flags/n_flag.md3", +;1188: 0, 0, 0 }, +;1189:/* view */ NULL, +;1190:/* icon */ "icons/iconf_neutral1", +;1191:/* pickup */// "Neutral Flag", +;1192: 0, +;1193: IT_TEAM, +;1194: PW_NEUTRALFLAG, +;1195:/* precache */ "", +;1196:/* sounds */ "" +;1197: }, +;1198: +;1199: { +;1200: "item_redcube", +;1201: "sound/player/pickupenergy.wav", +;1202: { "models/powerups/orb/r_orb.md3", +;1203: 0, 0, 0 }, +;1204:/* view */ NULL, +;1205:/* icon */ "icons/iconh_rorb", +;1206:/* pickup */// "Red Cube", +;1207: 0, +;1208: IT_TEAM, +;1209: 0, +;1210:/* precache */ "", +;1211:/* sounds */ "" +;1212: }, +;1213: +;1214: { +;1215: "item_bluecube", +;1216: "sound/player/pickupenergy.wav", +;1217: { "models/powerups/orb/b_orb.md3", +;1218: 0, 0, 0 }, +;1219:/* view */ NULL, +;1220:/* icon */ "icons/iconh_borb", +;1221:/* pickup */// "Blue Cube", +;1222: 0, +;1223: IT_TEAM, +;1224: 0, +;1225:/* precache */ "", +;1226:/* sounds */ "" +;1227: }, +;1228: +;1229: // end of list marker +;1230: {NULL} +;1231:}; +;1232: +;1233:int bg_numItems = sizeof(bg_itemlist) / sizeof(bg_itemlist[0]) - 1; +;1234: +;1235:float vectoyaw( const vec3_t vec ) { +line 1238 +;1236: float yaw; +;1237: +;1238: if (vec[YAW] == 0 && vec[PITCH] == 0) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +NEF4 $396 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +NEF4 $396 +line 1239 +;1239: yaw = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 1240 +;1240: } else { +ADDRGP4 $397 +JUMPV +LABELV $396 +line 1241 +;1241: if (vec[PITCH]) { +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 0 +EQF4 $398 +line 1242 +;1242: yaw = ( atan2( vec[YAW], vec[PITCH]) * 180 / M_PI ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +ADDRGP4 atan2 +CALLF4 +ASGNF4 +ADDRLP4 0 +CNSTF4 1127481344 +ADDRLP4 16 +INDIRF4 +MULF4 +CNSTF4 1078530011 +DIVF4 +ASGNF4 +line 1243 +;1243: } else if (vec[YAW] > 0) { +ADDRGP4 $399 +JUMPV +LABELV $398 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 0 +LEF4 $400 +line 1244 +;1244: yaw = 90; +ADDRLP4 0 +CNSTF4 1119092736 +ASGNF4 +line 1245 +;1245: } else { +ADDRGP4 $401 +JUMPV +LABELV $400 +line 1246 +;1246: yaw = 270; +ADDRLP4 0 +CNSTF4 1132920832 +ASGNF4 +line 1247 +;1247: } +LABELV $401 +LABELV $399 +line 1248 +;1248: if (yaw < 0) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $402 +line 1249 +;1249: yaw += 360; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1135869952 +ADDF4 +ASGNF4 +line 1250 +;1250: } +LABELV $402 +line 1251 +;1251: } +LABELV $397 +line 1253 +;1252: +;1253: return yaw; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $395 +endproc vectoyaw 20 8 +export BG_HasYsalamiri +proc BG_HasYsalamiri 8 0 +line 1257 +;1254:} +;1255: +;1256:qboolean BG_HasYsalamiri(int gametype, playerState_t *ps) +;1257:{ +line 1258 +;1258: if (gametype == GT_CTY && +ADDRFP4 0 +INDIRI4 +CNSTI4 8 +NEI4 $405 +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 360 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $407 +ADDRLP4 0 +INDIRP4 +CNSTI4 364 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $405 +LABELV $407 +line 1260 +;1259: (ps->powerups[PW_REDFLAG] || ps->powerups[PW_BLUEFLAG])) +;1260: { +line 1261 +;1261: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $404 +JUMPV +LABELV $405 +line 1264 +;1262: } +;1263: +;1264: if (ps->powerups[PW_YSALAMIRI]) +ADDRFP4 4 +INDIRP4 +CNSTI4 404 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $408 +line 1265 +;1265: { +line 1266 +;1266: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $404 +JUMPV +LABELV $408 +line 1269 +;1267: } +;1268: +;1269: return qfalse; +CNSTI4 0 +RETI4 +LABELV $404 +endproc BG_HasYsalamiri 8 0 +export BG_CanUseFPNow +proc BG_CanUseFPNow 8 8 +line 1273 +;1270:} +;1271: +;1272:qboolean BG_CanUseFPNow(int gametype, playerState_t *ps, int time, forcePowers_t power) +;1273:{ +line 1274 +;1274: if (BG_HasYsalamiri(gametype, ps)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 BG_HasYsalamiri +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $411 +line 1275 +;1275: { +line 1276 +;1276: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $410 +JUMPV +LABELV $411 +line 1279 +;1277: } +;1278: +;1279: if (ps->duelInProgress) +ADDRFP4 4 +INDIRP4 +CNSTI4 1292 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $413 +line 1280 +;1280: { +line 1281 +;1281: if (power != FP_SABERATTACK && power != FP_SABERDEFEND && power != FP_SABERTHROW && +ADDRLP4 4 +ADDRFP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 15 +EQI4 $415 +ADDRLP4 4 +INDIRI4 +CNSTI4 16 +EQI4 $415 +ADDRLP4 4 +INDIRI4 +CNSTI4 17 +EQI4 $415 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +EQI4 $415 +line 1283 +;1282: power != FP_LEVITATION) +;1283: { +line 1284 +;1284: if (!ps->saberLockFrame || power != FP_PUSH) +ADDRFP4 4 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $419 +ADDRFP4 12 +INDIRI4 +CNSTI4 3 +EQI4 $417 +LABELV $419 +line 1285 +;1285: { +line 1286 +;1286: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $410 +JUMPV +LABELV $417 +line 1288 +;1287: } +;1288: } +LABELV $415 +line 1289 +;1289: } +LABELV $413 +line 1291 +;1290: +;1291: if (ps->saberLockFrame || ps->saberLockTime > time) +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $422 +ADDRLP4 4 +INDIRP4 +CNSTI4 524 +ADDP4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LEI4 $420 +LABELV $422 +line 1292 +;1292: { +line 1293 +;1293: if (power != FP_PUSH) +ADDRFP4 12 +INDIRI4 +CNSTI4 3 +EQI4 $423 +line 1294 +;1294: { +line 1295 +;1295: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $410 +JUMPV +LABELV $423 +line 1297 +;1296: } +;1297: } +LABELV $420 +line 1299 +;1298: +;1299: if (ps->fallingToDeath) +ADDRFP4 4 +INDIRP4 +CNSTI4 1340 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $425 +line 1300 +;1300: { +line 1301 +;1301: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $410 +JUMPV +LABELV $425 +line 1304 +;1302: } +;1303: +;1304: return qtrue; +CNSTI4 1 +RETI4 +LABELV $410 +endproc BG_CanUseFPNow 8 8 +export BG_FindItemForPowerup +proc BG_FindItemForPowerup 8 0 +line 1312 +;1305:} +;1306: +;1307:/* +;1308:============== +;1309:BG_FindItemForPowerup +;1310:============== +;1311:*/ +;1312:gitem_t *BG_FindItemForPowerup( powerup_t pw ) { +line 1315 +;1313: int i; +;1314: +;1315: for ( i = 0 ; i < bg_numItems ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $431 +JUMPV +LABELV $428 +line 1316 +;1316: if ( (bg_itemlist[i].giType == IT_POWERUP || +ADDRLP4 4 +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +CNSTI4 5 +EQI4 $437 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +CNSTI4 8 +NEI4 $432 +LABELV $437 +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist+40 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $432 +line 1318 +;1317: bg_itemlist[i].giType == IT_TEAM) && +;1318: bg_itemlist[i].giTag == pw ) { +line 1319 +;1319: return &bg_itemlist[i]; +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist +ADDP4 +RETP4 +ADDRGP4 $427 +JUMPV +LABELV $432 +line 1321 +;1320: } +;1321: } +LABELV $429 +line 1315 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $431 +ADDRLP4 0 +INDIRI4 +ADDRGP4 bg_numItems +INDIRI4 +LTI4 $428 +line 1323 +;1322: +;1323: return NULL; +CNSTP4 0 +RETP4 +LABELV $427 +endproc BG_FindItemForPowerup 8 0 +export BG_FindItemForHoldable +proc BG_FindItemForHoldable 8 8 +line 1332 +;1324:} +;1325: +;1326: +;1327:/* +;1328:============== +;1329:BG_FindItemForHoldable +;1330:============== +;1331:*/ +;1332:gitem_t *BG_FindItemForHoldable( holdable_t pw ) { +line 1335 +;1333: int i; +;1334: +;1335: for ( i = 0 ; i < bg_numItems ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $442 +JUMPV +LABELV $439 +line 1336 +;1336: if ( bg_itemlist[i].giType == IT_HOLDABLE && bg_itemlist[i].giTag == pw ) { +ADDRLP4 4 +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +CNSTI4 6 +NEI4 $443 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+40 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $443 +line 1337 +;1337: return &bg_itemlist[i]; +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist +ADDP4 +RETP4 +ADDRGP4 $438 +JUMPV +LABELV $443 +line 1339 +;1338: } +;1339: } +LABELV $440 +line 1335 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $442 +ADDRLP4 0 +INDIRI4 +ADDRGP4 bg_numItems +INDIRI4 +LTI4 $439 +line 1341 +;1340: +;1341: Com_Error( ERR_DROP, "HoldableItem not found" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $447 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1343 +;1342: +;1343: return NULL; +CNSTP4 0 +RETP4 +LABELV $438 +endproc BG_FindItemForHoldable 8 8 +export BG_FindItemForWeapon +proc BG_FindItemForWeapon 8 12 +line 1353 +;1344:} +;1345: +;1346: +;1347:/* +;1348:=============== +;1349:BG_FindItemForWeapon +;1350: +;1351:=============== +;1352:*/ +;1353:gitem_t *BG_FindItemForWeapon( weapon_t weapon ) { +line 1356 +;1354: gitem_t *it; +;1355: +;1356: for ( it = bg_itemlist + 1 ; it->classname ; it++) { +ADDRLP4 0 +ADDRGP4 bg_itemlist+52 +ASGNP4 +ADDRGP4 $452 +JUMPV +LABELV $449 +line 1357 +;1357: if ( it->giType == IT_WEAPON && it->giTag == weapon ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $454 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $454 +line 1358 +;1358: return it; +ADDRLP4 0 +INDIRP4 +RETP4 +ADDRGP4 $448 +JUMPV +LABELV $454 +line 1360 +;1359: } +;1360: } +LABELV $450 +line 1356 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +ASGNP4 +LABELV $452 +ADDRLP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $449 +line 1362 +;1361: +;1362: Com_Error( ERR_DROP, "Couldn't find item for weapon %i", weapon); +CNSTI4 1 +ARGI4 +ADDRGP4 $456 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 1363 +;1363: return NULL; +CNSTP4 0 +RETP4 +LABELV $448 +endproc BG_FindItemForWeapon 8 12 +export BG_FindItem +proc BG_FindItem 8 8 +line 1372 +;1364:} +;1365: +;1366:/* +;1367:=============== +;1368:BG_FindItem +;1369: +;1370:=============== +;1371:*/ +;1372:gitem_t *BG_FindItem( const char *classname ) { +line 1375 +;1373: gitem_t *it; +;1374: +;1375: for ( it = bg_itemlist + 1 ; it->classname ; it++ ) { +ADDRLP4 0 +ADDRGP4 bg_itemlist+52 +ASGNP4 +ADDRGP4 $461 +JUMPV +LABELV $458 +line 1376 +;1376: if ( !Q_stricmp( it->classname, classname) ) +ADDRLP4 0 +INDIRP4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $463 +line 1377 +;1377: return it; +ADDRLP4 0 +INDIRP4 +RETP4 +ADDRGP4 $457 +JUMPV +LABELV $463 +line 1378 +;1378: } +LABELV $459 +line 1375 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +ASGNP4 +LABELV $461 +ADDRLP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $458 +line 1380 +;1379: +;1380: return NULL; +CNSTP4 0 +RETP4 +LABELV $457 +endproc BG_FindItem 8 8 +export BG_PlayerTouchesItem +proc BG_PlayerTouchesItem 36 12 +line 1391 +;1381:} +;1382: +;1383:/* +;1384:============ +;1385:BG_PlayerTouchesItem +;1386: +;1387:Items can be picked up without actually touching their physical bounds to make +;1388:grabbing them easier +;1389:============ +;1390:*/ +;1391:qboolean BG_PlayerTouchesItem( playerState_t *ps, entityState_t *item, int atTime ) { +line 1394 +;1392: vec3_t origin; +;1393: +;1394: BG_EvaluateTrajectory( &item->pos, atTime, origin ); +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 BG_EvaluateTrajectory +CALLV +pop +line 1397 +;1395: +;1396: // we are ignoring ducked differences here +;1397: if ( ps->origin[0] - origin[0] > 44 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 12 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 16 +INDIRF4 +CNSTF4 1110441984 +GTF4 $476 +ADDRLP4 16 +INDIRF4 +CNSTF4 3259498496 +LTF4 $476 +ADDRLP4 20 +ADDRLP4 12 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 24 +CNSTF4 1108344832 +ASGNF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0+4 +INDIRF4 +SUBF4 +ADDRLP4 24 +INDIRF4 +GTF4 $476 +ADDRLP4 28 +CNSTF4 3255828480 +ASGNF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0+4 +INDIRF4 +SUBF4 +ADDRLP4 28 +INDIRF4 +LTF4 $476 +ADDRLP4 32 +ADDRLP4 12 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 32 +INDIRF4 +ADDRLP4 0+8 +INDIRF4 +SUBF4 +ADDRLP4 24 +INDIRF4 +GTF4 $476 +ADDRLP4 32 +INDIRF4 +ADDRLP4 0+8 +INDIRF4 +SUBF4 +ADDRLP4 28 +INDIRF4 +GEF4 $466 +LABELV $476 +line 1402 +;1398: || ps->origin[0] - origin[0] < -50 +;1399: || ps->origin[1] - origin[1] > 36 +;1400: || ps->origin[1] - origin[1] < -36 +;1401: || ps->origin[2] - origin[2] > 36 +;1402: || ps->origin[2] - origin[2] < -36 ) { +line 1403 +;1403: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $465 +JUMPV +LABELV $466 +line 1406 +;1404: } +;1405: +;1406: return qtrue; +CNSTI4 1 +RETI4 +LABELV $465 +endproc BG_PlayerTouchesItem 36 12 +export BG_ProperForceIndex +proc BG_ProperForceIndex 4 0 +line 1410 +;1407:} +;1408: +;1409:int BG_ProperForceIndex(int power) +;1410:{ +line 1411 +;1411: int i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $479 +JUMPV +LABELV $478 +line 1414 +;1412: +;1413: while (i < NUM_FORCE_POWERS) +;1414: { +line 1415 +;1415: if (forcePowerSorted[i] == power) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 forcePowerSorted +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $481 +line 1416 +;1416: { +line 1417 +;1417: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $477 +JUMPV +LABELV $481 +line 1420 +;1418: } +;1419: +;1420: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1421 +;1421: } +LABELV $479 +line 1413 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $478 +line 1423 +;1422: +;1423: return -1; +CNSTI4 -1 +RETI4 +LABELV $477 +endproc BG_ProperForceIndex 4 0 +export BG_CycleForce +proc BG_CycleForce 40 4 +line 1427 +;1424:} +;1425: +;1426:void BG_CycleForce(playerState_t *ps, int direction) +;1427:{ +line 1428 +;1428: int i = ps->fd.forcePowerSelected; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 840 +ADDP4 +INDIRI4 +ASGNI4 +line 1429 +;1429: int x = i; +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1430 +;1430: int presel = i; +ADDRLP4 8 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1431 +;1431: int foundnext = -1; +ADDRLP4 12 +CNSTI4 -1 +ASGNI4 +line 1433 +;1432: +;1433: if (!ps->fd.forcePowersKnown & (1 << x) || +ADDRFP4 0 +INDIRP4 +CNSTI4 832 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $488 +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +ADDRGP4 $489 +JUMPV +LABELV $488 +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +LABELV $489 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +NEI4 $490 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +GEI4 $490 +ADDRLP4 0 +INDIRI4 +CNSTI4 -1 +NEI4 $484 +LABELV $490 +line 1436 +;1434: x >= NUM_FORCE_POWERS || +;1435: x == -1) +;1436: { //apparently we have no valid force powers +line 1437 +;1437: return; +ADDRGP4 $483 +JUMPV +LABELV $484 +line 1440 +;1438: } +;1439: +;1440: x = BG_ProperForceIndex(x); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 24 +ADDRGP4 BG_ProperForceIndex +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 1441 +;1441: presel = x; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1443 +;1442: +;1443: if (direction == 1) +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $491 +line 1444 +;1444: { +line 1445 +;1445: x++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1446 +;1446: } +ADDRGP4 $492 +JUMPV +LABELV $491 +line 1448 +;1447: else +;1448: { +line 1449 +;1449: x--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1450 +;1450: } +LABELV $492 +line 1452 +;1451: +;1452: if (x >= NUM_FORCE_POWERS) +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $493 +line 1453 +;1453: { +line 1454 +;1454: x = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1455 +;1455: } +LABELV $493 +line 1456 +;1456: if (x < 0) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $495 +line 1457 +;1457: { +line 1458 +;1458: x = NUM_FORCE_POWERS-1; +ADDRLP4 0 +CNSTI4 17 +ASGNI4 +line 1459 +;1459: } +LABELV $495 +line 1461 +;1460: +;1461: i = forcePowerSorted[x]; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 forcePowerSorted +ADDP4 +INDIRI4 +ASGNI4 +ADDRGP4 $498 +JUMPV +LABELV $497 +line 1464 +;1462: +;1463: while (x != presel) +;1464: { +line 1465 +;1465: if (ps->fd.forcePowersKnown & (1 << i) && i != ps->fd.forcePowerSelected) +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CNSTI4 832 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 4 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $500 +ADDRLP4 4 +INDIRI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 840 +ADDP4 +INDIRI4 +EQI4 $500 +line 1466 +;1466: { +line 1467 +;1467: if (i != FP_LEVITATION && +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +EQI4 $502 +ADDRLP4 4 +INDIRI4 +CNSTI4 15 +EQI4 $502 +ADDRLP4 4 +INDIRI4 +CNSTI4 16 +EQI4 $502 +ADDRLP4 4 +INDIRI4 +CNSTI4 17 +EQI4 $502 +line 1471 +;1468: i != FP_SABERATTACK && +;1469: i != FP_SABERDEFEND && +;1470: i != FP_SABERTHROW) +;1471: { +line 1472 +;1472: foundnext = i; +ADDRLP4 12 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1473 +;1473: break; +ADDRGP4 $499 +JUMPV +LABELV $502 +line 1475 +;1474: } +;1475: } +LABELV $500 +line 1477 +;1476: +;1477: if (direction == 1) +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $504 +line 1478 +;1478: { +line 1479 +;1479: x++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1480 +;1480: } +ADDRGP4 $505 +JUMPV +LABELV $504 +line 1482 +;1481: else +;1482: { +line 1483 +;1483: x--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1484 +;1484: } +LABELV $505 +line 1486 +;1485: +;1486: if (x >= NUM_FORCE_POWERS) +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $506 +line 1487 +;1487: { +line 1488 +;1488: x = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1489 +;1489: } +LABELV $506 +line 1490 +;1490: if (x < 0) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $508 +line 1491 +;1491: { +line 1492 +;1492: x = NUM_FORCE_POWERS-1; +ADDRLP4 0 +CNSTI4 17 +ASGNI4 +line 1493 +;1493: } +LABELV $508 +line 1495 +;1494: +;1495: i = forcePowerSorted[x]; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 forcePowerSorted +ADDP4 +INDIRI4 +ASGNI4 +line 1496 +;1496: } +LABELV $498 +line 1463 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +NEI4 $497 +LABELV $499 +line 1498 +;1497: +;1498: if (foundnext != -1) +ADDRLP4 12 +INDIRI4 +CNSTI4 -1 +EQI4 $510 +line 1499 +;1499: { +line 1500 +;1500: ps->fd.forcePowerSelected = foundnext; +ADDRFP4 0 +INDIRP4 +CNSTI4 840 +ADDP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1501 +;1501: } +LABELV $510 +line 1502 +;1502:} +LABELV $483 +endproc BG_CycleForce 40 4 +export BG_GetItemIndexByTag +proc BG_GetItemIndexByTag 8 0 +line 1505 +;1503: +;1504:int BG_GetItemIndexByTag(int tag, int type) +;1505:{ +line 1506 +;1506: int i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $514 +JUMPV +LABELV $513 +line 1509 +;1507: +;1508: while (i < bg_numItems) +;1509: { +line 1510 +;1510: if (bg_itemlist[i].giTag == tag && +ADDRLP4 4 +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+40 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $516 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $516 +line 1512 +;1511: bg_itemlist[i].giType == type) +;1512: { +line 1513 +;1513: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $512 +JUMPV +LABELV $516 +line 1516 +;1514: } +;1515: +;1516: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1517 +;1517: } +LABELV $514 +line 1508 +ADDRLP4 0 +INDIRI4 +ADDRGP4 bg_numItems +INDIRI4 +LTI4 $513 +line 1519 +;1518: +;1519: return 0; +CNSTI4 0 +RETI4 +LABELV $512 +endproc BG_GetItemIndexByTag 8 0 +export BG_CycleInven +proc BG_CycleInven 12 8 +line 1523 +;1520:} +;1521: +;1522:void BG_CycleInven(playerState_t *ps, int direction) +;1523:{ +line 1527 +;1524: int i; +;1525: int original; +;1526: +;1527: i = bg_itemlist[ps->stats[STAT_HOLDABLE_ITEM]].giTag; +ADDRLP4 0 +CNSTI4 52 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist+40 +ADDP4 +INDIRI4 +ASGNI4 +line 1528 +;1528: original = i; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1530 +;1529: +;1530: if (direction == 1) +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $522 +line 1531 +;1531: { +line 1532 +;1532: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1533 +;1533: } +ADDRGP4 $525 +JUMPV +LABELV $522 +line 1535 +;1534: else +;1535: { +line 1536 +;1536: i--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1537 +;1537: } +ADDRGP4 $525 +JUMPV +LABELV $524 +line 1540 +;1538: +;1539: while (i != original) +;1540: { //go in a full loop until hitting something, if hit nothing then select nothing +line 1541 +;1541: if (ps->stats[STAT_HOLDABLE_ITEMS] & (1 << i)) +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $527 +line 1542 +;1542: { +line 1543 +;1543: ps->stats[STAT_HOLDABLE_ITEM] = BG_GetItemIndexByTag(i, IT_HOLDABLE); +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 6 +ARGI4 +ADDRLP4 8 +ADDRGP4 BG_GetItemIndexByTag +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1544 +;1544: break; +ADDRGP4 $526 +JUMPV +LABELV $527 +line 1547 +;1545: } +;1546: +;1547: if (direction == 1) +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $529 +line 1548 +;1548: { +line 1549 +;1549: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1550 +;1550: } +ADDRGP4 $530 +JUMPV +LABELV $529 +line 1552 +;1551: else +;1552: { +line 1553 +;1553: i--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1554 +;1554: } +LABELV $530 +line 1556 +;1555: +;1556: if (i < 0) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $531 +line 1557 +;1557: { +line 1558 +;1558: i = HI_NUM_HOLDABLE; +ADDRLP4 0 +CNSTI4 7 +ASGNI4 +line 1559 +;1559: } +ADDRGP4 $532 +JUMPV +LABELV $531 +line 1560 +;1560: else if (i >= HI_NUM_HOLDABLE) +ADDRLP4 0 +INDIRI4 +CNSTI4 7 +LTI4 $533 +line 1561 +;1561: { +line 1562 +;1562: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1563 +;1563: } +LABELV $533 +LABELV $532 +line 1564 +;1564: } +LABELV $525 +line 1539 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $524 +LABELV $526 +line 1565 +;1565:} +LABELV $520 +endproc BG_CycleInven 12 8 +export BG_CanItemBeGrabbed +proc BG_CanItemBeGrabbed 76 8 +line 1575 +;1566: +;1567:/* +;1568:================ +;1569:BG_CanItemBeGrabbed +;1570: +;1571:Returns false if the item should not be picked up. +;1572:This needs to be the same for client side prediction and server use. +;1573:================ +;1574:*/ +;1575:qboolean BG_CanItemBeGrabbed( int gametype, const entityState_t *ent, const playerState_t *ps ) { +line 1578 +;1576: gitem_t *item; +;1577: +;1578: if ( ent->modelindex < 1 || ent->modelindex >= bg_numItems ) { +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +LTI4 $538 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_numItems +INDIRI4 +LTI4 $536 +LABELV $538 +line 1579 +;1579: Com_Error( ERR_DROP, "BG_CanItemBeGrabbed: index out of range" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $539 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1580 +;1580: } +LABELV $536 +line 1582 +;1581: +;1582: item = &bg_itemlist[ent->modelindex]; +ADDRLP4 0 +CNSTI4 52 +ADDRFP4 4 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist +ADDP4 +ASGNP4 +line 1584 +;1583: +;1584: if (ps && ps->isJediMaster && item && (item->giType == IT_WEAPON || item->giType == IT_AMMO)) +ADDRLP4 8 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTU4 0 +ASGNU4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +ADDRLP4 12 +INDIRU4 +EQU4 $540 +ADDRLP4 8 +INDIRP4 +CNSTI4 604 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $540 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 12 +INDIRU4 +EQU4 $540 +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 1 +EQI4 $542 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +NEI4 $540 +LABELV $542 +line 1585 +;1585: { +line 1586 +;1586: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $540 +line 1589 +;1587: } +;1588: +;1589: if (ps && ps->duelInProgress) +ADDRLP4 24 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $543 +ADDRLP4 24 +INDIRP4 +CNSTI4 1292 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $543 +line 1590 +;1590: { //no picking stuff up while in a duel, no matter what the type is +line 1591 +;1591: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $543 +line 1594 +;1592: } +;1593: +;1594: switch( item->giType ) { +ADDRLP4 28 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +LTI4 $546 +ADDRLP4 28 +INDIRI4 +CNSTI4 8 +GTI4 $546 +ADDRLP4 28 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $597 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $597 +address $595 +address $548 +address $553 +address $556 +address $559 +address $569 +address $592 +address $546 +address $574 +code +LABELV $548 +line 1596 +;1595: case IT_WEAPON: +;1596: if (ent->generic1 == ps->clientNum && ent->powerups) +ADDRLP4 36 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 292 +ADDP4 +INDIRI4 +ADDRFP4 8 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +NEI4 $549 +ADDRLP4 36 +INDIRP4 +CNSTI4 272 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $549 +line 1597 +;1597: { +line 1598 +;1598: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $549 +line 1600 +;1599: } +;1600: if (!(ent->eFlags & EF_DROPPEDWEAPON) && (ps->stats[STAT_WEAPONS] & (1 << item->giTag)) && +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 16777216 +BANDI4 +ADDRLP4 40 +INDIRI4 +NEI4 $551 +ADDRLP4 44 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 44 +INDIRI4 +LSHI4 +BANDI4 +ADDRLP4 40 +INDIRI4 +EQI4 $551 +ADDRLP4 44 +INDIRI4 +CNSTI4 11 +EQI4 $551 +ADDRLP4 44 +INDIRI4 +CNSTI4 12 +EQI4 $551 +ADDRLP4 44 +INDIRI4 +CNSTI4 13 +EQI4 $551 +line 1602 +;1601: item->giTag != WP_THERMAL && item->giTag != WP_TRIP_MINE && item->giTag != WP_DET_PACK) +;1602: { //weaponstay stuff.. if this isn't dropped, and you already have it, you don't get it. +line 1603 +;1603: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $551 +line 1605 +;1604: } +;1605: return qtrue; // weapons are always picked up +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $553 +line 1608 +;1606: +;1607: case IT_AMMO: +;1608: if ( ps->ammo[item->giTag] >= ammoData[item->giTag].max) { +ADDRLP4 48 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +ADDRFP4 8 +INDIRP4 +CNSTI4 408 +ADDP4 +ADDP4 +INDIRI4 +ADDRLP4 48 +INDIRI4 +ADDRGP4 ammoData +ADDP4 +INDIRI4 +LTI4 $554 +line 1609 +;1609: return qfalse; // can't hold any more +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $554 +line 1611 +;1610: } +;1611: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $556 +line 1614 +;1612: +;1613: case IT_ARMOR: +;1614: if ( ps->stats[STAT_ARMOR] >= ps->stats[STAT_MAX_HEALTH] * item->giTag ) { +ADDRLP4 52 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +MULI4 +LTI4 $557 +line 1615 +;1615: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $557 +line 1617 +;1616: } +;1617: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $559 +line 1622 +;1618: +;1619: case IT_HEALTH: +;1620: // small and mega healths will go over the max, otherwise +;1621: // don't pick up if already at max +;1622: if ((ps->fd.forcePowersActive & (1 << FP_RAGE))) +ADDRFP4 8 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +CNSTI4 256 +BANDI4 +CNSTI4 0 +EQI4 $560 +line 1623 +;1623: { +line 1624 +;1624: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $560 +line 1627 +;1625: } +;1626: +;1627: if ( item->quantity == 5 || item->quantity == 100 ) { +ADDRLP4 56 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 5 +EQI4 $564 +ADDRLP4 56 +INDIRI4 +CNSTI4 100 +NEI4 $562 +LABELV $564 +line 1628 +;1628: if ( ps->stats[STAT_HEALTH] >= ps->stats[STAT_MAX_HEALTH] * 2 ) { +ADDRLP4 60 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +CNSTI4 1 +LSHI4 +LTI4 $565 +line 1629 +;1629: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $565 +line 1631 +;1630: } +;1631: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $562 +line 1634 +;1632: } +;1633: +;1634: if ( ps->stats[STAT_HEALTH] >= ps->stats[STAT_MAX_HEALTH] ) { +ADDRLP4 60 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +LTI4 $567 +line 1635 +;1635: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $567 +line 1637 +;1636: } +;1637: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $569 +line 1640 +;1638: +;1639: case IT_POWERUP: +;1640: if (ps && (ps->powerups[PW_YSALAMIRI])) +ADDRLP4 64 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $570 +ADDRLP4 64 +INDIRP4 +CNSTI4 404 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $570 +line 1641 +;1641: { +line 1642 +;1642: if (item->giTag != PW_YSALAMIRI) +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 15 +EQI4 $572 +line 1643 +;1643: { +line 1644 +;1644: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $572 +line 1646 +;1645: } +;1646: } +LABELV $570 +line 1647 +;1647: return qtrue; // powerups are always picked up +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $574 +line 1650 +;1648: +;1649: case IT_TEAM: // team items, such as flags +;1650: if( gametype == GT_CTF || gametype == GT_CTY ) { +ADDRLP4 68 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 7 +EQI4 $577 +ADDRLP4 68 +INDIRI4 +CNSTI4 8 +NEI4 $575 +LABELV $577 +line 1654 +;1651: // ent->modelindex2 is non-zero on items if they are dropped +;1652: // we need to know this because we can pick up our dropped flag (and return it) +;1653: // but we can't pick up our flag at base +;1654: if (ps->persistant[PERS_TEAM] == TEAM_RED) { +ADDRFP4 8 +INDIRP4 +CNSTI4 292 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $578 +line 1655 +;1655: if (item->giTag == PW_BLUEFLAG || +ADDRLP4 72 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 5 +EQI4 $583 +ADDRLP4 72 +INDIRI4 +CNSTI4 4 +NEI4 $584 +ADDRFP4 4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $583 +LABELV $584 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 4 +NEI4 $579 +ADDRFP4 8 +INDIRP4 +CNSTI4 364 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $579 +LABELV $583 +line 1658 +;1656: (item->giTag == PW_REDFLAG && ent->modelindex2) || +;1657: (item->giTag == PW_REDFLAG && ps->powerups[PW_BLUEFLAG]) ) +;1658: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +line 1659 +;1659: } else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) { +LABELV $578 +ADDRFP4 8 +INDIRP4 +CNSTI4 292 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $585 +line 1660 +;1660: if (item->giTag == PW_REDFLAG || +ADDRLP4 72 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 4 +EQI4 $590 +ADDRLP4 72 +INDIRI4 +CNSTI4 5 +NEI4 $591 +ADDRFP4 4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $590 +LABELV $591 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 5 +NEI4 $587 +ADDRFP4 8 +INDIRP4 +CNSTI4 360 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $587 +LABELV $590 +line 1663 +;1661: (item->giTag == PW_BLUEFLAG && ent->modelindex2) || +;1662: (item->giTag == PW_BLUEFLAG && ps->powerups[PW_REDFLAG]) ) +;1663: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $587 +line 1664 +;1664: } +LABELV $585 +LABELV $579 +line 1665 +;1665: } +LABELV $575 +line 1667 +;1666: +;1667: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $592 +line 1670 +;1668: +;1669: case IT_HOLDABLE: +;1670: if ( ps->stats[STAT_HOLDABLE_ITEMS] & (1 << item->giTag)) +ADDRFP4 8 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $593 +line 1671 +;1671: { +line 1672 +;1672: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $593 +line 1674 +;1673: } +;1674: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $535 +JUMPV +LABELV $595 +line 1677 +;1675: +;1676: case IT_BAD: +;1677: Com_Error( ERR_DROP, "BG_CanItemBeGrabbed: IT_BAD" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $596 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1684 +;1678: default: +;1679:#ifndef Q3_VM +;1680:#ifndef NDEBUG // bk0001204 +;1681: Com_Printf("BG_CanItemBeGrabbed: unknown enum %d\n", item->giType ); +;1682:#endif +;1683:#endif +;1684: break; +LABELV $546 +line 1687 +;1685: } +;1686: +;1687: return qfalse; +CNSTI4 0 +RETI4 +LABELV $535 +endproc BG_CanItemBeGrabbed 76 8 +export BG_EvaluateTrajectory +proc BG_EvaluateTrajectory 84 12 +line 1698 +;1688:} +;1689: +;1690://====================================================================== +;1691: +;1692:/* +;1693:================ +;1694:BG_EvaluateTrajectory +;1695: +;1696:================ +;1697:*/ +;1698:void BG_EvaluateTrajectory( const trajectory_t *tr, int atTime, vec3_t result ) { +line 1702 +;1699: float deltaTime; +;1700: float phase; +;1701: +;1702: switch( tr->trType ) { +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $599 +ADDRLP4 8 +INDIRI4 +CNSTI4 5 +GTI4 $599 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $612 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $612 +address $602 +address $602 +address $603 +address $605 +address $604 +address $610 +code +LABELV $602 +line 1705 +;1703: case TR_STATIONARY: +;1704: case TR_INTERPOLATE: +;1705: VectorCopy( tr->trBase, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRB +ASGNB 12 +line 1706 +;1706: break; +ADDRGP4 $600 +JUMPV +LABELV $603 +line 1708 +;1707: case TR_LINEAR: +;1708: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 0 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1709 +;1709: VectorMA( tr->trBase, deltaTime, tr->trDelta, result ); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1710 +;1710: break; +ADDRGP4 $600 +JUMPV +LABELV $604 +line 1712 +;1711: case TR_SINE: +;1712: deltaTime = ( atTime - tr->trTime ) / (float) tr->trDuration; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +ADDRLP4 28 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CVIF4 4 +DIVF4 +ASGNF4 +line 1713 +;1713: phase = sin( deltaTime * M_PI * 2 ); +CNSTF4 1073741824 +CNSTF4 1078530011 +ADDRLP4 0 +INDIRF4 +MULF4 +MULF4 +ARGF4 +ADDRLP4 32 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 1714 +;1714: VectorMA( tr->trBase, phase, tr->trDelta, result ); +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1715 +;1715: break; +ADDRGP4 $600 +JUMPV +LABELV $605 +line 1717 +;1716: case TR_LINEAR_STOP: +;1717: if ( atTime > tr->trTime + tr->trDuration ) { +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 48 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 48 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +LEI4 $606 +line 1718 +;1718: atTime = tr->trTime + tr->trDuration; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 52 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 1719 +;1719: } +LABELV $606 +line 1720 +;1720: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 0 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1721 +;1721: if ( deltaTime < 0 ) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $608 +line 1722 +;1722: deltaTime = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 1723 +;1723: } +LABELV $608 +line 1724 +;1724: VectorMA( tr->trBase, deltaTime, tr->trDelta, result ); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1725 +;1725: break; +ADDRGP4 $600 +JUMPV +LABELV $610 +line 1727 +;1726: case TR_GRAVITY: +;1727: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 0 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1728 +;1728: VectorMA( tr->trBase, deltaTime, tr->trDelta, result ); +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 68 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 72 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1729 +;1729: result[2] -= 0.5 * DEFAULT_GRAVITY * deltaTime * deltaTime; // FIXME: local gravity... +ADDRLP4 76 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 80 +ADDRLP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 76 +INDIRP4 +INDIRF4 +CNSTF4 1137180672 +ADDRLP4 80 +INDIRF4 +MULF4 +ADDRLP4 80 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 1730 +;1730: break; +ADDRGP4 $600 +JUMPV +LABELV $599 +line 1735 +;1731: default: +;1732:#ifdef QAGAME +;1733: Com_Error( ERR_DROP, "BG_EvaluateTrajectory: [GAME SIDE] unknown trType: %i", tr->trType ); +;1734:#else +;1735: Com_Error( ERR_DROP, "BG_EvaluateTrajectory: [CLIENTGAME SIDE] unknown trType: %i", tr->trType ); +CNSTI4 1 +ARGI4 +ADDRGP4 $611 +ARGP4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 1737 +;1736:#endif +;1737: break; +LABELV $600 +line 1739 +;1738: } +;1739:} +LABELV $598 +endproc BG_EvaluateTrajectory 84 12 +export BG_EvaluateTrajectoryDelta +proc BG_EvaluateTrajectoryDelta 44 12 +line 1748 +;1740: +;1741:/* +;1742:================ +;1743:BG_EvaluateTrajectoryDelta +;1744: +;1745:For determining velocity at a given time +;1746:================ +;1747:*/ +;1748:void BG_EvaluateTrajectoryDelta( const trajectory_t *tr, int atTime, vec3_t result ) { +line 1752 +;1749: float deltaTime; +;1750: float phase; +;1751: +;1752: switch( tr->trType ) { +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $614 +ADDRLP4 8 +INDIRI4 +CNSTI4 5 +GTI4 $614 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $625 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $625 +address $617 +address $617 +address $618 +address $620 +address $619 +address $623 +code +LABELV $617 +line 1755 +;1753: case TR_STATIONARY: +;1754: case TR_INTERPOLATE: +;1755: VectorClear( result ); +ADDRLP4 16 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 20 +CNSTF4 0 +ASGNF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 1756 +;1756: break; +ADDRGP4 $615 +JUMPV +LABELV $618 +line 1758 +;1757: case TR_LINEAR: +;1758: VectorCopy( tr->trDelta, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 1759 +;1759: break; +ADDRGP4 $615 +JUMPV +LABELV $619 +line 1761 +;1760: case TR_SINE: +;1761: deltaTime = ( atTime - tr->trTime ) / (float) tr->trDuration; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CVIF4 4 +DIVF4 +ASGNF4 +line 1762 +;1762: phase = cos( deltaTime * M_PI * 2 ); // derivative of sin = cos +CNSTF4 1073741824 +CNSTF4 1078530011 +ADDRLP4 4 +INDIRF4 +MULF4 +MULF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 1763 +;1763: phase *= 0.5; +ADDRLP4 0 +CNSTF4 1056964608 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 1764 +;1764: VectorScale( tr->trDelta, phase, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 1765 +;1765: break; +ADDRGP4 $615 +JUMPV +LABELV $620 +line 1767 +;1766: case TR_LINEAR_STOP: +;1767: if ( atTime > tr->trTime + tr->trDuration ) { +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +LEI4 $621 +line 1768 +;1768: VectorClear( result ); +ADDRLP4 36 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 40 +CNSTF4 0 +ASGNF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +line 1769 +;1769: return; +ADDRGP4 $613 +JUMPV +LABELV $621 +line 1771 +;1770: } +;1771: VectorCopy( tr->trDelta, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 1772 +;1772: break; +ADDRGP4 $615 +JUMPV +LABELV $623 +line 1774 +;1773: case TR_GRAVITY: +;1774: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 4 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1775 +;1775: VectorCopy( tr->trDelta, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 1776 +;1776: result[2] -= DEFAULT_GRAVITY * deltaTime; // FIXME: local gravity... +ADDRLP4 36 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 36 +INDIRP4 +INDIRF4 +CNSTF4 1145569280 +ADDRLP4 4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 1777 +;1777: break; +ADDRGP4 $615 +JUMPV +LABELV $614 +line 1779 +;1778: default: +;1779: Com_Error( ERR_DROP, "BG_EvaluateTrajectoryDelta: unknown trType: %i", tr->trTime ); +CNSTI4 1 +ARGI4 +ADDRGP4 $624 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 1780 +;1780: break; +LABELV $615 +line 1782 +;1781: } +;1782:} +LABELV $613 +endproc BG_EvaluateTrajectoryDelta 44 12 +data +export eventnames +align 4 +LABELV eventnames +address $626 +address $627 +address $628 +address $629 +address $630 +address $631 +address $632 +address $633 +address $634 +address $635 +address $636 +address $637 +address $638 +address $639 +address $640 +address $641 +address $642 +address $643 +address $644 +address $645 +address $646 +address $647 +address $648 +address $649 +address $650 +address $651 +address $652 +address $653 +address $654 +address $655 +address $656 +address $657 +address $658 +address $659 +address $660 +address $661 +address $662 +address $663 +address $664 +address $665 +address $666 +address $667 +address $668 +address $669 +address $670 +address $671 +address $672 +address $673 +address $674 +address $675 +address $676 +address $677 +address $678 +address $679 +address $680 +address $681 +address $682 +address $683 +address $684 +address $685 +address $686 +address $687 +address $688 +address $689 +address $690 +address $691 +address $692 +address $693 +address $694 +address $695 +address $696 +address $697 +address $698 +address $699 +address $700 +address $701 +address $702 +address $703 +address $704 +address $705 +address $706 +address $707 +address $708 +address $709 +address $710 +address $711 +address $712 +address $713 +address $714 +address $715 +address $716 +address $717 +address $718 +address $719 +address $720 +address $721 +address $722 +address $723 +address $724 +address $725 +address $726 +address $727 +address $728 +address $729 +address $730 +address $731 +address $732 +address $733 +address $734 +address $735 +export BG_AddPredictableEventToPlayerstate +code +proc BG_AddPredictableEventToPlayerstate 12 0 +line 1945 +;1783: +;1784:char *eventnames[] = { +;1785: "EV_NONE", +;1786: +;1787: "EV_CLIENTJOIN", +;1788: +;1789: "EV_FOOTSTEP", +;1790: "EV_FOOTSTEP_METAL", +;1791: "EV_FOOTSPLASH", +;1792: "EV_FOOTWADE", +;1793: "EV_SWIM", +;1794: +;1795: "EV_STEP_4", +;1796: "EV_STEP_8", +;1797: "EV_STEP_12", +;1798: "EV_STEP_16", +;1799: +;1800: "EV_FALL", +;1801: +;1802: "EV_JUMP_PAD", // boing sound at origin", jump sound on player +;1803: +;1804: "EV_PRIVATE_DUEL", +;1805: +;1806: "EV_JUMP", +;1807: "EV_ROLL", +;1808: "EV_WATER_TOUCH", // foot touches +;1809: "EV_WATER_LEAVE", // foot leaves +;1810: "EV_WATER_UNDER", // head touches +;1811: "EV_WATER_CLEAR", // head leaves +;1812: +;1813: "EV_ITEM_PICKUP", // normal item pickups are predictable +;1814: "EV_GLOBAL_ITEM_PICKUP", // powerup / team sounds are broadcast to everyone +;1815: +;1816: "EV_NOAMMO", +;1817: "EV_CHANGE_WEAPON", +;1818: "EV_FIRE_WEAPON", +;1819: "EV_ALT_FIRE", +;1820: "EV_SABER_ATTACK", +;1821: "EV_SABER_HIT", +;1822: "EV_SABER_BLOCK", +;1823: "EV_SABER_UNHOLSTER", +;1824: "EV_BECOME_JEDIMASTER", +;1825: "EV_DISRUPTOR_MAIN_SHOT", +;1826: "EV_DISRUPTOR_SNIPER_SHOT", +;1827: "EV_DISRUPTOR_SNIPER_MISS", +;1828: "EV_DISRUPTOR_HIT", +;1829: "EV_DISRUPTOR_ZOOMSOUND", +;1830: +;1831: "EV_PREDEFSOUND", +;1832: +;1833: "EV_TEAM_POWER", +;1834: +;1835: "EV_SCREENSHAKE", +;1836: +;1837: "EV_USE", // +Use key +;1838: +;1839: "EV_USE_ITEM0", +;1840: "EV_USE_ITEM1", +;1841: "EV_USE_ITEM2", +;1842: "EV_USE_ITEM3", +;1843: "EV_USE_ITEM4", +;1844: "EV_USE_ITEM5", +;1845: "EV_USE_ITEM6", +;1846: "EV_USE_ITEM7", +;1847: "EV_USE_ITEM8", +;1848: "EV_USE_ITEM9", +;1849: "EV_USE_ITEM10", +;1850: "EV_USE_ITEM11", +;1851: "EV_USE_ITEM12", +;1852: "EV_USE_ITEM13", +;1853: "EV_USE_ITEM14", +;1854: "EV_USE_ITEM15", +;1855: +;1856: "EV_ITEMUSEFAIL", +;1857: +;1858: "EV_ITEM_RESPAWN", +;1859: "EV_ITEM_POP", +;1860: "EV_PLAYER_TELEPORT_IN", +;1861: "EV_PLAYER_TELEPORT_OUT", +;1862: +;1863: "EV_GRENADE_BOUNCE", // eventParm will be the soundindex +;1864: "EV_MISSILE_STICK", +;1865: +;1866: "EV_PLAY_EFFECT", +;1867: "EV_PLAY_EFFECT_ID", //finally gave in and added it.. +;1868: +;1869: "EV_MUTE_SOUND", +;1870: "EV_GENERAL_SOUND", +;1871: "EV_GLOBAL_SOUND", // no attenuation +;1872: "EV_GLOBAL_TEAM_SOUND", +;1873: "EV_ENTITY_SOUND", +;1874: +;1875: "EV_PLAY_ROFF", +;1876: +;1877: "EV_GLASS_SHATTER", +;1878: "EV_DEBRIS", +;1879: +;1880: "EV_MISSILE_HIT", +;1881: "EV_MISSILE_MISS", +;1882: "EV_MISSILE_MISS_METAL", +;1883: "EV_BULLET", // otherEntity is the shooter +;1884: +;1885: "EV_PAIN", +;1886: "EV_DEATH1", +;1887: "EV_DEATH2", +;1888: "EV_DEATH3", +;1889: "EV_OBITUARY", +;1890: +;1891: "EV_POWERUP_QUAD", +;1892: "EV_POWERUP_BATTLESUIT", +;1893: //"EV_POWERUP_REGEN", +;1894: +;1895: "EV_FORCE_DRAINED", +;1896: +;1897: "EV_GIB_PLAYER", // gib a previously living player +;1898: "EV_SCOREPLUM", // score plum +;1899: +;1900: "EV_CTFMESSAGE", +;1901: +;1902: "EV_SAGA_ROUNDOVER", +;1903: "EV_SAGA_OBJECTIVECOMPLETE", +;1904: +;1905: "EV_DESTROY_GHOUL2_INSTANCE", +;1906: +;1907: "EV_DESTROY_WEAPON_MODEL", +;1908: +;1909: "EV_GIVE_NEW_RANK", +;1910: "EV_SET_FREE_SABER", +;1911: "EV_SET_FORCE_DISABLE", +;1912: +;1913: "EV_WEAPON_CHARGE", +;1914: "EV_WEAPON_CHARGE_ALT", +;1915: +;1916: "EV_SHIELD_HIT", +;1917: +;1918: "EV_DEBUG_LINE", +;1919: "EV_TESTLINE", +;1920: "EV_STOPLOOPINGSOUND", +;1921: "EV_STARTLOOPINGSOUND", +;1922: "EV_TAUNT", +;1923: +;1924: "EV_TAUNT_YES", +;1925: "EV_TAUNT_NO", +;1926: "EV_TAUNT_FOLLOWME", +;1927: "EV_TAUNT_GETFLAG", +;1928: "EV_TAUNT_GUARDBASE", +;1929: "EV_TAUNT_PATROL", +;1930: +;1931: "EV_BODY_QUEUE_COPY" +;1932: +;1933:}; +;1934: +;1935:/* +;1936:=============== +;1937:BG_AddPredictableEventToPlayerstate +;1938: +;1939:Handles the sequence numbers +;1940:=============== +;1941:*/ +;1942: +;1943:void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ); +;1944: +;1945:void BG_AddPredictableEventToPlayerstate( int newEvent, int eventParm, playerState_t *ps ) { +line 1960 +;1946: +;1947:#ifdef _DEBUG +;1948: { +;1949: char buf[256]; +;1950: trap_Cvar_VariableStringBuffer("showevents", buf, sizeof(buf)); +;1951: if ( atof(buf) != 0 ) { +;1952:#ifdef QAGAME +;1953: Com_Printf(" game event svt %5d -> %5d: num = %20s parm %d\n", ps->pmove_framecount/*ps->commandTime*/, ps->eventSequence, eventnames[newEvent], eventParm); +;1954:#else +;1955: Com_Printf("Cgame event svt %5d -> %5d: num = %20s parm %d\n", ps->pmove_framecount/*ps->commandTime*/, ps->eventSequence, eventnames[newEvent], eventParm); +;1956:#endif +;1957: } +;1958: } +;1959:#endif +;1960: ps->events[ps->eventSequence & (MAX_PS_EVENTS-1)] = newEvent; +ADDRLP4 0 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 1961 +;1961: ps->eventParms[ps->eventSequence & (MAX_PS_EVENTS-1)] = eventParm; +ADDRLP4 4 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 124 +ADDP4 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 1962 +;1962: ps->eventSequence++; +ADDRLP4 8 +ADDRFP4 8 +INDIRP4 +CNSTI4 112 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1963 +;1963:} +LABELV $736 +endproc BG_AddPredictableEventToPlayerstate 12 0 +export BG_TouchJumpPad +proc BG_TouchJumpPad 32 8 +line 1970 +;1964: +;1965:/* +;1966:======================== +;1967:BG_TouchJumpPad +;1968:======================== +;1969:*/ +;1970:void BG_TouchJumpPad( playerState_t *ps, entityState_t *jumppad ) { +line 1976 +;1971: vec3_t angles; +;1972: float p; +;1973: int effectNum; +;1974: +;1975: // spectators don't use jump pads +;1976: if ( ps->pm_type != PM_NORMAL && ps->pm_type != PM_FLOAT ) { +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $738 +ADDRLP4 20 +INDIRI4 +CNSTI4 1 +EQI4 $738 +line 1977 +;1977: return; +ADDRGP4 $737 +JUMPV +LABELV $738 +line 1982 +;1978: } +;1979: +;1980: // if we didn't hit this same jumppad the previous frame +;1981: // then don't play the event sound again if we are in a fat trigger +;1982: if ( ps->jumppad_ent != jumppad->number ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 480 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRP4 +INDIRI4 +EQI4 $740 +line 1984 +;1983: +;1984: vectoangles( jumppad->origin2, angles); +ADDRFP4 4 +INDIRP4 +CNSTI4 104 +ADDP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 vectoangles +CALLV +pop +line 1985 +;1985: p = fabs( AngleNormalize180( angles[PITCH] ) ); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleNormalize180 +CALLF4 +ASGNF4 +ADDRLP4 24 +INDIRF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 1986 +;1986: if( p < 45 ) { +ADDRLP4 12 +INDIRF4 +CNSTF4 1110704128 +GEF4 $742 +line 1987 +;1987: effectNum = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 1988 +;1988: } else { +ADDRGP4 $743 +JUMPV +LABELV $742 +line 1989 +;1989: effectNum = 1; +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +line 1990 +;1990: } +LABELV $743 +line 1992 +;1991: //BG_AddPredictableEventToPlayerstate( EV_JUMP_PAD, effectNum, ps ); +;1992: } +LABELV $740 +line 1994 +;1993: // remember hitting this jumppad this frame +;1994: ps->jumppad_ent = jumppad->number; +ADDRFP4 0 +INDIRP4 +CNSTI4 480 +ADDP4 +ADDRFP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +line 1995 +;1995: ps->jumppad_frame = ps->pmove_framecount; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 492 +ADDP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 488 +ADDP4 +INDIRI4 +ASGNI4 +line 1997 +;1996: // give the player the velocity from the jumppad +;1997: VectorCopy( jumppad->origin2, ps->velocity ); +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 1998 +;1998:} +LABELV $737 +endproc BG_TouchJumpPad 32 8 +export BG_PlayerStateToEntityState +proc BG_PlayerStateToEntityState 28 0 +line 2008 +;1999: +;2000:/* +;2001:======================== +;2002:BG_PlayerStateToEntityState +;2003: +;2004:This is done after each set of usercmd_t on the server, +;2005:and after local prediction on the client +;2006:======================== +;2007:*/ +;2008:void BG_PlayerStateToEntityState( playerState_t *ps, entityState_t *s, qboolean snap ) { +line 2011 +;2009: int i; +;2010: +;2011: if ( ps->pm_type == PM_INTERMISSION || ps->pm_type == PM_SPECTATOR ) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 6 +EQI4 $747 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +NEI4 $745 +LABELV $747 +line 2012 +;2012: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 12 +ASGNI4 +line 2013 +;2013: } else if ( ps->stats[STAT_HEALTH] <= GIB_HEALTH ) { +ADDRGP4 $746 +JUMPV +LABELV $745 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 -40 +GTI4 $748 +line 2014 +;2014: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 12 +ASGNI4 +line 2015 +;2015: } else { +ADDRGP4 $749 +JUMPV +LABELV $748 +line 2016 +;2016: s->eType = ET_PLAYER; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2017 +;2017: } +LABELV $749 +LABELV $746 +line 2019 +;2018: +;2019: s->number = ps->clientNum; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 2021 +;2020: +;2021: s->pos.trType = TR_INTERPOLATE; +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2022 +;2022: VectorCopy( ps->origin, s->pos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 2023 +;2023: if ( snap ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $750 +line 2024 +;2024: SnapVector( s->pos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 2025 +;2025: } +LABELV $750 +line 2027 +;2026: // set the trDelta for flag direction +;2027: VectorCopy( ps->velocity, s->pos.trDelta ); +ADDRFP4 4 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 2029 +;2028: +;2029: s->apos.trType = TR_INTERPOLATE; +ADDRFP4 4 +INDIRP4 +CNSTI4 48 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2030 +;2030: VectorCopy( ps->viewangles, s->apos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRB +ASGNB 12 +line 2031 +;2031: if ( snap ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $752 +line 2032 +;2032: SnapVector( s->apos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 64 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 2033 +;2033: } +LABELV $752 +line 2035 +;2034: +;2035: s->trickedentindex = ps->fd.forceMindtrickTargetIndex; +ADDRFP4 4 +INDIRP4 +CNSTI4 148 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1144 +ADDP4 +INDIRI4 +ASGNI4 +line 2036 +;2036: s->trickedentindex2 = ps->fd.forceMindtrickTargetIndex2; +ADDRFP4 4 +INDIRP4 +CNSTI4 152 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1148 +ADDP4 +INDIRI4 +ASGNI4 +line 2037 +;2037: s->trickedentindex3 = ps->fd.forceMindtrickTargetIndex3; +ADDRFP4 4 +INDIRP4 +CNSTI4 156 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1152 +ADDP4 +INDIRI4 +ASGNI4 +line 2038 +;2038: s->trickedentindex4 = ps->fd.forceMindtrickTargetIndex4; +ADDRFP4 4 +INDIRP4 +CNSTI4 160 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1156 +ADDP4 +INDIRI4 +ASGNI4 +line 2040 +;2039: +;2040: s->forceFrame = ps->saberLockFrame; +ADDRFP4 4 +INDIRP4 +CNSTI4 288 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ASGNI4 +line 2042 +;2041: +;2042: s->emplacedOwner = ps->electrifyTime; +ADDRFP4 4 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRI4 +ASGNI4 +line 2044 +;2043: +;2044: s->speed = ps->speed; +ADDRFP4 4 +INDIRP4 +CNSTI4 164 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2046 +;2045: +;2046: s->genericenemyindex = ps->genericEnemyIndex; +ADDRFP4 4 +INDIRP4 +CNSTI4 172 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 612 +ADDP4 +INDIRI4 +ASGNI4 +line 2048 +;2047: +;2048: s->activeForcePass = ps->activeForcePass; +ADDRFP4 4 +INDIRP4 +CNSTI4 176 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 624 +ADDP4 +INDIRI4 +ASGNI4 +line 2050 +;2049: +;2050: s->angles2[YAW] = ps->movementDir; +ADDRFP4 4 +INDIRP4 +CNSTI4 132 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2051 +;2051: s->legsAnim = ps->legsAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 280 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ASGNI4 +line 2052 +;2052: s->torsoAnim = ps->torsoAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 284 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +ASGNI4 +line 2053 +;2053: s->clientNum = ps->clientNum; // ET_PLAYER looks here instead of at number +ADDRFP4 4 +INDIRP4 +CNSTI4 220 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 2055 +;2054: // so corpses can also reference the proper config +;2055: s->eFlags = ps->eFlags; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +ASGNI4 +line 2057 +;2056: +;2057: s->saberInFlight = ps->saberInFlight; +ADDRFP4 4 +INDIRP4 +CNSTI4 228 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 504 +ADDP4 +INDIRI4 +ASGNI4 +line 2058 +;2058: s->saberEntityNum = ps->saberEntityNum; +ADDRFP4 4 +INDIRP4 +CNSTI4 232 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 544 +ADDP4 +INDIRI4 +ASGNI4 +line 2059 +;2059: s->saberMove = ps->saberMove; +ADDRFP4 4 +INDIRP4 +CNSTI4 236 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ASGNI4 +line 2060 +;2060: s->forcePowersActive = ps->fd.forcePowersActive; +ADDRFP4 4 +INDIRP4 +CNSTI4 240 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +ASGNI4 +line 2062 +;2061: +;2062: if (ps->duelInProgress) +ADDRFP4 0 +INDIRP4 +CNSTI4 1292 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $754 +line 2063 +;2063: { +line 2064 +;2064: s->bolt1 = 1; +ADDRFP4 4 +INDIRP4 +CNSTI4 140 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2065 +;2065: } +ADDRGP4 $755 +JUMPV +LABELV $754 +line 2067 +;2066: else +;2067: { +line 2068 +;2068: s->bolt1 = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 140 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2069 +;2069: } +LABELV $755 +line 2071 +;2070: +;2071: if (ps->dualBlade) +ADDRFP4 0 +INDIRP4 +CNSTI4 1352 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $756 +line 2072 +;2072: { +line 2073 +;2073: s->bolt2 = 1; +ADDRFP4 4 +INDIRP4 +CNSTI4 144 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2074 +;2074: } +ADDRGP4 $757 +JUMPV +LABELV $756 +line 2076 +;2075: else +;2076: { +line 2077 +;2077: s->bolt2 = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 144 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2078 +;2078: } +LABELV $757 +line 2080 +;2079: +;2080: s->otherEntityNum2 = ps->emplacedIndex; +ADDRFP4 4 +INDIRP4 +CNSTI4 188 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 596 +ADDP4 +INDIRI4 +ASGNI4 +line 2082 +;2081: +;2082: s->shouldtarget = ps->saberHolstered; //reuse bool in entitystate for players differently +ADDRFP4 4 +INDIRP4 +CNSTI4 268 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1300 +ADDP4 +INDIRI4 +ASGNI4 +line 2083 +;2083: s->teamowner = ps->usingATST; +ADDRFP4 4 +INDIRP4 +CNSTI4 264 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1304 +ADDP4 +INDIRI4 +ASGNI4 +line 2085 +;2084: +;2085: if (ps->genericEnemyIndex != -1) +ADDRFP4 0 +INDIRP4 +CNSTI4 612 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $758 +line 2086 +;2086: { +line 2087 +;2087: s->eFlags |= EF_SEEKERDRONE; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1048576 +BORI4 +ASGNI4 +line 2088 +;2088: } +LABELV $758 +line 2090 +;2089: +;2090: if ( ps->stats[STAT_HEALTH] <= 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $760 +line 2091 +;2091: s->eFlags |= EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 2092 +;2092: } else { +ADDRGP4 $761 +JUMPV +LABELV $760 +line 2093 +;2093: s->eFlags &= ~EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 -2 +BANDI4 +ASGNI4 +line 2094 +;2094: } +LABELV $761 +line 2096 +;2095: +;2096: if ( ps->externalEvent ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $762 +line 2097 +;2097: s->event = ps->externalEvent; +ADDRFP4 4 +INDIRP4 +CNSTI4 252 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRI4 +ASGNI4 +line 2098 +;2098: s->eventParm = ps->externalEventParm; +ADDRFP4 4 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 136 +ADDP4 +INDIRI4 +ASGNI4 +line 2099 +;2099: } else if ( ps->entityEventSequence < ps->eventSequence ) { +ADDRGP4 $763 +JUMPV +LABELV $762 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +GEI4 $764 +line 2102 +;2100: int seq; +;2101: +;2102: if ( ps->entityEventSequence < ps->eventSequence - MAX_PS_EVENTS) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +GEI4 $766 +line 2103 +;2103: ps->entityEventSequence = ps->eventSequence - MAX_PS_EVENTS; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 496 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 2104 +;2104: } +LABELV $766 +line 2105 +;2105: seq = ps->entityEventSequence & (MAX_PS_EVENTS-1); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +ASGNI4 +line 2106 +;2106: s->event = ps->events[ seq ] | ( ( ps->entityEventSequence & 3 ) << 8 ); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 252 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 8 +LSHI4 +BORI4 +ASGNI4 +line 2107 +;2107: s->eventParm = ps->eventParms[ seq ]; +ADDRFP4 4 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 124 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 2108 +;2108: ps->entityEventSequence++; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 496 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2109 +;2109: } +LABELV $764 +LABELV $763 +line 2112 +;2110: +;2111: +;2112: s->weapon = ps->weapon; +ADDRFP4 4 +INDIRP4 +CNSTI4 276 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +ASGNI4 +line 2113 +;2113: s->groundEntityNum = ps->groundEntityNum; +ADDRFP4 4 +INDIRP4 +CNSTI4 192 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +ASGNI4 +line 2115 +;2114: +;2115: s->powerups = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 272 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2116 +;2116: for ( i = 0 ; i < MAX_POWERUPS ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $768 +line 2117 +;2117: if ( ps->powerups[ i ] ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 344 +ADDP4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $772 +line 2118 +;2118: s->powerups |= 1 << i; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 272 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BORI4 +ASGNI4 +line 2119 +;2119: } +LABELV $772 +line 2120 +;2120: } +LABELV $769 +line 2116 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $768 +line 2122 +;2121: +;2122: s->loopSound = ps->loopSound; +ADDRFP4 4 +INDIRP4 +CNSTI4 200 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 476 +ADDP4 +INDIRI4 +ASGNI4 +line 2123 +;2123: s->generic1 = ps->generic1; +ADDRFP4 4 +INDIRP4 +CNSTI4 292 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +ASGNI4 +line 2126 +;2124: +;2125: //NOT INCLUDED IN ENTITYSTATETOPLAYERSTATE: +;2126: s->modelindex2 = ps->weaponstate; +ADDRFP4 4 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +ASGNI4 +line 2127 +;2127: s->constantLight = ps->weaponChargeTime; +ADDRFP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +ASGNI4 +line 2129 +;2128: +;2129: VectorCopy(ps->lastHitLoc, s->origin2); +ADDRFP4 4 +INDIRP4 +CNSTI4 104 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1356 +ADDP4 +INDIRB +ASGNB 12 +line 2131 +;2130: +;2131: s->isJediMaster = ps->isJediMaster; +ADDRFP4 4 +INDIRP4 +CNSTI4 244 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 604 +ADDP4 +INDIRI4 +ASGNI4 +line 2133 +;2132: +;2133: s->time2 = ps->holocronBits; +ADDRFP4 4 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 712 +ADDP4 +INDIRI4 +ASGNI4 +line 2134 +;2134:} +LABELV $744 +endproc BG_PlayerStateToEntityState 28 0 +export BG_PlayerStateToEntityStateExtraPolate +proc BG_PlayerStateToEntityStateExtraPolate 28 0 +line 2144 +;2135: +;2136:/* +;2137:======================== +;2138:BG_PlayerStateToEntityStateExtraPolate +;2139: +;2140:This is done after each set of usercmd_t on the server, +;2141:and after local prediction on the client +;2142:======================== +;2143:*/ +;2144:void BG_PlayerStateToEntityStateExtraPolate( playerState_t *ps, entityState_t *s, int time, qboolean snap ) { +line 2147 +;2145: int i; +;2146: +;2147: if ( ps->pm_type == PM_INTERMISSION || ps->pm_type == PM_SPECTATOR ) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 6 +EQI4 $777 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +NEI4 $775 +LABELV $777 +line 2148 +;2148: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 12 +ASGNI4 +line 2149 +;2149: } else if ( ps->stats[STAT_HEALTH] <= GIB_HEALTH ) { +ADDRGP4 $776 +JUMPV +LABELV $775 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 -40 +GTI4 $778 +line 2150 +;2150: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 12 +ASGNI4 +line 2151 +;2151: } else { +ADDRGP4 $779 +JUMPV +LABELV $778 +line 2152 +;2152: s->eType = ET_PLAYER; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2153 +;2153: } +LABELV $779 +LABELV $776 +line 2155 +;2154: +;2155: s->number = ps->clientNum; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 2157 +;2156: +;2157: s->pos.trType = TR_LINEAR_STOP; +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 3 +ASGNI4 +line 2158 +;2158: VectorCopy( ps->origin, s->pos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 2159 +;2159: if ( snap ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $780 +line 2160 +;2160: SnapVector( s->pos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 2161 +;2161: } +LABELV $780 +line 2163 +;2162: // set the trDelta for flag direction and linear prediction +;2163: VectorCopy( ps->velocity, s->pos.trDelta ); +ADDRFP4 4 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 2165 +;2164: // set the time for linear prediction +;2165: s->pos.trTime = time; +ADDRFP4 4 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 2167 +;2166: // set maximum extra polation time +;2167: s->pos.trDuration = 50; // 1000 / sv_fps (default = 20) +ADDRFP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +CNSTI4 50 +ASGNI4 +line 2169 +;2168: +;2169: s->apos.trType = TR_INTERPOLATE; +ADDRFP4 4 +INDIRP4 +CNSTI4 48 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2170 +;2170: VectorCopy( ps->viewangles, s->apos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRB +ASGNB 12 +line 2171 +;2171: if ( snap ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $782 +line 2172 +;2172: SnapVector( s->apos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 64 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 2173 +;2173: } +LABELV $782 +line 2175 +;2174: +;2175: s->trickedentindex = ps->fd.forceMindtrickTargetIndex; +ADDRFP4 4 +INDIRP4 +CNSTI4 148 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1144 +ADDP4 +INDIRI4 +ASGNI4 +line 2176 +;2176: s->trickedentindex2 = ps->fd.forceMindtrickTargetIndex2; +ADDRFP4 4 +INDIRP4 +CNSTI4 152 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1148 +ADDP4 +INDIRI4 +ASGNI4 +line 2177 +;2177: s->trickedentindex3 = ps->fd.forceMindtrickTargetIndex3; +ADDRFP4 4 +INDIRP4 +CNSTI4 156 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1152 +ADDP4 +INDIRI4 +ASGNI4 +line 2178 +;2178: s->trickedentindex4 = ps->fd.forceMindtrickTargetIndex4; +ADDRFP4 4 +INDIRP4 +CNSTI4 160 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1156 +ADDP4 +INDIRI4 +ASGNI4 +line 2180 +;2179: +;2180: s->forceFrame = ps->saberLockFrame; +ADDRFP4 4 +INDIRP4 +CNSTI4 288 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ASGNI4 +line 2182 +;2181: +;2182: s->emplacedOwner = ps->electrifyTime; +ADDRFP4 4 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRI4 +ASGNI4 +line 2184 +;2183: +;2184: s->speed = ps->speed; +ADDRFP4 4 +INDIRP4 +CNSTI4 164 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2186 +;2185: +;2186: s->genericenemyindex = ps->genericEnemyIndex; +ADDRFP4 4 +INDIRP4 +CNSTI4 172 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 612 +ADDP4 +INDIRI4 +ASGNI4 +line 2188 +;2187: +;2188: s->activeForcePass = ps->activeForcePass; +ADDRFP4 4 +INDIRP4 +CNSTI4 176 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 624 +ADDP4 +INDIRI4 +ASGNI4 +line 2190 +;2189: +;2190: s->angles2[YAW] = ps->movementDir; +ADDRFP4 4 +INDIRP4 +CNSTI4 132 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2191 +;2191: s->legsAnim = ps->legsAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 280 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ASGNI4 +line 2192 +;2192: s->torsoAnim = ps->torsoAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 284 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +ASGNI4 +line 2193 +;2193: s->clientNum = ps->clientNum; // ET_PLAYER looks here instead of at number +ADDRFP4 4 +INDIRP4 +CNSTI4 220 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 2195 +;2194: // so corpses can also reference the proper config +;2195: s->eFlags = ps->eFlags; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +ASGNI4 +line 2197 +;2196: +;2197: s->saberInFlight = ps->saberInFlight; +ADDRFP4 4 +INDIRP4 +CNSTI4 228 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 504 +ADDP4 +INDIRI4 +ASGNI4 +line 2198 +;2198: s->saberEntityNum = ps->saberEntityNum; +ADDRFP4 4 +INDIRP4 +CNSTI4 232 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 544 +ADDP4 +INDIRI4 +ASGNI4 +line 2199 +;2199: s->saberMove = ps->saberMove; +ADDRFP4 4 +INDIRP4 +CNSTI4 236 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ASGNI4 +line 2200 +;2200: s->forcePowersActive = ps->fd.forcePowersActive; +ADDRFP4 4 +INDIRP4 +CNSTI4 240 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +ASGNI4 +line 2202 +;2201: +;2202: if (ps->duelInProgress) +ADDRFP4 0 +INDIRP4 +CNSTI4 1292 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $784 +line 2203 +;2203: { +line 2204 +;2204: s->bolt1 = 1; +ADDRFP4 4 +INDIRP4 +CNSTI4 140 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2205 +;2205: } +ADDRGP4 $785 +JUMPV +LABELV $784 +line 2207 +;2206: else +;2207: { +line 2208 +;2208: s->bolt1 = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 140 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2209 +;2209: } +LABELV $785 +line 2211 +;2210: +;2211: if (ps->dualBlade) +ADDRFP4 0 +INDIRP4 +CNSTI4 1352 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $786 +line 2212 +;2212: { +line 2213 +;2213: s->bolt2 = 1; +ADDRFP4 4 +INDIRP4 +CNSTI4 144 +ADDP4 +CNSTI4 1 +ASGNI4 +line 2214 +;2214: } +ADDRGP4 $787 +JUMPV +LABELV $786 +line 2216 +;2215: else +;2216: { +line 2217 +;2217: s->bolt2 = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 144 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2218 +;2218: } +LABELV $787 +line 2220 +;2219: +;2220: s->otherEntityNum2 = ps->emplacedIndex; +ADDRFP4 4 +INDIRP4 +CNSTI4 188 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 596 +ADDP4 +INDIRI4 +ASGNI4 +line 2222 +;2221: +;2222: s->shouldtarget = ps->saberHolstered; //reuse bool in entitystate for players differently +ADDRFP4 4 +INDIRP4 +CNSTI4 268 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1300 +ADDP4 +INDIRI4 +ASGNI4 +line 2223 +;2223: s->teamowner = ps->usingATST; +ADDRFP4 4 +INDIRP4 +CNSTI4 264 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1304 +ADDP4 +INDIRI4 +ASGNI4 +line 2225 +;2224: +;2225: if (ps->genericEnemyIndex != -1) +ADDRFP4 0 +INDIRP4 +CNSTI4 612 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $788 +line 2226 +;2226: { +line 2227 +;2227: s->eFlags |= EF_SEEKERDRONE; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1048576 +BORI4 +ASGNI4 +line 2228 +;2228: } +LABELV $788 +line 2230 +;2229: +;2230: if ( ps->stats[STAT_HEALTH] <= 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $790 +line 2231 +;2231: s->eFlags |= EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 2232 +;2232: } else { +ADDRGP4 $791 +JUMPV +LABELV $790 +line 2233 +;2233: s->eFlags &= ~EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 -2 +BANDI4 +ASGNI4 +line 2234 +;2234: } +LABELV $791 +line 2236 +;2235: +;2236: if ( ps->externalEvent ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $792 +line 2237 +;2237: s->event = ps->externalEvent; +ADDRFP4 4 +INDIRP4 +CNSTI4 252 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRI4 +ASGNI4 +line 2238 +;2238: s->eventParm = ps->externalEventParm; +ADDRFP4 4 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 136 +ADDP4 +INDIRI4 +ASGNI4 +line 2239 +;2239: } else if ( ps->entityEventSequence < ps->eventSequence ) { +ADDRGP4 $793 +JUMPV +LABELV $792 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +GEI4 $794 +line 2242 +;2240: int seq; +;2241: +;2242: if ( ps->entityEventSequence < ps->eventSequence - MAX_PS_EVENTS) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +GEI4 $796 +line 2243 +;2243: ps->entityEventSequence = ps->eventSequence - MAX_PS_EVENTS; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 496 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 2244 +;2244: } +LABELV $796 +line 2245 +;2245: seq = ps->entityEventSequence & (MAX_PS_EVENTS-1); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +ASGNI4 +line 2246 +;2246: s->event = ps->events[ seq ] | ( ( ps->entityEventSequence & 3 ) << 8 ); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 252 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 8 +LSHI4 +BORI4 +ASGNI4 +line 2247 +;2247: s->eventParm = ps->eventParms[ seq ]; +ADDRFP4 4 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 124 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 2248 +;2248: ps->entityEventSequence++; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 496 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2249 +;2249: } +LABELV $794 +LABELV $793 +line 2250 +;2250: s->weapon = ps->weapon; +ADDRFP4 4 +INDIRP4 +CNSTI4 276 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +ASGNI4 +line 2251 +;2251: s->groundEntityNum = ps->groundEntityNum; +ADDRFP4 4 +INDIRP4 +CNSTI4 192 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +ASGNI4 +line 2253 +;2252: +;2253: s->powerups = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 272 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2254 +;2254: for ( i = 0 ; i < MAX_POWERUPS ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $798 +line 2255 +;2255: if ( ps->powerups[ i ] ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 344 +ADDP4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $802 +line 2256 +;2256: s->powerups |= 1 << i; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 272 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BORI4 +ASGNI4 +line 2257 +;2257: } +LABELV $802 +line 2258 +;2258: } +LABELV $799 +line 2254 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $798 +line 2260 +;2259: +;2260: s->loopSound = ps->loopSound; +ADDRFP4 4 +INDIRP4 +CNSTI4 200 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 476 +ADDP4 +INDIRI4 +ASGNI4 +line 2261 +;2261: s->generic1 = ps->generic1; +ADDRFP4 4 +INDIRP4 +CNSTI4 292 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +ASGNI4 +line 2264 +;2262: +;2263: //NOT INCLUDED IN ENTITYSTATETOPLAYERSTATE: +;2264: s->modelindex2 = ps->weaponstate; +ADDRFP4 4 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +ASGNI4 +line 2265 +;2265: s->constantLight = ps->weaponChargeTime; +ADDRFP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +ASGNI4 +line 2267 +;2266: +;2267: VectorCopy(ps->lastHitLoc, s->origin2); +ADDRFP4 4 +INDIRP4 +CNSTI4 104 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1356 +ADDP4 +INDIRB +ASGNB 12 +line 2269 +;2268: +;2269: s->isJediMaster = ps->isJediMaster; +ADDRFP4 4 +INDIRP4 +CNSTI4 244 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 604 +ADDP4 +INDIRI4 +ASGNI4 +line 2271 +;2270: +;2271: s->time2 = ps->holocronBits; +ADDRFP4 4 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 712 +ADDP4 +INDIRI4 +ASGNI4 +line 2272 +;2272:} +LABELV $774 +endproc BG_PlayerStateToEntityStateExtraPolate 28 0 +proc BG_SwingAngles 28 8 +line 2288 +;2273: +;2274:/* +;2275:============================================================================= +;2276: +;2277:PLAYER ANGLES +;2278: +;2279:============================================================================= +;2280:*/ +;2281: +;2282:/* +;2283:================== +;2284:BG_SwingAngles +;2285:================== +;2286:*/ +;2287:static void BG_SwingAngles( float destination, float swingTolerance, float clampTolerance, +;2288: float speed, float *angle, qboolean *swinging, int frameTime ) { +line 2293 +;2289: float swing; +;2290: float move; +;2291: float scale; +;2292: +;2293: if ( !*swinging ) { +ADDRFP4 20 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $805 +line 2295 +;2294: // see if a swing should be started +;2295: swing = AngleSubtract( *angle, destination ); +ADDRFP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 2296 +;2296: if ( swing > swingTolerance || swing < -swingTolerance ) { +ADDRLP4 20 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ADDRLP4 20 +INDIRF4 +GTF4 $809 +ADDRLP4 0 +INDIRF4 +ADDRLP4 20 +INDIRF4 +NEGF4 +GEF4 $807 +LABELV $809 +line 2297 +;2297: *swinging = qtrue; +ADDRFP4 20 +INDIRP4 +CNSTI4 1 +ASGNI4 +line 2298 +;2298: } +LABELV $807 +line 2299 +;2299: } +LABELV $805 +line 2301 +;2300: +;2301: if ( !*swinging ) { +ADDRFP4 20 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $810 +line 2302 +;2302: return; +ADDRGP4 $804 +JUMPV +LABELV $810 +line 2307 +;2303: } +;2304: +;2305: // modify the speed depending on the delta +;2306: // so it doesn't seem so linear +;2307: swing = AngleSubtract( destination, *angle ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 2308 +;2308: scale = fabs( swing ); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 16 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 16 +INDIRF4 +ASGNF4 +line 2309 +;2309: if ( scale < swingTolerance * 0.5 ) { +ADDRLP4 4 +INDIRF4 +CNSTF4 1056964608 +ADDRFP4 4 +INDIRF4 +MULF4 +GEF4 $812 +line 2310 +;2310: scale = 0.5; +ADDRLP4 4 +CNSTF4 1056964608 +ASGNF4 +line 2311 +;2311: } else if ( scale < swingTolerance ) { +ADDRGP4 $813 +JUMPV +LABELV $812 +ADDRLP4 4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +GEF4 $814 +line 2312 +;2312: scale = 1.0; +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +line 2313 +;2313: } else { +ADDRGP4 $815 +JUMPV +LABELV $814 +line 2314 +;2314: scale = 2.0; +ADDRLP4 4 +CNSTF4 1073741824 +ASGNF4 +line 2315 +;2315: } +LABELV $815 +LABELV $813 +line 2318 +;2316: +;2317: // swing towards the destination angle +;2318: if ( swing >= 0 ) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +LTF4 $816 +line 2319 +;2319: move = frameTime * scale * speed; +ADDRLP4 8 +ADDRFP4 24 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRFP4 12 +INDIRF4 +MULF4 +ASGNF4 +line 2320 +;2320: if ( move >= swing ) { +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRF4 +LTF4 $818 +line 2321 +;2321: move = swing; +ADDRLP4 8 +ADDRLP4 0 +INDIRF4 +ASGNF4 +line 2322 +;2322: *swinging = qfalse; +ADDRFP4 20 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 2323 +;2323: } +LABELV $818 +line 2324 +;2324: *angle = AngleMod( *angle + move ); +ADDRLP4 20 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2325 +;2325: } else if ( swing < 0 ) { +ADDRGP4 $817 +JUMPV +LABELV $816 +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $820 +line 2326 +;2326: move = frameTime * scale * -speed; +ADDRLP4 8 +ADDRFP4 24 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRFP4 12 +INDIRF4 +NEGF4 +MULF4 +ASGNF4 +line 2327 +;2327: if ( move <= swing ) { +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRF4 +GTF4 $822 +line 2328 +;2328: move = swing; +ADDRLP4 8 +ADDRLP4 0 +INDIRF4 +ASGNF4 +line 2329 +;2329: *swinging = qfalse; +ADDRFP4 20 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 2330 +;2330: } +LABELV $822 +line 2331 +;2331: *angle = AngleMod( *angle + move ); +ADDRLP4 20 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2332 +;2332: } +LABELV $820 +LABELV $817 +line 2335 +;2333: +;2334: // clamp to no more than tolerance +;2335: swing = AngleSubtract( destination, *angle ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 2336 +;2336: if ( swing > clampTolerance ) { +ADDRLP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +LEF4 $824 +line 2337 +;2337: *angle = AngleMod( destination - (clampTolerance - 1) ); +ADDRFP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +SUBF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRFP4 16 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2338 +;2338: } else if ( swing < -clampTolerance ) { +ADDRGP4 $825 +JUMPV +LABELV $824 +ADDRLP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +NEGF4 +GEF4 $826 +line 2339 +;2339: *angle = AngleMod( destination + (clampTolerance - 1) ); +ADDRFP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +ADDF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRFP4 16 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2340 +;2340: } +LABELV $826 +LABELV $825 +line 2341 +;2341:} +LABELV $804 +endproc BG_SwingAngles 28 8 +proc BG_AddPainTwitch 12 0 +line 2349 +;2342: +;2343:/* +;2344:================= +;2345:CG_AddPainTwitch +;2346:================= +;2347:*/ +;2348:#define PAIN_TWITCH_TIME 200 +;2349:static void BG_AddPainTwitch( int painTime, int painDirection, int currentTime, vec3_t torsoAngles ) { +line 2353 +;2350: int t; +;2351: float f; +;2352: +;2353: t = currentTime - painTime; +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ADDRFP4 0 +INDIRI4 +SUBI4 +ASGNI4 +line 2354 +;2354: if ( t >= PAIN_TWITCH_TIME ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 200 +LTI4 $829 +line 2355 +;2355: return; +ADDRGP4 $828 +JUMPV +LABELV $829 +line 2358 +;2356: } +;2357: +;2358: f = 1.0 - (float)t / PAIN_TWITCH_TIME; +ADDRLP4 4 +CNSTF4 1065353216 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +CNSTF4 1128792064 +DIVF4 +SUBF4 +ASGNF4 +line 2360 +;2359: +;2360: if ( painDirection ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $831 +line 2361 +;2361: torsoAngles[ROLL] += 20 * f; +ADDRLP4 8 +ADDRFP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CNSTF4 1101004800 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2362 +;2362: } else { +ADDRGP4 $832 +JUMPV +LABELV $831 +line 2363 +;2363: torsoAngles[ROLL] -= 20 * f; +ADDRLP4 8 +ADDRFP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CNSTF4 1101004800 +ADDRLP4 4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 2364 +;2364: } +LABELV $832 +line 2365 +;2365:} +LABELV $828 +endproc BG_AddPainTwitch 12 0 +data +align 4 +LABELV $834 +byte 4 0 +byte 4 22 +byte 4 45 +byte 4 -22 +byte 4 0 +byte 4 22 +byte 4 -45 +byte 4 -22 +export BG_G2PlayerAngles +code +proc BG_G2PlayerAngles 120 28 +line 2369 +;2366: +;2367:void BG_G2PlayerAngles( vec3_t startAngles, vec3_t legs[3], vec3_t legsAngles, int painTime, int painDirection, int currentTime, +;2368: qboolean *torso_yawing, float *torso_yawAngle, qboolean *torso_pitching, float *torso_pitchAngle, qboolean *legs_yawing, float *legs_yawAngle, +;2369: int frameTime, vec3_t velocity, int legsAnim, int torsoAnim, qboolean dead, float movementDir, void *ghoul2, qhandle_t *modelList, int weapon){ +line 2376 +;2370: vec3_t torsoAngles, headAngles; +;2371: float dest; +;2372: static int movementOffsets[8] = { 0, 22, 45, -22, 0, 22, -45, -22 }; +;2373: float speed; +;2374: int dir; +;2375: +;2376: VectorCopy( startAngles, headAngles ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 2377 +;2377: headAngles[YAW] = AngleMod( headAngles[YAW] ); +ADDRLP4 12+4 +INDIRF4 +ARGF4 +ADDRLP4 36 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRLP4 12+4 +ADDRLP4 36 +INDIRF4 +ASGNF4 +line 2378 +;2378: VectorClear( legsAngles ); +ADDRLP4 40 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 44 +CNSTF4 0 +ASGNF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 44 +INDIRF4 +ASGNF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 44 +INDIRF4 +ASGNF4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 44 +INDIRF4 +ASGNF4 +line 2379 +;2379: VectorClear( torsoAngles ); +ADDRLP4 48 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 48 +INDIRF4 +ASGNF4 +ADDRLP4 0+4 +ADDRLP4 48 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 48 +INDIRF4 +ASGNF4 +line 2384 +;2380: +;2381: // --------- yaw ------------- +;2382: +;2383: // allow yaw to drift a bit +;2384: if ( ( legsAnim & ~ANIM_TOGGLEBIT ) != WeaponReadyAnim[weapon] +ADDRLP4 52 +CNSTI4 -2049 +ASGNI4 +ADDRLP4 56 +ADDRFP4 80 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 WeaponReadyAnim +ADDP4 +INDIRI4 +ASGNI4 +ADDRFP4 56 +INDIRI4 +ADDRLP4 52 +INDIRI4 +BANDI4 +ADDRLP4 56 +INDIRI4 +NEI4 $841 +ADDRFP4 60 +INDIRI4 +ADDRLP4 52 +INDIRI4 +BANDI4 +ADDRLP4 56 +INDIRI4 +EQI4 $839 +LABELV $841 +line 2385 +;2385: || ( torsoAnim & ~ANIM_TOGGLEBIT ) != WeaponReadyAnim[weapon] ) { +line 2387 +;2386: // if not standing still, always point all in the same direction +;2387: *torso_yawing = qtrue; // always center +ADDRFP4 24 +INDIRP4 +CNSTI4 1 +ASGNI4 +line 2388 +;2388: *torso_pitching = qtrue; // always center +ADDRFP4 32 +INDIRP4 +CNSTI4 1 +ASGNI4 +line 2389 +;2389: *legs_yawing = qtrue; // always center +ADDRFP4 40 +INDIRP4 +CNSTI4 1 +ASGNI4 +line 2390 +;2390: } +LABELV $839 +line 2393 +;2391: +;2392: // adjust legs for movement dir +;2393: if (dead ) { +ADDRFP4 64 +INDIRI4 +CNSTI4 0 +EQI4 $842 +line 2395 +;2394: // don't let dead bodies twitch +;2395: dir = 0; +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +line 2396 +;2396: } else { +ADDRGP4 $843 +JUMPV +LABELV $842 +line 2397 +;2397: dir = movementDir; +ADDRLP4 28 +ADDRFP4 68 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2401 +;2398:// if ( dir < 0 || dir > 7 ) { +;2399:// CG_Error( "Bad player movement angle" ); +;2400:// } +;2401: } +LABELV $843 +line 2402 +;2402: legsAngles[YAW] = headAngles[YAW] + movementOffsets[ dir ]; +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 12+4 +INDIRF4 +ADDRLP4 28 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $834 +ADDP4 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 2403 +;2403: torsoAngles[YAW] = headAngles[YAW] + 0.25 * movementOffsets[ dir ]; +ADDRLP4 0+4 +ADDRLP4 12+4 +INDIRF4 +CNSTF4 1048576000 +ADDRLP4 28 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $834 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +ADDF4 +ASGNF4 +line 2406 +;2404: +;2405: // torso +;2406: BG_SwingAngles( torsoAngles[YAW], 25, 90, /*cg_swingSpeed.value*/ 0.3, torso_yawAngle, torso_yawing, frameTime ); +ADDRLP4 0+4 +INDIRF4 +ARGF4 +CNSTF4 1103626240 +ARGF4 +CNSTF4 1119092736 +ARGF4 +CNSTF4 1050253722 +ARGF4 +ADDRFP4 28 +INDIRP4 +ARGP4 +ADDRFP4 24 +INDIRP4 +ARGP4 +ADDRFP4 48 +INDIRI4 +ARGI4 +ADDRGP4 BG_SwingAngles +CALLV +pop +line 2407 +;2407: BG_SwingAngles( legsAngles[YAW], 40, 90, /*cg_swingSpeed.value*/ 0.3, legs_yawAngle, legs_yawing, frameTime ); +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +CNSTF4 1109393408 +ARGF4 +CNSTF4 1119092736 +ARGF4 +CNSTF4 1050253722 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 40 +INDIRP4 +ARGP4 +ADDRFP4 48 +INDIRI4 +ARGI4 +ADDRGP4 BG_SwingAngles +CALLV +pop +line 2409 +;2408: +;2409: torsoAngles[YAW] = *torso_yawAngle; +ADDRLP4 0+4 +ADDRFP4 28 +INDIRP4 +INDIRF4 +ASGNF4 +line 2410 +;2410: legsAngles[YAW] = *legs_yawAngle; +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRFP4 44 +INDIRP4 +INDIRF4 +ASGNF4 +line 2415 +;2411: +;2412: // --------- pitch ------------- +;2413: +;2414: // only show a fraction of the pitch angle in the torso +;2415: if ( headAngles[PITCH] > 180 ) { +ADDRLP4 12 +INDIRF4 +CNSTF4 1127481344 +LEF4 $849 +line 2416 +;2416: dest = (-360 + headAngles[PITCH]) * 0.75; +ADDRLP4 32 +CNSTF4 1061158912 +ADDRLP4 12 +INDIRF4 +CNSTF4 3283353600 +ADDF4 +MULF4 +ASGNF4 +line 2417 +;2417: } else { +ADDRGP4 $850 +JUMPV +LABELV $849 +line 2418 +;2418: dest = headAngles[PITCH] * 0.75; +ADDRLP4 32 +CNSTF4 1061158912 +ADDRLP4 12 +INDIRF4 +MULF4 +ASGNF4 +line 2419 +;2419: } +LABELV $850 +line 2420 +;2420: BG_SwingAngles( dest, 15, 30, 0.1, torso_pitchAngle, torso_pitching, frameTime ); +ADDRLP4 32 +INDIRF4 +ARGF4 +CNSTF4 1097859072 +ARGF4 +CNSTF4 1106247680 +ARGF4 +CNSTF4 1036831949 +ARGF4 +ADDRFP4 36 +INDIRP4 +ARGP4 +ADDRFP4 32 +INDIRP4 +ARGP4 +ADDRFP4 48 +INDIRI4 +ARGI4 +ADDRGP4 BG_SwingAngles +CALLV +pop +line 2421 +;2421: torsoAngles[PITCH] = *torso_pitchAngle; +ADDRLP4 0 +ADDRFP4 36 +INDIRP4 +INDIRF4 +ASGNF4 +line 2426 +;2422: +;2423: // --------- roll ------------- +;2424: +;2425: // lean towards the direction of travel +;2426: speed = VectorNormalize( velocity ); +ADDRFP4 52 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 VectorNormalize +CALLF4 +ASGNF4 +ADDRLP4 24 +ADDRLP4 60 +INDIRF4 +ASGNF4 +line 2427 +;2427: if ( speed ) { +ADDRLP4 24 +INDIRF4 +CNSTF4 0 +EQF4 $851 +line 2431 +;2428: vec3_t axis[3]; +;2429: float side; +;2430: +;2431: speed *= 0.05; +ADDRLP4 24 +CNSTF4 1028443341 +ADDRLP4 24 +INDIRF4 +MULF4 +ASGNF4 +line 2433 +;2432: +;2433: AnglesToAxis( legsAngles, axis ); +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 64 +ARGP4 +ADDRGP4 AnglesToAxis +CALLV +pop +line 2434 +;2434: side = speed * DotProduct( velocity, axis[1] ); +ADDRLP4 104 +ADDRFP4 52 +INDIRP4 +ASGNP4 +ADDRLP4 100 +ADDRLP4 24 +INDIRF4 +ADDRLP4 104 +INDIRP4 +INDIRF4 +ADDRLP4 64+12 +INDIRF4 +MULF4 +ADDRLP4 104 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 64+12+4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 104 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 64+12+8 +INDIRF4 +MULF4 +ADDF4 +MULF4 +ASGNF4 +line 2435 +;2435: legsAngles[ROLL] -= side; +ADDRLP4 108 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 108 +INDIRP4 +ADDRLP4 108 +INDIRP4 +INDIRF4 +ADDRLP4 100 +INDIRF4 +SUBF4 +ASGNF4 +line 2437 +;2436: +;2437: side = speed * DotProduct( velocity, axis[0] ); +ADDRLP4 112 +ADDRFP4 52 +INDIRP4 +ASGNP4 +ADDRLP4 100 +ADDRLP4 24 +INDIRF4 +ADDRLP4 112 +INDIRP4 +INDIRF4 +ADDRLP4 64 +INDIRF4 +MULF4 +ADDRLP4 112 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 64+4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 112 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 64+8 +INDIRF4 +MULF4 +ADDF4 +MULF4 +ASGNF4 +line 2438 +;2438: legsAngles[PITCH] += side; +ADDRLP4 116 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 116 +INDIRP4 +ADDRLP4 116 +INDIRP4 +INDIRF4 +ADDRLP4 100 +INDIRF4 +ADDF4 +ASGNF4 +line 2439 +;2439: } +LABELV $851 +line 2442 +;2440: +;2441: // pain twitch +;2442: BG_AddPainTwitch( painTime, painDirection, currentTime, torsoAngles ); +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRFP4 20 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 BG_AddPainTwitch +CALLV +pop +line 2445 +;2443: +;2444: // pull the angles back out of the hierarchial chain +;2445: AnglesSubtract( headAngles, torsoAngles, headAngles ); +ADDRLP4 12 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRGP4 AnglesSubtract +CALLV +pop +line 2446 +;2446: AnglesSubtract( torsoAngles, legsAngles, torsoAngles ); +ADDRLP4 0 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 AnglesSubtract +CALLV +pop +line 2447 +;2447: AnglesToAxis( legsAngles, legs ); +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 AnglesToAxis +CALLV +pop +line 2452 +;2448: // we assume that model 0 is the player model. +;2449://g2r trap_G2API_SetBoneAngles(ghoul2, 0, "upper_lumbar", torsoAngles, BONE_ANGLES_POSTMULT, POSITIVE_X, NEGATIVE_Y, NEGATIVE_Z, modelList, 0, currentTime); +;2450://g2r trap_G2API_SetBoneAngles(ghoul2, 0, "cranium", headAngles, BONE_ANGLES_POSTMULT, POSITIVE_Z, NEGATIVE_Y, POSITIVE_X, modelList,0, currentTime); +;2451: +;2452:} +LABELV $833 +endproc BG_G2PlayerAngles 120 28 +data +align 4 +LABELV bg_poolSize +byte 4 0 +align 4 +LABELV bg_poolTail +byte 4 2048000 +export BG_Alloc +code +proc BG_Alloc 8 16 +line 2461 +;2453: +;2454:#define MAX_POOL_SIZE 2048000 //1024000 +;2455: +;2456:static char bg_pool[MAX_POOL_SIZE]; +;2457:static int bg_poolSize = 0; +;2458:static int bg_poolTail = MAX_POOL_SIZE; +;2459: +;2460:void *BG_Alloc ( int size ) +;2461:{ +line 2462 +;2462: bg_poolSize = ((bg_poolSize + 0x00000003) & 0xfffffffc); +ADDRLP4 0 +ADDRGP4 bg_poolSize +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 3 +ADDI4 +CVIU4 4 +CNSTU4 4294967292 +BANDU4 +CVUI4 4 +ASGNI4 +line 2464 +;2463: +;2464: if (bg_poolSize + size > bg_poolTail) +ADDRGP4 bg_poolSize +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ADDRGP4 bg_poolTail +INDIRI4 +LEI4 $861 +line 2465 +;2465: { +line 2466 +;2466: Com_Error( ERR_DROP, "BG_Alloc: buffer exceeded tail (%d > %d)", bg_poolSize + size, bg_poolTail); +CNSTI4 1 +ARGI4 +ADDRGP4 $863 +ARGP4 +ADDRGP4 bg_poolSize +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ARGI4 +ADDRGP4 bg_poolTail +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 2467 +;2467: return 0; +CNSTP4 0 +RETP4 +ADDRGP4 $860 +JUMPV +LABELV $861 +line 2470 +;2468: } +;2469: +;2470: bg_poolSize += size; +ADDRLP4 4 +ADDRGP4 bg_poolSize +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 2472 +;2471: +;2472: return &bg_pool[bg_poolSize-size]; +ADDRGP4 bg_poolSize +INDIRI4 +ADDRFP4 0 +INDIRI4 +SUBI4 +ADDRGP4 bg_pool +ADDP4 +RETP4 +LABELV $860 +endproc BG_Alloc 8 16 +export BG_AllocUnaligned +proc BG_AllocUnaligned 4 16 +line 2476 +;2473:} +;2474: +;2475:void *BG_AllocUnaligned ( int size ) +;2476:{ +line 2477 +;2477: if (bg_poolSize + size > bg_poolTail) +ADDRGP4 bg_poolSize +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ADDRGP4 bg_poolTail +INDIRI4 +LEI4 $865 +line 2478 +;2478: { +line 2479 +;2479: Com_Error( ERR_DROP, "BG_AllocUnaligned: buffer exceeded tail (%d > %d)", bg_poolSize + size, bg_poolTail); +CNSTI4 1 +ARGI4 +ADDRGP4 $867 +ARGP4 +ADDRGP4 bg_poolSize +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ARGI4 +ADDRGP4 bg_poolTail +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 2480 +;2480: return 0; +CNSTP4 0 +RETP4 +ADDRGP4 $864 +JUMPV +LABELV $865 +line 2483 +;2481: } +;2482: +;2483: bg_poolSize += size; +ADDRLP4 0 +ADDRGP4 bg_poolSize +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 2485 +;2484: +;2485: return &bg_pool[bg_poolSize-size]; +ADDRGP4 bg_poolSize +INDIRI4 +ADDRFP4 0 +INDIRI4 +SUBI4 +ADDRGP4 bg_pool +ADDP4 +RETP4 +LABELV $864 +endproc BG_AllocUnaligned 4 16 +export BG_TempAlloc +proc BG_TempAlloc 4 16 +line 2489 +;2486:} +;2487: +;2488:void *BG_TempAlloc( int size ) +;2489:{ +line 2490 +;2490: size = ((size + 0x00000003) & 0xfffffffc); +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 3 +ADDI4 +CVIU4 4 +CNSTU4 4294967292 +BANDU4 +CVUI4 4 +ASGNI4 +line 2492 +;2491: +;2492: if (bg_poolTail - size < bg_poolSize) +ADDRGP4 bg_poolTail +INDIRI4 +ADDRFP4 0 +INDIRI4 +SUBI4 +ADDRGP4 bg_poolSize +INDIRI4 +GEI4 $869 +line 2493 +;2493: { +line 2494 +;2494: Com_Error( ERR_DROP, "BG_TempAlloc: buffer exceeded head (%d > %d)", bg_poolTail - size, bg_poolSize); +CNSTI4 1 +ARGI4 +ADDRGP4 $871 +ARGP4 +ADDRGP4 bg_poolTail +INDIRI4 +ADDRFP4 0 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 bg_poolSize +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 2495 +;2495: return 0; +CNSTP4 0 +RETP4 +ADDRGP4 $868 +JUMPV +LABELV $869 +line 2498 +;2496: } +;2497: +;2498: bg_poolTail -= size; +ADDRLP4 0 +ADDRGP4 bg_poolTail +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +SUBI4 +ASGNI4 +line 2500 +;2499: +;2500: return &bg_pool[bg_poolTail]; +ADDRGP4 bg_poolTail +INDIRI4 +ADDRGP4 bg_pool +ADDP4 +RETP4 +LABELV $868 +endproc BG_TempAlloc 4 16 +export BG_TempFree +proc BG_TempFree 4 16 +line 2504 +;2501:} +;2502: +;2503:void BG_TempFree( int size ) +;2504:{ +line 2505 +;2505: size = ((size + 0x00000003) & 0xfffffffc); +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 3 +ADDI4 +CVIU4 4 +CNSTU4 4294967292 +BANDU4 +CVUI4 4 +ASGNI4 +line 2507 +;2506: +;2507: if (bg_poolTail+size > MAX_POOL_SIZE) +ADDRGP4 bg_poolTail +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +CNSTI4 2048000 +LEI4 $873 +line 2508 +;2508: { +line 2509 +;2509: Com_Error( ERR_DROP, "BG_TempFree: tail greater than size (%d > %d)", bg_poolTail+size, MAX_POOL_SIZE ); +CNSTI4 1 +ARGI4 +ADDRGP4 $875 +ARGP4 +ADDRGP4 bg_poolTail +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ARGI4 +CNSTI4 2048000 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 2510 +;2510: } +LABELV $873 +line 2512 +;2511: +;2512: bg_poolTail += size; +ADDRLP4 0 +ADDRGP4 bg_poolTail +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 2513 +;2513:} +LABELV $872 +endproc BG_TempFree 4 16 +export BG_StringAlloc +proc BG_StringAlloc 12 8 +line 2516 +;2514: +;2515:char *BG_StringAlloc ( const char *source ) +;2516:{ +line 2519 +;2517: char *dest; +;2518: +;2519: dest = BG_Alloc ( strlen ( source ) + 1 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 BG_Alloc +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 2520 +;2520: strcpy ( dest, source ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 2521 +;2521: return dest; +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $876 +endproc BG_StringAlloc 12 8 +export BG_OutOfMemory +proc BG_OutOfMemory 4 0 +line 2525 +;2522:} +;2523: +;2524:qboolean BG_OutOfMemory ( void ) +;2525:{ +line 2526 +;2526: return bg_poolSize >= MAX_POOL_SIZE; +ADDRGP4 bg_poolSize +INDIRI4 +CNSTI4 2048000 +LTI4 $879 +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +ADDRGP4 $880 +JUMPV +LABELV $879 +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $880 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $877 +endproc BG_OutOfMemory 4 0 +bss +align 1 +LABELV bg_pool +skip 2048000 +import g2WeaponInstances +import CG_CheckPlayerG2Weapons +import CG_CopyG2WeaponInstance +import CG_ShutDownG2Weapons +import CG_InitG2Weapons +import CG_CreateBBRefEnts +import CG_SetGhoul2Info +import CG_Init_CGents +import CG_Init_CG +import trap_G2API_SetNewOrigin +import trap_G2API_SetSurfaceOnOff +import trap_G2API_SetRootSurface +import trap_G2API_SetBoneAnim +import trap_G2API_GetGLAName +import trap_G2API_SetBoneAngles +import trap_G2API_CleanGhoul2Models +import trap_G2API_SetBoltInfo +import trap_G2API_AddBolt +import trap_G2API_RemoveGhoul2Model +import trap_G2API_HasGhoul2ModelOnIndex +import trap_G2API_DuplicateGhoul2Instance +import trap_G2API_CopySpecificGhoul2Model +import trap_G2API_CopyGhoul2Instance +import trap_G2API_GiveMeVectorFromMatrix +import trap_G2API_InitGhoul2Model +import trap_G2API_GetBoltMatrix_NoReconstruct +import trap_G2API_GetBoltMatrix +import trap_G2_HaveWeGhoul2Models +import trap_G2_SetGhoul2ModelIndexes +import trap_G2_ListModelBones +import trap_G2_ListModelSurfaces +import FX_ForceDrained +import FX_BlasterWeaponHitPlayer +import FX_BlasterWeaponHitWall +import FX_BlasterAltFireThink +import FX_BlasterProjectileThink +import FX_BryarAltHitPlayer +import FX_BryarHitPlayer +import FX_BryarAltHitWall +import FX_BryarHitWall +import CG_Spark +import FX_TurretHitPlayer +import FX_TurretHitWall +import FX_TurretProjectileThink +import CG_NewParticleArea +import initparticles +import CG_GetStripEdString +import CG_ParticleExplosion +import CG_ParticleMisc +import CG_ParticleDust +import CG_ParticleSparks +import CG_ParticleBulletDebris +import CG_ParticleSnowFlurry +import CG_AddParticleShrapnel +import CG_ParticleSmoke +import CG_ParticleSnow +import CG_AddParticles +import CG_ClearParticles +import trap_ROFF_Purge_Ent +import trap_ROFF_Play +import trap_ROFF_Cache +import trap_ROFF_UpdateEntities +import trap_ROFF_Clean +import trap_CG_RegisterSharedMemory +import trap_SP_GetStringTextString +import trap_SP_Print +import trap_FX_AddSprite +import trap_FX_AddPrimitive +import trap_FX_AddBezier +import trap_FX_AddPoly +import trap_FX_AdjustTime +import trap_FX_FreeSystem +import trap_FX_InitSystem +import trap_FX_AddScheduledEffects +import trap_FX_PlayBoltedEffectID +import trap_FX_PlayEntityEffectID +import trap_FX_PlayEffectID +import trap_FX_PlaySimpleEffectID +import trap_FX_PlayEntityEffect +import trap_FX_PlayEffect +import trap_FX_PlaySimpleEffect +import trap_FX_RegisterEffect +import trap_R_inPVS +import trap_GetEntityToken +import trap_getCameraInfo +import trap_startCamera +import trap_loadCamera +import trap_SnapVector +import trap_CIN_SetExtents +import trap_CIN_DrawCinematic +import trap_CIN_RunCinematic +import trap_CIN_StopCinematic +import trap_CIN_PlayCinematic +import trap_Key_GetKey +import trap_Key_SetCatcher +import trap_Key_GetCatcher +import trap_Key_IsDown +import trap_MemoryRemaining +import testPrintFloat +import testPrintInt +import trap_OpenUIMenu +import trap_SetClientTurnExtent +import trap_SetClientForceAngle +import trap_SetUserCmdValue +import trap_GetUserCmd +import trap_GetCurrentCmdNumber +import trap_GetServerCommand +import trap_GetSnapshot +import trap_GetCurrentSnapshotNumber +import trap_GetGameState +import trap_GetGlconfig +import trap_FX_AddLine +import trap_R_GetBModelVerts +import trap_R_SetLightStyle +import trap_R_GetLightStyle +import trap_R_RemapShader +import trap_R_DrawRotatePic2 +import trap_R_DrawRotatePic +import trap_R_LerpTag +import trap_R_ModelBounds +import trap_R_DrawStretchPic +import trap_R_SetColor +import trap_R_RenderScene +import trap_R_LightForPoint +import trap_R_AddLightToScene +import trap_R_AddPolysToScene +import trap_R_AddPolyToScene +import trap_R_AddRefEntityToScene +import trap_R_ClearScene +import trap_AnyLanguage_ReadCharFromString +import trap_R_Font_DrawString +import trap_R_Font_HeightPixels +import trap_R_Font_StrLenChars +import trap_R_Font_StrLenPixels +import trap_R_RegisterFont +import trap_R_RegisterShaderNoMip +import trap_R_RegisterShader +import trap_R_RegisterSkin +import trap_R_RegisterModel +import trap_R_LoadWorldMap +import trap_S_StopBackgroundTrack +import trap_S_StartBackgroundTrack +import trap_S_RegisterSound +import trap_S_Respatialize +import trap_S_UpdateEntityPosition +import trap_S_AddRealLoopingSound +import trap_S_AddLoopingSound +import trap_S_ClearLoopingSounds +import trap_S_StartLocalSound +import trap_S_StopLoopingSound +import trap_S_StartSound +import trap_S_MuteSound +import trap_CM_MarkFragments +import trap_CM_TransformedBoxTrace +import trap_CM_BoxTrace +import trap_CM_TransformedPointContents +import trap_CM_PointContents +import trap_CM_TempBoxModel +import trap_CM_InlineModel +import trap_CM_NumInlineModels +import trap_CM_LoadMap +import trap_UpdateScreen +import trap_SendClientCommand +import trap_AddCommand +import trap_SendConsoleCommand +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Args +import trap_Argv +import trap_Argc +import trap_Cvar_VariableStringBuffer +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_Milliseconds +import trap_Error +import trap_Print +import CG_SagaObjectiveCompleted +import CG_SagaRoundOver +import CG_InitSagaMode +import CG_CheckChangedPredictableEvents +import CG_TransitionPlayerState +import CG_Respawn +import CG_IsMindTricked +import CG_PlayBufferedVoiceChats +import CG_VoiceChatLocal +import CG_ShaderStateChanged +import CG_LoadVoiceChats +import CG_SetConfigValues +import CG_ParseServerinfo +import CG_ExecuteNewServerCommands +import CG_InitConsoleCommands +import CG_ConsoleCommand +import CG_DrawOldTourneyScoreboard +import CG_DrawOldScoreboard +import CG_DrawInformation +import CG_LoadingClient +import CG_LoadingItem +import CG_LoadingString +import CG_ProcessSnapshots +import CG_InitGlass +import CG_TestLine +import CG_SurfaceExplosion +import CG_MakeExplosion +import CG_Bleed +import CG_BigExplode +import CG_GibPlayer +import CG_ScorePlum +import CG_CreateDebris +import CG_GlassShatter +import CG_BubbleTrail +import CG_SmokePuff +import CG_AddLocalEntities +import CG_AllocLocalEntity +import CG_InitLocalEntities +import CG_ImpactMark +import CG_AddMarks +import CG_InitMarkPolys +import CG_OutOfAmmoChange +import CG_DrawIconBackground +import CG_DrawWeaponSelect +import CG_AddPlayerWeapon +import CG_AddViewWeapon +import CG_MissileHitPlayer +import CG_MissileHitWall +import CG_FireWeapon +import CG_RegisterItemVisuals +import CG_RegisterWeapon +import CG_Weapon_f +import CG_PrevWeapon_f +import CG_NextWeapon_f +import CG_GetClientWeaponMuzzleBoltPoint +import TurretClientRun +import ScaleModelAxis +import CG_PositionRotatedEntityOnTag +import CG_PositionEntityOnTag +import CG_AdjustPositionForMover +import CG_Beam +import CG_ManualEntityRender +import CG_AddPacketEntities +import CG_SetEntitySoundPosition +import CG_ReattachLimb +import CG_PainEvent +import CG_EntityEvent +import CG_PlaceString +import CG_CheckEvents +import CG_LoadDeferredPlayers +import CG_PredictPlayerState +import CG_Trace +import CG_PointContents +import CG_BuildSolidList +import CG_PlayerShieldHit +import CG_CustomSound +import CG_NewClientInfo +import CG_AddRefEntityWithPowerups +import CG_ResetPlayerEntity +import CG_Player +import CG_StatusHandle +import CG_OtherTeamHasFlag +import CG_YourTeamHasFlag +import CG_GameTypeString +import CG_CheckOrderPending +import CG_Text_PaintChar +import CG_Draw3DModel +import CG_GetKillerText +import CG_GetGameStatusText +import CG_GetTeamColor +import CG_InitTeamChat +import CG_SetPrintString +import CG_ShowResponseHead +import CG_DeferMenuScript +import CG_RunMenuScript +import CG_OwnerDrawVisible +import CG_GetValue +import CG_SelectNextPlayer +import CG_SelectPrevPlayer +import CG_Text_Height +import CG_Text_Width +import CG_Text_Paint +import CG_OwnerDraw +import CG_DrawTeamBackground +import CG_DrawFlagModel +import CG_DrawActive +import CG_DrawHead +import CG_CenterPrint +import CG_AddLagometerSnapshotInfo +import CG_AddLagometerFrameInfo +import teamChat2 +import teamChat1 +import systemChat +import drawTeamOverlayModificationCount +import numSortedTeamPlayers +import sortedTeamPlayers +import CG_DrawTopBottom +import CG_DrawSides +import CG_DrawRect +import UI_DrawScaledProportionalString +import UI_DrawProportionalString +import CG_GetColorForHealth +import CG_ColorForHealth +import CG_TileClear +import CG_TeamColor +import CG_FadeColor +import CG_DrawStrlen +import CG_DrawSmallStringColor +import CG_DrawSmallString +import CG_DrawBigStringColor +import CG_DrawBigString +import CG_DrawStringExt +import CG_DrawNumField +import CG_DrawString +import CG_DrawRotatePic2 +import CG_DrawRotatePic +import CG_DrawPic +import CG_FillRect +import CG_TestModelAnimate_f +import CG_TestModelSetAnglespost_f +import CG_TestModelSetAnglespre_f +import CG_ListModelBones_f +import CG_ListModelSurfaces_f +import CG_TestModelSurfaceOnOff_f +import CG_TestG2Model_f +import CG_DrawActiveFrame +import CG_AddBufferedSound +import CG_ZoomUp_f +import CG_ZoomDown_f +import CG_TestModelPrevSkin_f +import CG_TestModelNextSkin_f +import CG_TestModelPrevFrame_f +import CG_TestModelNextFrame_f +import CG_TestGun_f +import CG_TestModel_f +import CG_PrevForcePower_f +import CG_NextForcePower_f +import CG_PrevInventory_f +import CG_NextInventory_f +import CG_BuildSpectatorString +import CG_SetScoreSelection +import CG_RankRunFrame +import CG_EventHandling +import CG_MouseEvent +import CG_KeyEvent +import CG_LoadMenus +import CG_LastAttacker +import CG_CrosshairPlayer +import CG_UpdateCvars +import CG_StartMusic +import CG_Error +import CG_Printf +import CG_Argv +import CG_ConfigString +import cg_debugBB +import ui_myteam +import cg_recordSPDemoName +import cg_recordSPDemo +import cg_singlePlayerActive +import cg_enableBreath +import cg_enableDust +import cg_singlePlayer +import cg_currentSelectedPlayerName +import cg_currentSelectedPlayer +import cg_blueTeamName +import cg_redTeamName +import cg_trueLightning +import cg_noProjectileTrail +import cg_noTaunt +import cg_bigFont +import cg_smallFont +import cg_cameraMode +import cg_timescale +import cg_timescaleFadeSpeed +import cg_timescaleFadeEnd +import cg_cameraOrbitDelay +import cg_cameraOrbit +import pmove_msec +import pmove_fixed +import cg_smoothClients +import cg_hudFiles +import cg_scorePlum +import cg_noVoiceText +import cg_noVoiceChats +import cg_teamChatsOnly +import cg_drawFriend +import cg_deferPlayers +import cg_predictItems +import cg_blood +import cg_paused +import cg_buildScript +import cg_forceModel +import cg_stats +import cg_teamChatHeight +import cg_teamChatTime +import cg_synchronousClients +import cg_drawEnemyInfo +import cg_lagometer +import cg_stereoSeparation +import cg_thirdPersonHorzOffset +import cg_thirdPersonAlpha +import cg_thirdPersonTargetDamp +import cg_thirdPersonCameraDamp +import cg_thirdPersonVertOffset +import cg_thirdPersonPitchOffset +import cg_thirdPersonAngle +import cg_thirdPersonRange +import cg_thirdPerson +import cg_dismember +import cg_animBlend +import cg_auraShell +import cg_speedTrail +import cg_saberTrail +import cg_saberContact +import cg_swingAngles +import cg_zoomFov +import cg_fov +import cg_simpleItems +import cg_ignore +import cg_autoswitch +import cg_tracerLength +import cg_tracerWidth +import cg_tracerChance +import cg_viewsize +import cg_drawGun +import cg_gun_z +import cg_gun_y +import cg_gun_x +import cg_gun_frame +import cg_addMarks +import cg_footsteps +import cg_showmiss +import cg_noPlayerAnims +import cg_nopredict +import cg_errorDecay +import cg_debugEvents +import cg_debugPosition +import cg_debugAnim +import cg_animSpeed +import cg_draw2D +import cg_drawStatus +import cg_crosshairHealth +import cg_crosshairSize +import cg_crosshairY +import cg_crosshairX +import cg_teamOverlayUserinfo +import cg_drawTeamOverlay +import cg_drawRewards +import cg_dynamicCrosshair +import cg_drawScores +import cg_drawCrosshairNames +import cg_drawCrosshair +import cg_drawAmmoWarning +import cg_drawIcons +import cg_draw3dIcons +import cg_drawSnapshot +import cg_drawFPS +import cg_drawTimer +import cg_gibs +import cg_shadows +import cg_bobroll +import cg_bobpitch +import cg_bobup +import cg_runroll +import cg_runpitch +import cg_centertime +import cg_markPolys +import cg_items +import cg_weapons +import cg_entities +import cg +import cgs +import CGCam_SetMusicMult +import CGCam_Shake +import cgScreenEffects +import ammoTicPos +import forceTicPos +import BG_ParseAnimationFile +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import saberMoveData +import Pmove +import PM_UpdateViewAngles +import pm +import bgGlobalAnimations +import BGPAFtextLoaded +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $875 +char 1 66 +char 1 71 +char 1 95 +char 1 84 +char 1 101 +char 1 109 +char 1 112 +char 1 70 +char 1 114 +char 1 101 +char 1 101 +char 1 58 +char 1 32 +char 1 116 +char 1 97 +char 1 105 +char 1 108 +char 1 32 +char 1 103 +char 1 114 +char 1 101 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 32 +char 1 116 +char 1 104 +char 1 97 +char 1 110 +char 1 32 +char 1 115 +char 1 105 +char 1 122 +char 1 101 +char 1 32 +char 1 40 +char 1 37 +char 1 100 +char 1 32 +char 1 62 +char 1 32 +char 1 37 +char 1 100 +char 1 41 +char 1 0 +align 1 +LABELV $871 +char 1 66 +char 1 71 +char 1 95 +char 1 84 +char 1 101 +char 1 109 +char 1 112 +char 1 65 +char 1 108 +char 1 108 +char 1 111 +char 1 99 +char 1 58 +char 1 32 +char 1 98 +char 1 117 +char 1 102 +char 1 102 +char 1 101 +char 1 114 +char 1 32 +char 1 101 +char 1 120 +char 1 99 +char 1 101 +char 1 101 +char 1 100 +char 1 101 +char 1 100 +char 1 32 +char 1 104 +char 1 101 +char 1 97 +char 1 100 +char 1 32 +char 1 40 +char 1 37 +char 1 100 +char 1 32 +char 1 62 +char 1 32 +char 1 37 +char 1 100 +char 1 41 +char 1 0 +align 1 +LABELV $867 +char 1 66 +char 1 71 +char 1 95 +char 1 65 +char 1 108 +char 1 108 +char 1 111 +char 1 99 +char 1 85 +char 1 110 +char 1 97 +char 1 108 +char 1 105 +char 1 103 +char 1 110 +char 1 101 +char 1 100 +char 1 58 +char 1 32 +char 1 98 +char 1 117 +char 1 102 +char 1 102 +char 1 101 +char 1 114 +char 1 32 +char 1 101 +char 1 120 +char 1 99 +char 1 101 +char 1 101 +char 1 100 +char 1 101 +char 1 100 +char 1 32 +char 1 116 +char 1 97 +char 1 105 +char 1 108 +char 1 32 +char 1 40 +char 1 37 +char 1 100 +char 1 32 +char 1 62 +char 1 32 +char 1 37 +char 1 100 +char 1 41 +char 1 0 +align 1 +LABELV $863 +char 1 66 +char 1 71 +char 1 95 +char 1 65 +char 1 108 +char 1 108 +char 1 111 +char 1 99 +char 1 58 +char 1 32 +char 1 98 +char 1 117 +char 1 102 +char 1 102 +char 1 101 +char 1 114 +char 1 32 +char 1 101 +char 1 120 +char 1 99 +char 1 101 +char 1 101 +char 1 100 +char 1 101 +char 1 100 +char 1 32 +char 1 116 +char 1 97 +char 1 105 +char 1 108 +char 1 32 +char 1 40 +char 1 37 +char 1 100 +char 1 32 +char 1 62 +char 1 32 +char 1 37 +char 1 100 +char 1 41 +char 1 0 +align 1 +LABELV $735 +char 1 69 +char 1 86 +char 1 95 +char 1 66 +char 1 79 +char 1 68 +char 1 89 +char 1 95 +char 1 81 +char 1 85 +char 1 69 +char 1 85 +char 1 69 +char 1 95 +char 1 67 +char 1 79 +char 1 80 +char 1 89 +char 1 0 +align 1 +LABELV $734 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 95 +char 1 80 +char 1 65 +char 1 84 +char 1 82 +char 1 79 +char 1 76 +char 1 0 +align 1 +LABELV $733 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 95 +char 1 71 +char 1 85 +char 1 65 +char 1 82 +char 1 68 +char 1 66 +char 1 65 +char 1 83 +char 1 69 +char 1 0 +align 1 +LABELV $732 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 70 +char 1 76 +char 1 65 +char 1 71 +char 1 0 +align 1 +LABELV $731 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 95 +char 1 70 +char 1 79 +char 1 76 +char 1 76 +char 1 79 +char 1 87 +char 1 77 +char 1 69 +char 1 0 +align 1 +LABELV $730 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 95 +char 1 78 +char 1 79 +char 1 0 +align 1 +LABELV $729 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 95 +char 1 89 +char 1 69 +char 1 83 +char 1 0 +align 1 +LABELV $728 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 0 +align 1 +LABELV $727 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 73 +char 1 78 +char 1 71 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $726 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 73 +char 1 78 +char 1 71 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $725 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 69 +char 1 83 +char 1 84 +char 1 76 +char 1 73 +char 1 78 +char 1 69 +char 1 0 +align 1 +LABELV $724 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 69 +char 1 66 +char 1 85 +char 1 71 +char 1 95 +char 1 76 +char 1 73 +char 1 78 +char 1 69 +char 1 0 +align 1 +LABELV $723 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 72 +char 1 73 +char 1 69 +char 1 76 +char 1 68 +char 1 95 +char 1 72 +char 1 73 +char 1 84 +char 1 0 +align 1 +LABELV $722 +char 1 69 +char 1 86 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 95 +char 1 67 +char 1 72 +char 1 65 +char 1 82 +char 1 71 +char 1 69 +char 1 95 +char 1 65 +char 1 76 +char 1 84 +char 1 0 +align 1 +LABELV $721 +char 1 69 +char 1 86 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 95 +char 1 67 +char 1 72 +char 1 65 +char 1 82 +char 1 71 +char 1 69 +char 1 0 +align 1 +LABELV $720 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 69 +char 1 84 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 65 +char 1 66 +char 1 76 +char 1 69 +char 1 0 +align 1 +LABELV $719 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 69 +char 1 84 +char 1 95 +char 1 70 +char 1 82 +char 1 69 +char 1 69 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $718 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 73 +char 1 86 +char 1 69 +char 1 95 +char 1 78 +char 1 69 +char 1 87 +char 1 95 +char 1 82 +char 1 65 +char 1 78 +char 1 75 +char 1 0 +align 1 +LABELV $717 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 69 +char 1 83 +char 1 84 +char 1 82 +char 1 79 +char 1 89 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 95 +char 1 77 +char 1 79 +char 1 68 +char 1 69 +char 1 76 +char 1 0 +align 1 +LABELV $716 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 69 +char 1 83 +char 1 84 +char 1 82 +char 1 79 +char 1 89 +char 1 95 +char 1 71 +char 1 72 +char 1 79 +char 1 85 +char 1 76 +char 1 50 +char 1 95 +char 1 73 +char 1 78 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 67 +char 1 69 +char 1 0 +align 1 +LABELV $715 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 65 +char 1 71 +char 1 65 +char 1 95 +char 1 79 +char 1 66 +char 1 74 +char 1 69 +char 1 67 +char 1 84 +char 1 73 +char 1 86 +char 1 69 +char 1 67 +char 1 79 +char 1 77 +char 1 80 +char 1 76 +char 1 69 +char 1 84 +char 1 69 +char 1 0 +align 1 +LABELV $714 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 65 +char 1 71 +char 1 65 +char 1 95 +char 1 82 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 79 +char 1 86 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $713 +char 1 69 +char 1 86 +char 1 95 +char 1 67 +char 1 84 +char 1 70 +char 1 77 +char 1 69 +char 1 83 +char 1 83 +char 1 65 +char 1 71 +char 1 69 +char 1 0 +align 1 +LABELV $712 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 67 +char 1 79 +char 1 82 +char 1 69 +char 1 80 +char 1 76 +char 1 85 +char 1 77 +char 1 0 +align 1 +LABELV $711 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 73 +char 1 66 +char 1 95 +char 1 80 +char 1 76 +char 1 65 +char 1 89 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $710 +char 1 69 +char 1 86 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 68 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 68 +char 1 0 +align 1 +LABELV $709 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 79 +char 1 87 +char 1 69 +char 1 82 +char 1 85 +char 1 80 +char 1 95 +char 1 66 +char 1 65 +char 1 84 +char 1 84 +char 1 76 +char 1 69 +char 1 83 +char 1 85 +char 1 73 +char 1 84 +char 1 0 +align 1 +LABELV $708 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 79 +char 1 87 +char 1 69 +char 1 82 +char 1 85 +char 1 80 +char 1 95 +char 1 81 +char 1 85 +char 1 65 +char 1 68 +char 1 0 +align 1 +LABELV $707 +char 1 69 +char 1 86 +char 1 95 +char 1 79 +char 1 66 +char 1 73 +char 1 84 +char 1 85 +char 1 65 +char 1 82 +char 1 89 +char 1 0 +align 1 +LABELV $706 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 51 +char 1 0 +align 1 +LABELV $705 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 50 +char 1 0 +align 1 +LABELV $704 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 0 +align 1 +LABELV $703 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 0 +align 1 +LABELV $702 +char 1 69 +char 1 86 +char 1 95 +char 1 66 +char 1 85 +char 1 76 +char 1 76 +char 1 69 +char 1 84 +char 1 0 +align 1 +LABELV $701 +char 1 69 +char 1 86 +char 1 95 +char 1 77 +char 1 73 +char 1 83 +char 1 83 +char 1 73 +char 1 76 +char 1 69 +char 1 95 +char 1 77 +char 1 73 +char 1 83 +char 1 83 +char 1 95 +char 1 77 +char 1 69 +char 1 84 +char 1 65 +char 1 76 +char 1 0 +align 1 +LABELV $700 +char 1 69 +char 1 86 +char 1 95 +char 1 77 +char 1 73 +char 1 83 +char 1 83 +char 1 73 +char 1 76 +char 1 69 +char 1 95 +char 1 77 +char 1 73 +char 1 83 +char 1 83 +char 1 0 +align 1 +LABELV $699 +char 1 69 +char 1 86 +char 1 95 +char 1 77 +char 1 73 +char 1 83 +char 1 83 +char 1 73 +char 1 76 +char 1 69 +char 1 95 +char 1 72 +char 1 73 +char 1 84 +char 1 0 +align 1 +LABELV $698 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 69 +char 1 66 +char 1 82 +char 1 73 +char 1 83 +char 1 0 +align 1 +LABELV $697 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 76 +char 1 65 +char 1 83 +char 1 83 +char 1 95 +char 1 83 +char 1 72 +char 1 65 +char 1 84 +char 1 84 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $696 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 76 +char 1 65 +char 1 89 +char 1 95 +char 1 82 +char 1 79 +char 1 70 +char 1 70 +char 1 0 +align 1 +LABELV $695 +char 1 69 +char 1 86 +char 1 95 +char 1 69 +char 1 78 +char 1 84 +char 1 73 +char 1 84 +char 1 89 +char 1 95 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $694 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 76 +char 1 79 +char 1 66 +char 1 65 +char 1 76 +char 1 95 +char 1 84 +char 1 69 +char 1 65 +char 1 77 +char 1 95 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $693 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 76 +char 1 79 +char 1 66 +char 1 65 +char 1 76 +char 1 95 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $692 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 69 +char 1 78 +char 1 69 +char 1 82 +char 1 65 +char 1 76 +char 1 95 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $691 +char 1 69 +char 1 86 +char 1 95 +char 1 77 +char 1 85 +char 1 84 +char 1 69 +char 1 95 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $690 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 76 +char 1 65 +char 1 89 +char 1 95 +char 1 69 +char 1 70 +char 1 70 +char 1 69 +char 1 67 +char 1 84 +char 1 95 +char 1 73 +char 1 68 +char 1 0 +align 1 +LABELV $689 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 76 +char 1 65 +char 1 89 +char 1 95 +char 1 69 +char 1 70 +char 1 70 +char 1 69 +char 1 67 +char 1 84 +char 1 0 +align 1 +LABELV $688 +char 1 69 +char 1 86 +char 1 95 +char 1 77 +char 1 73 +char 1 83 +char 1 83 +char 1 73 +char 1 76 +char 1 69 +char 1 95 +char 1 83 +char 1 84 +char 1 73 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $687 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 82 +char 1 69 +char 1 78 +char 1 65 +char 1 68 +char 1 69 +char 1 95 +char 1 66 +char 1 79 +char 1 85 +char 1 78 +char 1 67 +char 1 69 +char 1 0 +align 1 +LABELV $686 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 76 +char 1 65 +char 1 89 +char 1 69 +char 1 82 +char 1 95 +char 1 84 +char 1 69 +char 1 76 +char 1 69 +char 1 80 +char 1 79 +char 1 82 +char 1 84 +char 1 95 +char 1 79 +char 1 85 +char 1 84 +char 1 0 +align 1 +LABELV $685 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 76 +char 1 65 +char 1 89 +char 1 69 +char 1 82 +char 1 95 +char 1 84 +char 1 69 +char 1 76 +char 1 69 +char 1 80 +char 1 79 +char 1 82 +char 1 84 +char 1 95 +char 1 73 +char 1 78 +char 1 0 +align 1 +LABELV $684 +char 1 69 +char 1 86 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 95 +char 1 80 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $683 +char 1 69 +char 1 86 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 95 +char 1 82 +char 1 69 +char 1 83 +char 1 80 +char 1 65 +char 1 87 +char 1 78 +char 1 0 +align 1 +LABELV $682 +char 1 69 +char 1 86 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 85 +char 1 83 +char 1 69 +char 1 70 +char 1 65 +char 1 73 +char 1 76 +char 1 0 +align 1 +LABELV $681 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 49 +char 1 53 +char 1 0 +align 1 +LABELV $680 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 49 +char 1 52 +char 1 0 +align 1 +LABELV $679 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 49 +char 1 51 +char 1 0 +align 1 +LABELV $678 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $677 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 49 +char 1 49 +char 1 0 +align 1 +LABELV $676 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $675 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 57 +char 1 0 +align 1 +LABELV $674 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 56 +char 1 0 +align 1 +LABELV $673 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 55 +char 1 0 +align 1 +LABELV $672 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 54 +char 1 0 +align 1 +LABELV $671 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 53 +char 1 0 +align 1 +LABELV $670 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 52 +char 1 0 +align 1 +LABELV $669 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 51 +char 1 0 +align 1 +LABELV $668 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 50 +char 1 0 +align 1 +LABELV $667 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 49 +char 1 0 +align 1 +LABELV $666 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 48 +char 1 0 +align 1 +LABELV $665 +char 1 69 +char 1 86 +char 1 95 +char 1 85 +char 1 83 +char 1 69 +char 1 0 +align 1 +LABELV $664 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 67 +char 1 82 +char 1 69 +char 1 69 +char 1 78 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 0 +align 1 +LABELV $663 +char 1 69 +char 1 86 +char 1 95 +char 1 84 +char 1 69 +char 1 65 +char 1 77 +char 1 95 +char 1 80 +char 1 79 +char 1 87 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $662 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 82 +char 1 69 +char 1 68 +char 1 69 +char 1 70 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $661 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 82 +char 1 85 +char 1 80 +char 1 84 +char 1 79 +char 1 82 +char 1 95 +char 1 90 +char 1 79 +char 1 79 +char 1 77 +char 1 83 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $660 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 82 +char 1 85 +char 1 80 +char 1 84 +char 1 79 +char 1 82 +char 1 95 +char 1 72 +char 1 73 +char 1 84 +char 1 0 +align 1 +LABELV $659 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 82 +char 1 85 +char 1 80 +char 1 84 +char 1 79 +char 1 82 +char 1 95 +char 1 83 +char 1 78 +char 1 73 +char 1 80 +char 1 69 +char 1 82 +char 1 95 +char 1 77 +char 1 73 +char 1 83 +char 1 83 +char 1 0 +align 1 +LABELV $658 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 82 +char 1 85 +char 1 80 +char 1 84 +char 1 79 +char 1 82 +char 1 95 +char 1 83 +char 1 78 +char 1 73 +char 1 80 +char 1 69 +char 1 82 +char 1 95 +char 1 83 +char 1 72 +char 1 79 +char 1 84 +char 1 0 +align 1 +LABELV $657 +char 1 69 +char 1 86 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 82 +char 1 85 +char 1 80 +char 1 84 +char 1 79 +char 1 82 +char 1 95 +char 1 77 +char 1 65 +char 1 73 +char 1 78 +char 1 95 +char 1 83 +char 1 72 +char 1 79 +char 1 84 +char 1 0 +align 1 +LABELV $656 +char 1 69 +char 1 86 +char 1 95 +char 1 66 +char 1 69 +char 1 67 +char 1 79 +char 1 77 +char 1 69 +char 1 95 +char 1 74 +char 1 69 +char 1 68 +char 1 73 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $655 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 85 +char 1 78 +char 1 72 +char 1 79 +char 1 76 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $654 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 79 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $653 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 72 +char 1 73 +char 1 84 +char 1 0 +align 1 +LABELV $652 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $651 +char 1 69 +char 1 86 +char 1 95 +char 1 65 +char 1 76 +char 1 84 +char 1 95 +char 1 70 +char 1 73 +char 1 82 +char 1 69 +char 1 0 +align 1 +LABELV $650 +char 1 69 +char 1 86 +char 1 95 +char 1 70 +char 1 73 +char 1 82 +char 1 69 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 0 +align 1 +LABELV $649 +char 1 69 +char 1 86 +char 1 95 +char 1 67 +char 1 72 +char 1 65 +char 1 78 +char 1 71 +char 1 69 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 0 +align 1 +LABELV $648 +char 1 69 +char 1 86 +char 1 95 +char 1 78 +char 1 79 +char 1 65 +char 1 77 +char 1 77 +char 1 79 +char 1 0 +align 1 +LABELV $647 +char 1 69 +char 1 86 +char 1 95 +char 1 71 +char 1 76 +char 1 79 +char 1 66 +char 1 65 +char 1 76 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 95 +char 1 80 +char 1 73 +char 1 67 +char 1 75 +char 1 85 +char 1 80 +char 1 0 +align 1 +LABELV $646 +char 1 69 +char 1 86 +char 1 95 +char 1 73 +char 1 84 +char 1 69 +char 1 77 +char 1 95 +char 1 80 +char 1 73 +char 1 67 +char 1 75 +char 1 85 +char 1 80 +char 1 0 +align 1 +LABELV $645 +char 1 69 +char 1 86 +char 1 95 +char 1 87 +char 1 65 +char 1 84 +char 1 69 +char 1 82 +char 1 95 +char 1 67 +char 1 76 +char 1 69 +char 1 65 +char 1 82 +char 1 0 +align 1 +LABELV $644 +char 1 69 +char 1 86 +char 1 95 +char 1 87 +char 1 65 +char 1 84 +char 1 69 +char 1 82 +char 1 95 +char 1 85 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $643 +char 1 69 +char 1 86 +char 1 95 +char 1 87 +char 1 65 +char 1 84 +char 1 69 +char 1 82 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 86 +char 1 69 +char 1 0 +align 1 +LABELV $642 +char 1 69 +char 1 86 +char 1 95 +char 1 87 +char 1 65 +char 1 84 +char 1 69 +char 1 82 +char 1 95 +char 1 84 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 0 +align 1 +LABELV $641 +char 1 69 +char 1 86 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $640 +char 1 69 +char 1 86 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 0 +align 1 +LABELV $639 +char 1 69 +char 1 86 +char 1 95 +char 1 80 +char 1 82 +char 1 73 +char 1 86 +char 1 65 +char 1 84 +char 1 69 +char 1 95 +char 1 68 +char 1 85 +char 1 69 +char 1 76 +char 1 0 +align 1 +LABELV $638 +char 1 69 +char 1 86 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 95 +char 1 80 +char 1 65 +char 1 68 +char 1 0 +align 1 +LABELV $637 +char 1 69 +char 1 86 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $636 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 84 +char 1 69 +char 1 80 +char 1 95 +char 1 49 +char 1 54 +char 1 0 +align 1 +LABELV $635 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 84 +char 1 69 +char 1 80 +char 1 95 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $634 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 84 +char 1 69 +char 1 80 +char 1 95 +char 1 56 +char 1 0 +align 1 +LABELV $633 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 84 +char 1 69 +char 1 80 +char 1 95 +char 1 52 +char 1 0 +align 1 +LABELV $632 +char 1 69 +char 1 86 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 0 +align 1 +LABELV $631 +char 1 69 +char 1 86 +char 1 95 +char 1 70 +char 1 79 +char 1 79 +char 1 84 +char 1 87 +char 1 65 +char 1 68 +char 1 69 +char 1 0 +align 1 +LABELV $630 +char 1 69 +char 1 86 +char 1 95 +char 1 70 +char 1 79 +char 1 79 +char 1 84 +char 1 83 +char 1 80 +char 1 76 +char 1 65 +char 1 83 +char 1 72 +char 1 0 +align 1 +LABELV $629 +char 1 69 +char 1 86 +char 1 95 +char 1 70 +char 1 79 +char 1 79 +char 1 84 +char 1 83 +char 1 84 +char 1 69 +char 1 80 +char 1 95 +char 1 77 +char 1 69 +char 1 84 +char 1 65 +char 1 76 +char 1 0 +align 1 +LABELV $628 +char 1 69 +char 1 86 +char 1 95 +char 1 70 +char 1 79 +char 1 79 +char 1 84 +char 1 83 +char 1 84 +char 1 69 +char 1 80 +char 1 0 +align 1 +LABELV $627 +char 1 69 +char 1 86 +char 1 95 +char 1 67 +char 1 76 +char 1 73 +char 1 69 +char 1 78 +char 1 84 +char 1 74 +char 1 79 +char 1 73 +char 1 78 +char 1 0 +align 1 +LABELV $626 +char 1 69 +char 1 86 +char 1 95 +char 1 78 +char 1 79 +char 1 78 +char 1 69 +char 1 0 +align 1 +LABELV $624 +char 1 66 +char 1 71 +char 1 95 +char 1 69 +char 1 118 +char 1 97 +char 1 108 +char 1 117 +char 1 97 +char 1 116 +char 1 101 +char 1 84 +char 1 114 +char 1 97 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 111 +char 1 114 +char 1 121 +char 1 68 +char 1 101 +char 1 108 +char 1 116 +char 1 97 +char 1 58 +char 1 32 +char 1 117 +char 1 110 +char 1 107 +char 1 110 +char 1 111 +char 1 119 +char 1 110 +char 1 32 +char 1 116 +char 1 114 +char 1 84 +char 1 121 +char 1 112 +char 1 101 +char 1 58 +char 1 32 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $611 +char 1 66 +char 1 71 +char 1 95 +char 1 69 +char 1 118 +char 1 97 +char 1 108 +char 1 117 +char 1 97 +char 1 116 +char 1 101 +char 1 84 +char 1 114 +char 1 97 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 111 +char 1 114 +char 1 121 +char 1 58 +char 1 32 +char 1 91 +char 1 67 +char 1 76 +char 1 73 +char 1 69 +char 1 78 +char 1 84 +char 1 71 +char 1 65 +char 1 77 +char 1 69 +char 1 32 +char 1 83 +char 1 73 +char 1 68 +char 1 69 +char 1 93 +char 1 32 +char 1 117 +char 1 110 +char 1 107 +char 1 110 +char 1 111 +char 1 119 +char 1 110 +char 1 32 +char 1 116 +char 1 114 +char 1 84 +char 1 121 +char 1 112 +char 1 101 +char 1 58 +char 1 32 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $596 +char 1 66 +char 1 71 +char 1 95 +char 1 67 +char 1 97 +char 1 110 +char 1 73 +char 1 116 +char 1 101 +char 1 109 +char 1 66 +char 1 101 +char 1 71 +char 1 114 +char 1 97 +char 1 98 +char 1 98 +char 1 101 +char 1 100 +char 1 58 +char 1 32 +char 1 73 +char 1 84 +char 1 95 +char 1 66 +char 1 65 +char 1 68 +char 1 0 +align 1 +LABELV $539 +char 1 66 +char 1 71 +char 1 95 +char 1 67 +char 1 97 +char 1 110 +char 1 73 +char 1 116 +char 1 101 +char 1 109 +char 1 66 +char 1 101 +char 1 71 +char 1 114 +char 1 97 +char 1 98 +char 1 98 +char 1 101 +char 1 100 +char 1 58 +char 1 32 +char 1 105 +char 1 110 +char 1 100 +char 1 101 +char 1 120 +char 1 32 +char 1 111 +char 1 117 +char 1 116 +char 1 32 +char 1 111 +char 1 102 +char 1 32 +char 1 114 +char 1 97 +char 1 110 +char 1 103 +char 1 101 +char 1 0 +align 1 +LABELV $456 +char 1 67 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 110 +char 1 39 +char 1 116 +char 1 32 +char 1 102 +char 1 105 +char 1 110 +char 1 100 +char 1 32 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 32 +char 1 102 +char 1 111 +char 1 114 +char 1 32 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 32 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $447 +char 1 72 +char 1 111 +char 1 108 +char 1 100 +char 1 97 +char 1 98 +char 1 108 +char 1 101 +char 1 73 +char 1 116 +char 1 101 +char 1 109 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 102 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 0 +align 1 +LABELV $394 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 104 +char 1 95 +char 1 98 +char 1 111 +char 1 114 +char 1 98 +char 1 0 +align 1 +LABELV $393 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 112 +char 1 111 +char 1 119 +char 1 101 +char 1 114 +char 1 117 +char 1 112 +char 1 115 +char 1 47 +char 1 111 +char 1 114 +char 1 98 +char 1 47 +char 1 98 +char 1 95 +char 1 111 +char 1 114 +char 1 98 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $392 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 98 +char 1 108 +char 1 117 +char 1 101 +char 1 99 +char 1 117 +char 1 98 +char 1 101 +char 1 0 +align 1 +LABELV $391 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 104 +char 1 95 +char 1 114 +char 1 111 +char 1 114 +char 1 98 +char 1 0 +align 1 +LABELV $390 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 112 +char 1 111 +char 1 119 +char 1 101 +char 1 114 +char 1 117 +char 1 112 +char 1 115 +char 1 47 +char 1 111 +char 1 114 +char 1 98 +char 1 47 +char 1 114 +char 1 95 +char 1 111 +char 1 114 +char 1 98 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $389 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 114 +char 1 101 +char 1 100 +char 1 99 +char 1 117 +char 1 98 +char 1 101 +char 1 0 +align 1 +LABELV $388 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 102 +char 1 95 +char 1 110 +char 1 101 +char 1 117 +char 1 116 +char 1 114 +char 1 97 +char 1 108 +char 1 49 +char 1 0 +align 1 +LABELV $387 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 47 +char 1 110 +char 1 95 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $386 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 95 +char 1 67 +char 1 84 +char 1 70 +char 1 95 +char 1 110 +char 1 101 +char 1 117 +char 1 116 +char 1 114 +char 1 97 +char 1 108 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 0 +align 1 +LABELV $385 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 109 +char 1 112 +char 1 105 +char 1 95 +char 1 98 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 0 +align 1 +LABELV $384 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 47 +char 1 98 +char 1 95 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 95 +char 1 121 +char 1 115 +char 1 97 +char 1 108 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $383 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 47 +char 1 98 +char 1 95 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $382 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 95 +char 1 67 +char 1 84 +char 1 70 +char 1 95 +char 1 98 +char 1 108 +char 1 117 +char 1 101 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 0 +align 1 +LABELV $381 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 109 +char 1 112 +char 1 105 +char 1 95 +char 1 114 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 0 +align 1 +LABELV $380 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 47 +char 1 114 +char 1 95 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 95 +char 1 121 +char 1 115 +char 1 97 +char 1 108 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $379 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 115 +char 1 47 +char 1 114 +char 1 95 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $378 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 95 +char 1 67 +char 1 84 +char 1 70 +char 1 95 +char 1 114 +char 1 101 +char 1 100 +char 1 102 +char 1 108 +char 1 97 +char 1 103 +char 1 0 +align 1 +LABELV $377 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 114 +char 1 111 +char 1 99 +char 1 107 +char 1 101 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $376 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 114 +char 1 111 +char 1 99 +char 1 107 +char 1 101 +char 1 116 +char 1 115 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $375 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 114 +char 1 111 +char 1 99 +char 1 107 +char 1 101 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $374 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 109 +char 1 101 +char 1 116 +char 1 97 +char 1 108 +char 1 108 +char 1 105 +char 1 99 +char 1 95 +char 1 98 +char 1 111 +char 1 108 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $373 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 109 +char 1 101 +char 1 116 +char 1 97 +char 1 108 +char 1 108 +char 1 105 +char 1 99 +char 1 95 +char 1 98 +char 1 111 +char 1 108 +char 1 116 +char 1 115 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $372 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 109 +char 1 101 +char 1 116 +char 1 97 +char 1 108 +char 1 108 +char 1 105 +char 1 99 +char 1 95 +char 1 98 +char 1 111 +char 1 108 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $371 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 112 +char 1 111 +char 1 119 +char 1 101 +char 1 114 +char 1 95 +char 1 99 +char 1 101 +char 1 108 +char 1 108 +char 1 0 +align 1 +LABELV $370 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 112 +char 1 111 +char 1 119 +char 1 101 +char 1 114 +char 1 95 +char 1 99 +char 1 101 +char 1 108 +char 1 108 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $369 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 112 +char 1 111 +char 1 119 +char 1 101 +char 1 114 +char 1 99 +char 1 101 +char 1 108 +char 1 108 +char 1 0 +align 1 +LABELV $368 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 105 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 98 +char 1 97 +char 1 116 +char 1 116 +char 1 101 +char 1 114 +char 1 121 +char 1 0 +align 1 +LABELV $367 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 98 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $366 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 101 +char 1 110 +char 1 101 +char 1 114 +char 1 103 +char 1 121 +char 1 95 +char 1 99 +char 1 101 +char 1 108 +char 1 108 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $365 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 112 +char 1 105 +char 1 99 +char 1 107 +char 1 117 +char 1 112 +char 1 101 +char 1 110 +char 1 101 +char 1 114 +char 1 103 +char 1 121 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $364 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 0 +align 1 +LABELV $363 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 116 +char 1 117 +char 1 114 +char 1 114 +char 1 101 +char 1 116 +char 1 119 +char 1 112 +char 1 0 +align 1 +LABELV $362 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 101 +char 1 109 +char 1 112 +char 1 108 +char 1 97 +char 1 99 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $361 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 100 +char 1 101 +char 1 116 +char 1 95 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 0 +align 1 +LABELV $360 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 116 +char 1 114 +char 1 105 +char 1 112 +char 1 95 +char 1 109 +char 1 105 +char 1 110 +char 1 101 +char 1 0 +align 1 +LABELV $359 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 0 +align 1 +LABELV $358 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 100 +char 1 101 +char 1 116 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 0 +align 1 +LABELV $357 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 95 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $356 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 95 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $355 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 95 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 95 +char 1 112 +char 1 114 +char 1 111 +char 1 106 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $354 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 95 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 95 +char 1 112 +char 1 117 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $353 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 100 +char 1 101 +char 1 116 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 0 +align 1 +LABELV $352 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 116 +char 1 114 +char 1 105 +char 1 112 +char 1 109 +char 1 105 +char 1 110 +char 1 101 +char 1 0 +align 1 +LABELV $351 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 108 +char 1 97 +char 1 115 +char 1 101 +char 1 114 +char 1 95 +char 1 116 +char 1 114 +char 1 97 +char 1 112 +char 1 47 +char 1 108 +char 1 97 +char 1 115 +char 1 101 +char 1 114 +char 1 95 +char 1 116 +char 1 114 +char 1 97 +char 1 112 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $350 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 108 +char 1 97 +char 1 115 +char 1 101 +char 1 114 +char 1 95 +char 1 116 +char 1 114 +char 1 97 +char 1 112 +char 1 47 +char 1 108 +char 1 97 +char 1 115 +char 1 101 +char 1 114 +char 1 95 +char 1 116 +char 1 114 +char 1 97 +char 1 112 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $349 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 108 +char 1 97 +char 1 115 +char 1 101 +char 1 114 +char 1 95 +char 1 116 +char 1 114 +char 1 97 +char 1 112 +char 1 47 +char 1 108 +char 1 97 +char 1 115 +char 1 101 +char 1 114 +char 1 95 +char 1 116 +char 1 114 +char 1 97 +char 1 112 +char 1 95 +char 1 112 +char 1 117 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $348 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 116 +char 1 114 +char 1 105 +char 1 112 +char 1 109 +char 1 105 +char 1 110 +char 1 101 +char 1 0 +align 1 +LABELV $347 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 0 +align 1 +LABELV $346 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 47 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $345 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 47 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $344 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 47 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 95 +char 1 112 +char 1 117 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $343 +char 1 97 +char 1 109 +char 1 109 +char 1 111 +char 1 95 +char 1 116 +char 1 104 +char 1 101 +char 1 114 +char 1 109 +char 1 97 +char 1 108 +char 1 0 +align 1 +LABELV $342 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 109 +char 1 101 +char 1 114 +char 1 114 +char 1 115 +char 1 111 +char 1 110 +char 1 110 +char 1 0 +align 1 +LABELV $341 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 109 +char 1 101 +char 1 114 +char 1 114 +char 1 95 +char 1 115 +char 1 111 +char 1 110 +char 1 110 +char 1 47 +char 1 109 +char 1 101 +char 1 114 +char 1 114 +char 1 95 +char 1 115 +char 1 111 +char 1 110 +char 1 110 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $340 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 109 +char 1 101 +char 1 114 +char 1 114 +char 1 95 +char 1 115 +char 1 111 +char 1 110 +char 1 110 +char 1 47 +char 1 109 +char 1 101 +char 1 114 +char 1 114 +char 1 95 +char 1 115 +char 1 111 +char 1 110 +char 1 110 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $339 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 114 +char 1 111 +char 1 99 +char 1 107 +char 1 101 +char 1 116 +char 1 95 +char 1 108 +char 1 97 +char 1 117 +char 1 110 +char 1 99 +char 1 104 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $338 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 104 +char 1 101 +char 1 116 +char 1 116 +char 1 101 +char 1 0 +align 1 +LABELV $337 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 103 +char 1 111 +char 1 108 +char 1 97 +char 1 110 +char 1 95 +char 1 97 +char 1 114 +char 1 109 +char 1 115 +char 1 47 +char 1 103 +char 1 111 +char 1 108 +char 1 97 +char 1 110 +char 1 95 +char 1 97 +char 1 114 +char 1 109 +char 1 115 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $336 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 103 +char 1 111 +char 1 108 +char 1 97 +char 1 110 +char 1 95 +char 1 97 +char 1 114 +char 1 109 +char 1 115 +char 1 47 +char 1 103 +char 1 111 +char 1 108 +char 1 97 +char 1 110 +char 1 95 +char 1 97 +char 1 114 +char 1 109 +char 1 115 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $335 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 104 +char 1 101 +char 1 116 +char 1 116 +char 1 101 +char 1 0 +align 1 +LABELV $334 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 100 +char 1 101 +char 1 109 +char 1 112 +char 1 50 +char 1 0 +align 1 +LABELV $333 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 109 +char 1 112 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 109 +char 1 112 +char 1 50 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $332 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 109 +char 1 112 +char 1 50 +char 1 47 +char 1 100 +char 1 101 +char 1 109 +char 1 112 +char 1 50 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $331 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 100 +char 1 101 +char 1 109 +char 1 112 +char 1 50 +char 1 0 +align 1 +LABELV $330 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 114 +char 1 101 +char 1 112 +char 1 101 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $329 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 104 +char 1 101 +char 1 97 +char 1 118 +char 1 121 +char 1 95 +char 1 114 +char 1 101 +char 1 112 +char 1 101 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 47 +char 1 104 +char 1 101 +char 1 97 +char 1 118 +char 1 121 +char 1 95 +char 1 114 +char 1 101 +char 1 112 +char 1 101 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $328 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 104 +char 1 101 +char 1 97 +char 1 118 +char 1 121 +char 1 95 +char 1 114 +char 1 101 +char 1 112 +char 1 101 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 47 +char 1 104 +char 1 101 +char 1 97 +char 1 118 +char 1 121 +char 1 95 +char 1 114 +char 1 101 +char 1 112 +char 1 101 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $327 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 114 +char 1 101 +char 1 112 +char 1 101 +char 1 97 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $326 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 98 +char 1 111 +char 1 119 +char 1 99 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $325 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 98 +char 1 111 +char 1 119 +char 1 99 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 47 +char 1 98 +char 1 111 +char 1 119 +char 1 99 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $324 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 98 +char 1 111 +char 1 119 +char 1 99 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 47 +char 1 98 +char 1 111 +char 1 119 +char 1 99 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $323 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 98 +char 1 111 +char 1 119 +char 1 99 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $322 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 100 +char 1 105 +char 1 115 +char 1 114 +char 1 117 +char 1 112 +char 1 116 +char 1 111 +char 1 114 +char 1 0 +align 1 +LABELV $321 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 105 +char 1 115 +char 1 114 +char 1 117 +char 1 112 +char 1 116 +char 1 111 +char 1 114 +char 1 47 +char 1 100 +char 1 105 +char 1 115 +char 1 114 +char 1 117 +char 1 112 +char 1 116 +char 1 111 +char 1 114 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $320 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 100 +char 1 105 +char 1 115 +char 1 114 +char 1 117 +char 1 112 +char 1 116 +char 1 111 +char 1 114 +char 1 47 +char 1 100 +char 1 105 +char 1 115 +char 1 114 +char 1 117 +char 1 112 +char 1 116 +char 1 111 +char 1 114 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $319 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 100 +char 1 105 +char 1 115 +char 1 114 +char 1 117 +char 1 112 +char 1 116 +char 1 111 +char 1 114 +char 1 0 +align 1 +LABELV $318 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 98 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $317 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 98 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 95 +char 1 114 +char 1 47 +char 1 98 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $316 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 98 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 95 +char 1 114 +char 1 47 +char 1 98 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $315 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 98 +char 1 108 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $314 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 114 +char 1 105 +char 1 102 +char 1 108 +char 1 101 +char 1 0 +align 1 +LABELV $313 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 98 +char 1 114 +char 1 105 +char 1 97 +char 1 114 +char 1 95 +char 1 112 +char 1 105 +char 1 115 +char 1 116 +char 1 111 +char 1 108 +char 1 47 +char 1 98 +char 1 114 +char 1 105 +char 1 97 +char 1 114 +char 1 95 +char 1 112 +char 1 105 +char 1 115 +char 1 116 +char 1 111 +char 1 108 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $312 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 98 +char 1 114 +char 1 105 +char 1 97 +char 1 114 +char 1 95 +char 1 112 +char 1 105 +char 1 115 +char 1 116 +char 1 111 +char 1 108 +char 1 47 +char 1 98 +char 1 114 +char 1 105 +char 1 97 +char 1 114 +char 1 95 +char 1 112 +char 1 105 +char 1 115 +char 1 116 +char 1 111 +char 1 108 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $311 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 98 +char 1 114 +char 1 121 +char 1 97 +char 1 114 +char 1 95 +char 1 112 +char 1 105 +char 1 115 +char 1 116 +char 1 111 +char 1 108 +char 1 0 +align 1 +LABELV $310 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $309 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 95 +char 1 119 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $308 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $307 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $306 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 119 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 115 +char 1 116 +char 1 117 +char 1 110 +char 1 98 +char 1 97 +char 1 116 +char 1 111 +char 1 110 +char 1 0 +align 1 +LABELV $305 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 115 +char 1 116 +char 1 117 +char 1 110 +char 1 95 +char 1 98 +char 1 97 +char 1 116 +char 1 111 +char 1 110 +char 1 47 +char 1 98 +char 1 97 +char 1 116 +char 1 111 +char 1 110 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $304 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 115 +char 1 116 +char 1 117 +char 1 110 +char 1 95 +char 1 98 +char 1 97 +char 1 116 +char 1 111 +char 1 110 +char 1 47 +char 1 98 +char 1 97 +char 1 116 +char 1 111 +char 1 110 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $303 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 95 +char 1 115 +char 1 116 +char 1 117 +char 1 110 +char 1 95 +char 1 98 +char 1 97 +char 1 116 +char 1 111 +char 1 110 +char 1 0 +align 1 +LABELV $302 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 109 +char 1 112 +char 1 105 +char 1 95 +char 1 121 +char 1 115 +char 1 97 +char 1 109 +char 1 97 +char 1 114 +char 1 105 +char 1 0 +align 1 +LABELV $301 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 121 +char 1 115 +char 1 97 +char 1 108 +char 1 105 +char 1 109 +char 1 97 +char 1 114 +char 1 105 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $300 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 121 +char 1 115 +char 1 97 +char 1 108 +char 1 105 +char 1 109 +char 1 97 +char 1 114 +char 1 105 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $299 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 121 +char 1 115 +char 1 97 +char 1 108 +char 1 105 +char 1 109 +char 1 97 +char 1 114 +char 1 105 +char 1 0 +align 1 +LABELV $298 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 109 +char 1 112 +char 1 105 +char 1 95 +char 1 102 +char 1 98 +char 1 111 +char 1 111 +char 1 110 +char 1 0 +align 1 +LABELV $297 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 95 +char 1 98 +char 1 111 +char 1 111 +char 1 110 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $296 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 98 +char 1 111 +char 1 111 +char 1 110 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $295 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 95 +char 1 98 +char 1 111 +char 1 111 +char 1 110 +char 1 0 +align 1 +LABELV $294 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 109 +char 1 112 +char 1 105 +char 1 95 +char 1 100 +char 1 107 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 0 +align 1 +LABELV $293 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 100 +char 1 107 +char 1 95 +char 1 101 +char 1 110 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 101 +char 1 110 +char 1 109 +char 1 101 +char 1 110 +char 1 116 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $292 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 95 +char 1 101 +char 1 110 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 101 +char 1 110 +char 1 95 +char 1 100 +char 1 97 +char 1 114 +char 1 107 +char 1 0 +align 1 +LABELV $291 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 109 +char 1 112 +char 1 105 +char 1 95 +char 1 106 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 0 +align 1 +LABELV $290 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 106 +char 1 101 +char 1 100 +char 1 105 +char 1 95 +char 1 101 +char 1 110 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 101 +char 1 110 +char 1 109 +char 1 101 +char 1 110 +char 1 116 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $289 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 101 +char 1 110 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 101 +char 1 110 +char 1 109 +char 1 101 +char 1 110 +char 1 116 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $288 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 95 +char 1 101 +char 1 110 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 101 +char 1 110 +char 1 95 +char 1 108 +char 1 105 +char 1 103 +char 1 104 +char 1 116 +char 1 0 +align 1 +LABELV $287 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 105 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 115 +char 1 101 +char 1 110 +char 1 116 +char 1 114 +char 1 121 +char 1 103 +char 1 117 +char 1 110 +char 1 0 +align 1 +LABELV $286 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 112 +char 1 115 +char 1 103 +char 1 117 +char 1 110 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $285 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 101 +char 1 110 +char 1 116 +char 1 114 +char 1 121 +char 1 95 +char 1 103 +char 1 117 +char 1 110 +char 1 0 +align 1 +LABELV $284 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 105 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 122 +char 1 111 +char 1 111 +char 1 109 +char 1 0 +align 1 +LABELV $283 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 98 +char 1 105 +char 1 110 +char 1 111 +char 1 99 +char 1 117 +char 1 108 +char 1 97 +char 1 114 +char 1 115 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $282 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 98 +char 1 105 +char 1 110 +char 1 111 +char 1 99 +char 1 117 +char 1 108 +char 1 97 +char 1 114 +char 1 115 +char 1 0 +align 1 +LABELV $281 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 100 +char 1 97 +char 1 116 +char 1 97 +char 1 112 +char 1 97 +char 1 100 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $280 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 100 +char 1 97 +char 1 116 +char 1 97 +char 1 112 +char 1 97 +char 1 100 +char 1 0 +align 1 +LABELV $279 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 105 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 98 +char 1 97 +char 1 99 +char 1 116 +char 1 97 +char 1 0 +align 1 +LABELV $278 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 98 +char 1 97 +char 1 99 +char 1 116 +char 1 97 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $277 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 109 +char 1 101 +char 1 100 +char 1 112 +char 1 97 +char 1 99 +char 1 0 +align 1 +LABELV $276 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 100 +char 1 101 +char 1 116 +char 1 112 +char 1 97 +char 1 99 +char 1 107 +char 1 47 +char 1 115 +char 1 116 +char 1 105 +char 1 99 +char 1 107 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 32 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 114 +char 1 115 +char 1 47 +char 1 100 +char 1 111 +char 1 111 +char 1 114 +char 1 115 +char 1 47 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 102 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 95 +char 1 111 +char 1 110 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 32 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 114 +char 1 115 +char 1 47 +char 1 100 +char 1 111 +char 1 111 +char 1 114 +char 1 115 +char 1 47 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 102 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 95 +char 1 111 +char 1 102 +char 1 102 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 32 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 114 +char 1 115 +char 1 47 +char 1 100 +char 1 111 +char 1 111 +char 1 114 +char 1 115 +char 1 47 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 102 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 95 +char 1 108 +char 1 112 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 32 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 101 +char 1 102 +char 1 102 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 98 +char 1 117 +char 1 109 +char 1 112 +char 1 102 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $275 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 105 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 119 +char 1 97 +char 1 108 +char 1 108 +char 1 0 +align 1 +LABELV $274 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $273 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 0 +align 1 +LABELV $272 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 105 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 115 +char 1 101 +char 1 101 +char 1 107 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $271 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 47 +char 1 114 +char 1 101 +char 1 109 +char 1 111 +char 1 116 +char 1 101 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $270 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 119 +char 1 95 +char 1 112 +char 1 107 +char 1 117 +char 1 112 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $269 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 101 +char 1 101 +char 1 107 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $268 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 104 +char 1 117 +char 1 100 +char 1 47 +char 1 105 +char 1 95 +char 1 105 +char 1 99 +char 1 111 +char 1 110 +char 1 95 +char 1 109 +char 1 101 +char 1 100 +char 1 107 +char 1 105 +char 1 116 +char 1 0 +align 1 +LABELV $267 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 109 +char 1 101 +char 1 100 +char 1 112 +char 1 97 +char 1 99 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $266 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 112 +char 1 105 +char 1 99 +char 1 107 +char 1 117 +char 1 112 +char 1 104 +char 1 101 +char 1 97 +char 1 108 +char 1 116 +char 1 104 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $265 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 109 +char 1 101 +char 1 100 +char 1 112 +char 1 97 +char 1 107 +char 1 95 +char 1 105 +char 1 110 +char 1 115 +char 1 116 +char 1 97 +char 1 110 +char 1 116 +char 1 0 +align 1 +LABELV $264 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 108 +char 1 97 +char 1 114 +char 1 103 +char 1 101 +char 1 95 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 0 +align 1 +LABELV $263 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 112 +char 1 115 +char 1 100 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $262 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 95 +char 1 108 +char 1 114 +char 1 103 +char 1 95 +char 1 105 +char 1 110 +char 1 115 +char 1 116 +char 1 97 +char 1 110 +char 1 116 +char 1 0 +align 1 +LABELV $261 +char 1 103 +char 1 102 +char 1 120 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 115 +char 1 109 +char 1 97 +char 1 108 +char 1 108 +char 1 95 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 0 +align 1 +LABELV $260 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 111 +char 1 98 +char 1 106 +char 1 101 +char 1 99 +char 1 116 +char 1 115 +char 1 47 +char 1 109 +char 1 112 +char 1 47 +char 1 112 +char 1 115 +char 1 100 +char 1 95 +char 1 115 +char 1 109 +char 1 46 +char 1 109 +char 1 100 +char 1 51 +char 1 0 +align 1 +LABELV $259 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 112 +char 1 105 +char 1 99 +char 1 107 +char 1 117 +char 1 112 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $258 +char 1 105 +char 1 116 +char 1 101 +char 1 109 +char 1 95 +char 1 115 +char 1 104 +char 1 105 +char 1 101 +char 1 108 +char 1 100 +char 1 95 +char 1 115 +char 1 109 +char 1 95 +char 1 105 +char 1 110 +char 1 115 +char 1 116 +char 1 97 +char 1 110 +char 1 116 +char 1 0 +align 1 +LABELV $257 +char 1 0 +align 1 +LABELV $256 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $132 +char 1 37 +char 1 105 +char 1 45 +char 1 0 +align 1 +LABELV $131 +char 1 55 +char 1 45 +char 1 49 +char 1 45 +char 1 48 +char 1 51 +char 1 50 +char 1 51 +char 1 51 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 48 +char 1 49 +char 1 51 +char 1 51 +char 1 51 +char 1 0 +align 1 +LABELV $127 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 55 +char 1 0 +align 1 +LABELV $126 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 54 +char 1 0 +align 1 +LABELV $125 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 53 +char 1 0 +align 1 +LABELV $124 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 52 +char 1 0 +align 1 +LABELV $123 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 51 +char 1 0 +align 1 +LABELV $122 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 50 +char 1 0 +align 1 +LABELV $121 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 49 +char 1 0 +align 1 +LABELV $120 +char 1 77 +char 1 65 +char 1 83 +char 1 84 +char 1 69 +char 1 82 +char 1 89 +char 1 48 +char 1 0 diff --git a/CODE-mp/game/vm/bg_panimate.asm b/CODE-mp/game/vm/bg_panimate.asm new file mode 100644 index 0000000..219f36a --- /dev/null +++ b/CODE-mp/game/vm/bg_panimate.asm @@ -0,0 +1,26161 @@ +data +export animTable +align 4 +LABELV animTable +address $65 +byte 4 0 +address $66 +byte 4 1 +address $67 +byte 4 2 +address $68 +byte 4 3 +address $69 +byte 4 4 +address $70 +byte 4 5 +address $71 +byte 4 6 +address $72 +byte 4 7 +address $73 +byte 4 8 +address $74 +byte 4 9 +address $75 +byte 4 10 +address $76 +byte 4 11 +address $77 +byte 4 12 +address $78 +byte 4 13 +address $79 +byte 4 14 +address $80 +byte 4 15 +address $81 +byte 4 16 +address $82 +byte 4 17 +address $83 +byte 4 18 +address $84 +byte 4 19 +address $85 +byte 4 20 +address $86 +byte 4 21 +address $87 +byte 4 22 +address $88 +byte 4 23 +address $89 +byte 4 24 +address $90 +byte 4 25 +address $91 +byte 4 26 +address $92 +byte 4 27 +address $93 +byte 4 28 +address $94 +byte 4 29 +address $95 +byte 4 30 +address $96 +byte 4 31 +address $97 +byte 4 32 +address $98 +byte 4 33 +address $99 +byte 4 34 +address $100 +byte 4 35 +address $101 +byte 4 36 +address $102 +byte 4 37 +address $103 +byte 4 38 +address $104 +byte 4 39 +address $105 +byte 4 40 +address $106 +byte 4 41 +address $107 +byte 4 42 +address $108 +byte 4 43 +address $109 +byte 4 44 +address $110 +byte 4 45 +address $111 +byte 4 46 +address $112 +byte 4 47 +address $113 +byte 4 48 +address $114 +byte 4 49 +address $115 +byte 4 50 +address $116 +byte 4 51 +address $117 +byte 4 52 +address $118 +byte 4 53 +address $119 +byte 4 54 +address $120 +byte 4 55 +address $121 +byte 4 56 +address $122 +byte 4 57 +address $123 +byte 4 58 +address $124 +byte 4 59 +address $125 +byte 4 60 +address $126 +byte 4 61 +address $127 +byte 4 62 +address $128 +byte 4 63 +address $129 +byte 4 64 +address $130 +byte 4 65 +address $131 +byte 4 66 +address $132 +byte 4 67 +address $133 +byte 4 68 +address $134 +byte 4 69 +address $135 +byte 4 70 +address $136 +byte 4 71 +address $137 +byte 4 72 +address $138 +byte 4 73 +address $139 +byte 4 74 +address $140 +byte 4 75 +address $141 +byte 4 76 +address $142 +byte 4 77 +address $143 +byte 4 78 +address $144 +byte 4 79 +address $145 +byte 4 80 +address $146 +byte 4 81 +address $147 +byte 4 82 +address $148 +byte 4 83 +address $149 +byte 4 84 +address $150 +byte 4 85 +address $151 +byte 4 86 +address $152 +byte 4 87 +address $153 +byte 4 88 +address $154 +byte 4 89 +address $155 +byte 4 90 +address $156 +byte 4 91 +address $157 +byte 4 92 +address $158 +byte 4 93 +address $159 +byte 4 94 +address $160 +byte 4 95 +address $161 +byte 4 96 +address $162 +byte 4 97 +address $163 +byte 4 98 +address $164 +byte 4 99 +address $165 +byte 4 100 +address $166 +byte 4 101 +address $167 +byte 4 102 +address $168 +byte 4 103 +address $169 +byte 4 104 +address $170 +byte 4 105 +address $171 +byte 4 106 +address $172 +byte 4 107 +address $173 +byte 4 108 +address $174 +byte 4 109 +address $175 +byte 4 110 +address $176 +byte 4 111 +address $177 +byte 4 112 +address $178 +byte 4 113 +address $179 +byte 4 114 +address $180 +byte 4 115 +address $181 +byte 4 116 +address $182 +byte 4 117 +address $183 +byte 4 118 +address $184 +byte 4 119 +address $185 +byte 4 120 +address $186 +byte 4 121 +address $187 +byte 4 122 +address $188 +byte 4 123 +address $189 +byte 4 124 +address $190 +byte 4 125 +address $191 +byte 4 126 +address $192 +byte 4 127 +address $193 +byte 4 128 +address $194 +byte 4 129 +address $195 +byte 4 130 +address $196 +byte 4 131 +address $197 +byte 4 132 +address $198 +byte 4 133 +address $199 +byte 4 134 +address $200 +byte 4 135 +address $201 +byte 4 136 +address $202 +byte 4 137 +address $203 +byte 4 138 +address $204 +byte 4 139 +address $205 +byte 4 140 +address $206 +byte 4 141 +address $207 +byte 4 142 +address $208 +byte 4 143 +address $209 +byte 4 144 +address $210 +byte 4 145 +address $211 +byte 4 146 +address $212 +byte 4 147 +address $213 +byte 4 148 +address $214 +byte 4 149 +address $215 +byte 4 150 +address $216 +byte 4 151 +address $217 +byte 4 152 +address $218 +byte 4 153 +address $219 +byte 4 154 +address $220 +byte 4 155 +address $221 +byte 4 156 +address $222 +byte 4 157 +address $223 +byte 4 158 +address $224 +byte 4 159 +address $225 +byte 4 160 +address $226 +byte 4 161 +address $227 +byte 4 162 +address $228 +byte 4 163 +address $229 +byte 4 164 +address $230 +byte 4 165 +address $231 +byte 4 166 +address $232 +byte 4 167 +address $233 +byte 4 168 +address $234 +byte 4 169 +address $235 +byte 4 170 +address $236 +byte 4 171 +address $237 +byte 4 172 +address $238 +byte 4 173 +address $239 +byte 4 174 +address $240 +byte 4 175 +address $241 +byte 4 176 +address $242 +byte 4 177 +address $243 +byte 4 178 +address $244 +byte 4 179 +address $245 +byte 4 180 +address $246 +byte 4 181 +address $247 +byte 4 182 +address $248 +byte 4 183 +address $249 +byte 4 184 +address $250 +byte 4 185 +address $251 +byte 4 186 +address $252 +byte 4 187 +address $253 +byte 4 188 +address $254 +byte 4 189 +address $255 +byte 4 190 +address $256 +byte 4 191 +address $257 +byte 4 192 +address $258 +byte 4 193 +address $259 +byte 4 194 +address $260 +byte 4 195 +address $261 +byte 4 196 +address $262 +byte 4 197 +address $263 +byte 4 198 +address $264 +byte 4 199 +address $265 +byte 4 200 +address $266 +byte 4 201 +address $267 +byte 4 202 +address $268 +byte 4 203 +address $269 +byte 4 204 +address $270 +byte 4 205 +address $271 +byte 4 206 +address $272 +byte 4 207 +address $273 +byte 4 208 +address $274 +byte 4 209 +address $275 +byte 4 210 +address $276 +byte 4 211 +address $277 +byte 4 212 +address $278 +byte 4 213 +address $279 +byte 4 214 +address $280 +byte 4 215 +address $281 +byte 4 216 +address $282 +byte 4 217 +address $283 +byte 4 218 +address $284 +byte 4 219 +address $285 +byte 4 220 +address $286 +byte 4 221 +address $287 +byte 4 222 +address $288 +byte 4 223 +address $289 +byte 4 224 +address $290 +byte 4 225 +address $291 +byte 4 226 +address $292 +byte 4 227 +address $293 +byte 4 228 +address $294 +byte 4 229 +address $295 +byte 4 230 +address $296 +byte 4 231 +address $297 +byte 4 232 +address $298 +byte 4 233 +address $299 +byte 4 234 +address $300 +byte 4 235 +address $301 +byte 4 236 +address $302 +byte 4 237 +address $303 +byte 4 238 +address $304 +byte 4 239 +address $305 +byte 4 240 +address $306 +byte 4 241 +address $307 +byte 4 242 +address $308 +byte 4 243 +address $309 +byte 4 244 +address $310 +byte 4 245 +address $311 +byte 4 246 +address $312 +byte 4 247 +address $313 +byte 4 248 +address $314 +byte 4 249 +address $315 +byte 4 250 +address $316 +byte 4 251 +address $317 +byte 4 252 +address $318 +byte 4 253 +address $319 +byte 4 254 +address $320 +byte 4 255 +address $321 +byte 4 256 +address $322 +byte 4 257 +address $323 +byte 4 258 +address $324 +byte 4 259 +address $325 +byte 4 260 +address $326 +byte 4 261 +address $327 +byte 4 262 +address $328 +byte 4 263 +address $329 +byte 4 264 +address $330 +byte 4 265 +address $331 +byte 4 266 +address $332 +byte 4 267 +address $333 +byte 4 268 +address $334 +byte 4 269 +address $335 +byte 4 270 +address $336 +byte 4 271 +address $337 +byte 4 272 +address $338 +byte 4 273 +address $339 +byte 4 274 +address $340 +byte 4 275 +address $341 +byte 4 276 +address $342 +byte 4 277 +address $343 +byte 4 278 +address $344 +byte 4 279 +address $345 +byte 4 280 +address $346 +byte 4 281 +address $347 +byte 4 282 +address $348 +byte 4 283 +address $349 +byte 4 284 +address $350 +byte 4 285 +address $351 +byte 4 286 +address $352 +byte 4 287 +address $353 +byte 4 288 +address $354 +byte 4 289 +address $355 +byte 4 290 +address $356 +byte 4 291 +address $357 +byte 4 292 +address $358 +byte 4 293 +address $359 +byte 4 294 +address $360 +byte 4 295 +address $361 +byte 4 296 +address $362 +byte 4 297 +address $363 +byte 4 298 +address $364 +byte 4 299 +address $365 +byte 4 300 +address $366 +byte 4 301 +address $367 +byte 4 302 +address $368 +byte 4 303 +address $369 +byte 4 304 +address $370 +byte 4 305 +address $371 +byte 4 306 +address $372 +byte 4 307 +address $373 +byte 4 308 +address $374 +byte 4 309 +address $375 +byte 4 310 +address $376 +byte 4 311 +address $377 +byte 4 312 +address $378 +byte 4 313 +address $379 +byte 4 314 +address $380 +byte 4 315 +address $381 +byte 4 316 +address $382 +byte 4 317 +address $383 +byte 4 318 +address $384 +byte 4 319 +address $385 +byte 4 320 +address $386 +byte 4 321 +address $387 +byte 4 322 +address $388 +byte 4 323 +address $389 +byte 4 324 +address $390 +byte 4 325 +address $391 +byte 4 326 +address $392 +byte 4 327 +address $393 +byte 4 328 +address $394 +byte 4 329 +address $395 +byte 4 330 +address $396 +byte 4 331 +address $397 +byte 4 332 +address $398 +byte 4 333 +address $399 +byte 4 334 +address $400 +byte 4 335 +address $401 +byte 4 336 +address $402 +byte 4 337 +address $403 +byte 4 338 +address $404 +byte 4 339 +address $405 +byte 4 340 +address $406 +byte 4 341 +address $407 +byte 4 342 +address $408 +byte 4 343 +address $409 +byte 4 344 +address $410 +byte 4 345 +address $411 +byte 4 346 +address $412 +byte 4 347 +address $413 +byte 4 348 +address $414 +byte 4 349 +address $415 +byte 4 350 +address $416 +byte 4 351 +address $417 +byte 4 352 +address $418 +byte 4 353 +address $419 +byte 4 354 +address $420 +byte 4 355 +address $421 +byte 4 356 +address $422 +byte 4 357 +address $423 +byte 4 358 +address $424 +byte 4 359 +address $425 +byte 4 360 +address $426 +byte 4 361 +address $427 +byte 4 362 +address $428 +byte 4 363 +address $429 +byte 4 364 +address $430 +byte 4 365 +address $431 +byte 4 366 +address $432 +byte 4 367 +address $433 +byte 4 368 +address $434 +byte 4 369 +address $435 +byte 4 370 +address $436 +byte 4 371 +address $437 +byte 4 372 +address $438 +byte 4 373 +address $439 +byte 4 374 +address $440 +byte 4 375 +address $441 +byte 4 376 +address $442 +byte 4 377 +address $443 +byte 4 378 +address $444 +byte 4 379 +address $445 +byte 4 380 +address $446 +byte 4 381 +address $447 +byte 4 382 +address $448 +byte 4 383 +address $449 +byte 4 384 +address $450 +byte 4 385 +address $451 +byte 4 386 +address $452 +byte 4 387 +address $453 +byte 4 388 +address $454 +byte 4 389 +address $455 +byte 4 390 +address $456 +byte 4 391 +address $457 +byte 4 392 +address $458 +byte 4 393 +address $459 +byte 4 394 +address $460 +byte 4 395 +address $461 +byte 4 396 +address $462 +byte 4 397 +address $463 +byte 4 398 +address $464 +byte 4 399 +address $465 +byte 4 400 +address $466 +byte 4 401 +address $467 +byte 4 402 +address $468 +byte 4 403 +address $469 +byte 4 404 +address $470 +byte 4 405 +address $471 +byte 4 406 +address $472 +byte 4 407 +address $473 +byte 4 408 +address $474 +byte 4 409 +address $475 +byte 4 410 +address $476 +byte 4 411 +address $477 +byte 4 412 +address $478 +byte 4 413 +address $479 +byte 4 414 +address $480 +byte 4 415 +address $481 +byte 4 416 +address $482 +byte 4 417 +address $483 +byte 4 418 +address $484 +byte 4 419 +address $485 +byte 4 420 +address $486 +byte 4 421 +address $487 +byte 4 422 +address $488 +byte 4 423 +address $489 +byte 4 424 +address $490 +byte 4 425 +address $491 +byte 4 426 +address $492 +byte 4 427 +address $493 +byte 4 428 +address $494 +byte 4 429 +address $495 +byte 4 430 +address $496 +byte 4 431 +address $497 +byte 4 432 +address $498 +byte 4 433 +address $499 +byte 4 434 +address $500 +byte 4 435 +address $501 +byte 4 436 +address $502 +byte 4 437 +address $503 +byte 4 438 +address $504 +byte 4 439 +address $505 +byte 4 440 +address $506 +byte 4 441 +address $507 +byte 4 442 +address $508 +byte 4 443 +address $509 +byte 4 444 +address $510 +byte 4 445 +address $511 +byte 4 446 +address $512 +byte 4 447 +address $513 +byte 4 448 +address $514 +byte 4 449 +address $515 +byte 4 450 +address $516 +byte 4 451 +address $517 +byte 4 452 +address $518 +byte 4 453 +address $519 +byte 4 454 +address $520 +byte 4 455 +address $521 +byte 4 456 +address $522 +byte 4 457 +address $523 +byte 4 458 +address $524 +byte 4 459 +address $525 +byte 4 460 +address $526 +byte 4 461 +address $527 +byte 4 462 +address $528 +byte 4 463 +address $529 +byte 4 464 +address $530 +byte 4 465 +address $531 +byte 4 466 +address $532 +byte 4 467 +address $533 +byte 4 468 +address $534 +byte 4 469 +address $535 +byte 4 470 +address $536 +byte 4 471 +address $537 +byte 4 472 +address $538 +byte 4 473 +address $539 +byte 4 474 +address $540 +byte 4 475 +address $541 +byte 4 476 +address $542 +byte 4 477 +address $543 +byte 4 478 +address $544 +byte 4 479 +address $545 +byte 4 480 +address $546 +byte 4 481 +address $547 +byte 4 482 +address $548 +byte 4 483 +address $549 +byte 4 484 +address $550 +byte 4 485 +address $551 +byte 4 486 +address $552 +byte 4 487 +address $553 +byte 4 488 +address $554 +byte 4 489 +address $555 +byte 4 490 +address $556 +byte 4 491 +address $557 +byte 4 492 +address $558 +byte 4 493 +address $559 +byte 4 494 +address $560 +byte 4 495 +address $561 +byte 4 496 +address $562 +byte 4 497 +address $563 +byte 4 498 +address $564 +byte 4 499 +address $565 +byte 4 500 +address $566 +byte 4 501 +address $567 +byte 4 502 +address $568 +byte 4 503 +address $569 +byte 4 504 +address $570 +byte 4 505 +address $571 +byte 4 506 +address $572 +byte 4 507 +address $573 +byte 4 508 +address $574 +byte 4 509 +address $575 +byte 4 510 +address $576 +byte 4 511 +address $577 +byte 4 512 +address $578 +byte 4 513 +address $579 +byte 4 514 +address $580 +byte 4 515 +address $581 +byte 4 516 +address $582 +byte 4 517 +address $583 +byte 4 518 +address $584 +byte 4 519 +address $585 +byte 4 520 +address $586 +byte 4 521 +address $587 +byte 4 522 +address $588 +byte 4 523 +address $589 +byte 4 524 +address $590 +byte 4 525 +address $591 +byte 4 526 +address $592 +byte 4 527 +address $593 +byte 4 528 +address $594 +byte 4 529 +address $595 +byte 4 530 +address $596 +byte 4 531 +address $597 +byte 4 532 +address $598 +byte 4 533 +address $599 +byte 4 534 +address $600 +byte 4 535 +address $601 +byte 4 536 +address $602 +byte 4 537 +address $603 +byte 4 538 +address $604 +byte 4 539 +address $605 +byte 4 540 +address $606 +byte 4 541 +address $607 +byte 4 542 +address $608 +byte 4 543 +address $609 +byte 4 544 +address $610 +byte 4 545 +address $611 +byte 4 546 +address $612 +byte 4 547 +address $613 +byte 4 548 +address $614 +byte 4 549 +address $615 +byte 4 550 +address $616 +byte 4 551 +address $617 +byte 4 552 +address $618 +byte 4 553 +address $619 +byte 4 554 +address $620 +byte 4 555 +address $621 +byte 4 556 +address $622 +byte 4 557 +address $623 +byte 4 558 +address $624 +byte 4 559 +address $625 +byte 4 560 +address $626 +byte 4 561 +address $627 +byte 4 562 +address $628 +byte 4 563 +address $629 +byte 4 564 +address $630 +byte 4 565 +address $631 +byte 4 566 +address $632 +byte 4 567 +address $633 +byte 4 568 +address $634 +byte 4 569 +address $635 +byte 4 570 +address $636 +byte 4 571 +address $637 +byte 4 572 +address $638 +byte 4 573 +address $639 +byte 4 574 +address $640 +byte 4 575 +address $641 +byte 4 576 +address $642 +byte 4 577 +address $643 +byte 4 578 +address $644 +byte 4 579 +address $645 +byte 4 580 +address $646 +byte 4 581 +address $647 +byte 4 582 +address $648 +byte 4 583 +address $649 +byte 4 584 +address $650 +byte 4 585 +address $651 +byte 4 586 +address $652 +byte 4 587 +address $653 +byte 4 588 +address $654 +byte 4 589 +address $655 +byte 4 590 +address $656 +byte 4 591 +address $657 +byte 4 592 +address $658 +byte 4 593 +address $659 +byte 4 594 +address $660 +byte 4 595 +address $661 +byte 4 596 +address $662 +byte 4 597 +address $663 +byte 4 598 +address $664 +byte 4 599 +address $665 +byte 4 600 +address $666 +byte 4 601 +address $667 +byte 4 602 +address $668 +byte 4 603 +address $669 +byte 4 604 +address $670 +byte 4 605 +address $671 +byte 4 606 +address $672 +byte 4 607 +address $673 +byte 4 608 +address $674 +byte 4 609 +address $675 +byte 4 610 +address $676 +byte 4 611 +address $677 +byte 4 612 +address $678 +byte 4 613 +address $679 +byte 4 614 +address $680 +byte 4 615 +address $681 +byte 4 616 +address $682 +byte 4 617 +address $683 +byte 4 618 +address $684 +byte 4 619 +address $685 +byte 4 620 +address $686 +byte 4 621 +address $687 +byte 4 622 +address $688 +byte 4 623 +address $689 +byte 4 624 +address $690 +byte 4 625 +address $691 +byte 4 626 +address $692 +byte 4 627 +address $693 +byte 4 628 +address $694 +byte 4 629 +address $695 +byte 4 630 +address $696 +byte 4 631 +address $697 +byte 4 632 +address $698 +byte 4 633 +address $699 +byte 4 634 +address $700 +byte 4 635 +address $701 +byte 4 636 +address $702 +byte 4 637 +address $703 +byte 4 638 +address $704 +byte 4 639 +address $705 +byte 4 640 +address $706 +byte 4 641 +address $707 +byte 4 642 +address $708 +byte 4 643 +address $709 +byte 4 644 +address $710 +byte 4 645 +address $711 +byte 4 646 +address $712 +byte 4 647 +address $713 +byte 4 648 +address $714 +byte 4 649 +address $715 +byte 4 650 +address $716 +byte 4 651 +address $717 +byte 4 652 +address $718 +byte 4 653 +address $719 +byte 4 654 +address $720 +byte 4 655 +address $721 +byte 4 656 +address $722 +byte 4 657 +address $723 +byte 4 658 +address $724 +byte 4 659 +address $725 +byte 4 660 +address $726 +byte 4 661 +address $727 +byte 4 662 +address $728 +byte 4 663 +address $729 +byte 4 664 +address $730 +byte 4 665 +address $731 +byte 4 666 +address $732 +byte 4 667 +address $733 +byte 4 668 +address $734 +byte 4 669 +address $735 +byte 4 670 +address $736 +byte 4 671 +address $737 +byte 4 672 +address $738 +byte 4 673 +address $739 +byte 4 674 +address $740 +byte 4 675 +address $741 +byte 4 676 +address $742 +byte 4 677 +address $743 +byte 4 678 +address $744 +byte 4 679 +address $745 +byte 4 680 +address $746 +byte 4 681 +address $747 +byte 4 682 +address $748 +byte 4 683 +address $749 +byte 4 684 +address $750 +byte 4 685 +address $751 +byte 4 686 +address $752 +byte 4 687 +address $753 +byte 4 688 +address $754 +byte 4 689 +address $755 +byte 4 690 +address $756 +byte 4 691 +address $757 +byte 4 692 +address $758 +byte 4 693 +address $759 +byte 4 694 +address $760 +byte 4 695 +address $761 +byte 4 696 +address $762 +byte 4 697 +address $763 +byte 4 698 +address $764 +byte 4 699 +address $765 +byte 4 700 +address $766 +byte 4 701 +address $767 +byte 4 702 +address $768 +byte 4 704 +address $769 +byte 4 703 +address $770 +byte 4 705 +address $771 +byte 4 706 +address $772 +byte 4 707 +address $773 +byte 4 708 +address $774 +byte 4 709 +address $775 +byte 4 710 +address $776 +byte 4 711 +address $777 +byte 4 712 +address $778 +byte 4 713 +address $779 +byte 4 714 +address $780 +byte 4 715 +address $781 +byte 4 716 +address $782 +byte 4 717 +address $783 +byte 4 718 +address $784 +byte 4 719 +address $785 +byte 4 720 +address $786 +byte 4 721 +address $787 +byte 4 722 +address $788 +byte 4 723 +address $789 +byte 4 724 +address $790 +byte 4 725 +address $791 +byte 4 726 +address $792 +byte 4 727 +address $793 +byte 4 728 +address $794 +byte 4 729 +address $795 +byte 4 730 +address $796 +byte 4 731 +address $797 +byte 4 732 +address $798 +byte 4 733 +address $799 +byte 4 734 +address $800 +byte 4 735 +address $801 +byte 4 736 +address $802 +byte 4 737 +address $803 +byte 4 738 +address $804 +byte 4 739 +address $805 +byte 4 740 +address $806 +byte 4 741 +address $807 +byte 4 742 +address $808 +byte 4 743 +address $809 +byte 4 744 +address $810 +byte 4 745 +address $811 +byte 4 746 +address $812 +byte 4 747 +address $813 +byte 4 748 +address $814 +byte 4 749 +address $815 +byte 4 750 +address $816 +byte 4 751 +address $817 +byte 4 752 +address $818 +byte 4 753 +address $819 +byte 4 754 +address $820 +byte 4 755 +address $821 +byte 4 756 +address $822 +byte 4 757 +address $823 +byte 4 758 +address $824 +byte 4 759 +address $825 +byte 4 760 +address $826 +byte 4 761 +address $827 +byte 4 762 +address $828 +byte 4 763 +address $829 +byte 4 764 +address $830 +byte 4 765 +address $831 +byte 4 766 +address $832 +byte 4 767 +address $833 +byte 4 768 +address $834 +byte 4 769 +address $835 +byte 4 770 +address $836 +byte 4 771 +address $837 +byte 4 772 +address $838 +byte 4 773 +address $839 +byte 4 774 +address $840 +byte 4 775 +address $841 +byte 4 776 +address $842 +byte 4 777 +address $843 +byte 4 778 +address $844 +byte 4 779 +address $845 +byte 4 780 +address $846 +byte 4 781 +address $847 +byte 4 782 +address $848 +byte 4 783 +address $849 +byte 4 784 +address $850 +byte 4 785 +address $851 +byte 4 786 +address $852 +byte 4 787 +address $853 +byte 4 788 +address $854 +byte 4 789 +address $855 +byte 4 790 +address $856 +byte 4 791 +address $857 +byte 4 792 +address $858 +byte 4 793 +address $859 +byte 4 794 +address $860 +byte 4 795 +address $861 +byte 4 796 +address $862 +byte 4 797 +address $863 +byte 4 798 +address $864 +byte 4 799 +address $865 +byte 4 800 +address $866 +byte 4 801 +address $867 +byte 4 802 +address $868 +byte 4 803 +address $869 +byte 4 804 +address $870 +byte 4 805 +address $871 +byte 4 806 +address $872 +byte 4 807 +address $873 +byte 4 808 +address $874 +byte 4 809 +address $875 +byte 4 810 +address $876 +byte 4 811 +address $877 +byte 4 812 +address $878 +byte 4 813 +address $879 +byte 4 814 +address $880 +byte 4 815 +address $881 +byte 4 816 +address $882 +byte 4 817 +address $883 +byte 4 818 +address $884 +byte 4 819 +address $885 +byte 4 820 +address $886 +byte 4 821 +address $887 +byte 4 822 +address $888 +byte 4 823 +address $889 +byte 4 824 +address $890 +byte 4 825 +address $891 +byte 4 826 +address $892 +byte 4 827 +address $893 +byte 4 828 +address $894 +byte 4 829 +address $895 +byte 4 830 +address $896 +byte 4 831 +address $897 +byte 4 832 +address $898 +byte 4 833 +address $899 +byte 4 834 +address $900 +byte 4 835 +address $901 +byte 4 836 +address $902 +byte 4 837 +address $903 +byte 4 838 +address $904 +byte 4 839 +address $905 +byte 4 840 +address $906 +byte 4 841 +address $907 +byte 4 842 +address $908 +byte 4 843 +address $909 +byte 4 844 +address $910 +byte 4 845 +address $911 +byte 4 846 +address $912 +byte 4 847 +address $913 +byte 4 848 +address $914 +byte 4 849 +address $915 +byte 4 850 +address $916 +byte 4 851 +address $917 +byte 4 852 +address $918 +byte 4 853 +address $919 +byte 4 854 +address $920 +byte 4 855 +address $921 +byte 4 856 +address $922 +byte 4 857 +address $923 +byte 4 858 +address $924 +byte 4 859 +address $925 +byte 4 860 +address $926 +byte 4 861 +address $927 +byte 4 862 +address $928 +byte 4 863 +address $929 +byte 4 864 +address $930 +byte 4 865 +address $931 +byte 4 866 +address $932 +byte 4 867 +address $933 +byte 4 868 +address $934 +byte 4 869 +address $935 +byte 4 870 +address $936 +byte 4 871 +address $937 +byte 4 872 +address $938 +byte 4 873 +address $939 +byte 4 874 +address $940 +byte 4 875 +address $941 +byte 4 876 +address $942 +byte 4 877 +address $943 +byte 4 878 +address $944 +byte 4 879 +address $945 +byte 4 880 +address $946 +byte 4 881 +address $947 +byte 4 882 +address $948 +byte 4 883 +address $949 +byte 4 884 +address $950 +byte 4 885 +address $951 +byte 4 886 +address $952 +byte 4 887 +address $953 +byte 4 888 +address $954 +byte 4 889 +address $955 +byte 4 890 +address $956 +byte 4 891 +address $957 +byte 4 892 +address $958 +byte 4 893 +address $959 +byte 4 894 +address $960 +byte 4 895 +address $961 +byte 4 896 +address $962 +byte 4 897 +address $963 +byte 4 898 +address $964 +byte 4 899 +address $965 +byte 4 900 +address $966 +byte 4 901 +address $967 +byte 4 902 +address $968 +byte 4 903 +address $969 +byte 4 904 +address $970 +byte 4 905 +address $971 +byte 4 906 +address $972 +byte 4 907 +address $973 +byte 4 908 +address $974 +byte 4 909 +address $975 +byte 4 910 +address $976 +byte 4 911 +address $977 +byte 4 912 +address $978 +byte 4 913 +address $979 +byte 4 914 +address $980 +byte 4 915 +address $981 +byte 4 916 +address $982 +byte 4 917 +address $983 +byte 4 918 +address $984 +byte 4 919 +address $985 +byte 4 920 +address $986 +byte 4 921 +address $987 +byte 4 922 +address $988 +byte 4 923 +address $989 +byte 4 924 +address $990 +byte 4 925 +address $991 +byte 4 926 +address $992 +byte 4 927 +address $993 +byte 4 928 +address $994 +byte 4 929 +address $995 +byte 4 930 +address $996 +byte 4 931 +address $997 +byte 4 932 +address $998 +byte 4 933 +address $999 +byte 4 934 +address $1000 +byte 4 935 +address $1001 +byte 4 936 +address $1002 +byte 4 937 +address $1003 +byte 4 938 +address $1004 +byte 4 939 +address $1005 +byte 4 940 +address $1006 +byte 4 941 +address $1007 +byte 4 942 +address $1008 +byte 4 943 +address $1009 +byte 4 944 +address $1010 +byte 4 945 +address $1011 +byte 4 946 +address $1012 +byte 4 947 +address $1013 +byte 4 948 +address $1014 +byte 4 949 +address $1015 +byte 4 950 +address $1016 +byte 4 951 +address $1017 +byte 4 952 +address $1018 +byte 4 953 +address $1019 +byte 4 954 +address $1020 +byte 4 955 +address $1021 +byte 4 956 +address $1022 +byte 4 957 +address $1023 +byte 4 958 +address $1024 +byte 4 959 +address $1025 +byte 4 960 +address $1026 +byte 4 961 +address $1027 +byte 4 962 +address $1028 +byte 4 963 +address $1029 +byte 4 964 +address $1030 +byte 4 965 +address $1031 +byte 4 966 +address $1032 +byte 4 967 +address $1033 +byte 4 968 +address $1034 +byte 4 969 +address $1035 +byte 4 970 +address $1036 +byte 4 971 +address $1037 +byte 4 972 +address $1038 +byte 4 973 +address $1039 +byte 4 974 +address $1040 +byte 4 975 +address $1041 +byte 4 976 +address $1042 +byte 4 977 +address $1043 +byte 4 978 +address $1044 +byte 4 979 +address $1045 +byte 4 980 +address $1046 +byte 4 981 +address $1047 +byte 4 982 +address $1048 +byte 4 983 +address $1049 +byte 4 984 +address $1050 +byte 4 985 +address $1051 +byte 4 986 +address $1052 +byte 4 987 +address $1053 +byte 4 988 +address $1054 +byte 4 989 +address $1055 +byte 4 990 +address $1056 +byte 4 991 +address $1057 +byte 4 992 +address $1058 +byte 4 993 +address $1059 +byte 4 994 +address $1060 +byte 4 995 +address $1061 +byte 4 996 +address $1062 +byte 4 997 +address $1063 +byte 4 998 +address $1064 +byte 4 999 +address $1065 +byte 4 1000 +address $1066 +byte 4 1001 +address $1067 +byte 4 1002 +address $1068 +byte 4 1003 +address $1069 +byte 4 1004 +address $1070 +byte 4 1005 +address $1071 +byte 4 1006 +address $1072 +byte 4 1007 +address $1073 +byte 4 1008 +address $1074 +byte 4 1009 +address $1075 +byte 4 1010 +address $1076 +byte 4 1011 +address $1077 +byte 4 1012 +address $1078 +byte 4 1013 +address $1079 +byte 4 1014 +address $1080 +byte 4 1015 +address $1081 +byte 4 1016 +address $1082 +byte 4 1017 +address $1083 +byte 4 1018 +address $1084 +byte 4 1019 +address $1085 +byte 4 1020 +address $1086 +byte 4 1021 +address $1087 +byte 4 1022 +address $1088 +byte 4 1023 +address $1089 +byte 4 1024 +address $1090 +byte 4 1025 +address $1091 +byte 4 1026 +address $1092 +byte 4 1027 +address $1093 +byte 4 1028 +address $1094 +byte 4 1029 +address $1095 +byte 4 1030 +address $1096 +byte 4 1031 +address $1097 +byte 4 1032 +address $1098 +byte 4 1033 +address $1099 +byte 4 1034 +address $1100 +byte 4 1035 +address $1101 +byte 4 1036 +address $1102 +byte 4 1037 +address $1103 +byte 4 1038 +address $1104 +byte 4 1039 +address $1105 +byte 4 1040 +address $1106 +byte 4 1041 +address $1107 +byte 4 1042 +address $1108 +byte 4 1043 +address $1109 +byte 4 1044 +address $1110 +byte 4 1045 +address $1111 +byte 4 1046 +address $1112 +byte 4 1047 +address $1113 +byte 4 1048 +address $1114 +byte 4 1049 +address $1115 +byte 4 1050 +address $1116 +byte 4 1051 +address $1117 +byte 4 1052 +address $1118 +byte 4 1053 +address $1119 +byte 4 1054 +address $1120 +byte 4 1055 +address $1121 +byte 4 1056 +address $1122 +byte 4 1057 +address $1123 +byte 4 1058 +address $1124 +byte 4 1059 +address $1125 +byte 4 1060 +address $1126 +byte 4 1061 +address $1127 +byte 4 1062 +address $1128 +byte 4 1063 +address $1129 +byte 4 1064 +address $1130 +byte 4 1065 +address $1131 +byte 4 1066 +address $1132 +byte 4 1067 +address $1133 +byte 4 1068 +address $1134 +byte 4 1069 +address $1135 +byte 4 1070 +address $1136 +byte 4 1071 +address $1137 +byte 4 1072 +address $1138 +byte 4 1073 +address $1139 +byte 4 1074 +address $1140 +byte 4 1075 +address $1141 +byte 4 1076 +address $1142 +byte 4 1077 +address $1143 +byte 4 1078 +address $1144 +byte 4 1079 +address $1145 +byte 4 1080 +address $1146 +byte 4 1081 +address $1147 +byte 4 1082 +address $1148 +byte 4 1083 +address $1149 +byte 4 1084 +address $1150 +byte 4 1085 +address $1151 +byte 4 1086 +address $1152 +byte 4 1087 +address $1153 +byte 4 1088 +byte 4 0 +byte 4 -1 +export BG_InSpecialJump +code +proc BG_InSpecialJump 8 0 +file "../bg_panimate.c" +line 16 +;1:// BG_PAnimate.c +;2: +;3:#include "q_shared.h" +;4:#include "bg_public.h" +;5:#include "bg_local.h" +;6:#include "anims.h" +;7:#include "../cgame/animtable.h" +;8: +;9:/* +;10:============================================================================== +;11:BEGIN: Animation utility functions (sequence checking) +;12:============================================================================== +;13:*/ +;14://Called regardless of pm validity: +;15:qboolean BG_InSpecialJump( int anim ) +;16:{ +line 17 +;17: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 815 +LTI4 $1155 +ADDRLP4 0 +INDIRI4 +CNSTI4 827 +GTI4 $1159 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1160-3260 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1160 +address $1158 +address $1158 +address $1158 +address $1158 +address $1158 +address $1158 +address $1158 +address $1155 +address $1158 +address $1158 +address $1155 +address $1158 +address $1158 +code +LABELV $1159 +ADDRLP4 0 +INDIRI4 +CNSTI4 849 +EQI4 $1158 +ADDRGP4 $1155 +JUMPV +line 18 +;18: { +LABELV $1158 +line 31 +;19: case BOTH_WALL_RUN_RIGHT: +;20: case BOTH_WALL_RUN_RIGHT_FLIP: +;21: case BOTH_WALL_RUN_LEFT: +;22: case BOTH_WALL_RUN_LEFT_FLIP: +;23: case BOTH_WALL_FLIP_RIGHT: +;24: case BOTH_WALL_FLIP_LEFT: +;25: case BOTH_FLIP_BACK1: +;26: case BOTH_FLIP_BACK2: +;27: case BOTH_FLIP_BACK3: +;28: case BOTH_WALL_FLIP_BACK1: +;29: case BOTH_BUTTERFLY_LEFT: +;30: case BOTH_BUTTERFLY_RIGHT: +;31: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1154 +JUMPV +LABELV $1155 +line 33 +;32: } +;33: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1154 +endproc BG_InSpecialJump 8 0 +export BG_InSaberStandAnim +proc BG_InSaberStandAnim 16 0 +line 37 +;34:} +;35: +;36:qboolean BG_InSaberStandAnim( int anim ) +;37:{ +line 38 +;38: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 8 +CNSTI4 553 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1166 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $1163 +LABELV $1167 +ADDRLP4 0 +INDIRI4 +CNSTI4 800 +EQI4 $1166 +ADDRLP4 0 +INDIRI4 +CNSTI4 801 +EQI4 $1166 +ADDRGP4 $1163 +JUMPV +line 39 +;39: { +LABELV $1166 +line 43 +;40: case BOTH_SABERFAST_STANCE: +;41: case BOTH_STAND2: +;42: case BOTH_SABERSLOW_STANCE: +;43: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1162 +JUMPV +LABELV $1163 +line 45 +;44: default: +;45: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1162 +endproc BG_InSaberStandAnim 16 0 +export BG_DirectFlippingAnim +proc BG_DirectFlippingAnim 8 0 +line 50 +;46: } +;47:} +;48: +;49:qboolean BG_DirectFlippingAnim( int anim ) +;50:{ +line 51 +;51: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 777 +LTI4 $1169 +ADDRLP4 0 +INDIRI4 +CNSTI4 780 +GTI4 $1169 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1173-3108 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1173 +address $1172 +address $1172 +address $1172 +address $1172 +code +line 52 +;52: { +LABELV $1172 +line 57 +;53: case BOTH_FLIP_F: //# Flip forward +;54: case BOTH_FLIP_B: //# Flip backwards +;55: case BOTH_FLIP_L: //# Flip left +;56: case BOTH_FLIP_R: //# Flip right +;57: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1168 +JUMPV +line 58 +;58: break; +LABELV $1169 +line 61 +;59: } +;60: +;61: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1168 +endproc BG_DirectFlippingAnim 8 0 +export BG_SaberInAttack +proc BG_SaberInAttack 8 0 +line 65 +;62:} +;63: +;64:qboolean BG_SaberInAttack( int move ) +;65:{ +line 66 +;66: if ( move >= LS_A_TL2BR && move <= LS_A_T2B ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $1176 +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +GTI4 $1176 +line 67 +;67: { +line 68 +;68: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1175 +JUMPV +LABELV $1176 +line 70 +;69: } +;70: switch ( move ) +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 11 +LTI4 $1178 +ADDRLP4 4 +INDIRI4 +CNSTI4 17 +GTI4 $1178 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1181-44 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1181 +address $1180 +address $1180 +address $1180 +address $1180 +address $1180 +address $1180 +address $1180 +code +line 71 +;71: { +LABELV $1180 +line 79 +;72: case LS_A_BACK: +;73: case LS_A_BACK_CR: +;74: case LS_A_BACKSTAB: +;75: case LS_A_LUNGE: +;76: case LS_A_JUMP_T__B_: +;77: case LS_A_FLIP_STAB: +;78: case LS_A_FLIP_SLASH: +;79: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1175 +JUMPV +line 80 +;80: break; +LABELV $1178 +line 82 +;81: } +;82: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1175 +endproc BG_SaberInAttack 8 0 +export BG_SaberInSpecial +proc BG_SaberInSpecial 4 0 +line 86 +;83:} +;84: +;85:qboolean BG_SaberInSpecial( int move ) +;86:{ +line 87 +;87: switch( move ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 11 +LTI4 $1184 +ADDRLP4 0 +INDIRI4 +CNSTI4 17 +GTI4 $1184 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1187-44 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1187 +address $1186 +address $1186 +address $1186 +address $1186 +address $1186 +address $1186 +address $1186 +code +line 88 +;88: { +LABELV $1186 +line 96 +;89: case LS_A_BACK: +;90: case LS_A_BACK_CR: +;91: case LS_A_BACKSTAB: +;92: case LS_A_LUNGE: +;93: case LS_A_JUMP_T__B_: +;94: case LS_A_FLIP_STAB: +;95: case LS_A_FLIP_SLASH: +;96: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1183 +JUMPV +LABELV $1184 +line 98 +;97: } +;98: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1183 +endproc BG_SaberInSpecial 4 0 +export BG_SaberInIdle +proc BG_SaberInIdle 4 0 +line 102 +;99:} +;100: +;101:qboolean BG_SaberInIdle( int move ) +;102:{ +line 103 +;103: switch ( move ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1190 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +GTI4 $1190 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1193 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1193 +address $1192 +address $1192 +address $1192 +address $1192 +code +line 104 +;104: { +LABELV $1192 +line 109 +;105: case LS_NONE: +;106: case LS_READY: +;107: case LS_DRAW: +;108: case LS_PUTAWAY: +;109: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1189 +JUMPV +line 110 +;110: break; +LABELV $1190 +line 112 +;111: } +;112: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1189 +endproc BG_SaberInIdle 4 0 +export BG_FlippingAnim +proc BG_FlippingAnim 16 0 +line 116 +;113:} +;114: +;115:qboolean BG_FlippingAnim( int anim ) +;116:{ +line 117 +;117: switch ( anim ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 805 +LTI4 $1198 +ADDRLP4 0 +INDIRI4 +CNSTI4 827 +GTI4 $1199 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1200-3220 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1200 +address $1197 +address $1197 +address $1195 +address $1195 +address $1195 +address $1197 +address $1197 +address $1197 +address $1197 +address $1195 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +address $1197 +code +LABELV $1198 +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 777 +LTI4 $1195 +ADDRLP4 4 +INDIRI4 +CNSTI4 780 +GTI4 $1195 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1202-3108 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1202 +address $1197 +address $1197 +address $1197 +address $1197 +code +LABELV $1199 +ADDRLP4 8 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 12 +CNSTI4 849 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $1197 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LTI4 $1195 +LABELV $1204 +ADDRFP4 0 +INDIRI4 +CNSTI4 860 +EQI4 $1197 +ADDRGP4 $1195 +JUMPV +line 118 +;118: { +LABELV $1197 +line 146 +;119: case BOTH_FLIP_F: //# Flip forward +;120: case BOTH_FLIP_B: //# Flip backwards +;121: case BOTH_FLIP_L: //# Flip left +;122: case BOTH_FLIP_R: //# Flip right +;123: case BOTH_WALL_RUN_RIGHT_FLIP: +;124: case BOTH_WALL_RUN_LEFT_FLIP: +;125: case BOTH_WALL_FLIP_RIGHT: +;126: case BOTH_WALL_FLIP_LEFT: +;127: case BOTH_FLIP_BACK1: +;128: case BOTH_FLIP_BACK2: +;129: case BOTH_FLIP_BACK3: +;130: case BOTH_WALL_FLIP_BACK1: +;131: //Not really flips, but... +;132: case BOTH_WALL_RUN_RIGHT: +;133: case BOTH_WALL_RUN_LEFT: +;134: case BOTH_WALL_RUN_RIGHT_STOP: +;135: case BOTH_WALL_RUN_LEFT_STOP: +;136: case BOTH_BUTTERFLY_LEFT: +;137: case BOTH_BUTTERFLY_RIGHT: +;138: // +;139: case BOTH_ARIAL_LEFT: +;140: case BOTH_ARIAL_RIGHT: +;141: case BOTH_ARIAL_F1: +;142: case BOTH_CARTWHEEL_LEFT: +;143: case BOTH_CARTWHEEL_RIGHT: +;144: case BOTH_JUMPFLIPSLASHDOWN1: +;145: case BOTH_JUMPFLIPSTABDOWN: +;146: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1194 +JUMPV +line 147 +;147: break; +LABELV $1195 +line 149 +;148: } +;149: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1194 +endproc BG_FlippingAnim 16 0 +export BG_SpinningSaberAnim +proc BG_SpinningSaberAnim 72 0 +line 153 +;150:} +;151: +;152:qboolean BG_SpinningSaberAnim( int anim ) +;153:{ +line 154 +;154: switch ( anim ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 366 +EQI4 $1208 +ADDRLP4 0 +INDIRI4 +CNSTI4 367 +EQI4 $1208 +ADDRLP4 4 +CNSTI4 371 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $1208 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +GTI4 $1210 +LABELV $1209 +ADDRLP4 8 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 212 +EQI4 $1208 +ADDRLP4 8 +INDIRI4 +CNSTI4 213 +EQI4 $1208 +ADDRLP4 12 +CNSTI4 217 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $1208 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +GTI4 $1212 +LABELV $1211 +ADDRLP4 16 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 134 +LTI4 $1206 +ADDRLP4 16 +INDIRI4 +CNSTI4 144 +GTI4 $1213 +ADDRLP4 16 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1214-536 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1214 +address $1208 +address $1208 +address $1208 +address $1206 +address $1206 +address $1208 +address $1208 +address $1206 +address $1206 +address $1206 +address $1208 +code +LABELV $1213 +ADDRLP4 20 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 151 +LTI4 $1206 +ADDRLP4 20 +INDIRI4 +CNSTI4 158 +GTI4 $1206 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1216-604 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1216 +address $1208 +address $1206 +address $1208 +address $1208 +address $1206 +address $1208 +address $1208 +address $1208 +code +LABELV $1212 +ADDRLP4 24 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 289 +EQI4 $1208 +ADDRLP4 24 +INDIRI4 +CNSTI4 290 +EQI4 $1208 +ADDRLP4 28 +CNSTI4 294 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRLP4 28 +INDIRI4 +EQI4 $1208 +ADDRLP4 24 +INDIRI4 +ADDRLP4 28 +INDIRI4 +GTI4 $1219 +LABELV $1218 +ADDRLP4 32 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 230 +EQI4 $1208 +ADDRLP4 32 +INDIRI4 +CNSTI4 233 +EQI4 $1208 +ADDRLP4 32 +INDIRI4 +CNSTI4 234 +EQI4 $1208 +ADDRGP4 $1206 +JUMPV +LABELV $1219 +ADDRLP4 36 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 307 +EQI4 $1208 +ADDRLP4 36 +INDIRI4 +CNSTI4 310 +EQI4 $1208 +ADDRLP4 36 +INDIRI4 +CNSTI4 311 +EQI4 $1208 +ADDRGP4 $1206 +JUMPV +LABELV $1210 +ADDRLP4 40 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 459 +LTI4 $1220 +ADDRLP4 40 +INDIRI4 +CNSTI4 466 +GTI4 $1221 +ADDRLP4 40 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1222-1836 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1222 +address $1208 +address $1206 +address $1208 +address $1208 +address $1206 +address $1208 +address $1208 +address $1208 +code +LABELV $1220 +ADDRLP4 44 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 48 +CNSTI4 384 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRLP4 48 +INDIRI4 +EQI4 $1208 +ADDRLP4 44 +INDIRI4 +CNSTI4 387 +EQI4 $1208 +ADDRLP4 44 +INDIRI4 +CNSTI4 388 +EQI4 $1208 +ADDRLP4 44 +INDIRI4 +ADDRLP4 48 +INDIRI4 +LTI4 $1206 +LABELV $1224 +ADDRLP4 52 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 442 +LTI4 $1206 +ADDRLP4 52 +INDIRI4 +CNSTI4 452 +GTI4 $1206 +ADDRLP4 52 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1225-1768 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1225 +address $1208 +address $1208 +address $1208 +address $1206 +address $1206 +address $1208 +address $1208 +address $1206 +address $1206 +address $1206 +address $1208 +code +LABELV $1221 +ADDRLP4 56 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 818 +EQI4 $1208 +ADDRLP4 60 +CNSTI4 819 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ADDRLP4 60 +INDIRI4 +EQI4 $1208 +ADDRLP4 56 +INDIRI4 +ADDRLP4 60 +INDIRI4 +GTI4 $1228 +LABELV $1227 +ADDRLP4 64 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 804 +LTI4 $1206 +ADDRLP4 64 +INDIRI4 +CNSTI4 809 +GTI4 $1206 +ADDRLP4 64 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1229-3216 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1229 +address $1208 +address $1208 +address $1208 +address $1206 +address $1206 +address $1208 +code +LABELV $1228 +ADDRLP4 68 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 854 +EQI4 $1208 +ADDRLP4 68 +INDIRI4 +CNSTI4 855 +EQI4 $1208 +ADDRGP4 $1206 +JUMPV +line 155 +;155: { +LABELV $1208 +line 213 +;156: //level 1 - FIXME: level 1 will have *no* spins +;157: case BOTH_T1_BR_BL: +;158: case BOTH_T1__R__L: +;159: case BOTH_T1__R_BL: +;160: case BOTH_T1_TR_BL: +;161: case BOTH_T1_BR_TL: +;162: case BOTH_T1_BR__L: +;163: case BOTH_T1_TL_BR: +;164: case BOTH_T1__L_BR: +;165: case BOTH_T1__L__R: +;166: case BOTH_T1_BL_BR: +;167: case BOTH_T1_BL__R: +;168: case BOTH_T1_BL_TR: +;169: //level 2 +;170: case BOTH_T2_BR__L: +;171: case BOTH_T2_BR_BL: +;172: case BOTH_T2__R_BL: +;173: case BOTH_T2__L_BR: +;174: case BOTH_T2_BL_BR: +;175: case BOTH_T2_BL__R: +;176: //level 3 +;177: case BOTH_T3_BR__L: +;178: case BOTH_T3_BR_BL: +;179: case BOTH_T3__R_BL: +;180: case BOTH_T3__L_BR: +;181: case BOTH_T3_BL_BR: +;182: case BOTH_T3_BL__R: +;183: //level 4 +;184: case BOTH_T4_BR__L: +;185: case BOTH_T4_BR_BL: +;186: case BOTH_T4__R_BL: +;187: case BOTH_T4__L_BR: +;188: case BOTH_T4_BL_BR: +;189: case BOTH_T4_BL__R: +;190: //level 5 +;191: case BOTH_T5_BR_BL: +;192: case BOTH_T5__R__L: +;193: case BOTH_T5__R_BL: +;194: case BOTH_T5_TR_BL: +;195: case BOTH_T5_BR_TL: +;196: case BOTH_T5_BR__L: +;197: case BOTH_T5_TL_BR: +;198: case BOTH_T5__L_BR: +;199: case BOTH_T5__L__R: +;200: case BOTH_T5_BL_BR: +;201: case BOTH_T5_BL__R: +;202: case BOTH_T5_BL_TR: +;203: //special +;204: //case BOTH_A2_STABBACK1: +;205: case BOTH_ATTACK_BACK: +;206: case BOTH_CROUCHATTACKBACK1: +;207: case BOTH_BUTTERFLY_LEFT: +;208: case BOTH_BUTTERFLY_RIGHT: +;209: case BOTH_FJSS_TR_BL: +;210: case BOTH_FJSS_TL_BR: +;211: case BOTH_JUMPFLIPSLASHDOWN1: +;212: case BOTH_JUMPFLIPSTABDOWN: +;213: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1205 +JUMPV +line 214 +;214: break; +LABELV $1206 +line 216 +;215: } +;216: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1205 +endproc BG_SpinningSaberAnim 72 0 +export BG_SaberInSpecialAttack +proc BG_SaberInSpecialAttack 12 0 +line 220 +;217:} +;218: +;219:qboolean BG_SaberInSpecialAttack( int anim ) +;220:{ +line 221 +;221: switch ( anim&~ANIM_TOGGLEBIT ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 803 +LTI4 $1232 +ADDRLP4 0 +INDIRI4 +CNSTI4 819 +GTI4 $1236 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1237-3212 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1237 +address $1235 +address $1235 +address $1235 +address $1235 +address $1235 +address $1235 +address $1235 +address $1232 +address $1232 +address $1232 +address $1232 +address $1232 +address $1232 +address $1232 +address $1232 +address $1235 +address $1235 +code +LABELV $1236 +ADDRLP4 0 +INDIRI4 +CNSTI4 854 +EQI4 $1235 +ADDRLP4 0 +INDIRI4 +CNSTI4 855 +EQI4 $1235 +ADDRGP4 $1232 +JUMPV +line 222 +;222: { +LABELV $1235 +line 234 +;223: case BOTH_A2_STABBACK1: +;224: case BOTH_ATTACK_BACK: +;225: case BOTH_CROUCHATTACKBACK1: +;226: case BOTH_BUTTERFLY_LEFT: +;227: case BOTH_BUTTERFLY_RIGHT: +;228: case BOTH_FJSS_TR_BL: +;229: case BOTH_FJSS_TL_BR: +;230: case BOTH_LUNGE2_B__T_: +;231: case BOTH_FORCELEAP2_T__B_: +;232: case BOTH_JUMPFLIPSLASHDOWN1://# +;233: case BOTH_JUMPFLIPSTABDOWN://# +;234: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1231 +JUMPV +LABELV $1232 +line 236 +;235: } +;236: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1231 +endproc BG_SaberInSpecialAttack 12 0 +export BG_InRoll +proc BG_InRoll 8 0 +line 240 +;237:} +;238: +;239:qboolean BG_InRoll( playerState_t *ps, int anim ) +;240:{ +line 241 +;241: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 781 +LTI4 $1240 +ADDRLP4 0 +INDIRI4 +CNSTI4 784 +GTI4 $1240 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1246-3124 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1246 +address $1243 +address $1243 +address $1243 +address $1243 +code +line 242 +;242: { +LABELV $1243 +line 247 +;243: case BOTH_ROLL_F: +;244: case BOTH_ROLL_B: +;245: case BOTH_ROLL_R: +;246: case BOTH_ROLL_L: +;247: if ( ps->legsTimer > 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $1241 +line 248 +;248: { +line 249 +;249: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1239 +JUMPV +line 251 +;250: } +;251: break; +LABELV $1240 +LABELV $1241 +line 253 +;252: } +;253: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1239 +endproc BG_InRoll 8 0 +export BG_InDeathAnim +proc BG_InDeathAnim 8 0 +line 257 +;254:} +;255: +;256:qboolean BG_InDeathAnim( int anim ) +;257:{ +line 258 +;258: switch((anim&~ANIM_TOGGLEBIT)) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1249 +ADDRLP4 0 +INDIRI4 +CNSTI4 31 +GTI4 $1253 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1254 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1254 +address $1252 +address $1252 +address $1252 +address $1252 +address $1252 +address $1252 +address $1252 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1249 +address $1252 +address $1252 +address $1249 +address $1252 +address $1252 +address $1252 +address $1252 +address $1252 +address $1252 +address $1252 +address $1252 +code +LABELV $1253 +ADDRLP4 0 +INDIRI4 +CNSTI4 799 +EQI4 $1252 +ADDRGP4 $1249 +JUMPV +line 259 +;259: { +LABELV $1252 +line 279 +;260: case BOTH_DIVE1: +;261: case BOTH_DEATHBACKWARD1: +;262: case BOTH_DEATHBACKWARD2: +;263: case BOTH_DEATHFORWARD1: +;264: case BOTH_DEATHFORWARD2: +;265: case BOTH_DEATH1: +;266: case BOTH_DEATH2: +;267: case BOTH_DEATH3: +;268: case BOTH_DEATH4: +;269: case BOTH_DEATH5: +;270: case BOTH_DEATH6: +;271: case BOTH_DEATH7: +;272: +;273: case BOTH_DEATH1IDLE: +;274: case BOTH_LYINGDEATH1: +;275: case BOTH_STUMBLEDEATH1: +;276: case BOTH_FALLDEATH1: +;277: case BOTH_FALLDEATH1INAIR: +;278: case BOTH_FALLDEATH1LAND: +;279: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1248 +JUMPV +line 280 +;280: break; +LABELV $1249 +line 282 +;281: default: +;282: return qfalse; +CNSTI4 0 +RETI4 +line 283 +;283: break; +LABELV $1248 +endproc BG_InDeathAnim 8 0 +export PM_SaberInParry +proc PM_SaberInParry 4 0 +line 289 +;284: } +;285:} +;286: +;287://Called only where pm is valid (not all require pm, but some do): +;288:qboolean PM_SaberInParry( int move ) +;289:{ +line 290 +;290: if ( move >= LS_PARRY_UP && move <= LS_PARRY_LL ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 108 +LTI4 $1256 +ADDRLP4 0 +INDIRI4 +CNSTI4 112 +GTI4 $1256 +line 291 +;291: { +line 292 +;292: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1255 +JUMPV +LABELV $1256 +line 294 +;293: } +;294: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1255 +endproc PM_SaberInParry 4 0 +export PM_SaberInReflect +proc PM_SaberInReflect 4 0 +line 298 +;295:} +;296: +;297:qboolean PM_SaberInReflect( int move ) +;298:{ +line 299 +;299: if ( move >= LS_REFLECT_UP && move <= LS_REFLECT_LL ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 113 +LTI4 $1259 +ADDRLP4 0 +INDIRI4 +CNSTI4 117 +GTI4 $1259 +line 300 +;300: { +line 301 +;301: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1258 +JUMPV +LABELV $1259 +line 303 +;302: } +;303: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1258 +endproc PM_SaberInReflect 4 0 +export PM_SaberInStart +proc PM_SaberInStart 4 0 +line 307 +;304:} +;305: +;306:qboolean PM_SaberInStart( int move ) +;307:{ +line 308 +;308: if ( move >= LS_S_TL2BR && move <= LS_S_T2B ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $1262 +ADDRLP4 0 +INDIRI4 +CNSTI4 24 +GTI4 $1262 +line 309 +;309: { +line 310 +;310: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1261 +JUMPV +LABELV $1262 +line 312 +;311: } +;312: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1261 +endproc PM_SaberInStart 4 0 +export PM_InSaberAnim +proc PM_InSaberAnim 4 0 +line 316 +;313:} +;314: +;315:qboolean PM_InSaberAnim( int anim ) +;316:{ +line 317 +;317: if ( (anim&~ANIM_TOGGLEBIT) >= BOTH_A1_T__B_ && (anim&~ANIM_TOGGLEBIT) <= BOTH_H1_S1_BR ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 126 +LTI4 $1265 +ADDRLP4 0 +INDIRI4 +CNSTI4 535 +GTI4 $1265 +line 318 +;318: { +line 319 +;319: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1264 +JUMPV +LABELV $1265 +line 321 +;320: } +;321: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1264 +endproc PM_InSaberAnim 4 0 +export PM_InKnockDown +proc PM_InKnockDown 8 0 +line 325 +;322:} +;323: +;324:qboolean PM_InKnockDown( playerState_t *ps ) +;325:{ +line 326 +;326: switch ( (ps->legsAnim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 829 +LTI4 $1268 +ADDRLP4 0 +INDIRI4 +CNSTI4 847 +GTI4 $1268 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1275-3316 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1275 +address $1271 +address $1271 +address $1271 +address $1271 +address $1271 +address $1272 +address $1272 +address $1272 +address $1272 +address $1272 +address $1268 +address $1268 +address $1272 +address $1272 +address $1272 +address $1272 +address $1272 +address $1272 +address $1272 +code +line 327 +;327: { +LABELV $1271 +line 333 +;328: case BOTH_KNOCKDOWN1: +;329: case BOTH_KNOCKDOWN2: +;330: case BOTH_KNOCKDOWN3: +;331: case BOTH_KNOCKDOWN4: +;332: case BOTH_KNOCKDOWN5: +;333: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1267 +JUMPV +line 334 +;334: break; +LABELV $1272 +line 347 +;335: case BOTH_GETUP1: +;336: case BOTH_GETUP2: +;337: case BOTH_GETUP3: +;338: case BOTH_GETUP4: +;339: case BOTH_GETUP5: +;340: case BOTH_FORCE_GETUP_F1: +;341: case BOTH_FORCE_GETUP_F2: +;342: case BOTH_FORCE_GETUP_B1: +;343: case BOTH_FORCE_GETUP_B2: +;344: case BOTH_FORCE_GETUP_B3: +;345: case BOTH_FORCE_GETUP_B4: +;346: case BOTH_FORCE_GETUP_B5: +;347: if ( ps->legsTimer ) +ADDRFP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1269 +line 348 +;348: { +line 349 +;349: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1267 +JUMPV +line 351 +;350: } +;351: break; +LABELV $1268 +LABELV $1269 +line 353 +;352: } +;353: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1267 +endproc PM_InKnockDown 8 0 +export PM_PainAnim +proc PM_PainAnim 8 0 +line 357 +;354:} +;355: +;356:qboolean PM_PainAnim( int anim ) +;357:{ +line 358 +;358: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 86 +LTI4 $1278 +ADDRLP4 0 +INDIRI4 +CNSTI4 104 +GTI4 $1278 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1282-344 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1282 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +address $1281 +code +line 359 +;359: { +LABELV $1281 +line 379 +;360: case BOTH_PAIN1: //# First take pain anim +;361: case BOTH_PAIN2: //# Second take pain anim +;362: case BOTH_PAIN3: //# Third take pain anim +;363: case BOTH_PAIN4: //# Fourth take pain anim +;364: case BOTH_PAIN5: //# Fifth take pain anim - from behind +;365: case BOTH_PAIN6: //# Sixth take pain anim - from behind +;366: case BOTH_PAIN7: //# Seventh take pain anim - from behind +;367: case BOTH_PAIN8: //# Eigth take pain anim - from behind +;368: case BOTH_PAIN9: //# +;369: case BOTH_PAIN10: //# +;370: case BOTH_PAIN11: //# +;371: case BOTH_PAIN12: //# +;372: case BOTH_PAIN13: //# +;373: case BOTH_PAIN14: //# +;374: case BOTH_PAIN15: //# +;375: case BOTH_PAIN16: //# +;376: case BOTH_PAIN17: //# +;377: case BOTH_PAIN18: //# +;378: case BOTH_PAIN19: //# +;379: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1277 +JUMPV +line 380 +;380: break; +LABELV $1278 +line 382 +;381: } +;382: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1277 +endproc PM_PainAnim 8 0 +export PM_JumpingAnim +proc PM_JumpingAnim 8 0 +line 386 +;383:} +;384: +;385:qboolean PM_JumpingAnim( int anim ) +;386:{ +line 387 +;387: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 752 +LTI4 $1285 +ADDRLP4 0 +INDIRI4 +CNSTI4 776 +GTI4 $1285 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1289-3008 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1289 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +address $1288 +code +line 388 +;388: { +LABELV $1288 +line 414 +;389: case BOTH_JUMP1: //# Jump - wind-up and leave ground +;390: case BOTH_INAIR1: //# In air loop (from jump) +;391: case BOTH_LAND1: //# Landing (from in air loop) +;392: case BOTH_LAND2: //# Landing Hard (from a great height) +;393: case BOTH_JUMPBACK1: //# Jump backwards - wind-up and leave ground +;394: case BOTH_INAIRBACK1: //# In air loop (from jump back) +;395: case BOTH_LANDBACK1: //# Landing backwards(from in air loop) +;396: case BOTH_JUMPLEFT1: //# Jump left - wind-up and leave ground +;397: case BOTH_INAIRLEFT1: //# In air loop (from jump left) +;398: case BOTH_LANDLEFT1: //# Landing left(from in air loop) +;399: case BOTH_JUMPRIGHT1: //# Jump right - wind-up and leave ground +;400: case BOTH_INAIRRIGHT1: //# In air loop (from jump right) +;401: case BOTH_LANDRIGHT1: //# Landing right(from in air loop) +;402: case BOTH_FORCEJUMP1: //# Jump - wind-up and leave ground +;403: case BOTH_FORCEINAIR1: //# In air loop (from jump) +;404: case BOTH_FORCELAND1: //# Landing (from in air loop) +;405: case BOTH_FORCEJUMPBACK1: //# Jump backwards - wind-up and leave ground +;406: case BOTH_FORCEINAIRBACK1: //# In air loop (from jump back) +;407: case BOTH_FORCELANDBACK1: //# Landing backwards(from in air loop) +;408: case BOTH_FORCEJUMPLEFT1: //# Jump left - wind-up and leave ground +;409: case BOTH_FORCEINAIRLEFT1: //# In air loop (from jump left) +;410: case BOTH_FORCELANDLEFT1: //# Landing left(from in air loop) +;411: case BOTH_FORCEJUMPRIGHT1: //# Jump right - wind-up and leave ground +;412: case BOTH_FORCEINAIRRIGHT1: //# In air loop (from jump right) +;413: case BOTH_FORCELANDRIGHT1: //# Landing right(from in air loop) +;414: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1284 +JUMPV +line 415 +;415: break; +LABELV $1285 +line 417 +;416: } +;417: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1284 +endproc PM_JumpingAnim 8 0 +export PM_LandingAnim +proc PM_LandingAnim 24 0 +line 421 +;418:} +;419: +;420:qboolean PM_LandingAnim( int anim ) +;421:{ +line 422 +;422: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 764 +EQI4 $1295 +ADDRLP4 8 +CNSTI4 767 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1295 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +GTI4 $1297 +LABELV $1296 +ADDRLP4 0 +INDIRI4 +CNSTI4 754 +LTI4 $1292 +ADDRLP4 0 +INDIRI4 +CNSTI4 761 +GTI4 $1292 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1298-3016 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1298 +address $1295 +address $1295 +address $1292 +address $1292 +address $1295 +address $1292 +address $1292 +address $1295 +code +LABELV $1297 +ADDRLP4 20 +CNSTI4 770 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 20 +INDIRI4 +EQI4 $1295 +ADDRLP4 0 +INDIRI4 +CNSTI4 773 +EQI4 $1295 +ADDRLP4 0 +INDIRI4 +ADDRLP4 20 +INDIRI4 +LTI4 $1292 +LABELV $1300 +ADDRLP4 0 +INDIRI4 +CNSTI4 776 +EQI4 $1295 +ADDRGP4 $1292 +JUMPV +line 423 +;423: { +LABELV $1295 +line 433 +;424: case BOTH_LAND1: //# Landing (from in air loop) +;425: case BOTH_LAND2: //# Landing Hard (from a great height) +;426: case BOTH_LANDBACK1: //# Landing backwards(from in air loop) +;427: case BOTH_LANDLEFT1: //# Landing left(from in air loop) +;428: case BOTH_LANDRIGHT1: //# Landing right(from in air loop) +;429: case BOTH_FORCELAND1: //# Landing (from in air loop) +;430: case BOTH_FORCELANDBACK1: //# Landing backwards(from in air loop) +;431: case BOTH_FORCELANDLEFT1: //# Landing left(from in air loop) +;432: case BOTH_FORCELANDRIGHT1: //# Landing right(from in air loop) +;433: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1291 +JUMPV +line 434 +;434: break; +LABELV $1292 +line 436 +;435: } +;436: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1291 +endproc PM_LandingAnim 24 0 +export PM_SpinningAnim +proc PM_SpinningAnim 4 4 +line 440 +;437:} +;438: +;439:qboolean PM_SpinningAnim( int anim ) +;440:{ +line 449 +;441: /* +;442: switch ( anim ) +;443: { +;444: //FIXME: list any other spinning anims +;445: default: +;446: break; +;447: } +;448: */ +;449: return BG_SpinningSaberAnim( anim ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 BG_SpinningSaberAnim +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $1301 +endproc PM_SpinningAnim 4 4 +export PM_InOnGroundAnim +proc PM_InOnGroundAnim 32 0 +line 453 +;450:} +;451: +;452:qboolean PM_InOnGroundAnim ( int anim ) +;453:{ +line 454 +;454: switch( anim&~ANIM_TOGGLEBIT ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 61 +LTI4 $1307 +ADDRLP4 0 +INDIRI4 +CNSTI4 65 +GTI4 $1308 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1309-244 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1309 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +code +LABELV $1307 +ADDRLP4 12 +CNSTI4 27 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $1306 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LTI4 $1303 +LABELV $1311 +ADDRLP4 0 +INDIRI4 +CNSTI4 42 +LTI4 $1303 +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +GTI4 $1303 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1312-168 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1312 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +code +LABELV $1308 +ADDRLP4 24 +CNSTI4 829 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 24 +INDIRI4 +EQI4 $1306 +ADDRLP4 0 +INDIRI4 +CNSTI4 830 +EQI4 $1306 +ADDRLP4 0 +INDIRI4 +ADDRLP4 24 +INDIRI4 +LTI4 $1303 +LABELV $1314 +ADDRLP4 0 +INDIRI4 +CNSTI4 899 +LTI4 $1303 +ADDRLP4 0 +INDIRI4 +CNSTI4 916 +GTI4 $1303 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1315-3596 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1315 +address $1306 +address $1303 +address $1303 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1303 +address $1303 +address $1306 +code +line 455 +;455: { +LABELV $1306 +line 483 +;456: case BOTH_DEAD1: +;457: case BOTH_DEAD2: +;458: case BOTH_DEAD3: +;459: case BOTH_DEAD4: +;460: case BOTH_DEAD5: +;461: case BOTH_DEADFORWARD1: +;462: case BOTH_DEADBACKWARD1: +;463: case BOTH_DEADFORWARD2: +;464: case BOTH_DEADBACKWARD2: +;465: case BOTH_LYINGDEATH1: +;466: case BOTH_LYINGDEAD1: +;467: case BOTH_PAIN2WRITHE1: //# Transition from upright position to writhing on ground anim +;468: case BOTH_WRITHING1: //# Lying on ground writhing in pain +;469: case BOTH_WRITHING1RLEG: //# Lying on ground writhing in pain: holding right leg +;470: case BOTH_WRITHING1LLEG: //# Lying on ground writhing in pain: holding left leg +;471: case BOTH_WRITHING2: //# Lying on stomache writhing in pain +;472: case BOTH_INJURED1: //# Lying down: against wall - can also be sleeping +;473: case BOTH_CRAWLBACK1: //# Lying on back: crawling backwards with elbows +;474: case BOTH_INJURED2: //# Injured pose 2 +;475: case BOTH_INJURED3: //# Injured pose 3 +;476: case BOTH_INJURED6: //# Injured pose 6 +;477: case BOTH_INJURED6ATTACKSTART: //# Start attack while in injured 6 pose +;478: case BOTH_INJURED6ATTACKSTOP: //# End attack while in injured 6 pose +;479: case BOTH_INJURED6COMBADGE: //# Hit combadge while in injured 6 pose +;480: case BOTH_INJURED6POINT: //# Chang points to door while in injured state +;481: case BOTH_KNOCKDOWN1: //# +;482: case BOTH_KNOCKDOWN2: //# +;483: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1302 +JUMPV +line 484 +;484: break; +LABELV $1303 +line 487 +;485: } +;486: +;487: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1302 +endproc PM_InOnGroundAnim 32 0 +export PM_InRollComplete +proc PM_InRollComplete 8 0 +line 491 +;488:} +;489: +;490:qboolean PM_InRollComplete( playerState_t *ps, int anim ) +;491:{ +line 492 +;492: switch ( (anim&~ANIM_TOGGLEBIT) ) +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 781 +LTI4 $1318 +ADDRLP4 0 +INDIRI4 +CNSTI4 784 +GTI4 $1318 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1324-3124 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1324 +address $1321 +address $1321 +address $1321 +address $1321 +code +line 493 +;493: { +LABELV $1321 +line 498 +;494: case BOTH_ROLL_F: +;495: case BOTH_ROLL_B: +;496: case BOTH_ROLL_R: +;497: case BOTH_ROLL_L: +;498: if ( ps->legsTimer < 1 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CNSTI4 1 +GEI4 $1319 +line 499 +;499: { +line 500 +;500: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1317 +JUMPV +line 502 +;501: } +;502: break; +LABELV $1318 +LABELV $1319 +line 504 +;503: } +;504: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1317 +endproc PM_InRollComplete 8 0 +export PM_AnimLength +proc PM_AnimLength 8 4 +line 508 +;505:} +;506: +;507:int PM_AnimLength( int index, animNumber_t anim ) +;508:{ +line 509 +;509: if (anim >= MAX_ANIMATIONS) +ADDRFP4 4 +INDIRI4 +CNSTI4 1089 +LTI4 $1327 +line 510 +;510: { +line 511 +;511: return -1; +CNSTI4 -1 +RETI4 +ADDRGP4 $1326 +JUMPV +LABELV $1327 +line 513 +;512: } +;513: return pm->animations[anim].numFrames * fabs(pm->animations[anim].frameLerp); +ADDRLP4 0 +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 pm +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +MULF4 +CVFI4 4 +RETI4 +LABELV $1326 +endproc PM_AnimLength 8 4 +export PM_DebugLegsAnim +proc PM_DebugLegsAnim 40 8 +line 517 +;514:} +;515: +;516:void PM_DebugLegsAnim(int anim) +;517:{ +line 518 +;518: int oldAnim = (pm->ps->legsAnim & ~ANIM_TOGGLEBIT); +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +line 519 +;519: int newAnim = (anim & ~ANIM_TOGGLEBIT); +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +line 521 +;520: +;521: if (oldAnim < MAX_TOTALANIMATIONS && oldAnim >= BOTH_DEATH1 && +ADDRLP4 12 +CNSTI4 1090 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +GEI4 $1330 +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LTI4 $1330 +ADDRLP4 4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +GEI4 $1330 +ADDRLP4 4 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LTI4 $1330 +line 523 +;522: newAnim < MAX_TOTALANIMATIONS && newAnim >= BOTH_DEATH1) +;523: { +line 524 +;524: Com_Printf("OLD: %s\n", animTable[oldAnim]); +ADDRGP4 $1332 +ARGP4 +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 animTable +ADDP4 +INDIRB +ASGNB 8 +ADDRLP4 24 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 525 +;525: Com_Printf("NEW: %s\n", animTable[newAnim]); +ADDRGP4 $1333 +ARGP4 +ADDRLP4 32 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 animTable +ADDP4 +INDIRB +ASGNB 8 +ADDRLP4 32 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 526 +;526: } +LABELV $1330 +line 527 +;527:} +LABELV $1329 +endproc PM_DebugLegsAnim 40 8 +data +export BGPAFtextLoaded +align 4 +LABELV BGPAFtextLoaded +byte 4 0 +export BG_ParseAnimationFile +code +proc BG_ParseAnimationFile 84 12 +line 548 +;528:/* +;529:============================================================================== +;530:END: Animation utility functions (sequence checking) +;531:============================================================================== +;532:*/ +;533: +;534:/* +;535:====================== +;536:BG_ParseAnimationFile +;537: +;538:Read a configuration file containing animation coutns and rates +;539:models/players/visor/animation.cfg, etc +;540: +;541:====================== +;542:*/ +;543:char BGPAFtext[40000]; +;544:qboolean BGPAFtextLoaded = qfalse; +;545:animation_t bgGlobalAnimations[MAX_TOTALANIMATIONS]; +;546: +;547:qboolean BG_ParseAnimationFile(const char *filename) +;548:{ +line 561 +;549: char *text_p; +;550: int len; +;551: int i; +;552: char *token; +;553: float fps; +;554: int skip; +;555: +;556: fileHandle_t f; +;557: int animNum; +;558: +;559: +;560: // load the file +;561: if (!BGPAFtextLoaded) +ADDRGP4 BGPAFtextLoaded +INDIRI4 +CNSTI4 0 +NEI4 $1335 +line 562 +;562: { //rww - We are always using the same animation config now. So only load it once. +line 563 +;563: len = trap_FS_FOpenFile( filename, &f, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 24 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 32 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 20 +ADDRLP4 32 +INDIRI4 +ASGNI4 +line 564 +;564: if ( len <= 0 ) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +GTI4 $1337 +line 565 +;565: { +line 566 +;566: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1334 +JUMPV +LABELV $1337 +line 568 +;567: } +;568: if ( len >= sizeof( BGPAFtext ) - 1 ) +ADDRLP4 20 +INDIRI4 +CVIU4 4 +CNSTU4 39999 +LTU4 $1339 +line 569 +;569: { +line 571 +;570: //Com_Printf( "File %s too long\n", filename ); +;571: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1334 +JUMPV +LABELV $1339 +line 574 +;572: } +;573: +;574: trap_FS_Read( BGPAFtext, len, f ); +ADDRGP4 BGPAFtext +ARGP4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 575 +;575: BGPAFtext[len] = 0; +ADDRLP4 20 +INDIRI4 +ADDRGP4 BGPAFtext +ADDP4 +CNSTI1 0 +ASGNI1 +line 576 +;576: trap_FS_FCloseFile( f ); +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 577 +;577: } +ADDRGP4 $1336 +JUMPV +LABELV $1335 +line 579 +;578: else +;579: { +line 580 +;580: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1334 +JUMPV +LABELV $1336 +line 584 +;581: } +;582: +;583: // parse the text +;584: text_p = BGPAFtext; +ADDRLP4 16 +ADDRGP4 BGPAFtext +ASGNP4 +line 585 +;585: skip = 0; // quiet the compiler warning +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +line 590 +;586: +;587: //FIXME: have some way of playing anims backwards... negative numFrames? +;588: +;589: //initialize anim array so that from 0 to MAX_ANIMATIONS, set default values of 0 1 0 100 +;590: for(i = 0; i < MAX_ANIMATIONS; i++) +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $1341 +line 591 +;591: { +line 592 +;592: bgGlobalAnimations[i].firstFrame = 0; +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations +ADDP4 +CNSTI4 0 +ASGNI4 +line 593 +;593: bgGlobalAnimations[i].numFrames = 0; +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 594 +;594: bgGlobalAnimations[i].loopFrames = -1; +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+8 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 595 +;595: bgGlobalAnimations[i].frameLerp = 100; +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+12 +ADDP4 +CNSTI4 100 +ASGNI4 +line 596 +;596: bgGlobalAnimations[i].initialLerp = 100; +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+16 +ADDP4 +CNSTI4 100 +ASGNI4 +line 597 +;597: } +LABELV $1342 +line 590 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1089 +LTI4 $1341 +ADDRGP4 $1350 +JUMPV +LABELV $1349 +line 601 +;598: +;599: // read information for each frame +;600: while(1) +;601: { +line 602 +;602: token = COM_Parse( (const char **)(&text_p) ); +ADDRLP4 16 +ARGP4 +ADDRLP4 32 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +ASGNP4 +line 604 +;603: +;604: if ( !token || !token[0]) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1354 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1352 +LABELV $1354 +line 605 +;605: { +line 606 +;606: break; +ADDRGP4 $1351 +JUMPV +LABELV $1352 +line 609 +;607: } +;608: +;609: animNum = GetIDForString(animTable, token); +ADDRGP4 animTable +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 GetIDForString +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 610 +;610: if(animNum == -1) +ADDRLP4 8 +INDIRI4 +CNSTI4 -1 +NEI4 $1355 +line 611 +;611: { +line 616 +;612://#ifndef FINAL_BUILD +;613:#ifdef _DEBUG +;614: Com_Printf(S_COLOR_RED"WARNING: Unknown token %s in %s\n", token, filename); +;615:#endif +;616: continue; +ADDRGP4 $1350 +JUMPV +LABELV $1355 +line 619 +;617: } +;618: +;619: token = COM_Parse( (const char **)(&text_p) ); +ADDRLP4 16 +ARGP4 +ADDRLP4 44 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 44 +INDIRP4 +ASGNP4 +line 620 +;620: if ( !token ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1357 +line 621 +;621: { +line 622 +;622: break; +ADDRGP4 $1351 +JUMPV +LABELV $1357 +line 624 +;623: } +;624: bgGlobalAnimations[animNum].firstFrame = atoi( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 atoi +CALLI4 +ASGNI4 +CNSTI4 28 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations +ADDP4 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 626 +;625: +;626: token = COM_Parse( (const char **)(&text_p) ); +ADDRLP4 16 +ARGP4 +ADDRLP4 52 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 52 +INDIRP4 +ASGNP4 +line 627 +;627: if ( !token ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1359 +line 628 +;628: { +line 629 +;629: break; +ADDRGP4 $1351 +JUMPV +LABELV $1359 +line 631 +;630: } +;631: bgGlobalAnimations[animNum].numFrames = atoi( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 atoi +CALLI4 +ASGNI4 +CNSTI4 28 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+4 +ADDP4 +ADDRLP4 56 +INDIRI4 +ASGNI4 +line 633 +;632: +;633: token = COM_Parse( (const char **)(&text_p) ); +ADDRLP4 16 +ARGP4 +ADDRLP4 60 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 60 +INDIRP4 +ASGNP4 +line 634 +;634: if ( !token ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1362 +line 635 +;635: { +line 636 +;636: break; +ADDRGP4 $1351 +JUMPV +LABELV $1362 +line 638 +;637: } +;638: bgGlobalAnimations[animNum].loopFrames = atoi( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 atoi +CALLI4 +ASGNI4 +CNSTI4 28 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+8 +ADDP4 +ADDRLP4 64 +INDIRI4 +ASGNI4 +line 640 +;639: +;640: token = COM_Parse( (const char **)(&text_p) ); +ADDRLP4 16 +ARGP4 +ADDRLP4 68 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 641 +;641: if ( !token ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1365 +line 642 +;642: { +line 643 +;643: break; +ADDRGP4 $1351 +JUMPV +LABELV $1365 +line 645 +;644: } +;645: fps = atof( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 72 +INDIRF4 +ASGNF4 +line 646 +;646: if ( fps == 0 ) +ADDRLP4 12 +INDIRF4 +CNSTF4 0 +NEF4 $1367 +line 647 +;647: { +line 648 +;648: fps = 1;//Don't allow divide by zero error +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 649 +;649: } +LABELV $1367 +line 650 +;650: if ( fps < 0 ) +ADDRLP4 12 +INDIRF4 +CNSTF4 0 +GEF4 $1369 +line 651 +;651: {//backwards +line 652 +;652: bgGlobalAnimations[animNum].frameLerp = floor(1000.0f / fps); +CNSTF4 1148846080 +ADDRLP4 12 +INDIRF4 +DIVF4 +ARGF4 +ADDRLP4 76 +ADDRGP4 floor +CALLF4 +ASGNF4 +CNSTI4 28 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+12 +ADDP4 +ADDRLP4 76 +INDIRF4 +CVFI4 4 +ASGNI4 +line 653 +;653: } +ADDRGP4 $1370 +JUMPV +LABELV $1369 +line 655 +;654: else +;655: { +line 656 +;656: bgGlobalAnimations[animNum].frameLerp = ceil(1000.0f / fps); +CNSTF4 1148846080 +ADDRLP4 12 +INDIRF4 +DIVF4 +ARGF4 +ADDRLP4 76 +ADDRGP4 ceil +CALLF4 +ASGNF4 +CNSTI4 28 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+12 +ADDP4 +ADDRLP4 76 +INDIRF4 +CVFI4 4 +ASGNI4 +line 657 +;657: } +LABELV $1370 +line 659 +;658: +;659: bgGlobalAnimations[animNum].initialLerp = ceil(1000.0f / fabs(fps)); +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 76 +ADDRGP4 fabs +CALLF4 +ASGNF4 +CNSTF4 1148846080 +ADDRLP4 76 +INDIRF4 +DIVF4 +ARGF4 +ADDRLP4 80 +ADDRGP4 ceil +CALLF4 +ASGNF4 +CNSTI4 28 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 bgGlobalAnimations+16 +ADDP4 +ADDRLP4 80 +INDIRF4 +CVFI4 4 +ASGNI4 +line 660 +;660: } +LABELV $1350 +line 600 +ADDRGP4 $1349 +JUMPV +LABELV $1351 +line 676 +;661: +;662:#ifdef _DEBUG +;663: //Check the array, and print the ones that have nothing in them. +;664: for(i = 0; i < MAX_ANIMATIONS; i++) +;665: { +;666: if (animTable[i].name != NULL) // This animation reference exists. +;667: { +;668: if (bgGlobalAnimations[i].firstFrame <= 0 && bgGlobalAnimations[i].numFrames <=0) +;669: { // This is an empty animation reference. +;670: Com_Printf("***ANIMTABLE reference #%d (%s) is empty!\n", i, animTable[i].name); +;671: } +;672: } +;673: } +;674:#endif // _DEBUG +;675: +;676: BGPAFtextLoaded = qtrue; +ADDRGP4 BGPAFtextLoaded +CNSTI4 1 +ASGNI4 +line 677 +;677: return qtrue; +CNSTI4 1 +RETI4 +LABELV $1334 +endproc BG_ParseAnimationFile 84 12 +proc PM_StartLegsAnim 28 16 +line 688 +;678:} +;679: +;680: +;681: +;682:/* +;683:=================== +;684:LEGS Animations +;685:Base animation for overall body +;686:=================== +;687:*/ +;688:static void PM_StartLegsAnim( int anim ) { +line 689 +;689: if ( pm->ps->pm_type >= PM_DEAD ) { +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LTI4 $1375 +line 690 +;690: return; +ADDRGP4 $1374 +JUMPV +LABELV $1375 +line 692 +;691: } +;692: if ( pm->ps->legsTimer > 0 ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $1377 +line 693 +;693: return; // a high priority animation is running +ADDRGP4 $1374 +JUMPV +LABELV $1377 +line 696 +;694: } +;695: +;696: if (pm->ps->usingATST) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1304 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1379 +line 697 +;697: { //animation is handled mostly client-side with only a few exceptions +line 698 +;698: return; +ADDRGP4 $1374 +JUMPV +LABELV $1379 +line 701 +;699: } +;700: +;701: if (BG_InSaberStandAnim(anim) && pm->ps->weapon == WP_SABER && pm->ps->dualBlade) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 BG_InSaberStandAnim +CALLI4 +ASGNI4 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1381 +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $1381 +ADDRLP4 12 +INDIRP4 +CNSTI4 1352 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1381 +line 702 +;702: { //a bit of a hack, but dualblade is cheat-only anyway +line 703 +;703: anim = BOTH_STAND1; +ADDRFP4 0 +CNSTI4 550 +ASGNI4 +line 704 +;704: } +LABELV $1381 +line 706 +;705: +;706: pm->ps->legsAnim = ( ( pm->ps->legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +ASGNP4 +ADDRLP4 20 +CNSTI4 2048 +ASGNI4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +BANDI4 +ADDRLP4 20 +INDIRI4 +BXORI4 +ADDRFP4 0 +INDIRI4 +BORI4 +ASGNI4 +line 709 +;707: | anim; +;708: +;709: if ( pm->debugLevel ) { +ADDRGP4 pm +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1383 +line 710 +;710: Com_Printf("%d: StartLegsAnim %d, on client#%d\n", pm->cmd.serverTime, anim, pm->ps->clientNum); +ADDRGP4 $1385 +ARGP4 +ADDRLP4 24 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 711 +;711: } +LABELV $1383 +line 712 +;712:} +LABELV $1374 +endproc PM_StartLegsAnim 28 16 +export PM_ContinueLegsAnim +proc PM_ContinueLegsAnim 0 4 +line 714 +;713: +;714:void PM_ContinueLegsAnim( int anim ) { +line 715 +;715: if ( ( pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) == anim ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ADDRFP4 0 +INDIRI4 +NEI4 $1387 +line 716 +;716: return; +ADDRGP4 $1386 +JUMPV +LABELV $1387 +line 718 +;717: } +;718: if ( pm->ps->legsTimer > 0 ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $1389 +line 719 +;719: return; // a high priority animation is running +ADDRGP4 $1386 +JUMPV +LABELV $1389 +line 722 +;720: } +;721: +;722: PM_StartLegsAnim( anim ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 PM_StartLegsAnim +CALLV +pop +line 723 +;723:} +LABELV $1386 +endproc PM_ContinueLegsAnim 0 4 +export PM_ForceLegsAnim +proc PM_ForceLegsAnim 32 8 +line 725 +;724: +;725:void PM_ForceLegsAnim( int anim) { +line 726 +;726: if (BG_InSpecialJump(pm->ps->legsAnim) && +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 BG_InSpecialJump +CALLI4 +ASGNI4 +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $1392 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LEI4 $1392 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 BG_InSpecialJump +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $1392 +line 729 +;727: pm->ps->legsTimer > 0 && +;728: !BG_InSpecialJump(anim)) +;729: { +line 730 +;730: return; +ADDRGP4 $1391 +JUMPV +LABELV $1392 +line 733 +;731: } +;732: +;733: if (BG_InRoll(pm->ps, pm->ps->legsAnim) && +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRGP4 BG_InRoll +CALLI4 +ASGNI4 +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRLP4 20 +INDIRI4 +EQI4 $1394 +ADDRLP4 24 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +LEI4 $1394 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 BG_InRoll +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $1394 +line 736 +;734: pm->ps->legsTimer > 0 && +;735: !BG_InRoll(pm->ps, anim)) +;736: { +line 737 +;737: return; +ADDRGP4 $1391 +JUMPV +LABELV $1394 +line 740 +;738: } +;739: +;740: pm->ps->legsTimer = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +CNSTI4 0 +ASGNI4 +line 741 +;741: PM_StartLegsAnim( anim ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 PM_StartLegsAnim +CALLV +pop +line 742 +;742:} +LABELV $1391 +endproc PM_ForceLegsAnim 32 8 +export PM_StartTorsoAnim +proc PM_StartTorsoAnim 24 4 +line 752 +;743: +;744: +;745: +;746:/* +;747:=================== +;748:TORSO Animations +;749:Override animations for upper body +;750:=================== +;751:*/ +;752:void PM_StartTorsoAnim( int anim ) { +line 753 +;753: if ( pm->ps->pm_type >= PM_DEAD ) { +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LTI4 $1397 +line 754 +;754: return; +ADDRGP4 $1396 +JUMPV +LABELV $1397 +line 757 +;755: } +;756: +;757: if (pm->ps->usingATST) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1304 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1399 +line 758 +;758: { //animation is handled mostly client-side with only a few exceptions +line 759 +;759: return; +ADDRGP4 $1396 +JUMPV +LABELV $1399 +line 762 +;760: } +;761: +;762: if (BG_InSaberStandAnim(anim) && pm->ps->weapon == WP_SABER && pm->ps->dualBlade) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 BG_InSaberStandAnim +CALLI4 +ASGNI4 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1401 +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $1401 +ADDRLP4 12 +INDIRP4 +CNSTI4 1352 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1401 +line 763 +;763: { //a bit of a hack, but dualblade is cheat-only anyway +line 764 +;764: anim = BOTH_STAND1; +ADDRFP4 0 +CNSTI4 550 +ASGNI4 +line 765 +;765: } +LABELV $1401 +line 767 +;766: +;767: pm->ps->torsoAnim = ( ( pm->ps->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +ASGNP4 +ADDRLP4 20 +CNSTI4 2048 +ASGNI4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +BANDI4 +ADDRLP4 20 +INDIRI4 +BXORI4 +ADDRFP4 0 +INDIRI4 +BORI4 +ASGNI4 +line 769 +;768: | anim; +;769:} +LABELV $1396 +endproc PM_StartTorsoAnim 24 4 +export PM_SetLegsAnimTimer +proc PM_SetLegsAnimTimer 0 0 +line 779 +;770: +;771: +;772:/* +;773:------------------------- +;774:PM_SetLegsAnimTimer +;775:------------------------- +;776:*/ +;777: +;778:void PM_SetLegsAnimTimer(int time ) +;779:{ +line 780 +;780: pm->ps->legsTimer = time; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 782 +;781: +;782: if (pm->ps->legsTimer < 0 && time != -1 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $1404 +ADDRFP4 0 +INDIRI4 +CNSTI4 -1 +EQI4 $1404 +line 783 +;783: {//Cap timer to 0 if was counting down, but let it be -1 if that was intentional. NOTENOTE Yeah this seems dumb, but it mirrors SP. +line 784 +;784: pm->ps->legsTimer = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +CNSTI4 0 +ASGNI4 +line 785 +;785: } +LABELV $1404 +line 786 +;786:} +LABELV $1403 +endproc PM_SetLegsAnimTimer 0 0 +export PM_SetTorsoAnimTimer +proc PM_SetTorsoAnimTimer 0 0 +line 795 +;787: +;788:/* +;789:------------------------- +;790:PM_SetTorsoAnimTimer +;791:------------------------- +;792:*/ +;793: +;794:void PM_SetTorsoAnimTimer(int time ) +;795:{ +line 796 +;796: pm->ps->torsoTimer = time; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 798 +;797: +;798: if (pm->ps->torsoTimer < 0 && time != -1 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $1407 +ADDRFP4 0 +INDIRI4 +CNSTI4 -1 +EQI4 $1407 +line 799 +;799: {//Cap timer to 0 if was counting down, but let it be -1 if that was intentional. NOTENOTE Yeah this seems dumb, but it mirrors SP. +line 800 +;800: pm->ps->torsoTimer = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +CNSTI4 0 +ASGNI4 +line 801 +;801: } +LABELV $1407 +line 802 +;802:} +LABELV $1406 +endproc PM_SetTorsoAnimTimer 0 0 +export BG_SaberStartTransAnim +proc BG_SaberStartTransAnim 16 0 +line 805 +;803: +;804:void BG_SaberStartTransAnim( int saberAnimLevel, int anim, float *animSpeed ) +;805:{ +line 806 +;806: if ( ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T1_BR__R && +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 133 +LTI4 $1413 +ADDRLP4 0 +INDIRI4 +CNSTI4 174 +LEI4 $1414 +LABELV $1413 +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 210 +LTI4 $1415 +ADDRLP4 4 +INDIRI4 +CNSTI4 251 +LEI4 $1414 +LABELV $1415 +ADDRLP4 8 +ADDRFP4 4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 287 +LTI4 $1410 +ADDRLP4 8 +INDIRI4 +CNSTI4 328 +GTI4 $1410 +LABELV $1414 +line 812 +;807: (anim&~ANIM_TOGGLEBIT) <= BOTH_T1_BL_TL ) || +;808: ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T2_BR__R && +;809: (anim&~ANIM_TOGGLEBIT) <= BOTH_T2_BL_TL ) || +;810: ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T3_BR__R && +;811: (anim&~ANIM_TOGGLEBIT) <= BOTH_T3_BL_TL ) ) +;812: { +line 813 +;813: if ( saberAnimLevel == FORCE_LEVEL_1 ) +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +NEI4 $1416 +line 814 +;814: { +line 815 +;815: *animSpeed *= 1.5; +ADDRLP4 12 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTF4 1069547520 +ADDRLP4 12 +INDIRP4 +INDIRF4 +MULF4 +ASGNF4 +line 816 +;816: } +ADDRGP4 $1417 +JUMPV +LABELV $1416 +line 817 +;817: else if ( saberAnimLevel == FORCE_LEVEL_3 ) +ADDRFP4 0 +INDIRI4 +CNSTI4 3 +NEI4 $1418 +line 818 +;818: { +line 819 +;819: *animSpeed *= 0.75; +ADDRLP4 12 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTF4 1061158912 +ADDRLP4 12 +INDIRP4 +INDIRF4 +MULF4 +ASGNF4 +line 820 +;820: } +LABELV $1418 +LABELV $1417 +line 821 +;821: } +LABELV $1410 +line 822 +;822:} +LABELV $1409 +endproc BG_SaberStartTransAnim 16 0 +export PM_SetAnimFinal +proc PM_SetAnimFinal 36 12 +line 831 +;823: +;824:/* +;825:------------------------- +;826:PM_SetAnimFinal +;827:------------------------- +;828:*/ +;829:void PM_SetAnimFinal(int setAnimParts,int anim,int setAnimFlags, +;830: int blendTime) // default blendTime=350 +;831:{ +line 832 +;832: animation_t *animations = pm->animations; +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +line 834 +;833: +;834: float editAnimSpeed = 0; +ADDRLP4 4 +CNSTF4 0 +ASGNF4 +line 836 +;835: +;836: if (!animations) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1421 +line 837 +;837: { +line 838 +;838: return; +ADDRGP4 $1420 +JUMPV +LABELV $1421 +line 842 +;839: } +;840: +;841: //NOTE: Setting blendTime here breaks actual blending.. +;842: blendTime = 0; +ADDRFP4 12 +CNSTI4 0 +ASGNI4 +line 844 +;843: +;844: BG_SaberStartTransAnim(pm->ps->fd.saberAnimLevel, anim, &editAnimSpeed); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRGP4 BG_SaberStartTransAnim +CALLV +pop +line 847 +;845: +;846: // Set torso anim +;847: if (setAnimParts & SETANIM_TORSO) +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $1423 +line 848 +;848: { +line 850 +;849: // Don't reset if it's already running the anim +;850: if( !(setAnimFlags & SETANIM_FLAG_RESTART) && (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) == anim ) +ADDRFP4 8 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $1425 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ADDRFP4 4 +INDIRI4 +NEI4 $1425 +line 851 +;851: { +line 852 +;852: goto setAnimLegs; +ADDRGP4 $1427 +JUMPV +LABELV $1425 +line 855 +;853: } +;854: // or if a more important anim is running +;855: if( !(setAnimFlags & SETANIM_FLAG_OVERRIDE) && ((pm->ps->torsoTimer > 0)||(pm->ps->torsoTimer == -1)) ) +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +BANDI4 +ADDRLP4 8 +INDIRI4 +NEI4 $1428 +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 8 +INDIRI4 +GTI4 $1430 +ADDRLP4 12 +INDIRI4 +CNSTI4 -1 +NEI4 $1428 +LABELV $1430 +line 856 +;856: { +line 857 +;857: goto setAnimLegs; +ADDRGP4 $1427 +JUMPV +LABELV $1428 +line 860 +;858: } +;859: +;860: PM_StartTorsoAnim( anim ); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 PM_StartTorsoAnim +CALLV +pop +line 862 +;861: +;862: if (setAnimFlags & SETANIM_FLAG_HOLD) +ADDRFP4 8 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1431 +line 863 +;863: {//FIXME: allow to set a specific time? +line 864 +;864: if (setAnimFlags & SETANIM_FLAG_HOLDLESS) +ADDRFP4 8 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $1433 +line 865 +;865: { // Make sure to only wait in full 1/20 sec server frame intervals. +line 868 +;866: int dur; +;867: +;868: dur = (animations[anim].numFrames ) * fabs(animations[anim].frameLerp); +ADDRLP4 20 +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 24 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 24 +INDIRF4 +MULF4 +CVFI4 4 +ASGNI4 +line 870 +;869: //dur = ((int)(dur/50.0)) * 50 / timeScaleMod; +;870: dur -= blendTime+fabs(animations[anim].frameLerp)*2; +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 28 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +ADDRFP4 12 +INDIRI4 +CVIF4 4 +CNSTF4 1073741824 +ADDRLP4 28 +INDIRF4 +MULF4 +ADDF4 +SUBF4 +CVFI4 4 +ASGNI4 +line 871 +;871: if (dur > 1) +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +LEI4 $1435 +line 872 +;872: { +line 873 +;873: pm->ps->torsoTimer = dur-1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 874 +;874: } +ADDRGP4 $1434 +JUMPV +LABELV $1435 +line 876 +;875: else +;876: { +line 877 +;877: pm->ps->torsoTimer = fabs(animations[anim].frameLerp); +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 32 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +ADDRLP4 32 +INDIRF4 +CVFI4 4 +ASGNI4 +line 878 +;878: } +line 879 +;879: } +ADDRGP4 $1434 +JUMPV +LABELV $1433 +line 881 +;880: else +;881: { +line 882 +;882: pm->ps->torsoTimer = ((animations[anim].numFrames ) * fabs(animations[anim].frameLerp)); +ADDRLP4 16 +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 20 +INDIRF4 +MULF4 +CVFI4 4 +ASGNI4 +line 883 +;883: } +LABELV $1434 +line 885 +;884: +;885: if (pm->ps->fd.forcePowersActive & (1 << FP_RAGE)) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +CNSTI4 256 +BANDI4 +CNSTI4 0 +EQI4 $1437 +line 886 +;886: { +line 887 +;887: pm->ps->torsoTimer /= 1.7; +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CVIF4 4 +CNSTF4 1071225242 +DIVF4 +CVFI4 4 +ASGNI4 +line 888 +;888: } +LABELV $1437 +line 890 +;889: +;890: if (editAnimSpeed) +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +EQF4 $1439 +line 891 +;891: { +line 892 +;892: pm->ps->torsoTimer /= editAnimSpeed; +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +DIVF4 +CVFI4 4 +ASGNI4 +line 893 +;893: } +LABELV $1439 +line 894 +;894: } +LABELV $1431 +line 895 +;895: } +LABELV $1423 +LABELV $1427 +line 899 +;896: +;897:setAnimLegs: +;898: // Set legs anim +;899: if (setAnimParts & SETANIM_LEGS) +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1420 +line 900 +;900: { +line 902 +;901: // Don't reset if it's already running the anim +;902: if( !(setAnimFlags & SETANIM_FLAG_RESTART) && (pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) == anim ) +ADDRFP4 8 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $1443 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ADDRFP4 4 +INDIRI4 +NEI4 $1443 +line 903 +;903: { +line 904 +;904: goto setAnimDone; +ADDRGP4 $1420 +JUMPV +LABELV $1443 +line 907 +;905: } +;906: // or if a more important anim is running +;907: if( !(setAnimFlags & SETANIM_FLAG_OVERRIDE) && ((pm->ps->legsTimer > 0)||(pm->ps->legsTimer == -1)) ) +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +BANDI4 +ADDRLP4 8 +INDIRI4 +NEI4 $1446 +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 8 +INDIRI4 +GTI4 $1448 +ADDRLP4 12 +INDIRI4 +CNSTI4 -1 +NEI4 $1446 +LABELV $1448 +line 908 +;908: { +line 909 +;909: goto setAnimDone; +ADDRGP4 $1420 +JUMPV +LABELV $1446 +line 912 +;910: } +;911: +;912: PM_StartLegsAnim(anim); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 PM_StartLegsAnim +CALLV +pop +line 914 +;913: +;914: if (setAnimFlags & SETANIM_FLAG_HOLD) +ADDRFP4 8 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1420 +line 915 +;915: {//FIXME: allow to set a specific time? +line 916 +;916: if (setAnimFlags & SETANIM_FLAG_HOLDLESS) +ADDRFP4 8 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $1451 +line 917 +;917: { // Make sure to only wait in full 1/20 sec server frame intervals. +line 920 +;918: int dur; +;919: +;920: dur = (animations[anim].numFrames -1) * fabs(animations[anim].frameLerp); +ADDRLP4 20 +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 24 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 1 +SUBI4 +CVIF4 4 +ADDRLP4 24 +INDIRF4 +MULF4 +CVFI4 4 +ASGNI4 +line 922 +;921: //dur = ((int)(dur/50.0)) * 50 / timeScaleMod; +;922: dur -= blendTime+fabs(animations[anim].frameLerp)*2; +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 28 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +ADDRFP4 12 +INDIRI4 +CVIF4 4 +CNSTF4 1073741824 +ADDRLP4 28 +INDIRF4 +MULF4 +ADDF4 +SUBF4 +CVFI4 4 +ASGNI4 +line 923 +;923: if (dur > 1) +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +LEI4 $1453 +line 924 +;924: { +line 925 +;925: pm->ps->legsTimer = dur-1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 926 +;926: } +ADDRGP4 $1452 +JUMPV +LABELV $1453 +line 928 +;927: else +;928: { +line 929 +;929: pm->ps->legsTimer = fabs(animations[anim].frameLerp); +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 32 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRLP4 32 +INDIRF4 +CVFI4 4 +ASGNI4 +line 930 +;930: } +line 931 +;931: } +ADDRGP4 $1452 +JUMPV +LABELV $1451 +line 933 +;932: else +;933: { +line 934 +;934: pm->ps->legsTimer = ((animations[anim].numFrames ) * fabs(animations[anim].frameLerp)); +ADDRLP4 16 +CNSTI4 28 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 20 +INDIRF4 +MULF4 +CVFI4 4 +ASGNI4 +line 935 +;935: } +LABELV $1452 +line 942 +;936: +;937: /* +;938: PM_DebugLegsAnim(anim); +;939: Com_Printf("%i\n", pm->ps->legsTimer); +;940: */ +;941: +;942: if (pm->ps->fd.forcePowersActive & (1 << FP_RAGE)) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +CNSTI4 256 +BANDI4 +CNSTI4 0 +EQI4 $1455 +line 943 +;943: { +line 944 +;944: pm->ps->legsTimer /= 1.3; +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CVIF4 4 +CNSTF4 1067869798 +DIVF4 +CVFI4 4 +ASGNI4 +line 945 +;945: } +ADDRGP4 $1420 +JUMPV +LABELV $1455 +line 946 +;946: else if (pm->ps->fd.forcePowersActive & (1 << FP_SPEED)) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $1420 +line 947 +;947: { +line 948 +;948: pm->ps->legsTimer /= 1.7; +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 88 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CVIF4 4 +CNSTF4 1071225242 +DIVF4 +CVFI4 4 +ASGNI4 +line 949 +;949: } +line 950 +;950: } +line 951 +;951: } +line 954 +;952: +;953:setAnimDone: +;954: return; +LABELV $1420 +endproc PM_SetAnimFinal 36 12 +export PM_SetAnim +proc PM_SetAnim 12 16 +line 961 +;955:} +;956: +;957: +;958: +;959:// Imported from single-player, this function is mainly intended to make porting from SP easier. +;960:void PM_SetAnim(int setAnimParts,int anim,int setAnimFlags, int blendTime) +;961:{ +line 962 +;962: assert( bgGlobalAnimations[anim].firstFrame != 0 || +line 965 +;963: bgGlobalAnimations[anim].numFrames != 0); +;964: +;965: if (BG_InSpecialJump(anim)) +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 BG_InSpecialJump +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $1460 +line 966 +;966: { +line 967 +;967: setAnimFlags |= SETANIM_FLAG_RESTART; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 968 +;968: } +LABELV $1460 +line 970 +;969: +;970: if (BG_InRoll(pm->ps, pm->ps->legsAnim)) +ADDRLP4 4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 BG_InRoll +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $1462 +line 971 +;971: { +line 973 +;972: //setAnimFlags |= SETANIM_FLAG_RESTART; +;973: return; +ADDRGP4 $1459 +JUMPV +LABELV $1462 +line 976 +;974: } +;975: +;976: if (setAnimFlags&SETANIM_FLAG_OVERRIDE) +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $1464 +line 977 +;977: { +line 978 +;978: if (setAnimParts & SETANIM_TORSO) +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $1466 +line 979 +;979: { +line 980 +;980: if( (setAnimFlags & SETANIM_FLAG_RESTART) || (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) != anim ) +ADDRFP4 8 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $1470 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ADDRFP4 4 +INDIRI4 +EQI4 $1468 +LABELV $1470 +line 981 +;981: { +line 982 +;982: PM_SetTorsoAnimTimer(0); +CNSTI4 0 +ARGI4 +ADDRGP4 PM_SetTorsoAnimTimer +CALLV +pop +line 983 +;983: } +LABELV $1468 +line 984 +;984: } +LABELV $1466 +line 985 +;985: if (setAnimParts & SETANIM_LEGS) +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1471 +line 986 +;986: { +line 987 +;987: if( (setAnimFlags & SETANIM_FLAG_RESTART) || (pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) != anim ) +ADDRFP4 8 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $1475 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ADDRFP4 4 +INDIRI4 +EQI4 $1473 +LABELV $1475 +line 988 +;988: { +line 989 +;989: PM_SetLegsAnimTimer(0); +CNSTI4 0 +ARGI4 +ADDRGP4 PM_SetLegsAnimTimer +CALLV +pop +line 990 +;990: } +LABELV $1473 +line 991 +;991: } +LABELV $1471 +line 992 +;992: } +LABELV $1464 +line 994 +;993: +;994: PM_SetAnimFinal(setAnimParts, anim, setAnimFlags, blendTime); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 PM_SetAnimFinal +CALLV +pop +line 995 +;995:} +LABELV $1459 +endproc PM_SetAnim 12 16 +bss +export BGPAFtext +align 1 +LABELV BGPAFtext +skip 40000 +import PM_SetSaberMove +import PM_WeaponLightsaber +import PM_FinishWeaponChange +import PM_BeginWeaponChange +import BG_CycleInven +import PM_StepSlideMove +import PM_SlideMove +import PM_AddEvent +import PM_AddTouchEnt +import PM_ClipVelocity +import PM_SaberJumpAttackMove +import PM_SaberFlipOverAttackMove +import PM_SomeoneInFront +import PM_GroundDistance +import PM_GetSaberStance +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import forcePowerNeeded +import c_pmove +import pm_flightfriction +import pm_waterfriction +import pm_friction +import pm_flyaccelerate +import pm_wateraccelerate +import pm_airaccelerate +import pm_accelerate +import pm_wadeScale +import pm_swimScale +import pm_duckScale +import pm_stopspeed +import pml +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +export bgGlobalAnimations +align 4 +LABELV bgGlobalAnimations +skip 30520 +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $1385 +char 1 37 +char 1 100 +char 1 58 +char 1 32 +char 1 32 +char 1 83 +char 1 116 +char 1 97 +char 1 114 +char 1 116 +char 1 76 +char 1 101 +char 1 103 +char 1 115 +char 1 65 +char 1 110 +char 1 105 +char 1 109 +char 1 32 +char 1 37 +char 1 100 +char 1 44 +char 1 32 +char 1 111 +char 1 110 +char 1 32 +char 1 99 +char 1 108 +char 1 105 +char 1 101 +char 1 110 +char 1 116 +char 1 35 +char 1 37 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $1333 +char 1 78 +char 1 69 +char 1 87 +char 1 58 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 0 +align 1 +LABELV $1332 +char 1 79 +char 1 76 +char 1 68 +char 1 58 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 0 +align 1 +LABELV $1153 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 0 +align 1 +LABELV $1152 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 70 +char 1 82 +char 1 79 +char 1 87 +char 1 78 +char 1 0 +align 1 +LABELV $1151 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 83 +char 1 77 +char 1 73 +char 1 76 +char 1 69 +char 1 0 +align 1 +LABELV $1150 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 65 +char 1 76 +char 1 69 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $1149 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 52 +char 1 0 +align 1 +LABELV $1148 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 51 +char 1 0 +align 1 +LABELV $1147 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $1146 +char 1 70 +char 1 65 +char 1 67 +char 1 69 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $1145 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1144 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1143 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1142 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1141 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1140 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1139 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1138 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1137 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1136 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1135 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1134 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1133 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1132 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1131 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1130 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1129 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1128 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1127 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1126 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1125 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1124 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1123 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1122 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1121 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1120 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1119 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1118 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1117 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1116 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1115 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1114 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1113 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1112 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1111 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1110 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1109 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1108 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1107 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1106 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 76 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1105 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1104 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1103 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1102 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1101 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1100 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $1099 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1098 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1097 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1096 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1095 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 67 +char 1 72 +char 1 79 +char 1 75 +char 1 73 +char 1 78 +char 1 71 +char 1 49 +char 1 0 +align 1 +LABELV $1094 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 67 +char 1 82 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1093 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 67 +char 1 82 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1092 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 75 +char 1 78 +char 1 69 +char 1 69 +char 1 76 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1091 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 75 +char 1 78 +char 1 69 +char 1 69 +char 1 76 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $1090 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1089 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1088 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 50 +char 1 0 +align 1 +LABELV $1087 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $1086 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $1085 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $1084 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $1083 +char 1 76 +char 1 69 +char 1 71 +char 1 83 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $1082 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 67 +char 1 72 +char 1 79 +char 1 75 +char 1 73 +char 1 78 +char 1 71 +char 1 49 +char 1 0 +align 1 +LABELV $1081 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 83 +char 1 85 +char 1 82 +char 1 82 +char 1 69 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $1080 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 83 +char 1 85 +char 1 82 +char 1 82 +char 1 69 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $1079 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 71 +char 1 82 +char 1 65 +char 1 66 +char 1 85 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 82 +char 1 0 +align 1 +LABELV $1078 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 71 +char 1 82 +char 1 65 +char 1 66 +char 1 76 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 82 +char 1 0 +align 1 +LABELV $1077 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 71 +char 1 82 +char 1 65 +char 1 66 +char 1 85 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 76 +char 1 0 +align 1 +LABELV $1076 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 71 +char 1 82 +char 1 65 +char 1 66 +char 1 76 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 76 +char 1 0 +align 1 +LABELV $1075 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 82 +char 1 69 +char 1 65 +char 1 67 +char 1 72 +char 1 72 +char 1 69 +char 1 76 +char 1 77 +char 1 69 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1074 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 82 +char 1 65 +char 1 73 +char 1 83 +char 1 69 +char 1 72 +char 1 69 +char 1 76 +char 1 77 +char 1 69 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1073 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 68 +char 1 82 +char 1 79 +char 1 80 +char 1 72 +char 1 69 +char 1 76 +char 1 77 +char 1 69 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1072 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 82 +char 1 69 +char 1 84 +char 1 82 +char 1 65 +char 1 67 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $1071 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 69 +char 1 88 +char 1 84 +char 1 69 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $1070 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 52 +char 1 0 +align 1 +LABELV $1069 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 51 +char 1 0 +align 1 +LABELV $1068 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $1067 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $1066 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 76 +char 1 50 +char 1 0 +align 1 +LABELV $1065 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 76 +char 1 50 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $1064 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 76 +char 1 50 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $1063 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 82 +char 1 50 +char 1 0 +align 1 +LABELV $1062 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 82 +char 1 50 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $1061 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 82 +char 1 50 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $1060 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $1059 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 76 +char 1 49 +char 1 0 +align 1 +LABELV $1058 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 76 +char 1 49 +char 1 0 +align 1 +LABELV $1057 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 76 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $1056 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 76 +char 1 49 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $1055 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 76 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $1054 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $1053 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 82 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $1052 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 82 +char 1 49 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $1051 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 84 +char 1 65 +char 1 76 +char 1 75 +char 1 82 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $1050 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $1049 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 49 +char 1 0 +align 1 +LABELV $1048 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $1047 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 57 +char 1 0 +align 1 +LABELV $1046 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 56 +char 1 0 +align 1 +LABELV $1045 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 55 +char 1 0 +align 1 +LABELV $1044 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 54 +char 1 0 +align 1 +LABELV $1043 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 53 +char 1 0 +align 1 +LABELV $1042 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 52 +char 1 0 +align 1 +LABELV $1041 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 51 +char 1 0 +align 1 +LABELV $1040 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $1039 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $1038 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $1037 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 49 +char 1 49 +char 1 0 +align 1 +LABELV $1036 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $1035 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 57 +char 1 0 +align 1 +LABELV $1034 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 56 +char 1 0 +align 1 +LABELV $1033 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 55 +char 1 0 +align 1 +LABELV $1032 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 54 +char 1 0 +align 1 +LABELV $1031 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 53 +char 1 0 +align 1 +LABELV $1030 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 52 +char 1 0 +align 1 +LABELV $1029 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 51 +char 1 0 +align 1 +LABELV $1028 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 50 +char 1 0 +align 1 +LABELV $1027 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 79 +char 1 78 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 49 +char 1 0 +align 1 +LABELV $1026 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 82 +char 1 65 +char 1 73 +char 1 83 +char 1 69 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1025 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 82 +char 1 65 +char 1 73 +char 1 83 +char 1 69 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1024 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 82 +char 1 65 +char 1 73 +char 1 83 +char 1 69 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1023 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 82 +char 1 65 +char 1 73 +char 1 83 +char 1 69 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1022 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 68 +char 1 82 +char 1 79 +char 1 80 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $1021 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 68 +char 1 82 +char 1 79 +char 1 80 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1020 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 68 +char 1 82 +char 1 79 +char 1 80 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1019 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 95 +char 1 68 +char 1 82 +char 1 79 +char 1 80 +char 1 87 +char 1 69 +char 1 65 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1018 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 79 +char 1 83 +char 1 83 +char 1 50 +char 1 0 +align 1 +LABELV $1017 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 79 +char 1 83 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $1016 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 71 +char 1 82 +char 1 73 +char 1 80 +char 1 95 +char 1 82 +char 1 69 +char 1 76 +char 1 69 +char 1 65 +char 1 83 +char 1 69 +char 1 0 +align 1 +LABELV $1015 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 71 +char 1 82 +char 1 73 +char 1 80 +char 1 95 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $1014 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 71 +char 1 82 +char 1 73 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $1013 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 71 +char 1 82 +char 1 73 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $1012 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 71 +char 1 82 +char 1 73 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $1011 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 80 +char 1 85 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $1010 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 72 +char 1 69 +char 1 65 +char 1 76 +char 1 95 +char 1 81 +char 1 85 +char 1 73 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $1009 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 72 +char 1 69 +char 1 65 +char 1 76 +char 1 95 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $1008 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 72 +char 1 69 +char 1 65 +char 1 76 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $1007 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 78 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 82 +char 1 69 +char 1 76 +char 1 69 +char 1 65 +char 1 83 +char 1 69 +char 1 0 +align 1 +LABELV $1006 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 78 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $1005 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 78 +char 1 73 +char 1 78 +char 1 71 +char 1 0 +align 1 +LABELV $1004 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 73 +char 1 78 +char 1 68 +char 1 84 +char 1 82 +char 1 73 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $1003 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 73 +char 1 78 +char 1 68 +char 1 84 +char 1 82 +char 1 73 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $1002 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 80 +char 1 85 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $1001 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 80 +char 1 85 +char 1 83 +char 1 72 +char 1 0 +align 1 +LABELV $1000 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 69 +char 1 83 +char 1 73 +char 1 83 +char 1 84 +char 1 80 +char 1 85 +char 1 83 +char 1 72 +char 1 0 +align 1 +LABELV $999 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 79 +char 1 78 +char 1 95 +char 1 82 +char 1 69 +char 1 76 +char 1 69 +char 1 65 +char 1 83 +char 1 69 +char 1 0 +align 1 +LABELV $998 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 79 +char 1 78 +char 1 95 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $997 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 79 +char 1 78 +char 1 50 +char 1 0 +align 1 +LABELV $996 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 79 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $995 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 79 +char 1 70 +char 1 70 +char 1 0 +align 1 +LABELV $994 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 79 +char 1 78 +char 1 0 +align 1 +LABELV $993 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 79 +char 1 87 +char 1 69 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $992 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 72 +char 1 79 +char 1 75 +char 1 69 +char 1 51 +char 1 0 +align 1 +LABELV $991 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 72 +char 1 79 +char 1 75 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $990 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 72 +char 1 79 +char 1 75 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $989 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 72 +char 1 79 +char 1 75 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $988 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 72 +char 1 79 +char 1 75 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $987 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 65 +char 1 82 +char 1 82 +char 1 73 +char 1 69 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $986 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 65 +char 1 82 +char 1 82 +char 1 73 +char 1 69 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $985 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 73 +char 1 70 +char 1 84 +char 1 69 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $984 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 69 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 68 +char 1 49 +char 1 80 +char 1 79 +char 1 73 +char 1 78 +char 1 84 +char 1 0 +align 1 +LABELV $983 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 69 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $982 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 49 +char 1 0 +align 1 +LABELV $981 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 65 +char 1 87 +char 1 76 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $980 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 82 +char 1 79 +char 1 80 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $979 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $978 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 54 +char 1 80 +char 1 79 +char 1 73 +char 1 78 +char 1 84 +char 1 0 +align 1 +LABELV $977 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 54 +char 1 67 +char 1 79 +char 1 77 +char 1 66 +char 1 65 +char 1 68 +char 1 71 +char 1 69 +char 1 0 +align 1 +LABELV $976 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 54 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $975 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 54 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $974 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 54 +char 1 0 +align 1 +LABELV $973 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 51 +char 1 0 +align 1 +LABELV $972 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $971 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $970 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 82 +char 1 73 +char 1 84 +char 1 72 +char 1 73 +char 1 78 +char 1 71 +char 1 50 +char 1 0 +align 1 +LABELV $969 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 82 +char 1 73 +char 1 84 +char 1 72 +char 1 73 +char 1 78 +char 1 71 +char 1 49 +char 1 76 +char 1 76 +char 1 69 +char 1 71 +char 1 0 +align 1 +LABELV $968 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 82 +char 1 73 +char 1 84 +char 1 72 +char 1 73 +char 1 78 +char 1 71 +char 1 49 +char 1 82 +char 1 76 +char 1 69 +char 1 71 +char 1 0 +align 1 +LABELV $967 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 82 +char 1 73 +char 1 84 +char 1 72 +char 1 73 +char 1 78 +char 1 71 +char 1 49 +char 1 0 +align 1 +LABELV $966 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 82 +char 1 79 +char 1 78 +char 1 69 +char 1 50 +char 1 76 +char 1 76 +char 1 69 +char 1 71 +char 1 0 +align 1 +LABELV $965 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 82 +char 1 79 +char 1 78 +char 1 69 +char 1 50 +char 1 82 +char 1 76 +char 1 69 +char 1 71 +char 1 0 +align 1 +LABELV $964 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 50 +char 1 87 +char 1 82 +char 1 73 +char 1 84 +char 1 72 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $963 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 73 +char 1 69 +char 1 95 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 51 +char 1 0 +align 1 +LABELV $962 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 73 +char 1 69 +char 1 95 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 50 +char 1 0 +align 1 +LABELV $961 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 73 +char 1 69 +char 1 95 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $960 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $959 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 0 +align 1 +LABELV $958 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $957 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $956 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 0 +align 1 +LABELV $955 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $954 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 95 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $953 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 65 +char 1 84 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $952 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 65 +char 1 84 +char 1 50 +char 1 0 +align 1 +LABELV $951 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 65 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $950 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $949 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $948 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $947 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 83 +char 1 72 +char 1 73 +char 1 69 +char 1 76 +char 1 68 +char 1 69 +char 1 68 +char 1 0 +align 1 +LABELV $946 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $945 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $944 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 73 +char 1 82 +char 1 84 +char 1 72 +char 1 49 +char 1 0 +align 1 +LABELV $943 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 77 +char 1 66 +char 1 85 +char 1 83 +char 1 72 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $942 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 73 +char 1 84 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 49 +char 1 0 +align 1 +LABELV $941 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 69 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $940 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 73 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $939 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 79 +char 1 70 +char 1 70 +char 1 76 +char 1 65 +char 1 68 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 84 +char 1 79 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $938 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 79 +char 1 78 +char 1 76 +char 1 65 +char 1 68 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 84 +char 1 79 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $937 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 79 +char 1 70 +char 1 70 +char 1 76 +char 1 65 +char 1 68 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 66 +char 1 79 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $936 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 79 +char 1 78 +char 1 76 +char 1 65 +char 1 68 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 66 +char 1 79 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $935 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 68 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 0 +align 1 +LABELV $934 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 68 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 68 +char 1 87 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $933 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 68 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $932 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 73 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $931 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 79 +char 1 83 +char 1 69 +char 1 52 +char 1 0 +align 1 +LABELV $930 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 79 +char 1 83 +char 1 69 +char 1 51 +char 1 0 +align 1 +LABELV $929 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 79 +char 1 83 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $928 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 79 +char 1 83 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $927 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 69 +char 1 82 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 70 +char 1 76 +char 1 49 +char 1 0 +align 1 +LABELV $926 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 69 +char 1 82 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 70 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $925 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 82 +char 1 73 +char 1 65 +char 1 76 +char 1 95 +char 1 70 +char 1 49 +char 1 0 +align 1 +LABELV $924 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 65 +char 1 83 +char 1 72 +char 1 69 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $923 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 70 +char 1 76 +char 1 69 +char 1 67 +char 1 84 +char 1 83 +char 1 76 +char 1 65 +char 1 83 +char 1 72 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 70 +char 1 73 +char 1 78 +char 1 0 +align 1 +LABELV $922 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 67 +char 1 72 +char 1 79 +char 1 80 +char 1 80 +char 1 69 +char 1 68 +char 1 79 +char 1 70 +char 1 70 +char 1 0 +align 1 +LABELV $921 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 70 +char 1 82 +char 1 79 +char 1 77 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 83 +char 1 76 +char 1 65 +char 1 83 +char 1 72 +char 1 0 +align 1 +LABELV $920 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 74 +char 1 83 +char 1 83 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $919 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 74 +char 1 83 +char 1 83 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $918 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 69 +char 1 73 +char 1 76 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 68 +char 1 82 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $917 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 69 +char 1 73 +char 1 76 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 67 +char 1 76 +char 1 73 +char 1 78 +char 1 71 +char 1 0 +align 1 +LABELV $916 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 80 +char 1 73 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $915 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $914 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $913 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 66 +char 1 54 +char 1 0 +align 1 +LABELV $912 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 66 +char 1 53 +char 1 0 +align 1 +LABELV $911 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 66 +char 1 52 +char 1 0 +align 1 +LABELV $910 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 66 +char 1 51 +char 1 0 +align 1 +LABELV $909 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 66 +char 1 50 +char 1 0 +align 1 +LABELV $908 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 66 +char 1 49 +char 1 0 +align 1 +LABELV $907 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 70 +char 1 50 +char 1 0 +align 1 +LABELV $906 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 70 +char 1 49 +char 1 0 +align 1 +LABELV $905 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 0 +align 1 +LABELV $904 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 95 +char 1 70 +char 1 49 +char 1 0 +align 1 +LABELV $903 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $902 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $901 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $900 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $899 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $898 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 79 +char 1 67 +char 1 75 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 53 +char 1 0 +align 1 +LABELV $897 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 79 +char 1 67 +char 1 75 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 52 +char 1 0 +align 1 +LABELV $896 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 79 +char 1 67 +char 1 75 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 51 +char 1 0 +align 1 +LABELV $895 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 79 +char 1 67 +char 1 75 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 50 +char 1 0 +align 1 +LABELV $894 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 79 +char 1 67 +char 1 75 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $893 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 70 +char 1 87 +char 1 68 +char 1 0 +align 1 +LABELV $892 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 0 +align 1 +LABELV $891 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 0 +align 1 +LABELV $890 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 95 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $889 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 0 +align 1 +LABELV $888 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 0 +align 1 +LABELV $887 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 95 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $886 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 0 +align 1 +LABELV $885 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 76 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 0 +align 1 +LABELV $884 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 69 +char 1 82 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 0 +align 1 +LABELV $883 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 85 +char 1 84 +char 1 84 +char 1 69 +char 1 82 +char 1 70 +char 1 76 +char 1 89 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 0 +align 1 +LABELV $882 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 51 +char 1 0 +align 1 +LABELV $881 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $880 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $879 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 0 +align 1 +LABELV $878 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 65 +char 1 82 +char 1 84 +char 1 87 +char 1 72 +char 1 69 +char 1 69 +char 1 76 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 0 +align 1 +LABELV $877 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 65 +char 1 82 +char 1 84 +char 1 87 +char 1 72 +char 1 69 +char 1 69 +char 1 76 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 0 +align 1 +LABELV $876 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 82 +char 1 73 +char 1 65 +char 1 76 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 0 +align 1 +LABELV $875 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 82 +char 1 73 +char 1 65 +char 1 76 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 0 +align 1 +LABELV $874 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $873 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 85 +char 1 78 +char 1 71 +char 1 69 +char 1 50 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $872 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 69 +char 1 65 +char 1 80 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $871 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 83 +char 1 84 +char 1 65 +char 1 66 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 0 +align 1 +LABELV $870 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 83 +char 1 76 +char 1 65 +char 1 83 +char 1 72 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $869 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 95 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $868 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 66 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $867 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 78 +char 1 71 +char 1 65 +char 1 71 +char 1 69 +char 1 84 +char 1 65 +char 1 85 +char 1 78 +char 1 84 +char 1 0 +align 1 +LABELV $866 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 83 +char 1 76 +char 1 79 +char 1 87 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 67 +char 1 69 +char 1 0 +align 1 +LABELV $865 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 70 +char 1 65 +char 1 83 +char 1 84 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 67 +char 1 69 +char 1 0 +align 1 +LABELV $864 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 73 +char 1 86 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $863 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 79 +char 1 68 +char 1 71 +char 1 69 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $862 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 79 +char 1 68 +char 1 71 +char 1 69 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $861 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 79 +char 1 68 +char 1 71 +char 1 69 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $860 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 79 +char 1 68 +char 1 71 +char 1 69 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $859 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 79 +char 1 68 +char 1 71 +char 1 69 +char 1 95 +char 1 70 +char 1 82 +char 1 0 +align 1 +LABELV $858 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 79 +char 1 68 +char 1 71 +char 1 69 +char 1 95 +char 1 70 +char 1 76 +char 1 0 +align 1 +LABELV $857 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 79 +char 1 80 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $856 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 79 +char 1 80 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $855 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 79 +char 1 80 +char 1 95 +char 1 66 +char 1 0 +align 1 +LABELV $854 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 79 +char 1 80 +char 1 95 +char 1 70 +char 1 0 +align 1 +LABELV $853 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $852 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $851 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 76 +char 1 0 +align 1 +LABELV $850 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 82 +char 1 0 +align 1 +LABELV $849 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $848 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $847 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 66 +char 1 0 +align 1 +LABELV $846 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 95 +char 1 70 +char 1 0 +align 1 +LABELV $845 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $844 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $843 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 66 +char 1 0 +align 1 +LABELV $842 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 95 +char 1 70 +char 1 0 +align 1 +LABELV $841 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $840 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $839 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $838 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $837 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $836 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $835 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $834 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $833 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $832 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $831 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $830 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $829 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $828 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $827 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $826 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $825 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $824 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $823 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $822 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $821 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $820 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $819 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $818 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $817 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 74 +char 1 85 +char 1 77 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $816 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $815 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $814 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $813 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $812 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 87 +char 1 73 +char 1 77 +char 1 49 +char 1 0 +align 1 +LABELV $811 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 65 +char 1 87 +char 1 65 +char 1 89 +char 1 49 +char 1 0 +align 1 +LABELV $810 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $809 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 52 +char 1 0 +align 1 +LABELV $808 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 51 +char 1 0 +align 1 +LABELV $807 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $806 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $805 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $804 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 70 +char 1 69 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $803 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 70 +char 1 69 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $802 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 70 +char 1 69 +char 1 95 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $801 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 70 +char 1 69 +char 1 95 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $800 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $799 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 50 +char 1 0 +align 1 +LABELV $798 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $797 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $796 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $795 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 84 +char 1 79 +char 1 82 +char 1 85 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $794 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 55 +char 1 0 +align 1 +LABELV $793 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 54 +char 1 0 +align 1 +LABELV $792 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 53 +char 1 0 +align 1 +LABELV $791 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 52 +char 1 0 +align 1 +LABELV $790 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 51 +char 1 0 +align 1 +LABELV $789 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $788 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $787 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 76 +char 1 65 +char 1 77 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 68 +char 1 79 +char 1 87 +char 1 78 +char 1 0 +align 1 +LABELV $786 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 76 +char 1 73 +char 1 68 +char 1 69 +char 1 71 +char 1 76 +char 1 65 +char 1 83 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $785 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 71 +char 1 76 +char 1 65 +char 1 83 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $784 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 77 +char 1 77 +char 1 65 +char 1 71 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $783 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 77 +char 1 77 +char 1 65 +char 1 71 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $782 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 85 +char 1 77 +char 1 77 +char 1 65 +char 1 71 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $781 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 82 +char 1 85 +char 1 71 +char 1 71 +char 1 76 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $780 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 82 +char 1 85 +char 1 71 +char 1 71 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $779 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 82 +char 1 85 +char 1 71 +char 1 71 +char 1 76 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $778 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 69 +char 1 69 +char 1 83 +char 1 50 +char 1 84 +char 1 79 +char 1 49 +char 1 0 +align 1 +LABELV $777 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 69 +char 1 69 +char 1 83 +char 1 50 +char 1 0 +align 1 +LABELV $776 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 78 +char 1 69 +char 1 69 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $775 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 85 +char 1 78 +char 1 83 +char 1 73 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $774 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 67 +char 1 75 +char 1 80 +char 1 73 +char 1 84 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 0 +align 1 +LABELV $773 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 67 +char 1 75 +char 1 80 +char 1 73 +char 1 84 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $772 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 67 +char 1 75 +char 1 80 +char 1 73 +char 1 84 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $771 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 95 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $770 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 84 +char 1 95 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $769 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 51 +char 1 0 +align 1 +LABELV $768 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 85 +char 1 78 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 51 +char 1 0 +align 1 +LABELV $767 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 50 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $766 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 50 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 0 +align 1 +LABELV $765 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 85 +char 1 78 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 49 +char 1 0 +align 1 +LABELV $764 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 49 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $763 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 49 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 0 +align 1 +LABELV $762 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 49 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 0 +align 1 +LABELV $761 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 49 +char 1 0 +align 1 +LABELV $760 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 55 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $759 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 55 +char 1 0 +align 1 +LABELV $758 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 54 +char 1 84 +char 1 79 +char 1 53 +char 1 0 +align 1 +LABELV $757 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 54 +char 1 84 +char 1 79 +char 1 52 +char 1 0 +align 1 +LABELV $756 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 53 +char 1 84 +char 1 79 +char 1 54 +char 1 0 +align 1 +LABELV $755 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 53 +char 1 84 +char 1 79 +char 1 52 +char 1 0 +align 1 +LABELV $754 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 52 +char 1 84 +char 1 79 +char 1 54 +char 1 0 +align 1 +LABELV $753 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 52 +char 1 84 +char 1 79 +char 1 53 +char 1 0 +align 1 +LABELV $752 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 51 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $751 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 51 +char 1 84 +char 1 79 +char 1 50 +char 1 0 +align 1 +LABELV $750 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 51 +char 1 84 +char 1 79 +char 1 49 +char 1 0 +align 1 +LABELV $749 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 50 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $748 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 50 +char 1 84 +char 1 79 +char 1 51 +char 1 0 +align 1 +LABELV $747 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 51 +char 1 0 +align 1 +LABELV $746 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 50 +char 1 0 +align 1 +LABELV $745 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $744 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $743 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $742 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 52 +char 1 84 +char 1 79 +char 1 53 +char 1 0 +align 1 +LABELV $741 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 73 +char 1 78 +char 1 74 +char 1 85 +char 1 82 +char 1 69 +char 1 68 +char 1 52 +char 1 0 +align 1 +LABELV $740 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 86 +char 1 69 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 95 +char 1 69 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $739 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 86 +char 1 69 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $738 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 86 +char 1 69 +char 1 82 +char 1 85 +char 1 80 +char 1 49 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $737 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 50 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $736 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 50 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $735 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $734 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $733 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 82 +char 1 73 +char 1 85 +char 1 77 +char 1 80 +char 1 72 +char 1 65 +char 1 78 +char 1 84 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $732 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 82 +char 1 73 +char 1 85 +char 1 77 +char 1 80 +char 1 72 +char 1 65 +char 1 78 +char 1 84 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $731 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 65 +char 1 68 +char 1 73 +char 1 79 +char 1 95 +char 1 79 +char 1 78 +char 1 79 +char 1 70 +char 1 70 +char 1 0 +align 1 +LABELV $730 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 69 +char 1 65 +char 1 84 +char 1 69 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $729 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 69 +char 1 65 +char 1 84 +char 1 69 +char 1 78 +char 1 49 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $728 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 65 +char 1 82 +char 1 84 +char 1 69 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 67 +char 1 79 +char 1 87 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $727 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 65 +char 1 82 +char 1 84 +char 1 69 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 67 +char 1 79 +char 1 87 +char 1 69 +char 1 82 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $726 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 65 +char 1 82 +char 1 84 +char 1 69 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 67 +char 1 79 +char 1 87 +char 1 69 +char 1 82 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $725 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 65 +char 1 82 +char 1 84 +char 1 69 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 49 +char 1 0 +align 1 +LABELV $724 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 65 +char 1 82 +char 1 84 +char 1 69 +char 1 78 +char 1 68 +char 1 69 +char 1 82 +char 1 95 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $723 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 83 +char 1 67 +char 1 65 +char 1 80 +char 1 69 +char 1 80 +char 1 79 +char 1 68 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 86 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $722 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 83 +char 1 67 +char 1 65 +char 1 80 +char 1 69 +char 1 80 +char 1 79 +char 1 68 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 86 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $721 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 85 +char 1 71 +char 1 72 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $720 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 65 +char 1 85 +char 1 71 +char 1 72 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $719 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 69 +char 1 49 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $718 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $717 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 82 +char 1 49 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $716 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 65 +char 1 78 +char 1 68 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 82 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $715 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 75 +char 1 73 +char 1 76 +char 1 76 +char 1 69 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $714 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 75 +char 1 73 +char 1 76 +char 1 76 +char 1 69 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $713 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 69 +char 1 49 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $712 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 82 +char 1 49 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $711 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 69 +char 1 49 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 0 +align 1 +LABELV $710 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 82 +char 1 49 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 0 +align 1 +LABELV $709 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $708 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 82 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $707 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 69 +char 1 49 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $706 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 84 +char 1 82 +char 1 65 +char 1 73 +char 1 78 +char 1 69 +char 1 82 +char 1 49 +char 1 72 +char 1 79 +char 1 76 +char 1 68 +char 1 0 +align 1 +LABELV $705 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 85 +char 1 78 +char 1 67 +char 1 72 +char 1 69 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $704 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 69 +char 1 65 +char 1 67 +char 1 72 +char 1 70 +char 1 79 +char 1 82 +char 1 83 +char 1 65 +char 1 66 +char 1 69 +char 1 82 +char 1 49 +char 1 0 +align 1 +LABELV $703 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 76 +char 1 69 +char 1 78 +char 1 67 +char 1 69 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $702 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 83 +char 1 69 +char 1 76 +char 1 70 +char 1 49 +char 1 69 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $701 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 83 +char 1 69 +char 1 76 +char 1 70 +char 1 49 +char 1 0 +align 1 +LABELV $700 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 77 +char 1 69 +char 1 95 +char 1 79 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $699 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 85 +char 1 77 +char 1 66 +char 1 73 +char 1 78 +char 1 71 +char 1 49 +char 1 0 +align 1 +LABELV $698 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 70 +char 1 79 +char 1 85 +char 1 78 +char 1 84 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 95 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $697 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 70 +char 1 79 +char 1 85 +char 1 78 +char 1 84 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $696 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 70 +char 1 79 +char 1 85 +char 1 78 +char 1 84 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 95 +char 1 77 +char 1 73 +char 1 68 +char 1 68 +char 1 76 +char 1 69 +char 1 0 +align 1 +LABELV $695 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 79 +char 1 82 +char 1 67 +char 1 69 +char 1 70 +char 1 79 +char 1 85 +char 1 78 +char 1 84 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $694 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 51 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $693 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 51 +char 1 0 +align 1 +LABELV $692 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 82 +char 1 73 +char 1 71 +char 1 72 +char 1 84 +char 1 51 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $691 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 50 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $690 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 69 +char 1 65 +char 1 78 +char 1 76 +char 1 69 +char 1 70 +char 1 84 +char 1 50 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $689 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 51 +char 1 0 +align 1 +LABELV $688 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 50 +char 1 0 +align 1 +LABELV $687 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 50 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $686 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $685 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 49 +char 1 0 +align 1 +LABELV $684 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $683 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 51 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $682 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 51 +char 1 0 +align 1 +LABELV $681 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 51 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $680 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 50 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $679 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $678 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 50 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $677 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $676 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $675 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 69 +char 1 88 +char 1 65 +char 1 77 +char 1 73 +char 1 78 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $674 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 69 +char 1 65 +char 1 67 +char 1 72 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $673 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 69 +char 1 65 +char 1 67 +char 1 72 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $672 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 0 +align 1 +LABELV $671 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 78 +char 1 79 +char 1 68 +char 1 0 +align 1 +LABELV $670 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 82 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $669 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 82 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $668 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 76 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $667 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 76 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $666 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 49 +char 1 95 +char 1 82 +char 1 69 +char 1 69 +char 1 76 +char 1 79 +char 1 0 +align 1 +LABELV $665 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 83 +char 1 72 +char 1 65 +char 1 75 +char 1 69 +char 1 0 +align 1 +LABELV $664 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 78 +char 1 79 +char 1 68 +char 1 0 +align 1 +LABELV $663 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 82 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $662 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 82 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $661 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 76 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $660 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 84 +char 1 73 +char 1 76 +char 1 84 +char 1 76 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $659 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 85 +char 1 83 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $658 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 85 +char 1 83 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $657 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 51 +char 1 0 +align 1 +LABELV $656 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $655 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 69 +char 1 83 +char 1 84 +char 1 85 +char 1 82 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $654 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 76 +char 1 69 +char 1 82 +char 1 84 +char 1 49 +char 1 0 +align 1 +LABELV $653 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 85 +char 1 65 +char 1 82 +char 1 68 +char 1 95 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $652 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 71 +char 1 85 +char 1 65 +char 1 82 +char 1 68 +char 1 95 +char 1 76 +char 1 79 +char 1 79 +char 1 75 +char 1 65 +char 1 82 +char 1 79 +char 1 85 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $651 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 50 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $650 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $649 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 50 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $648 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $647 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $646 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 79 +char 1 78 +char 1 83 +char 1 79 +char 1 76 +char 1 69 +char 1 49 +char 1 83 +char 1 84 +char 1 65 +char 1 82 +char 1 84 +char 1 0 +align 1 +LABELV $645 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 56 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $644 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 56 +char 1 0 +align 1 +LABELV $643 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $642 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 84 +char 1 79 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $641 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 95 +char 1 82 +char 1 69 +char 1 69 +char 1 76 +char 1 79 +char 1 0 +align 1 +LABELV $640 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 95 +char 1 82 +char 1 69 +char 1 69 +char 1 76 +char 1 79 +char 1 0 +align 1 +LABELV $639 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 84 +char 1 79 +char 1 83 +char 1 73 +char 1 84 +char 1 51 +char 1 0 +align 1 +LABELV $638 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 85 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $637 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 85 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $636 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 52 +char 1 84 +char 1 79 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $635 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 84 +char 1 79 +char 1 87 +char 1 65 +char 1 76 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $634 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 52 +char 1 84 +char 1 79 +char 1 50 +char 1 0 +align 1 +LABELV $633 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 84 +char 1 79 +char 1 52 +char 1 0 +align 1 +LABELV $632 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 84 +char 1 79 +char 1 49 +char 1 0 +align 1 +LABELV $631 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 84 +char 1 79 +char 1 50 +char 1 0 +align 1 +LABELV $630 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 51 +char 1 84 +char 1 79 +char 1 49 +char 1 0 +align 1 +LABELV $629 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 84 +char 1 79 +char 1 51 +char 1 0 +align 1 +LABELV $628 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 56 +char 1 0 +align 1 +LABELV $627 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 55 +char 1 0 +align 1 +LABELV $626 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 54 +char 1 0 +align 1 +LABELV $625 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $624 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 52 +char 1 0 +align 1 +LABELV $623 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 51 +char 1 0 +align 1 +LABELV $622 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 95 +char 1 82 +char 1 65 +char 1 78 +char 1 68 +char 1 79 +char 1 77 +char 1 52 +char 1 0 +align 1 +LABELV $621 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 95 +char 1 82 +char 1 65 +char 1 78 +char 1 68 +char 1 79 +char 1 77 +char 1 51 +char 1 0 +align 1 +LABELV $620 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 95 +char 1 82 +char 1 65 +char 1 78 +char 1 68 +char 1 79 +char 1 77 +char 1 50 +char 1 0 +align 1 +LABELV $619 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 95 +char 1 82 +char 1 65 +char 1 78 +char 1 68 +char 1 79 +char 1 77 +char 1 49 +char 1 0 +align 1 +LABELV $618 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $617 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 95 +char 1 82 +char 1 65 +char 1 78 +char 1 68 +char 1 79 +char 1 77 +char 1 50 +char 1 0 +align 1 +LABELV $616 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 95 +char 1 82 +char 1 65 +char 1 78 +char 1 68 +char 1 79 +char 1 77 +char 1 49 +char 1 0 +align 1 +LABELV $615 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 65 +char 1 78 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $614 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 76 +char 1 79 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $613 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 76 +char 1 79 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $612 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 66 +char 1 82 +char 1 69 +char 1 65 +char 1 75 +char 1 0 +align 1 +LABELV $611 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 66 +char 1 82 +char 1 69 +char 1 65 +char 1 75 +char 1 0 +align 1 +LABELV $610 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $609 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $608 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $607 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 87 +char 1 67 +char 1 73 +char 1 82 +char 1 67 +char 1 76 +char 1 69 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $606 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 70 +char 1 49 +char 1 76 +char 1 79 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $605 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 70 +char 1 49 +char 1 66 +char 1 82 +char 1 69 +char 1 65 +char 1 75 +char 1 0 +align 1 +LABELV $604 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 70 +char 1 49 +char 1 82 +char 1 69 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 0 +align 1 +LABELV $603 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 70 +char 1 50 +char 1 76 +char 1 79 +char 1 67 +char 1 75 +char 1 0 +align 1 +LABELV $602 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 70 +char 1 50 +char 1 66 +char 1 82 +char 1 69 +char 1 65 +char 1 75 +char 1 0 +align 1 +LABELV $601 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 70 +char 1 50 +char 1 82 +char 1 69 +char 1 84 +char 1 85 +char 1 82 +char 1 78 +char 1 0 +align 1 +LABELV $600 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $599 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $598 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $597 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $596 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $595 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 72 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $594 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $593 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $592 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $591 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $590 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $589 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $588 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $587 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 86 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $586 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $585 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $584 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $583 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $582 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $581 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 75 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $580 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $579 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $578 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $577 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $576 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $575 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 53 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $574 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $573 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $572 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $571 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $570 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $569 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $568 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $567 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $566 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $565 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $564 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $563 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $562 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $561 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $560 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $559 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $558 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $557 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $556 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $555 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 53 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $554 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $553 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $552 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $551 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $550 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $549 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $548 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 53 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $547 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $546 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $545 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $544 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $543 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $542 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $541 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $540 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $539 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $538 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $537 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $536 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $535 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $534 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $533 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $532 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $531 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $530 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $529 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $528 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $527 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $526 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $525 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $524 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $523 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $522 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $521 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $520 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $519 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $518 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $517 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $516 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $515 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $514 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $513 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $512 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $511 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $510 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $509 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $508 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $507 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $506 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $505 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 53 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $504 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 53 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $503 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 53 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $502 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 53 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $501 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 53 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $500 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 53 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $499 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 53 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $498 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 52 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $497 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $496 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $495 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $494 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $493 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $492 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $491 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $490 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $489 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $488 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $487 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $486 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $485 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $484 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $483 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $482 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $481 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $480 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $479 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $478 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 52 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $477 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $476 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $475 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $474 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $473 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $472 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $471 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 52 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $470 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $469 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $468 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $467 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $466 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $465 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $464 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $463 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $462 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $461 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $460 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $459 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $458 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $457 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $456 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $455 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $454 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $453 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $452 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $451 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $450 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $449 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $448 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $447 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $446 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $445 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $444 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $443 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $442 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $441 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $440 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $439 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $438 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $437 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $436 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $435 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $434 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $433 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $432 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $431 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $430 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $429 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $428 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 52 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $427 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 52 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $426 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 52 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $425 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 52 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $424 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 52 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $423 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 52 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $422 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 52 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $421 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 51 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $420 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $419 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $418 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $417 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $416 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $415 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $414 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $413 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $412 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $411 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $410 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $409 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $408 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $407 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $406 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $405 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $404 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $403 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $402 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $401 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 51 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $400 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $399 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $398 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $397 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $396 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $395 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $394 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 51 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $393 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $392 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $391 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $390 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $389 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $388 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $387 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $386 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $385 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $384 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $383 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $382 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $381 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $380 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $379 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $378 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $377 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $376 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $375 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $374 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $373 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $372 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $371 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $370 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $369 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $368 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $367 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $366 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $365 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $364 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $363 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $362 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $361 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $360 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $359 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $358 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $357 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $356 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $355 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $354 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $353 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $352 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $351 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 51 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $350 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 51 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $349 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 51 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $348 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 51 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $347 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 51 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $346 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 51 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $345 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 51 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $344 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 50 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $343 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $342 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $341 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $340 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $339 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $338 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $337 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $336 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $335 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $334 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $333 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $332 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $331 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $330 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $329 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $328 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $327 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $326 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $325 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $324 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 50 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $323 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 50 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $322 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 50 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $321 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 50 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $320 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 50 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $319 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 50 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $318 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 50 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $317 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 50 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $316 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $315 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $314 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $313 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $312 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $311 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $310 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $309 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $308 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $307 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $306 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $305 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $304 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $303 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $302 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $301 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $300 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $299 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $298 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $297 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $296 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $295 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $294 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $293 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $292 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $291 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $290 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $289 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $288 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $287 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $286 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $285 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $284 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $283 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $282 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $281 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $280 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $279 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $278 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $277 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $276 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $275 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $274 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $273 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $272 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $271 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $270 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $269 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $268 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 50 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $267 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 49 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $266 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $265 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $264 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $263 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $262 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $261 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $260 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $259 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $258 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $257 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $256 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $255 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $254 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 66 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 95 +char 1 0 +align 1 +LABELV $253 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $252 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $251 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $250 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $249 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $248 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $247 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 49 +char 1 95 +char 1 66 +char 1 95 +char 1 95 +char 1 83 +char 1 49 +char 1 0 +align 1 +LABELV $246 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $245 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $244 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $243 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $242 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $241 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $240 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 83 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $239 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $238 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $237 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $236 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $235 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $234 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $233 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $232 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $231 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $230 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $229 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $228 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $227 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $226 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 95 +char 1 0 +align 1 +LABELV $225 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $224 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $223 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $222 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $221 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $220 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $219 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $218 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $217 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $216 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $215 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $214 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $213 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $212 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $211 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $210 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $209 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $208 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $207 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $206 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $205 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $204 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $203 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $202 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $201 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $200 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $199 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $198 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $197 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 49 +char 1 95 +char 1 84 +char 1 82 +char 1 95 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $196 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 49 +char 1 95 +char 1 66 +char 1 76 +char 1 95 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $195 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 49 +char 1 95 +char 1 66 +char 1 82 +char 1 95 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $194 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 49 +char 1 95 +char 1 84 +char 1 76 +char 1 95 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $193 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 49 +char 1 95 +char 1 95 +char 1 82 +char 1 95 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $192 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 49 +char 1 95 +char 1 95 +char 1 76 +char 1 95 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $191 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 49 +char 1 95 +char 1 84 +char 1 95 +char 1 95 +char 1 66 +char 1 95 +char 1 0 +align 1 +LABELV $190 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 69 +char 1 82 +char 1 77 +char 1 65 +char 1 76 +char 1 95 +char 1 84 +char 1 72 +char 1 82 +char 1 79 +char 1 87 +char 1 0 +align 1 +LABELV $189 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 84 +char 1 72 +char 1 69 +char 1 82 +char 1 77 +char 1 65 +char 1 76 +char 1 95 +char 1 82 +char 1 69 +char 1 65 +char 1 68 +char 1 89 +char 1 0 +align 1 +LABELV $188 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 69 +char 1 76 +char 1 69 +char 1 69 +char 1 54 +char 1 0 +align 1 +LABELV $187 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 69 +char 1 76 +char 1 69 +char 1 69 +char 1 53 +char 1 0 +align 1 +LABELV $186 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 69 +char 1 76 +char 1 69 +char 1 69 +char 1 52 +char 1 0 +align 1 +LABELV $185 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 69 +char 1 76 +char 1 69 +char 1 69 +char 1 51 +char 1 0 +align 1 +LABELV $184 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 69 +char 1 76 +char 1 69 +char 1 69 +char 1 50 +char 1 0 +align 1 +LABELV $183 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 77 +char 1 69 +char 1 76 +char 1 69 +char 1 69 +char 1 49 +char 1 0 +align 1 +LABELV $182 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $181 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 49 +char 1 0 +align 1 +LABELV $180 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $179 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 57 +char 1 0 +align 1 +LABELV $178 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 56 +char 1 0 +align 1 +LABELV $177 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 55 +char 1 0 +align 1 +LABELV $176 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 54 +char 1 0 +align 1 +LABELV $175 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 53 +char 1 0 +align 1 +LABELV $174 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 52 +char 1 0 +align 1 +LABELV $173 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 51 +char 1 0 +align 1 +LABELV $172 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 50 +char 1 0 +align 1 +LABELV $171 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 65 +char 1 84 +char 1 84 +char 1 65 +char 1 67 +char 1 75 +char 1 49 +char 1 0 +align 1 +LABELV $170 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 50 +char 1 48 +char 1 0 +align 1 +LABELV $169 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 57 +char 1 0 +align 1 +LABELV $168 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 56 +char 1 0 +align 1 +LABELV $167 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 55 +char 1 0 +align 1 +LABELV $166 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 54 +char 1 0 +align 1 +LABELV $165 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 53 +char 1 0 +align 1 +LABELV $164 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 52 +char 1 0 +align 1 +LABELV $163 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 51 +char 1 0 +align 1 +LABELV $162 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $161 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 49 +char 1 0 +align 1 +LABELV $160 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $159 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 57 +char 1 0 +align 1 +LABELV $158 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 56 +char 1 0 +align 1 +LABELV $157 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 55 +char 1 0 +align 1 +LABELV $156 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 54 +char 1 0 +align 1 +LABELV $155 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 53 +char 1 0 +align 1 +LABELV $154 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 52 +char 1 0 +align 1 +LABELV $153 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 51 +char 1 0 +align 1 +LABELV $152 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 50 +char 1 0 +align 1 +LABELV $151 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 80 +char 1 65 +char 1 73 +char 1 78 +char 1 49 +char 1 0 +align 1 +LABELV $150 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 77 +char 1 69 +char 1 77 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 76 +char 1 65 +char 1 82 +char 1 77 +char 1 0 +align 1 +LABELV $149 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 77 +char 1 69 +char 1 77 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 82 +char 1 65 +char 1 82 +char 1 77 +char 1 0 +align 1 +LABELV $148 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 77 +char 1 69 +char 1 77 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 82 +char 1 76 +char 1 69 +char 1 71 +char 1 0 +align 1 +LABELV $147 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 77 +char 1 69 +char 1 77 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 76 +char 1 76 +char 1 69 +char 1 71 +char 1 0 +align 1 +LABELV $146 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 77 +char 1 69 +char 1 77 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 84 +char 1 79 +char 1 82 +char 1 83 +char 1 79 +char 1 49 +char 1 0 +align 1 +LABELV $145 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 73 +char 1 83 +char 1 77 +char 1 69 +char 1 77 +char 1 66 +char 1 69 +char 1 82 +char 1 95 +char 1 72 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $144 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $143 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 85 +char 1 77 +char 1 66 +char 1 76 +char 1 69 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $142 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 89 +char 1 73 +char 1 78 +char 1 71 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $141 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 50 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $140 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 49 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $139 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 50 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $138 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 49 +char 1 95 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $137 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 53 +char 1 0 +align 1 +LABELV $136 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 52 +char 1 0 +align 1 +LABELV $135 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 51 +char 1 0 +align 1 +LABELV $134 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 50 +char 1 0 +align 1 +LABELV $133 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 76 +char 1 79 +char 1 80 +char 1 49 +char 1 0 +align 1 +LABELV $132 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $131 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 85 +char 1 77 +char 1 66 +char 1 76 +char 1 69 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $130 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 89 +char 1 73 +char 1 78 +char 1 71 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $129 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $128 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $127 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $126 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $125 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 57 +char 1 0 +align 1 +LABELV $124 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 56 +char 1 0 +align 1 +LABELV $123 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 55 +char 1 0 +align 1 +LABELV $122 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 54 +char 1 0 +align 1 +LABELV $121 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 53 +char 1 0 +align 1 +LABELV $120 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 52 +char 1 0 +align 1 +LABELV $119 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 51 +char 1 0 +align 1 +LABELV $118 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $117 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 49 +char 1 0 +align 1 +LABELV $116 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $115 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 57 +char 1 0 +align 1 +LABELV $114 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 56 +char 1 0 +align 1 +LABELV $113 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 55 +char 1 0 +align 1 +LABELV $112 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 54 +char 1 0 +align 1 +LABELV $111 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 53 +char 1 0 +align 1 +LABELV $110 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 52 +char 1 0 +align 1 +LABELV $109 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 51 +char 1 0 +align 1 +LABELV $108 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $107 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $106 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 67 +char 1 82 +char 1 79 +char 1 85 +char 1 67 +char 1 72 +char 1 69 +char 1 68 +char 1 0 +align 1 +LABELV $105 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 85 +char 1 80 +char 1 0 +align 1 +LABELV $104 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 68 +char 1 78 +char 1 0 +align 1 +LABELV $103 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 89 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 68 +char 1 78 +char 1 0 +align 1 +LABELV $102 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 89 +char 1 73 +char 1 78 +char 1 71 +char 1 95 +char 1 85 +char 1 80 +char 1 0 +align 1 +LABELV $101 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 80 +char 1 73 +char 1 78 +char 1 95 +char 1 49 +char 1 56 +char 1 48 +char 1 0 +align 1 +LABELV $100 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 80 +char 1 73 +char 1 78 +char 1 95 +char 1 57 +char 1 48 +char 1 95 +char 1 76 +char 1 0 +align 1 +LABELV $99 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 80 +char 1 73 +char 1 78 +char 1 95 +char 1 57 +char 1 48 +char 1 95 +char 1 82 +char 1 0 +align 1 +LABELV $98 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 76 +char 1 73 +char 1 80 +char 1 0 +align 1 +LABELV $97 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 95 +char 1 82 +char 1 79 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $96 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 76 +char 1 65 +char 1 78 +char 1 68 +char 1 0 +align 1 +LABELV $95 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 73 +char 1 78 +char 1 65 +char 1 73 +char 1 82 +char 1 0 +align 1 +LABELV $94 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 70 +char 1 65 +char 1 76 +char 1 76 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 0 +align 1 +LABELV $93 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 83 +char 1 84 +char 1 85 +char 1 77 +char 1 66 +char 1 76 +char 1 69 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 0 +align 1 +LABELV $92 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 76 +char 1 89 +char 1 73 +char 1 78 +char 1 71 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 0 +align 1 +LABELV $91 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 73 +char 1 68 +char 1 76 +char 1 69 +char 1 0 +align 1 +LABELV $90 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $89 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 66 +char 1 65 +char 1 67 +char 1 75 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $88 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 51 +char 1 0 +align 1 +LABELV $87 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 50 +char 1 0 +align 1 +LABELV $86 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 70 +char 1 79 +char 1 82 +char 1 87 +char 1 65 +char 1 82 +char 1 68 +char 1 49 +char 1 0 +align 1 +LABELV $85 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 57 +char 1 0 +align 1 +LABELV $84 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 56 +char 1 0 +align 1 +LABELV $83 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 55 +char 1 0 +align 1 +LABELV $82 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 54 +char 1 0 +align 1 +LABELV $81 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 53 +char 1 0 +align 1 +LABELV $80 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 52 +char 1 95 +char 1 83 +char 1 73 +char 1 84 +char 1 85 +char 1 80 +char 1 0 +align 1 +LABELV $79 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 52 +char 1 95 +char 1 85 +char 1 78 +char 1 71 +char 1 82 +char 1 73 +char 1 80 +char 1 0 +align 1 +LABELV $78 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 52 +char 1 0 +align 1 +LABELV $77 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 51 +char 1 0 +align 1 +LABELV $76 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 50 +char 1 0 +align 1 +LABELV $75 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 49 +char 1 0 +align 1 +LABELV $74 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $73 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 57 +char 1 0 +align 1 +LABELV $72 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 56 +char 1 0 +align 1 +LABELV $71 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 55 +char 1 0 +align 1 +LABELV $70 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 54 +char 1 0 +align 1 +LABELV $69 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 53 +char 1 0 +align 1 +LABELV $68 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 52 +char 1 0 +align 1 +LABELV $67 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 51 +char 1 0 +align 1 +LABELV $66 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 50 +char 1 0 +align 1 +LABELV $65 +char 1 66 +char 1 79 +char 1 84 +char 1 72 +char 1 95 +char 1 68 +char 1 69 +char 1 65 +char 1 84 +char 1 72 +char 1 49 +char 1 0 diff --git a/CODE-mp/game/vm/bg_saber.asm b/CODE-mp/game/vm/bg_saber.asm new file mode 100644 index 0000000..88ed704 --- /dev/null +++ b/CODE-mp/game/vm/bg_saber.asm @@ -0,0 +1,12002 @@ +export PM_irand_timesync +code +proc PM_irand_timesync 8 4 +file "../bg_saber.c" +line 6 +;1:#include "q_shared.h" +;2:#include "bg_public.h" +;3:#include "bg_local.h" +;4: +;5:int PM_irand_timesync(int val1, int val2) +;6:{ +line 9 +;7: int i; +;8: +;9: i = (val1-1) + (Q_random( &pm->cmd.serverTime )*(val2 - val1)) + 1; +ADDRGP4 pm +INDIRP4 +CNSTI4 4 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_random +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ADDF4 +CNSTF4 1065353216 +ADDF4 +CVFI4 4 +ASGNI4 +line 10 +;10: if (i < val1) +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRI4 +GEI4 $66 +line 11 +;11: { +line 12 +;12: i = val1; +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 13 +;13: } +LABELV $66 +line 14 +;14: if (i > val2) +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +LEI4 $68 +line 15 +;15: { +line 16 +;16: i = val2; +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 17 +;17: } +LABELV $68 +line 19 +;18: +;19: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $65 +endproc PM_irand_timesync 8 4 +export BG_ForcePowerDrain +proc BG_ForcePowerDrain 12 0 +line 23 +;20:} +;21: +;22:void BG_ForcePowerDrain( playerState_t *ps, forcePowers_t forcePower, int overrideAmt ) +;23:{ +line 25 +;24: //take away the power +;25: int drain = overrideAmt; +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 34 +;26: +;27: /* +;28: if (ps->powerups[PW_FORCE_BOON]) +;29: { +;30: return; +;31: } +;32: */ +;33: +;34: if ( !drain ) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $71 +line 35 +;35: { +line 36 +;36: drain = forcePowerNeeded[ps->fd.forcePowerLevel[forcePower]][forcePower]; +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +CNSTI4 72 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 932 +ADDP4 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 forcePowerNeeded +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 37 +;37: } +LABELV $71 +line 38 +;38: if ( !drain ) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $73 +line 39 +;39: { +line 40 +;40: return; +ADDRGP4 $70 +JUMPV +LABELV $73 +line 43 +;41: } +;42: +;43: if (forcePower == FP_LEVITATION) +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $75 +line 44 +;44: { //special case +line 45 +;45: int jumpDrain = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 47 +;46: +;47: if (ps->velocity[2] > 250) +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1132068864 +LEF4 $77 +line 48 +;48: { +line 49 +;49: jumpDrain = 20; +ADDRLP4 4 +CNSTI4 20 +ASGNI4 +line 50 +;50: } +ADDRGP4 $78 +JUMPV +LABELV $77 +line 51 +;51: else if (ps->velocity[2] > 200) +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1128792064 +LEF4 $79 +line 52 +;52: { +line 53 +;53: jumpDrain = 16; +ADDRLP4 4 +CNSTI4 16 +ASGNI4 +line 54 +;54: } +ADDRGP4 $80 +JUMPV +LABELV $79 +line 55 +;55: else if (ps->velocity[2] > 150) +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1125515264 +LEF4 $81 +line 56 +;56: { +line 57 +;57: jumpDrain = 12; +ADDRLP4 4 +CNSTI4 12 +ASGNI4 +line 58 +;58: } +ADDRGP4 $82 +JUMPV +LABELV $81 +line 59 +;59: else if (ps->velocity[2] > 100) +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1120403456 +LEF4 $83 +line 60 +;60: { +line 61 +;61: jumpDrain = 8; +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +line 62 +;62: } +ADDRGP4 $84 +JUMPV +LABELV $83 +line 63 +;63: else if (ps->velocity[2] > 50) +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1112014848 +LEF4 $85 +line 64 +;64: { +line 65 +;65: jumpDrain = 6; +ADDRLP4 4 +CNSTI4 6 +ASGNI4 +line 66 +;66: } +ADDRGP4 $86 +JUMPV +LABELV $85 +line 67 +;67: else if (ps->velocity[2] > 0) +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 0 +LEF4 $87 +line 68 +;68: { +line 69 +;69: jumpDrain = 4; +ADDRLP4 4 +CNSTI4 4 +ASGNI4 +line 70 +;70: } +LABELV $87 +LABELV $86 +LABELV $84 +LABELV $82 +LABELV $80 +LABELV $78 +line 72 +;71: +;72: if (jumpDrain) +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $89 +line 73 +;73: { +line 74 +;74: jumpDrain /= ps->fd.forcePowerLevel[FP_LEVITATION]; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 936 +ADDP4 +INDIRI4 +DIVI4 +ASGNI4 +line 75 +;75: } +LABELV $89 +line 77 +;76: +;77: ps->fd.forcePower -= jumpDrain; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 920 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +ASGNI4 +line 78 +;78: if ( ps->fd.forcePower < 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 920 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $70 +line 79 +;79: { +line 80 +;80: ps->fd.forcePower = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 920 +ADDP4 +CNSTI4 0 +ASGNI4 +line 81 +;81: } +line 83 +;82: +;83: return; +ADDRGP4 $70 +JUMPV +LABELV $75 +line 86 +;84: } +;85: +;86: ps->fd.forcePower -= drain; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 920 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +SUBI4 +ASGNI4 +line 87 +;87: if ( ps->fd.forcePower < 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 920 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $93 +line 88 +;88: { +line 89 +;89: ps->fd.forcePower = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 920 +ADDP4 +CNSTI4 0 +ASGNI4 +line 90 +;90: } +LABELV $93 +line 91 +;91:} +LABELV $70 +endproc BG_ForcePowerDrain 12 0 +data +export saberMoveData +align 4 +LABELV saberMoveData +address $95 +byte 4 550 +byte 4 1 +byte 4 1 +byte 4 0 +byte 4 350 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $96 +byte 4 553 +byte 4 1 +byte 4 1 +byte 4 0 +byte 4 350 +byte 4 2 +byte 4 1 +byte 4 22 +byte 4 0 +address $97 +byte 4 566 +byte 4 1 +byte 4 1 +byte 4 2 +byte 4 350 +byte 4 0 +byte 4 1 +byte 4 22 +byte 4 0 +address $98 +byte 4 567 +byte 4 1 +byte 4 1 +byte 4 2 +byte 4 350 +byte 4 0 +byte 4 1 +byte 4 22 +byte 4 0 +address $99 +byte 4 129 +byte 4 4 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 25 +byte 4 25 +byte 4 200 +address $100 +byte 4 127 +byte 4 5 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 26 +byte 4 26 +byte 4 200 +address $101 +byte 4 131 +byte 4 6 +byte 4 2 +byte 4 10 +byte 4 50 +byte 4 1 +byte 4 27 +byte 4 27 +byte 4 200 +address $102 +byte 4 130 +byte 4 0 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 28 +byte 4 28 +byte 4 200 +address $103 +byte 4 128 +byte 4 1 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 29 +byte 4 29 +byte 4 200 +address $104 +byte 4 132 +byte 4 2 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 30 +byte 4 30 +byte 4 200 +address $105 +byte 4 126 +byte 4 3 +byte 4 7 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 31 +byte 4 31 +byte 4 200 +address $106 +byte 4 803 +byte 4 1 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $107 +byte 4 804 +byte 4 1 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $108 +byte 4 809 +byte 4 1 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $109 +byte 4 808 +byte 4 7 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $110 +byte 4 807 +byte 4 3 +byte 4 7 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $111 +byte 4 806 +byte 4 1 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 51 +byte 4 200 +address $112 +byte 4 805 +byte 4 5 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 40 +byte 4 200 +address $113 +byte 4 178 +byte 4 1 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 4 +byte 4 4 +byte 4 200 +address $114 +byte 4 176 +byte 4 1 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 5 +byte 4 5 +byte 4 200 +address $115 +byte 4 180 +byte 4 1 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 6 +byte 4 6 +byte 4 200 +address $116 +byte 4 179 +byte 4 1 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 7 +byte 4 7 +byte 4 200 +address $117 +byte 4 177 +byte 4 1 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 8 +byte 4 8 +byte 4 200 +address $118 +byte 4 181 +byte 4 1 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 9 +byte 4 9 +byte 4 200 +address $119 +byte 4 175 +byte 4 1 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 1 +byte 4 10 +byte 4 10 +byte 4 200 +address $120 +byte 4 186 +byte 4 0 +byte 4 1 +byte 4 2 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $121 +byte 4 184 +byte 4 1 +byte 4 1 +byte 4 2 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $122 +byte 4 188 +byte 4 2 +byte 4 1 +byte 4 2 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $123 +byte 4 185 +byte 4 4 +byte 4 1 +byte 4 2 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $124 +byte 4 183 +byte 4 5 +byte 4 1 +byte 4 2 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $125 +byte 4 187 +byte 4 6 +byte 4 1 +byte 4 2 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $126 +byte 4 182 +byte 4 7 +byte 4 1 +byte 4 2 +byte 4 100 +byte 4 1 +byte 4 1 +byte 4 1 +byte 4 200 +address $127 +byte 4 133 +byte 4 0 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 8 +byte 4 150 +address $128 +byte 4 160 +byte 4 0 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 9 +byte 4 150 +address $129 +byte 4 161 +byte 4 0 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 10 +byte 4 150 +address $130 +byte 4 134 +byte 4 0 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 4 +byte 4 150 +address $131 +byte 4 135 +byte 4 0 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 5 +byte 4 150 +address $132 +byte 4 136 +byte 4 0 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 6 +byte 4 150 +address $133 +byte 4 162 +byte 4 1 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 7 +byte 4 150 +address $134 +byte 4 137 +byte 4 1 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 9 +byte 4 150 +address $135 +byte 4 163 +byte 4 1 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 10 +byte 4 150 +address $136 +byte 4 138 +byte 4 1 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 4 +byte 4 150 +address $137 +byte 4 139 +byte 4 1 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 5 +byte 4 150 +address $138 +byte 4 140 +byte 4 1 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 6 +byte 4 150 +address $139 +byte 4 141 +byte 4 2 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 7 +byte 4 150 +address $140 +byte 4 164 +byte 4 2 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 8 +byte 4 150 +address $141 +byte 4 165 +byte 4 2 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 10 +byte 4 150 +address $142 +byte 4 142 +byte 4 2 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 4 +byte 4 150 +address $143 +byte 4 143 +byte 4 2 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 5 +byte 4 150 +address $144 +byte 4 144 +byte 4 2 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 6 +byte 4 150 +address $145 +byte 4 145 +byte 4 3 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 7 +byte 4 150 +address $146 +byte 4 146 +byte 4 3 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 8 +byte 4 150 +address $147 +byte 4 147 +byte 4 3 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 9 +byte 4 150 +address $148 +byte 4 148 +byte 4 3 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 4 +byte 4 150 +address $149 +byte 4 149 +byte 4 3 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 5 +byte 4 150 +address $150 +byte 4 150 +byte 4 3 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 6 +byte 4 150 +address $151 +byte 4 151 +byte 4 4 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 7 +byte 4 150 +address $152 +byte 4 166 +byte 4 4 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 8 +byte 4 150 +address $153 +byte 4 167 +byte 4 4 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 9 +byte 4 150 +address $154 +byte 4 168 +byte 4 4 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 10 +byte 4 150 +address $155 +byte 4 169 +byte 4 4 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 5 +byte 4 150 +address $156 +byte 4 152 +byte 4 4 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 6 +byte 4 150 +address $157 +byte 4 153 +byte 4 5 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 7 +byte 4 150 +address $158 +byte 4 154 +byte 4 5 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 8 +byte 4 150 +address $159 +byte 4 170 +byte 4 5 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 9 +byte 4 150 +address $160 +byte 4 171 +byte 4 5 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 10 +byte 4 150 +address $161 +byte 4 155 +byte 4 5 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 4 +byte 4 150 +address $162 +byte 4 172 +byte 4 5 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 6 +byte 4 150 +address $163 +byte 4 156 +byte 4 6 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 7 +byte 4 150 +address $164 +byte 4 157 +byte 4 6 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 8 +byte 4 150 +address $165 +byte 4 158 +byte 4 6 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 9 +byte 4 150 +address $166 +byte 4 173 +byte 4 6 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 10 +byte 4 150 +address $167 +byte 4 174 +byte 4 6 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 4 +byte 4 150 +address $168 +byte 4 159 +byte 4 6 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 5 +byte 4 150 +address $169 +byte 4 189 +byte 4 0 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 33 +byte 4 150 +address $170 +byte 4 190 +byte 4 1 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 42 +byte 4 150 +address $171 +byte 4 191 +byte 4 2 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 47 +byte 4 150 +address $172 +byte 4 192 +byte 4 3 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 55 +byte 4 150 +address $173 +byte 4 193 +byte 4 4 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 58 +byte 4 150 +address $174 +byte 4 194 +byte 4 5 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 63 +byte 4 150 +address $175 +byte 4 195 +byte 4 6 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 70 +byte 4 150 +address $176 +byte 4 196 +byte 4 0 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 25 +byte 4 33 +byte 4 150 +address $177 +byte 4 197 +byte 4 1 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 26 +byte 4 42 +byte 4 150 +address $178 +byte 4 198 +byte 4 2 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 47 +byte 4 150 +address $179 +byte 4 192 +byte 4 3 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 55 +byte 4 150 +address $180 +byte 4 199 +byte 4 4 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 28 +byte 4 58 +byte 4 150 +address $181 +byte 4 200 +byte 4 5 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 29 +byte 4 63 +byte 4 150 +address $182 +byte 4 201 +byte 4 6 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 30 +byte 4 70 +byte 4 150 +address $183 +byte 4 202 +byte 4 7 +byte 4 7 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 27 +byte 4 55 +byte 4 150 +address $184 +byte 4 522 +byte 4 0 +byte 4 0 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $185 +byte 4 523 +byte 4 1 +byte 4 1 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $186 +byte 4 524 +byte 4 2 +byte 4 2 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $187 +byte 4 525 +byte 4 3 +byte 4 3 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $188 +byte 4 526 +byte 4 4 +byte 4 4 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $189 +byte 4 527 +byte 4 5 +byte 4 5 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $190 +byte 4 528 +byte 4 6 +byte 4 6 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $191 +byte 4 529 +byte 4 7 +byte 4 7 +byte 4 10 +byte 4 100 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $192 +byte 4 530 +byte 4 3 +byte 4 7 +byte 4 10 +byte 4 50 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $193 +byte 4 531 +byte 4 2 +byte 4 6 +byte 4 10 +byte 4 50 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $194 +byte 4 532 +byte 4 4 +byte 4 0 +byte 4 10 +byte 4 50 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $195 +byte 4 533 +byte 4 6 +byte 4 2 +byte 4 10 +byte 4 50 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $196 +byte 4 534 +byte 4 7 +byte 4 3 +byte 4 10 +byte 4 50 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $197 +byte 4 535 +byte 4 0 +byte 4 4 +byte 4 10 +byte 4 50 +byte 4 0 +byte 4 1 +byte 4 1 +byte 4 150 +address $198 +byte 4 516 +byte 4 1 +byte 4 3 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 27 +byte 4 50 +byte 4 150 +address $199 +byte 4 517 +byte 4 1 +byte 4 2 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 27 +byte 4 45 +byte 4 150 +address $200 +byte 4 518 +byte 4 1 +byte 4 4 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 28 +byte 4 60 +byte 4 150 +address $201 +byte 4 519 +byte 4 1 +byte 4 6 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 25 +byte 4 72 +byte 4 150 +address $202 +byte 4 521 +byte 4 1 +byte 4 0 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 30 +byte 4 33 +byte 4 150 +address $203 +byte 4 511 +byte 4 1 +byte 4 3 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 27 +byte 4 10 +byte 4 150 +address $204 +byte 4 512 +byte 4 1 +byte 4 4 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 27 +byte 4 9 +byte 4 150 +address $205 +byte 4 513 +byte 4 1 +byte 4 2 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 28 +byte 4 4 +byte 4 150 +address $206 +byte 4 514 +byte 4 1 +byte 4 0 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 25 +byte 4 7 +byte 4 150 +address $207 +byte 4 515 +byte 4 1 +byte 4 6 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 30 +byte 4 6 +byte 4 150 +address $208 +byte 4 511 +byte 4 1 +byte 4 3 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 27 +byte 4 10 +byte 4 300 +address $209 +byte 4 513 +byte 4 1 +byte 4 2 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 28 +byte 4 4 +byte 4 300 +address $210 +byte 4 512 +byte 4 1 +byte 4 4 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 27 +byte 4 9 +byte 4 300 +address $211 +byte 4 515 +byte 4 1 +byte 4 6 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 30 +byte 4 6 +byte 4 300 +address $212 +byte 4 514 +byte 4 1 +byte 4 0 +byte 4 10 +byte 4 50 +byte 4 2 +byte 4 25 +byte 4 7 +byte 4 300 +export transitionMove +align 4 +LABELV transitionMove +byte 4 0 +byte 4 32 +byte 4 33 +byte 4 34 +byte 4 35 +byte 4 36 +byte 4 37 +byte 4 0 +byte 4 38 +byte 4 0 +byte 4 39 +byte 4 40 +byte 4 41 +byte 4 42 +byte 4 43 +byte 4 0 +byte 4 44 +byte 4 45 +byte 4 0 +byte 4 46 +byte 4 47 +byte 4 48 +byte 4 49 +byte 4 0 +byte 4 50 +byte 4 51 +byte 4 52 +byte 4 0 +byte 4 53 +byte 4 54 +byte 4 55 +byte 4 0 +byte 4 56 +byte 4 57 +byte 4 58 +byte 4 59 +byte 4 0 +byte 4 60 +byte 4 61 +byte 4 0 +byte 4 62 +byte 4 63 +byte 4 64 +byte 4 65 +byte 4 66 +byte 4 0 +byte 4 67 +byte 4 0 +byte 4 68 +byte 4 69 +byte 4 70 +byte 4 71 +byte 4 72 +byte 4 73 +byte 4 0 +byte 4 0 +byte 4 68 +byte 4 32 +byte 4 33 +byte 4 34 +byte 4 35 +byte 4 36 +byte 4 37 +byte 4 0 +export PM_AttackMoveForQuad +code +proc PM_AttackMoveForQuad 4 0 +line 322 +;92: +;93:// Silly, but I'm replacing these macros so they are shorter! +;94:#define AFLAG_IDLE (SETANIM_FLAG_NORMAL) +;95:#define AFLAG_ACTIVE (/*SETANIM_FLAG_OVERRIDE | */SETANIM_FLAG_HOLD | SETANIM_FLAG_HOLDLESS) +;96:#define AFLAG_WAIT (SETANIM_FLAG_HOLD | SETANIM_FLAG_HOLDLESS) +;97:#define AFLAG_FINISH (SETANIM_FLAG_HOLD) +;98: +;99:saberMoveData_t saberMoveData[LS_MOVE_MAX] = {// NB:randomized +;100: // name anim startQ endQ setanimflag blend, blocking chain_idle chain_attack trailLen +;101: {"None", BOTH_STAND1, Q_R, Q_R, AFLAG_IDLE, 350, BLK_NO, LS_NONE, LS_NONE, 0 }, // LS_NONE = 0, +;102: +;103: // General movements with saber +;104: {"Ready", BOTH_STAND2, Q_R, Q_R, AFLAG_IDLE, 350, BLK_WIDE, LS_READY, LS_S_R2L, 0 }, // LS_READY, +;105: {"Draw", BOTH_STAND1TO2, Q_R, Q_R, AFLAG_FINISH, 350, BLK_NO, LS_READY, LS_S_R2L, 0 }, // LS_DRAW, +;106: {"Putaway", BOTH_STAND2TO1, Q_R, Q_R, AFLAG_FINISH, 350, BLK_NO, LS_READY, LS_S_R2L, 0 }, // LS_PUTAWAY, +;107: +;108: // Attacks +;109: //UL2LR +;110: {"TL2BR Att", BOTH_A1_TL_BR, Q_TL, Q_BR, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_TL2BR, LS_R_TL2BR, 200 }, // LS_A_TL2BR +;111: //SLASH LEFT +;112: {"L2R Att", BOTH_A1__L__R, Q_L, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_L2R, LS_R_L2R, 200 }, // LS_A_L2R +;113: //LL2UR +;114: {"BL2TR Att", BOTH_A1_BL_TR, Q_BL, Q_TR, AFLAG_ACTIVE, 50, BLK_TIGHT, LS_R_BL2TR, LS_R_BL2TR, 200 }, // LS_A_BL2TR +;115: //LR2UL +;116: {"BR2TL Att", BOTH_A1_BR_TL, Q_BR, Q_TL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_BR2TL, LS_R_BR2TL, 200 }, // LS_A_BR2TL +;117: //SLASH RIGHT +;118: {"R2L Att", BOTH_A1__R__L, Q_R, Q_L, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_R2L, LS_R_R2L, 200 },// LS_A_R2L +;119: //UR2LL +;120: {"TR2BL Att", BOTH_A1_TR_BL, Q_TR, Q_BL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_TR2BL, LS_R_TR2BL, 200 }, // LS_A_TR2BL +;121: //SLASH DOWN +;122: {"T2B Att", BOTH_A1_T__B_, Q_T, Q_B, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_T2B, LS_R_T2B, 200 }, // LS_A_T2B +;123: //special attacks +;124: {"Back Stab", BOTH_A2_STABBACK1, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_BACKSTAB +;125: {"Back Att", BOTH_ATTACK_BACK, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_BACK +;126: {"CR Back Att", BOTH_CROUCHATTACKBACK1,Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_BACK_CR +;127: {"Lunge Att", BOTH_LUNGE2_B__T_, Q_B, Q_T, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_LUNGE +;128: {"Jump Att", BOTH_FORCELEAP2_T__B_,Q_T, Q_B, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_JUMP_T__B_ +;129: {"Flip Stab", BOTH_JUMPFLIPSTABDOWN,Q_R, Q_T, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_T1_T___R, 200 }, // LS_A_FLIP_STAB +;130: {"Flip Slash", BOTH_JUMPFLIPSLASHDOWN1,Q_L,Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_T1__R_T_, 200 }, // LS_A_FLIP_SLASH +;131: +;132: //starts +;133: {"TL2BR St", BOTH_S1_S1_TL, Q_R, Q_TL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_TL2BR, LS_A_TL2BR, 200 }, // LS_S_TL2BR +;134: {"L2R St", BOTH_S1_S1__L, Q_R, Q_L, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_L2R, LS_A_L2R, 200 }, // LS_S_L2R +;135: {"BL2TR St", BOTH_S1_S1_BL, Q_R, Q_BL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_BL2TR, LS_A_BL2TR, 200 }, // LS_S_BL2TR +;136: {"BR2TL St", BOTH_S1_S1_BR, Q_R, Q_BR, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_BR2TL, LS_A_BR2TL, 200 }, // LS_S_BR2TL +;137: {"R2L St", BOTH_S1_S1__R, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_R2L, LS_A_R2L, 200 }, // LS_S_R2L +;138: {"TR2BL St", BOTH_S1_S1_TR, Q_R, Q_TR, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_TR2BL, LS_A_TR2BL, 200 }, // LS_S_TR2BL +;139: {"T2B St", BOTH_S1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_T2B, LS_A_T2B, 200 }, // LS_S_T2B +;140: +;141: //returns +;142: {"TL2BR Ret", BOTH_R1_BR_S1, Q_BR, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_TL2BR +;143: {"L2R Ret", BOTH_R1__R_S1, Q_R, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_L2R +;144: {"BL2TR Ret", BOTH_R1_TR_S1, Q_TR, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_BL2TR +;145: {"BR2TL Ret", BOTH_R1_TL_S1, Q_TL, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_BR2TL +;146: {"R2L Ret", BOTH_R1__L_S1, Q_L, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_R2L +;147: {"TR2BL Ret", BOTH_R1_BL_S1, Q_BL, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_TR2BL +;148: {"T2B Ret", BOTH_R1_B__S1, Q_B, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_T2B +;149: +;150: //Transitions +;151: {"BR2R Trans", BOTH_T1_BR__R, Q_BR, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc bottom right to right +;152: {"BR2TR Trans", BOTH_T1_BR_TR, Q_BR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc bottom right to top right (use: BOTH_T1_TR_BR) +;153: {"BR2T Trans", BOTH_T1_BR_T_, Q_BR, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc bottom right to top (use: BOTH_T1_T__BR) +;154: {"BR2TL Trans", BOTH_T1_BR_TL, Q_BR, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast weak spin bottom right to top left +;155: {"BR2L Trans", BOTH_T1_BR__L, Q_BR, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast weak spin bottom right to left +;156: {"BR2BL Trans", BOTH_T1_BR_BL, Q_BR, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast weak spin bottom right to bottom left +;157: {"R2BR Trans", BOTH_T1__R_BR, Q_R, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast arc right to bottom right (use: BOTH_T1_BR__R) +;158: {"R2TR Trans", BOTH_T1__R_TR, Q_R, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc right to top right +;159: {"R2T Trans", BOTH_T1__R_T_, Q_R, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast ar right to top (use: BOTH_T1_T___R) +;160: {"R2TL Trans", BOTH_T1__R_TL, Q_R, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc right to top left +;161: {"R2L Trans", BOTH_T1__R__L, Q_R, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast weak spin right to left +;162: {"R2BL Trans", BOTH_T1__R_BL, Q_R, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast weak spin right to bottom left +;163: {"TR2BR Trans", BOTH_T1_TR_BR, Q_TR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast arc top right to bottom right +;164: {"TR2R Trans", BOTH_T1_TR__R, Q_TR, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc top right to right (use: BOTH_T1__R_TR) +;165: {"TR2T Trans", BOTH_T1_TR_T_, Q_TR, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc top right to top (use: BOTH_T1_T__TR) +;166: {"TR2TL Trans", BOTH_T1_TR_TL, Q_TR, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc top right to top left +;167: {"TR2L Trans", BOTH_T1_TR__L, Q_TR, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc top right to left +;168: {"TR2BL Trans", BOTH_T1_TR_BL, Q_TR, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast weak spin top right to bottom left +;169: {"T2BR Trans", BOTH_T1_T__BR, Q_T, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast arc top to bottom right +;170: {"T2R Trans", BOTH_T1_T___R, Q_T, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc top to right +;171: {"T2TR Trans", BOTH_T1_T__TR, Q_T, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc top to top right +;172: {"T2TL Trans", BOTH_T1_T__TL, Q_T, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc top to top left +;173: {"T2L Trans", BOTH_T1_T___L, Q_T, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc top to left +;174: {"T2BL Trans", BOTH_T1_T__BL, Q_T, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast arc top to bottom left +;175: {"TL2BR Trans", BOTH_T1_TL_BR, Q_TL, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast weak spin top left to bottom right +;176: {"TL2R Trans", BOTH_T1_TL__R, Q_TL, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc top left to right (use: BOTH_T1__R_TL) +;177: {"TL2TR Trans", BOTH_T1_TL_TR, Q_TL, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc top left to top right (use: BOTH_T1_TR_TL) +;178: {"TL2T Trans", BOTH_T1_TL_T_, Q_TL, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc top left to top (use: BOTH_T1_T__TL) +;179: {"TL2L Trans", BOTH_T1_TL__L, Q_TL, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc top left to left (use: BOTH_T1__L_TL) +;180: {"TL2BL Trans", BOTH_T1_TL_BL, Q_TL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast arc top left to bottom left +;181: {"L2BR Trans", BOTH_T1__L_BR, Q_L, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast weak spin left to bottom right +;182: {"L2R Trans", BOTH_T1__L__R, Q_L, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast weak spin left to right +;183: {"L2TR Trans", BOTH_T1__L_TR, Q_L, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc left to top right (use: BOTH_T1_TR__L) +;184: {"L2T Trans", BOTH_T1__L_T_, Q_L, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc left to top (use: BOTH_T1_T___L) +;185: {"L2TL Trans", BOTH_T1__L_TL, Q_L, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc left to top left +;186: {"L2BL Trans", BOTH_T1__L_BL, Q_L, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast arc left to bottom left (use: BOTH_T1_BL__L) +;187: {"BL2BR Trans", BOTH_T1_BL_BR, Q_BL, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast weak spin bottom left to bottom right +;188: {"BL2R Trans", BOTH_T1_BL__R, Q_BL, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast weak spin bottom left to right +;189: {"BL2TR Trans", BOTH_T1_BL_TR, Q_BL, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast weak spin bottom left to top right +;190: {"BL2T Trans", BOTH_T1_BL_T_, Q_BL, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc bottom left to top (use: BOTH_T1_T__BL) +;191: {"BL2TL Trans", BOTH_T1_BL_TL, Q_BL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc bottom left to top left (use: BOTH_T1_TL_BL) +;192: {"BL2L Trans", BOTH_T1_BL__L, Q_BL, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc bottom left to left +;193: +;194: //Bounces +;195: {"Bounce BR", BOTH_B1_BR___, Q_BR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_T1_BR_TR, 150 }, +;196: {"Bounce R", BOTH_B1__R___, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_T1__R__L, 150 }, +;197: {"Bounce TR", BOTH_B1_TR___, Q_TR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_TR_TL, 150 }, +;198: {"Bounce T", BOTH_B1_T____, Q_T, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_T__BL, 150 }, +;199: {"Bounce TL", BOTH_B1_TL___, Q_TL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_T1_TL_TR, 150 }, +;200: {"Bounce L", BOTH_B1__L___, Q_L, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_T1__L__R, 150 }, +;201: {"Bounce BL", BOTH_B1_BL___, Q_BL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_T1_BL_TR, 150 }, +;202: +;203: //Deflected attacks (like bounces, but slide off enemy saber, not straight back) +;204: {"Deflect BR", BOTH_D1_BR___, Q_BR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_T1_BR_TR, 150 }, +;205: {"Deflect R", BOTH_D1__R___, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_T1__R__L, 150 }, +;206: {"Deflect TR", BOTH_D1_TR___, Q_TR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_TR_TL, 150 }, +;207: {"Deflect T", BOTH_B1_T____, Q_T, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_T__BL, 150 }, +;208: {"Deflect TL", BOTH_D1_TL___, Q_TL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_T1_TL_TR, 150 }, +;209: {"Deflect L", BOTH_D1__L___, Q_L, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_T1__L__R, 150 }, +;210: {"Deflect BL", BOTH_D1_BL___, Q_BL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_T1_BL_TR, 150 }, +;211: {"Deflect B", BOTH_D1_B____, Q_B, Q_B, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_T__BL, 150 }, +;212: +;213: //Reflected attacks +;214: {"Reflected BR",BOTH_V1_BR_S1, Q_BR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_BR +;215: {"Reflected R", BOTH_V1__R_S1, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1__R +;216: {"Reflected TR",BOTH_V1_TR_S1, Q_TR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_TR +;217: {"Reflected T", BOTH_V1_T__S1, Q_T, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_T_ +;218: {"Reflected TL",BOTH_V1_TL_S1, Q_TL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_TL +;219: {"Reflected L", BOTH_V1__L_S1, Q_L, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1__L +;220: {"Reflected BL",BOTH_V1_BL_S1, Q_BL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_BL +;221: {"Reflected B", BOTH_V1_B__S1, Q_B, Q_B, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_B_ +;222: +;223: // Broken parries +;224: {"BParry Top", BOTH_H1_S1_T_, Q_T, Q_B, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UP, +;225: {"BParry UR", BOTH_H1_S1_TR, Q_TR, Q_BL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UR, +;226: {"BParry UL", BOTH_H1_S1_TL, Q_TL, Q_BR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UL, +;227: {"BParry LR", BOTH_H1_S1_BL, Q_BL, Q_TR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LR, +;228: {"BParry Bot", BOTH_H1_S1_B_, Q_B, Q_T, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL +;229: {"BParry LL", BOTH_H1_S1_BR, Q_BR, Q_TL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL +;230: +;231: // Knockaways +;232: {"Knock Top", BOTH_K1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_T1_T__BR, 150 }, // LS_PARRY_UP, +;233: {"Knock UR", BOTH_K1_S1_TR, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_T1_TR__R, 150 }, // LS_PARRY_UR, +;234: {"Knock UL", BOTH_K1_S1_TL, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_T1_TL__L, 150 }, // LS_PARRY_UL, +;235: {"Knock LR", BOTH_K1_S1_BL, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_T1_BL_TL, 150 }, // LS_PARRY_LR, +;236: {"Knock LL", BOTH_K1_S1_BR, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_T1_BR_TR, 150 }, // LS_PARRY_LL +;237: +;238: // Parry +;239: {"Parry Top", BOTH_P1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_T2B, 150 }, // LS_PARRY_UP, +;240: {"Parry UR", BOTH_P1_S1_TR, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_TR2BL, 150 }, // LS_PARRY_UR, +;241: {"Parry UL", BOTH_P1_S1_TL, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_A_TL2BR, 150 }, // LS_PARRY_UL, +;242: {"Parry LR", BOTH_P1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 150 }, // LS_PARRY_LR, +;243: {"Parry LL", BOTH_P1_S1_BR, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_A_BL2TR, 150 }, // LS_PARRY_LL +;244: +;245: // Reflecting a missile +;246: {"Reflect Top", BOTH_P1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_T2B, 300 }, // LS_PARRY_UP, +;247: {"Reflect UR", BOTH_P1_S1_TL, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_A_TL2BR, 300 }, // LS_PARRY_UR, +;248: {"Reflect UL", BOTH_P1_S1_TR, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_TR2BL, 300 }, // LS_PARRY_UL, +;249: {"Reflect LR", BOTH_P1_S1_BR, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_A_BL2TR, 300 }, // LS_PARRY_LR +;250: {"Reflect LL", BOTH_P1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 300 }, // LS_PARRY_LL, +;251:}; +;252: +;253:int transitionMove[Q_NUM_QUADS][Q_NUM_QUADS] = +;254:{ +;255: LS_NONE, //Can't transition to same pos! +;256: LS_T1_BR__R,//40 +;257: LS_T1_BR_TR, +;258: LS_T1_BR_T_, +;259: LS_T1_BR_TL, +;260: LS_T1_BR__L, +;261: LS_T1_BR_BL, +;262: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any +;263: LS_T1__R_BR,//46 +;264: LS_NONE, //Can't transition to same pos! +;265: LS_T1__R_TR, +;266: LS_T1__R_T_, +;267: LS_T1__R_TL, +;268: LS_T1__R__L, +;269: LS_T1__R_BL, +;270: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any +;271: LS_T1_TR_BR,//52 +;272: LS_T1_TR__R, +;273: LS_NONE, //Can't transition to same pos! +;274: LS_T1_TR_T_, +;275: LS_T1_TR_TL, +;276: LS_T1_TR__L, +;277: LS_T1_TR_BL, +;278: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any +;279: LS_T1_T__BR,//58 +;280: LS_T1_T___R, +;281: LS_T1_T__TR, +;282: LS_NONE, //Can't transition to same pos! +;283: LS_T1_T__TL, +;284: LS_T1_T___L, +;285: LS_T1_T__BL, +;286: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any +;287: LS_T1_TL_BR,//64 +;288: LS_T1_TL__R, +;289: LS_T1_TL_TR, +;290: LS_T1_TL_T_, +;291: LS_NONE, //Can't transition to same pos! +;292: LS_T1_TL__L, +;293: LS_T1_TL_BL, +;294: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any +;295: LS_T1__L_BR,//70 +;296: LS_T1__L__R, +;297: LS_T1__L_TR, +;298: LS_T1__L_T_, +;299: LS_T1__L_TL, +;300: LS_NONE, //Can't transition to same pos! +;301: LS_T1__L_BL, +;302: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any +;303: LS_T1_BL_BR,//76 +;304: LS_T1_BL__R, +;305: LS_T1_BL_TR, +;306: LS_T1_BL_T_, +;307: LS_T1_BL_TL, +;308: LS_T1_BL__L, +;309: LS_NONE, //Can't transition to same pos! +;310: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any +;311: LS_T1_BL_BR,//NOTE: there are no transitions from bottom, so re-use the bottom right transitions +;312: LS_T1_BR__R, +;313: LS_T1_BR_TR, +;314: LS_T1_BR_T_, +;315: LS_T1_BR_TL, +;316: LS_T1_BR__L, +;317: LS_T1_BR_BL, +;318: LS_NONE //No transitions to bottom, and no anims start there, so shouldn't need any +;319:}; +;320: +;321:saberMoveName_t PM_AttackMoveForQuad( int quad ) +;322:{ +line 323 +;323: switch ( quad ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $214 +ADDRLP4 0 +INDIRI4 +CNSTI4 7 +GTI4 $214 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $223 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $223 +address $216 +address $217 +address $218 +address $219 +address $220 +address $221 +address $222 +address $216 +code +line 324 +;324: { +LABELV $216 +line 327 +;325: case Q_B: +;326: case Q_BR: +;327: return LS_A_BR2TL; +CNSTI4 7 +RETI4 +ADDRGP4 $213 +JUMPV +line 328 +;328: break; +LABELV $217 +line 330 +;329: case Q_R: +;330: return LS_A_R2L; +CNSTI4 8 +RETI4 +ADDRGP4 $213 +JUMPV +line 331 +;331: break; +LABELV $218 +line 333 +;332: case Q_TR: +;333: return LS_A_TR2BL; +CNSTI4 9 +RETI4 +ADDRGP4 $213 +JUMPV +line 334 +;334: break; +LABELV $219 +line 336 +;335: case Q_T: +;336: return LS_A_T2B; +CNSTI4 10 +RETI4 +ADDRGP4 $213 +JUMPV +line 337 +;337: break; +LABELV $220 +line 339 +;338: case Q_TL: +;339: return LS_A_TL2BR; +CNSTI4 4 +RETI4 +ADDRGP4 $213 +JUMPV +line 340 +;340: break; +LABELV $221 +line 342 +;341: case Q_L: +;342: return LS_A_L2R; +CNSTI4 5 +RETI4 +ADDRGP4 $213 +JUMPV +line 343 +;343: break; +LABELV $222 +line 345 +;344: case Q_BL: +;345: return LS_A_BL2TR; +CNSTI4 6 +RETI4 +ADDRGP4 $213 +JUMPV +line 346 +;346: break; +LABELV $214 +line 348 +;347: } +;348: return LS_NONE; +CNSTI4 0 +RETI4 +LABELV $213 +endproc PM_AttackMoveForQuad 4 0 +export PM_SaberAnimTransitionAnim +proc PM_SaberAnimTransitionAnim 32 0 +line 352 +;349:} +;350: +;351:int PM_SaberAnimTransitionAnim( int curmove, int newmove ) +;352:{ +line 354 +;353: //FIXME: take FP_SABERATTACK into account here somehow? +;354: int retmove = newmove; +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 355 +;355: if ( curmove == LS_READY ) +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +NEI4 $225 +line 356 +;356: {//just standing there +line 357 +;357: switch ( newmove ) +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LTI4 $226 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +GTI4 $226 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $230-16 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $230 +address $229 +address $229 +address $229 +address $229 +address $229 +address $229 +address $229 +code +line 358 +;358: { +LABELV $229 +line 367 +;359: case LS_A_TL2BR: +;360: case LS_A_L2R: +;361: case LS_A_BL2TR: +;362: case LS_A_BR2TL: +;363: case LS_A_R2L: +;364: case LS_A_TR2BL: +;365: case LS_A_T2B: +;366: //transition is the start +;367: retmove = LS_S_TL2BR + (newmove-LS_A_TL2BR); +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +CNSTI4 4 +SUBI4 +CNSTI4 18 +ADDI4 +ASGNI4 +line 368 +;368: break; +line 370 +;369: } +;370: } +ADDRGP4 $226 +JUMPV +LABELV $225 +line 372 +;371: else +;372: { +line 373 +;373: switch ( newmove ) +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +LTI4 $232 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +GTI4 $232 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $258-4 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $258 +address $234 +address $232 +address $232 +address $240 +address $240 +address $240 +address $240 +address $240 +address $240 +address $240 +code +line 374 +;374: { +LABELV $234 +line 377 +;375: //transitioning to ready pose +;376: case LS_READY: +;377: switch ( curmove ) +ADDRLP4 8 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 4 +LTI4 $233 +ADDRLP4 8 +INDIRI4 +CNSTI4 10 +GTI4 $233 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $238-16 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $238 +address $237 +address $237 +address $237 +address $237 +address $237 +address $237 +address $237 +code +line 378 +;378: { +LABELV $237 +line 388 +;379: //transitioning from an attack +;380: case LS_A_TL2BR: +;381: case LS_A_L2R: +;382: case LS_A_BL2TR: +;383: case LS_A_BR2TL: +;384: case LS_A_R2L: +;385: case LS_A_TR2BL: +;386: case LS_A_T2B: +;387: //transition is the return +;388: retmove = LS_R_TL2BR + (newmove-LS_A_TL2BR); +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +CNSTI4 4 +SUBI4 +CNSTI4 25 +ADDI4 +ASGNI4 +line 389 +;389: break; +line 391 +;390: } +;391: break; +ADDRGP4 $233 +JUMPV +LABELV $240 +line 400 +;392: //transitioning to an attack +;393: case LS_A_TL2BR: +;394: case LS_A_L2R: +;395: case LS_A_BL2TR: +;396: case LS_A_BR2TL: +;397: case LS_A_R2L: +;398: case LS_A_TR2BL: +;399: case LS_A_T2B: +;400: /*if ( newmove == curmove ) +ADDRLP4 12 +CNSTI4 40 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+12 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +NEI4 $241 +line 405 +;401: {//FIXME: need a spin or something or go to next level, but for now, just play the return +;402: retmove = LS_R_TL2BR + (newmove-LS_A_TL2BR); +;403: } +;404: else */if ( saberMoveData[curmove].endQuad == saberMoveData[newmove].startQuad ) +;405: {//new move starts from same quadrant +line 406 +;406: retmove = newmove; +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 407 +;407: } +ADDRGP4 $233 +JUMPV +LABELV $241 +line 409 +;408: else +;409: { +line 410 +;410: switch ( curmove ) +ADDRLP4 16 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 4 +LTI4 $233 +ADDRLP4 16 +INDIRI4 +CNSTI4 31 +GTI4 $253 +ADDRLP4 16 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $254-16 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $254 +address $247 +address $247 +address $247 +address $247 +address $247 +address $247 +address $247 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $233 +address $250 +address $250 +address $250 +address $250 +address $250 +address $250 +address $250 +code +LABELV $253 +ADDRLP4 20 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 108 +LTI4 $233 +ADDRLP4 20 +INDIRI4 +CNSTI4 117 +GTI4 $233 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $256-432 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $256 +address $250 +address $250 +address $250 +address $250 +address $250 +address $250 +address $250 +address $250 +address $250 +address $250 +code +line 411 +;411: { +LABELV $247 +line 420 +;412: //transitioning from an attack +;413: case LS_A_TL2BR: +;414: case LS_A_L2R: +;415: case LS_A_BL2TR: +;416: case LS_A_BR2TL: +;417: case LS_A_R2L: +;418: case LS_A_TR2BL: +;419: case LS_A_T2B: +;420: retmove = transitionMove[saberMoveData[curmove].endQuad][saberMoveData[newmove].startQuad]; +ADDRLP4 24 +CNSTI4 40 +ASGNI4 +ADDRLP4 0 +ADDRLP4 24 +INDIRI4 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 24 +INDIRI4 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+12 +ADDP4 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 transitionMove +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 421 +;421: break; +ADDRGP4 $233 +JUMPV +LABELV $250 +line 459 +;422: //transitioning from a return +;423: case LS_R_TL2BR: +;424: case LS_R_L2R: +;425: case LS_R_BL2TR: +;426: case LS_R_BR2TL: +;427: case LS_R_R2L: +;428: case LS_R_TR2BL: +;429: case LS_R_T2B: +;430: //transitioning from a bounce +;431: /* +;432: case LS_BOUNCE_UL2LL: +;433: case LS_BOUNCE_LL2UL: +;434: case LS_BOUNCE_L2LL: +;435: case LS_BOUNCE_L2UL: +;436: case LS_BOUNCE_UR2LR: +;437: case LS_BOUNCE_LR2UR: +;438: case LS_BOUNCE_R2LR: +;439: case LS_BOUNCE_R2UR: +;440: case LS_BOUNCE_TOP: +;441: case LS_OVER_UR2UL: +;442: case LS_OVER_UL2UR: +;443: case LS_BOUNCE_UR: +;444: case LS_BOUNCE_UL: +;445: case LS_BOUNCE_LR: +;446: case LS_BOUNCE_LL: +;447: */ +;448: //transitioning from a parry/deflection +;449: case LS_PARRY_UP: +;450: case LS_REFLECT_UP: +;451: case LS_PARRY_UR: +;452: case LS_REFLECT_UR: +;453: case LS_PARRY_UL: +;454: case LS_REFLECT_UL: +;455: case LS_PARRY_LR: +;456: case LS_REFLECT_LR: +;457: case LS_PARRY_LL: +;458: case LS_REFLECT_LL: +;459: retmove = transitionMove[saberMoveData[curmove].endQuad][saberMoveData[newmove].startQuad]; +ADDRLP4 28 +CNSTI4 40 +ASGNI4 +ADDRLP4 0 +ADDRLP4 28 +INDIRI4 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 28 +INDIRI4 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+12 +ADDP4 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 transitionMove +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 460 +;460: break; +line 463 +;461: //NB: transitioning from transitions is fine +;462: } +;463: } +line 464 +;464: break; +LABELV $232 +LABELV $233 +line 467 +;465: //transitioning to any other anim is not supported +;466: } +;467: } +LABELV $226 +line 469 +;468: +;469: if ( retmove == LS_NONE ) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $260 +line 470 +;470: { +line 471 +;471: return newmove; +ADDRFP4 4 +INDIRI4 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $260 +line 474 +;472: } +;473: +;474: return retmove; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $224 +endproc PM_SaberAnimTransitionAnim 32 0 +export PM_SaberMoveQuadrantForMovement +proc PM_SaberMoveQuadrantForMovement 0 0 +line 479 +;475:} +;476: +;477: +;478:int PM_SaberMoveQuadrantForMovement( usercmd_t *ucmd ) +;479:{ +line 480 +;480: if ( ucmd->rightmove > 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 25 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $263 +line 481 +;481: {//moving right +line 482 +;482: if ( ucmd->forwardmove > 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $265 +line 483 +;483: {//forward right = TL2BR slash +line 484 +;484: return Q_TL; +CNSTI4 4 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $265 +line 486 +;485: } +;486: else if ( ucmd->forwardmove < 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $267 +line 487 +;487: {//backward right = BL2TR uppercut +line 488 +;488: return Q_BL; +CNSTI4 6 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $267 +line 491 +;489: } +;490: else +;491: {//just right is a left slice +line 492 +;492: return Q_L; +CNSTI4 5 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $263 +line 495 +;493: } +;494: } +;495: else if ( ucmd->rightmove < 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 25 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $269 +line 496 +;496: {//moving left +line 497 +;497: if ( ucmd->forwardmove > 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $271 +line 498 +;498: {//forward left = TR2BL slash +line 499 +;499: return Q_TR; +CNSTI4 2 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $271 +line 501 +;500: } +;501: else if ( ucmd->forwardmove < 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $273 +line 502 +;502: {//backward left = BR2TL uppercut +line 503 +;503: return Q_BR; +CNSTI4 0 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $273 +line 506 +;504: } +;505: else +;506: {//just left is a right slice +line 507 +;507: return Q_R; +CNSTI4 1 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $269 +line 511 +;508: } +;509: } +;510: else +;511: {//not moving left or right +line 512 +;512: if ( ucmd->forwardmove > 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $275 +line 513 +;513: {//forward= T2B slash +line 514 +;514: return Q_T; +CNSTI4 3 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $275 +line 516 +;515: } +;516: else if ( ucmd->forwardmove < 0 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $277 +line 517 +;517: {//backward= T2B slash //or B2T uppercut? +line 518 +;518: return Q_T; +CNSTI4 3 +RETI4 +ADDRGP4 $262 +JUMPV +LABELV $277 +line 521 +;519: } +;520: else //if ( curmove == LS_READY )//??? +;521: {//Not moving at all +line 522 +;522: return Q_R; +CNSTI4 1 +RETI4 +LABELV $262 +endproc PM_SaberMoveQuadrantForMovement 0 0 +export PM_SaberInBounce +proc PM_SaberInBounce 8 0 +line 530 +;523: } +;524: } +;525: //return Q_R;//???? +;526:} +;527: +;528://=================================================================== +;529:qboolean PM_SaberInBounce( int move ) +;530:{ +line 531 +;531: if ( move >= LS_B1_BR && move <= LS_B1_BL ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 74 +LTI4 $280 +ADDRLP4 0 +INDIRI4 +CNSTI4 80 +GTI4 $280 +line 532 +;532: { +line 533 +;533: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $279 +JUMPV +LABELV $280 +line 535 +;534: } +;535: if ( move >= LS_D1_BR && move <= LS_D1_BL ) +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 81 +LTI4 $282 +ADDRLP4 4 +INDIRI4 +CNSTI4 87 +GTI4 $282 +line 536 +;536: { +line 537 +;537: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $279 +JUMPV +LABELV $282 +line 539 +;538: } +;539: return qfalse; +CNSTI4 0 +RETI4 +LABELV $279 +endproc PM_SaberInBounce 8 0 +export PM_SaberInTransition +proc PM_SaberInTransition 4 0 +line 543 +;540:} +;541: +;542:qboolean PM_SaberInTransition( int move ) +;543:{ +line 544 +;544: if ( move >= LS_T1_BR__R && move <= LS_T1_BL__L ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 32 +LTI4 $285 +ADDRLP4 0 +INDIRI4 +CNSTI4 73 +GTI4 $285 +line 545 +;545: { +line 546 +;546: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $284 +JUMPV +LABELV $285 +line 548 +;547: } +;548: return qfalse; +CNSTI4 0 +RETI4 +LABELV $284 +endproc PM_SaberInTransition 4 0 +export PM_SaberKataDone +proc PM_SaberKataDone 20 8 +line 552 +;549:} +;550: +;551:qboolean PM_SaberKataDone( void ) +;552:{ +line 553 +;553: if ( (pm->ps->fd.saberAnimLevel >= FORCE_LEVEL_3 && pm->ps->saberAttackChainCount > PM_irand_timesync( 0, 1 )) || +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +CNSTI4 3 +LTI4 $291 +CNSTI4 0 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ADDRGP4 PM_irand_timesync +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1296 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +GTI4 $290 +LABELV $291 +ADDRLP4 8 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 2 +ASGNI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +NEI4 $288 +ADDRLP4 12 +INDIRI4 +ARGI4 +CNSTI4 5 +ARGI4 +ADDRLP4 16 +ADDRGP4 PM_irand_timesync +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1296 +ADDP4 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LEI4 $288 +LABELV $290 +line 555 +;554: ( pm->ps->fd.saberAnimLevel == FORCE_LEVEL_2 && pm->ps->saberAttackChainCount > PM_irand_timesync( 2, 5 ) ) ) +;555: { +line 556 +;556: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $287 +JUMPV +LABELV $288 +line 558 +;557: } +;558: return qfalse; +CNSTI4 0 +RETI4 +LABELV $287 +endproc PM_SaberKataDone 20 8 +export PM_SetAnimFrame +proc PM_SetAnimFrame 0 0 +line 562 +;559:} +;560: +;561:void PM_SetAnimFrame( playerState_t *gent, int frame, qboolean torso, qboolean legs ) +;562:{ +line 563 +;563: gent->saberLockFrame = frame; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 564 +;564:} +LABELV $292 +endproc PM_SetAnimFrame 0 0 +export PM_SaberLockBreak +proc PM_SaberLockBreak 88 16 +line 567 +;565: +;566:void PM_SaberLockBreak( playerState_t *genemy, qboolean victory ) +;567:{ +line 568 +;568: int winAnim = BOTH_STAND1, loseAnim = BOTH_STAND1; +ADDRLP4 0 +CNSTI4 550 +ASGNI4 +ADDRLP4 8 +CNSTI4 550 +ASGNI4 +line 569 +;569: qboolean punishLoser = qfalse; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 571 +;570: +;571: switch ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) ) +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 20 +CNSTI4 538 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 20 +INDIRI4 +EQI4 $297 +ADDRLP4 12 +INDIRI4 +CNSTI4 541 +EQI4 $300 +ADDRLP4 12 +INDIRI4 +ADDRLP4 20 +INDIRI4 +LTI4 $294 +LABELV $309 +ADDRLP4 12 +INDIRI4 +CNSTI4 548 +EQI4 $303 +ADDRLP4 12 +INDIRI4 +CNSTI4 549 +EQI4 $306 +ADDRGP4 $294 +JUMPV +line 572 +;572: { +LABELV $297 +line 574 +;573: case BOTH_BF2LOCK: +;574: pm->ps->saberMove = LS_A_T2B; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +CNSTI4 10 +ASGNI4 +line 575 +;575: winAnim = BOTH_A3_T__B_; +ADDRLP4 0 +CNSTI4 280 +ASGNI4 +line 576 +;576: if ( !victory ) +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $298 +line 577 +;577: {//no-one won +line 578 +;578: genemy->saberMove = LS_A_T2B; +ADDRFP4 0 +INDIRP4 +CNSTI4 512 +ADDP4 +CNSTI4 10 +ASGNI4 +line 579 +;579: loseAnim = winAnim; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 580 +;580: } +ADDRGP4 $295 +JUMPV +LABELV $298 +line 582 +;581: else +;582: { +line 584 +;583: //loseAnim = BOTH_KNOCKDOWN4; +;584: punishLoser = qtrue; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 585 +;585: } +line 586 +;586: break; +ADDRGP4 $295 +JUMPV +LABELV $300 +line 588 +;587: case BOTH_BF1LOCK: +;588: pm->ps->saberMove = LS_K1_T_; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +CNSTI4 103 +ASGNI4 +line 589 +;589: winAnim = BOTH_K1_S1_T_; +ADDRLP4 0 +CNSTI4 516 +ASGNI4 +line 590 +;590: if ( !victory ) +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $301 +line 591 +;591: {//no-one won +line 592 +;592: genemy->saberMove = LS_K1_T_; +ADDRFP4 0 +INDIRP4 +CNSTI4 512 +ADDP4 +CNSTI4 103 +ASGNI4 +line 593 +;593: loseAnim = winAnim; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 594 +;594: } +ADDRGP4 $295 +JUMPV +LABELV $301 +line 596 +;595: else +;596: { +line 598 +;597: //loseAnim = BOTH_BF1BREAK; +;598: punishLoser = qtrue; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 599 +;599: } +line 600 +;600: break; +ADDRGP4 $295 +JUMPV +LABELV $303 +line 602 +;601: case BOTH_CWCIRCLELOCK: +;602: winAnim = BOTH_CWCIRCLEBREAK; +ADDRLP4 0 +CNSTI4 546 +ASGNI4 +line 603 +;603: if ( !victory ) +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $304 +line 604 +;604: {//no-one won +line 605 +;605: loseAnim = winAnim; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 606 +;606: } +ADDRGP4 $295 +JUMPV +LABELV $304 +line 608 +;607: else +;608: { +line 609 +;609: genemy->saberMove = /*genemy->saberBounceMove =*/ LS_H1_BL; +ADDRFP4 0 +INDIRP4 +CNSTI4 512 +ADDP4 +CNSTI4 102 +ASGNI4 +line 610 +;610: genemy->saberBlocked = BLOCKED_PARRY_BROKEN; +ADDRFP4 0 +INDIRP4 +CNSTI4 520 +ADDP4 +CNSTI4 1 +ASGNI4 +line 612 +;611: //loseAnim = BOTH_H1_S1_BR; +;612: punishLoser = qtrue; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 613 +;613: } +line 614 +;614: break; +ADDRGP4 $295 +JUMPV +LABELV $306 +line 616 +;615: case BOTH_CCWCIRCLELOCK: +;616: winAnim = BOTH_CCWCIRCLEBREAK; +ADDRLP4 0 +CNSTI4 547 +ASGNI4 +line 617 +;617: if ( !victory ) +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $307 +line 618 +;618: {//no-one won +line 619 +;619: loseAnim = winAnim; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 620 +;620: } +ADDRGP4 $295 +JUMPV +LABELV $307 +line 622 +;621: else +;622: { +line 623 +;623: genemy->saberMove = /*genemy->saberBounceMove =*/ LS_H1_BR; +ADDRFP4 0 +INDIRP4 +CNSTI4 512 +ADDP4 +CNSTI4 100 +ASGNI4 +line 624 +;624: genemy->saberBlocked = BLOCKED_PARRY_BROKEN; +ADDRFP4 0 +INDIRP4 +CNSTI4 520 +ADDP4 +CNSTI4 1 +ASGNI4 +line 626 +;625: //loseAnim = BOTH_H1_S1_BL; +;626: punishLoser = qtrue; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 627 +;627: } +line 628 +;628: break; +LABELV $294 +LABELV $295 +line 630 +;629: } +;630: PM_SetAnim( SETANIM_BOTH, winAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, -1 ); +ADDRLP4 28 +CNSTI4 3 +ASGNI4 +ADDRLP4 28 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 28 +INDIRI4 +ARGI4 +CNSTI4 -1 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 632 +;631: +;632: if (punishLoser) +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $310 +line 633 +;633: { +line 636 +;634: vec3_t oppDir; +;635: +;636: int strength = 8; +ADDRLP4 44 +CNSTI4 8 +ASGNI4 +line 638 +;637: +;638: VectorSubtract(genemy->origin, pm->ps->origin, oppDir); +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +CNSTI4 20 +ASGNI4 +ADDRLP4 56 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 48 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 60 +CNSTI4 24 +ASGNI4 +ADDRLP4 32+4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 64 +CNSTI4 28 +ASGNI4 +ADDRLP4 32+8 +ADDRFP4 0 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 639 +;639: VectorNormalize(oppDir); +ADDRLP4 32 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 641 +;640: +;641: genemy->forceHandExtend = HANDEXTEND_KNOCKDOWN; +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 8 +ASGNI4 +line 642 +;642: genemy->forceHandExtendTime = pm->cmd.serverTime + 1100; +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +ADDRGP4 pm +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 1100 +ADDI4 +ASGNI4 +line 643 +;643: genemy->forceDodgeAnim = 0; //this toggles between 1 and 0, when it's 1 we should play the get up anim +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +CNSTI4 0 +ASGNI4 +line 645 +;644: +;645: genemy->otherKiller = pm->ps->clientNum; +ADDRFP4 0 +INDIRP4 +CNSTI4 748 +ADDP4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 646 +;646: genemy->otherKillerTime = pm->cmd.serverTime + 5000; +ADDRFP4 0 +INDIRP4 +CNSTI4 752 +ADDP4 +ADDRGP4 pm +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 5000 +ADDI4 +ASGNI4 +line 647 +;647: genemy->otherKillerDebounceTime = pm->cmd.serverTime + 100; +ADDRFP4 0 +INDIRP4 +CNSTI4 756 +ADDP4 +ADDRGP4 pm +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 100 +ADDI4 +ASGNI4 +line 649 +;648: +;649: genemy->velocity[0] = oppDir[0]*(strength*40); +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 32 +INDIRF4 +CNSTI4 40 +ADDRLP4 44 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 650 +;650: genemy->velocity[1] = oppDir[1]*(strength*40); +ADDRFP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRLP4 32+4 +INDIRF4 +CNSTI4 40 +ADDRLP4 44 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 651 +;651: genemy->velocity[2] = 100; +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1120403456 +ASGNF4 +line 652 +;652: } +ADDRGP4 $311 +JUMPV +LABELV $310 +line 654 +;653: else +;654: { +line 657 +;655: vec3_t oppDir; +;656: +;657: int strength = 4; +ADDRLP4 44 +CNSTI4 4 +ASGNI4 +line 659 +;658: +;659: VectorSubtract(genemy->origin, pm->ps->origin, oppDir); +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +CNSTI4 20 +ASGNI4 +ADDRLP4 56 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 48 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 60 +CNSTI4 24 +ASGNI4 +ADDRLP4 32+4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 64 +CNSTI4 28 +ASGNI4 +ADDRLP4 32+8 +ADDRFP4 0 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 660 +;660: VectorNormalize(oppDir); +ADDRLP4 32 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 661 +;661: genemy->velocity[0] = oppDir[0]*(strength*40); +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 32 +INDIRF4 +CNSTI4 40 +ADDRLP4 44 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 662 +;662: genemy->velocity[1] = oppDir[1]*(strength*40); +ADDRFP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRLP4 32+4 +INDIRF4 +CNSTI4 40 +ADDRLP4 44 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 663 +;663: genemy->velocity[2] = 150; +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1125515264 +ASGNF4 +line 665 +;664: +;665: VectorSubtract(pm->ps->origin, genemy->origin, oppDir); +ADDRLP4 68 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 72 +CNSTI4 20 +ASGNI4 +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 68 +INDIRP4 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 80 +CNSTI4 24 +ASGNI4 +ADDRLP4 32+4 +ADDRLP4 68 +INDIRP4 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 84 +CNSTI4 28 +ASGNI4 +ADDRLP4 32+8 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 666 +;666: VectorNormalize(oppDir); +ADDRLP4 32 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 667 +;667: pm->ps->velocity[0] = oppDir[0]*(strength*40); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 32 +INDIRF4 +CNSTI4 40 +ADDRLP4 44 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 668 +;668: pm->ps->velocity[1] = oppDir[1]*(strength*40); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRLP4 32+4 +INDIRF4 +CNSTI4 40 +ADDRLP4 44 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 669 +;669: pm->ps->velocity[2] = 150; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1125515264 +ASGNF4 +line 671 +;670: +;671: genemy->forceHandExtend = HANDEXTEND_WEAPONREADY; +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 6 +ASGNI4 +line 672 +;672: } +LABELV $311 +line 674 +;673: +;674: pm->ps->weaponTime = 0;//pm->ps->torsoTimer; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 0 +ASGNI4 +line 676 +;675: //The enemy unfortunately has no valid torso animation time at this point, so just use ours +;676: genemy->weaponTime = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 0 +ASGNI4 +line 678 +;677: +;678: pm->ps->saberLockTime = genemy->saberLockTime = 0; +ADDRLP4 32 +CNSTI4 524 +ASGNI4 +ADDRLP4 36 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRI4 +ASGNI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 679 +;679: pm->ps->saberLockFrame = genemy->saberLockFrame = 0; +ADDRLP4 40 +CNSTI4 532 +ASGNI4 +ADDRLP4 44 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +ADDRLP4 44 +INDIRI4 +ASGNI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 680 +;680: pm->ps->saberLockEnemy = genemy->saberLockEnemy = 0; +ADDRLP4 48 +CNSTI4 528 +ASGNI4 +ADDRLP4 52 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +ADDRLP4 52 +INDIRI4 +ASGNI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +ADDRLP4 52 +INDIRI4 +ASGNI4 +line 682 +;681: +;682: pm->ps->forceHandExtend = HANDEXTEND_WEAPONREADY; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 6 +ASGNI4 +line 684 +;683: +;684: PM_AddEvent( EV_JUMP ); +CNSTI4 14 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 685 +;685: if ( !victory ) +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $321 +line 686 +;686: {//no-one won +line 687 +;687: BG_AddPredictableEventToPlayerstate(EV_JUMP, 0, genemy); +CNSTI4 14 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 BG_AddPredictableEventToPlayerstate +CALLV +pop +line 688 +;688: } +ADDRGP4 $322 +JUMPV +LABELV $321 +line 690 +;689: else +;690: { +line 691 +;691: if ( Q_irand( 0, 1 ) ) +CNSTI4 0 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 56 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $323 +line 692 +;692: { +line 693 +;693: BG_AddPredictableEventToPlayerstate(EV_JUMP, PM_irand_timesync( 0, 75 ), genemy); +CNSTI4 0 +ARGI4 +CNSTI4 75 +ARGI4 +ADDRLP4 60 +ADDRGP4 PM_irand_timesync +CALLI4 +ASGNI4 +CNSTI4 14 +ARGI4 +ADDRLP4 60 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 BG_AddPredictableEventToPlayerstate +CALLV +pop +line 694 +;694: } +LABELV $323 +line 695 +;695: } +LABELV $322 +line 696 +;696:} +LABELV $293 +endproc PM_SaberLockBreak 88 16 +export PM_SaberLocked +proc PM_SaberLocked 84 16 +line 700 +;697: +;698:extern qboolean ValidAnimFileIndex ( int index ); +;699:void PM_SaberLocked( void ) +;700:{ +line 701 +;701: int remaining = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 708 +;702: /* +;703: if ( pm->ps->weaponTime ) +;704: {//can't attack yet +;705: return; +;706: } +;707: */ +;708: playerState_t *genemy = pm->bgClients[pm->ps->saberLockEnemy]; +ADDRLP4 8 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 248 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 709 +;709: if ( !genemy ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $326 +line 710 +;710: { +line 711 +;711: return; +ADDRGP4 $325 +JUMPV +LABELV $326 +line 713 +;712: } +;713: if ( ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 538 +EQI4 $332 +ADDRLP4 12 +INDIRI4 +CNSTI4 541 +EQI4 $332 +ADDRLP4 12 +INDIRI4 +CNSTI4 548 +EQI4 $332 +ADDRLP4 12 +INDIRI4 +CNSTI4 549 +NEI4 $328 +LABELV $332 +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 538 +EQI4 $335 +ADDRLP4 16 +INDIRI4 +CNSTI4 541 +EQI4 $335 +ADDRLP4 16 +INDIRI4 +CNSTI4 548 +EQI4 $335 +ADDRLP4 16 +INDIRI4 +CNSTI4 549 +NEI4 $328 +LABELV $335 +line 722 +;714: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || +;715: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || +;716: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK ) +;717: && ( (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || +;718: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || +;719: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || +;720: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK ) +;721: ) +;722: { +line 723 +;723: float dist = 0; +ADDRLP4 20 +CNSTF4 0 +ASGNF4 +line 725 +;724: +;725: pm->ps->torsoTimer = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +CNSTI4 0 +ASGNI4 +line 726 +;726: pm->ps->weaponTime = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 0 +ASGNI4 +line 727 +;727: genemy->torsoTimer = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 96 +ADDP4 +CNSTI4 0 +ASGNI4 +line 728 +;728: genemy->weaponTime = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 0 +ASGNI4 +line 730 +;729: +;730: dist = DistanceSquared(pm->ps->origin,genemy->origin); +ADDRLP4 24 +CNSTI4 20 +ASGNI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 DistanceSquared +CALLF4 +ASGNF4 +ADDRLP4 20 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 731 +;731: if ( dist < 64 || dist > 6400 )//( dist < 128 || dist > 2304 ) +ADDRLP4 32 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 32 +INDIRF4 +CNSTF4 1115684864 +LTF4 $338 +ADDRLP4 32 +INDIRF4 +CNSTF4 1170735104 +LEF4 $336 +LABELV $338 +line 732 +;732: {//between 8 and 80 from each other//was 16 and 48 +line 733 +;733: PM_SaberLockBreak( genemy, qfalse ); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 PM_SaberLockBreak +CALLV +pop +line 734 +;734: return; +ADDRGP4 $325 +JUMPV +LABELV $336 +line 736 +;735: } +;736: if ( (pm->cmd.buttons & BUTTON_ATTACK) || pm->ps->saberLockAdvance ) +ADDRLP4 36 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +ADDRLP4 36 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +ADDRLP4 40 +INDIRI4 +NEI4 $341 +ADDRLP4 36 +INDIRP4 +INDIRP4 +CNSTI4 540 +ADDP4 +INDIRI4 +ADDRLP4 40 +INDIRI4 +EQI4 $329 +LABELV $341 +line 737 +;737: {//holding attack +line 738 +;738: if (pm->ps->saberLockAdvance) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 540 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $325 +line 739 +;739: {//tapping +line 743 +;740: animation_t *anim; +;741: float currentFrame; +;742: int curFrame; +;743: int strength = 1; +ADDRLP4 44 +CNSTI4 1 +ASGNI4 +line 745 +;744: +;745: pm->ps->saberLockAdvance = qfalse; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 540 +ADDP4 +CNSTI4 0 +ASGNI4 +line 747 +;746: +;747: anim = &pm->animations[pm->ps->torsoAnim&~ANIM_TOGGLEBIT]; +ADDRLP4 60 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 48 +CNSTI4 28 +ADDRLP4 60 +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +MULI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ADDP4 +ASGNP4 +line 749 +;748: +;749: currentFrame = pm->ps->saberLockFrame; +ADDRLP4 56 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 751 +;750: +;751: strength = pm->ps->fd.forcePowerLevel[FP_SABERATTACK]+1; +ADDRLP4 44 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 992 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 753 +;752: +;753: if ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK || +ADDRLP4 64 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 549 +EQI4 $346 +ADDRLP4 64 +INDIRI4 +CNSTI4 538 +NEI4 $344 +LABELV $346 +line 755 +;754: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK ) +;755: { +line 756 +;756: curFrame = floor( currentFrame )-strength; +ADDRLP4 56 +INDIRF4 +ARGF4 +ADDRLP4 68 +ADDRGP4 floor +CALLF4 +ASGNF4 +ADDRLP4 52 +ADDRLP4 68 +INDIRF4 +ADDRLP4 44 +INDIRI4 +CVIF4 4 +SUBF4 +CVFI4 4 +ASGNI4 +line 758 +;757: //drop my frame one +;758: if ( curFrame <= anim->firstFrame ) +ADDRLP4 52 +INDIRI4 +ADDRLP4 48 +INDIRP4 +INDIRI4 +GTI4 $347 +line 759 +;759: {//I won! Break out +line 760 +;760: PM_SaberLockBreak( genemy, qtrue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 PM_SaberLockBreak +CALLV +pop +line 761 +;761: return; +ADDRGP4 $325 +JUMPV +LABELV $347 +line 764 +;762: } +;763: else +;764: { +line 765 +;765: PM_SetAnimFrame( pm->ps, curFrame, qtrue, qtrue ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +INDIRI4 +ARGI4 +ADDRLP4 72 +CNSTI4 1 +ASGNI4 +ADDRLP4 72 +INDIRI4 +ARGI4 +ADDRLP4 72 +INDIRI4 +ARGI4 +ADDRGP4 PM_SetAnimFrame +CALLV +pop +line 766 +;766: remaining = curFrame-anim->firstFrame; +ADDRLP4 4 +ADDRLP4 52 +INDIRI4 +ADDRLP4 48 +INDIRP4 +INDIRI4 +SUBI4 +ASGNI4 +line 767 +;767: } +line 768 +;768: } +ADDRGP4 $345 +JUMPV +LABELV $344 +line 770 +;769: else +;770: { +line 771 +;771: curFrame = ceil( currentFrame )+strength; +ADDRLP4 56 +INDIRF4 +ARGF4 +ADDRLP4 68 +ADDRGP4 ceil +CALLF4 +ASGNF4 +ADDRLP4 52 +ADDRLP4 68 +INDIRF4 +ADDRLP4 44 +INDIRI4 +CVIF4 4 +ADDF4 +CVFI4 4 +ASGNI4 +line 773 +;772: //advance my frame one +;773: if ( curFrame >= anim->firstFrame+anim->numFrames ) +ADDRLP4 72 +ADDRLP4 48 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRI4 +ADDRLP4 72 +INDIRP4 +INDIRI4 +ADDRLP4 72 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDI4 +LTI4 $349 +line 774 +;774: {//I won! Break out +line 775 +;775: PM_SaberLockBreak( genemy, qtrue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 PM_SaberLockBreak +CALLV +pop +line 776 +;776: return; +ADDRGP4 $325 +JUMPV +LABELV $349 +line 779 +;777: } +;778: else +;779: { +line 780 +;780: PM_SetAnimFrame( pm->ps, curFrame, qtrue, qtrue ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +INDIRI4 +ARGI4 +ADDRLP4 76 +CNSTI4 1 +ASGNI4 +ADDRLP4 76 +INDIRI4 +ARGI4 +ADDRLP4 76 +INDIRI4 +ARGI4 +ADDRGP4 PM_SetAnimFrame +CALLV +pop +line 781 +;781: remaining = anim->firstFrame+anim->numFrames-curFrame; +ADDRLP4 80 +ADDRLP4 48 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 80 +INDIRP4 +INDIRI4 +ADDRLP4 80 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDI4 +ADDRLP4 52 +INDIRI4 +SUBI4 +ASGNI4 +line 782 +;782: } +line 783 +;783: } +LABELV $345 +line 784 +;784: if ( !Q_irand( 0, 2 ) ) +CNSTI4 0 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRLP4 68 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +NEI4 $343 +line 785 +;785: { +line 786 +;786: PM_AddEvent( EV_JUMP ); +CNSTI4 14 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 787 +;787: } +line 788 +;788: } +line 790 +;789: else +;790: { +line 791 +;791: return; +LABELV $343 +line 793 +;792: } +;793: if( 1/*ValidAnimFileIndex( genemy->client->clientInfo.animFileIndex )*/ ) +line 794 +;794: { +line 796 +;795: animation_t *anim; +;796: anim = &pm->animations[(genemy->torsoAnim&~ANIM_TOGGLEBIT)]; +ADDRLP4 44 +CNSTI4 28 +ADDRLP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +MULI4 +ADDRGP4 pm +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ADDP4 +ASGNP4 +line 798 +;797: +;798: if ( (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || +ADDRLP4 48 +ADDRLP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 548 +EQI4 $357 +ADDRLP4 48 +INDIRI4 +CNSTI4 541 +NEI4 $355 +LABELV $357 +line 800 +;799: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK ) +;800: { +line 801 +;801: if ( !Q_irand( 0, 2 ) ) +CNSTI4 0 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRLP4 52 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +NEI4 $358 +line 802 +;802: { +line 803 +;803: BG_AddPredictableEventToPlayerstate(EV_PAIN, floor((float)80/100*100.0f), genemy); +CNSTF4 1117782016 +ARGF4 +ADDRLP4 56 +ADDRGP4 floor +CALLF4 +ASGNF4 +CNSTI4 77 +ARGI4 +ADDRLP4 56 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 BG_AddPredictableEventToPlayerstate +CALLV +pop +line 804 +;804: } +LABELV $358 +line 805 +;805: PM_SetAnimFrame( genemy, anim->firstFrame+remaining, qtrue, qtrue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 44 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ARGI4 +ADDRLP4 56 +CNSTI4 1 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ARGI4 +ADDRLP4 56 +INDIRI4 +ARGI4 +ADDRGP4 PM_SetAnimFrame +CALLV +pop +line 806 +;806: } +ADDRGP4 $329 +JUMPV +LABELV $355 +line 808 +;807: else +;808: { +line 809 +;809: PM_SetAnimFrame( genemy, anim->firstFrame+anim->numFrames-remaining, qtrue, qtrue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRLP4 44 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +INDIRI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +ARGI4 +ADDRLP4 56 +CNSTI4 1 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ARGI4 +ADDRLP4 56 +INDIRI4 +ARGI4 +ADDRGP4 PM_SetAnimFrame +CALLV +pop +line 810 +;810: } +line 811 +;811: } +line 812 +;812: } +line 813 +;813: } +ADDRGP4 $329 +JUMPV +LABELV $328 +line 815 +;814: else +;815: {//something broke us out of it +line 816 +;816: PM_SaberLockBreak( genemy, qfalse ); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 PM_SaberLockBreak +CALLV +pop +line 817 +;817: } +LABELV $329 +line 818 +;818:} +LABELV $325 +endproc PM_SaberLocked 84 16 +export PM_SaberInBrokenParry +proc PM_SaberInBrokenParry 4 0 +line 821 +;819: +;820:qboolean PM_SaberInBrokenParry( int move ) +;821:{ +line 822 +;822: if ( move >= LS_H1_T_ && move <= LS_H1_BL ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 97 +LTI4 $361 +ADDRLP4 0 +INDIRI4 +CNSTI4 102 +GTI4 $361 +line 823 +;823: { +line 824 +;824: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $360 +JUMPV +LABELV $361 +line 826 +;825: } +;826: return qfalse; +CNSTI4 0 +RETI4 +LABELV $360 +endproc PM_SaberInBrokenParry 4 0 +export PM_BrokenParryForParry +proc PM_BrokenParryForParry 12 0 +line 831 +;827:} +;828: +;829: +;830:int PM_BrokenParryForParry( int move ) +;831:{ +line 834 +;832: //FIXME: need actual anims for this +;833: //FIXME: need to know which side of the saber was hit! For now, we presume the saber gets knocked away from the center +;834: switch ( move ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $371 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LTI4 $364 +LABELV $372 +ADDRLP4 8 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 108 +LTI4 $364 +ADDRLP4 8 +INDIRI4 +CNSTI4 112 +GTI4 $364 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $373-432 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $373 +address $366 +address $367 +address $368 +address $369 +address $370 +code +line 835 +;835: { +LABELV $366 +line 837 +;836: case LS_PARRY_UP: +;837: return LS_H1_T_; +CNSTI4 97 +RETI4 +ADDRGP4 $363 +JUMPV +line 838 +;838: break; +LABELV $367 +line 840 +;839: case LS_PARRY_UR: +;840: return LS_H1_TR; +CNSTI4 98 +RETI4 +ADDRGP4 $363 +JUMPV +line 841 +;841: break; +LABELV $368 +line 843 +;842: case LS_PARRY_UL: +;843: return LS_H1_TL; +CNSTI4 99 +RETI4 +ADDRGP4 $363 +JUMPV +line 844 +;844: break; +LABELV $369 +line 846 +;845: case LS_PARRY_LR: +;846: return LS_H1_BL; +CNSTI4 102 +RETI4 +ADDRGP4 $363 +JUMPV +line 847 +;847: break; +LABELV $370 +line 849 +;848: case LS_PARRY_LL: +;849: return LS_H1_BR; +CNSTI4 100 +RETI4 +ADDRGP4 $363 +JUMPV +line 850 +;850: break; +LABELV $371 +line 852 +;851: case LS_READY: +;852: return LS_H1_B_;//??? +CNSTI4 101 +RETI4 +ADDRGP4 $363 +JUMPV +line 853 +;853: break; +LABELV $364 +line 855 +;854: } +;855: return LS_NONE; +CNSTI4 0 +RETI4 +LABELV $363 +endproc PM_BrokenParryForParry 12 0 +lit +align 4 +LABELV $376 +byte 4 3245342720 +byte 4 3245342720 +byte 4 3238002688 +align 4 +LABELV $377 +byte 4 1097859072 +byte 4 1097859072 +byte 4 1090519040 +export PM_CanBackstab +code +proc PM_CanBackstab 1152 28 +line 861 +;856:} +;857: +;858:#define BACK_STAB_DISTANCE 128//64 +;859: +;860:qboolean PM_CanBackstab(void) +;861:{ +line 865 +;862: trace_t tr; +;863: vec3_t flatAng; +;864: vec3_t fwd, back; +;865: vec3_t trmins = {-15, -15, -8}; +ADDRLP4 1116 +ADDRGP4 $376 +INDIRB +ASGNB 12 +line 866 +;866: vec3_t trmaxs = {15, 15, 8}; +ADDRLP4 1128 +ADDRGP4 $377 +INDIRB +ASGNB 12 +line 868 +;867: +;868: VectorCopy(pm->ps->viewangles, flatAng); +ADDRLP4 1104 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRB +ASGNB 12 +line 869 +;869: flatAng[PITCH] = 0; +ADDRLP4 1104 +CNSTF4 0 +ASGNF4 +line 871 +;870: +;871: AngleVectors(flatAng, fwd, 0, 0); +ADDRLP4 1104 +ARGP4 +ADDRLP4 1080 +ARGP4 +ADDRLP4 1140 +CNSTP4 0 +ASGNP4 +ADDRLP4 1140 +INDIRP4 +ARGP4 +ADDRLP4 1140 +INDIRP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 873 +;872: +;873: back[0] = pm->ps->origin[0] - fwd[0]*BACK_STAB_DISTANCE; +ADDRLP4 1092 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +CNSTF4 1124073472 +ADDRLP4 1080 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 874 +;874: back[1] = pm->ps->origin[1] - fwd[1]*BACK_STAB_DISTANCE; +ADDRLP4 1092+4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +CNSTF4 1124073472 +ADDRLP4 1080+4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 875 +;875: back[2] = pm->ps->origin[2] - fwd[2]*BACK_STAB_DISTANCE; +ADDRLP4 1092+8 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +CNSTF4 1124073472 +ADDRLP4 1080+8 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 877 +;876: +;877: pm->trace(&tr, pm->ps->origin, trmins, trmaxs, back, pm->ps->clientNum, MASK_PLAYERSOLID); +ADDRLP4 0 +ARGP4 +ADDRLP4 1144 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1148 +ADDRLP4 1144 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1148 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 1116 +ARGP4 +ADDRLP4 1128 +ARGP4 +ADDRLP4 1092 +ARGP4 +ADDRLP4 1148 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 273 +ARGI4 +ADDRLP4 1144 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +CALLV +pop +line 879 +;878: +;879: if (tr.fraction != 1.0 && tr.entityNum >= 0 && tr.entityNum < MAX_CLIENTS) +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1065353216 +EQF4 $382 +ADDRLP4 0+52 +INDIRI4 +CNSTI4 0 +LTI4 $382 +ADDRLP4 0+52 +INDIRI4 +CNSTI4 32 +GEI4 $382 +line 880 +;880: { //We don't have real entity access here so we can't do an indepth check. But if it's a client and it's behind us, I guess that's reason enough to stab backward +line 881 +;881: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $375 +JUMPV +LABELV $382 +line 884 +;882: } +;883: +;884: return qfalse; +CNSTI4 0 +RETI4 +LABELV $375 +endproc PM_CanBackstab 1152 28 +export PM_SaberFlipOverAttackMove +proc PM_SaberFlipOverAttackMove 56 16 +line 888 +;885:} +;886: +;887:saberMoveName_t PM_SaberFlipOverAttackMove(trace_t *tr) +;888:{ +line 891 +;889: //FIXME: check above for room enough to jump! +;890: vec3_t fwdAngles, jumpFwd; +;891: float zDiff = 0; +ADDRLP4 24 +CNSTF4 0 +ASGNF4 +line 894 +;892: playerState_t *psData; +;893: +;894: VectorCopy( pm->ps->viewangles, fwdAngles ); +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRB +ASGNB 12 +line 895 +;895: fwdAngles[PITCH] = fwdAngles[ROLL] = 0; +ADDRLP4 32 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 32 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 896 +;896: AngleVectors( fwdAngles, jumpFwd, NULL, NULL ); +ADDRLP4 0 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 36 +CNSTP4 0 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 897 +;897: VectorScale( jumpFwd, /*100*/50, pm->ps->velocity ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTF4 1112014848 +ADDRLP4 12 +INDIRF4 +MULF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTF4 1112014848 +ADDRLP4 12+4 +INDIRF4 +MULF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1112014848 +ADDRLP4 12+8 +INDIRF4 +MULF4 +ASGNF4 +line 898 +;898: pm->ps->velocity[2] = 400; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1137180672 +ASGNF4 +line 900 +;899: +;900: psData = pm->bgClients[tr->entityNum]; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 pm +INDIRP4 +CNSTI4 248 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 902 +;901: +;902: pm->ps->velocity[2] *= 1;//(pm->gent->enemy->maxs[2]-pm->gent->enemy->mins[2])/64.0f; +ADDRLP4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTF4 1065353216 +ADDRLP4 40 +INDIRP4 +INDIRF4 +MULF4 +ASGNF4 +line 905 +;903: +;904: //go higher for enemies higher than you, lower for those lower than you +;905: if (psData) +ADDRLP4 28 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $391 +line 906 +;906: { +line 907 +;907: zDiff = psData->origin[2] - pm->ps->origin[2]; +ADDRLP4 44 +CNSTI4 28 +ASGNI4 +ADDRLP4 24 +ADDRLP4 28 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 908 +;908: } +ADDRGP4 $392 +JUMPV +LABELV $391 +line 910 +;909: else +;910: { +line 911 +;911: zDiff = 0; +ADDRLP4 24 +CNSTF4 0 +ASGNF4 +line 912 +;912: } +LABELV $392 +line 913 +;913: pm->ps->velocity[2] += (zDiff)*1.5f; +ADDRLP4 44 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 44 +INDIRP4 +INDIRF4 +CNSTF4 1069547520 +ADDRLP4 24 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 916 +;914: +;915: //clamp to decent-looking values +;916: if ( zDiff <= 0 && pm->ps->velocity[2] < 200 ) +ADDRLP4 24 +INDIRF4 +CNSTF4 0 +GTF4 $393 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1128792064 +GEF4 $393 +line 917 +;917: {//if we're on same level, don't let me jump so low, I clip into the ground +line 918 +;918: pm->ps->velocity[2] = 200; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1128792064 +ASGNF4 +line 919 +;919: } +ADDRGP4 $394 +JUMPV +LABELV $393 +line 920 +;920: else if ( pm->ps->velocity[2] < 100 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1120403456 +GEF4 $395 +line 921 +;921: { +line 922 +;922: pm->ps->velocity[2] = 100; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1120403456 +ASGNF4 +line 923 +;923: } +ADDRGP4 $396 +JUMPV +LABELV $395 +line 924 +;924: else if ( pm->ps->velocity[2] > 400 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1137180672 +LEF4 $397 +line 925 +;925: { +line 926 +;926: pm->ps->velocity[2] = 400; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1137180672 +ASGNF4 +line 927 +;927: } +LABELV $397 +LABELV $396 +LABELV $394 +line 929 +;928: +;929: pm->ps->fd.forceJumpZStart = pm->ps->origin[2];//so we don't take damage if we land at same height +ADDRLP4 48 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 1080 +ADDP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ASGNF4 +line 931 +;930: +;931: PM_AddEvent( EV_JUMP ); +CNSTI4 14 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 932 +;932: pm->ps->fd.forceJumpSound = 1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1088 +ADDP4 +CNSTI4 1 +ASGNI4 +line 933 +;933: pm->cmd.upmove = 0; +ADDRGP4 pm +INDIRP4 +CNSTI4 30 +ADDP4 +CNSTI1 0 +ASGNI1 +line 935 +;934: +;935: if ( Q_irand( 0, 1 ) ) +CNSTI4 0 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 52 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +EQI4 $399 +line 936 +;936: { +line 937 +;937: return LS_A_FLIP_STAB; +CNSTI4 16 +RETI4 +ADDRGP4 $387 +JUMPV +LABELV $399 +line 940 +;938: } +;939: else +;940: { +line 941 +;941: return LS_A_FLIP_SLASH; +CNSTI4 17 +RETI4 +LABELV $387 +endproc PM_SaberFlipOverAttackMove 56 16 +lit +align 4 +LABELV $402 +byte 4 3245342720 +byte 4 3245342720 +byte 4 3238002688 +align 4 +LABELV $403 +byte 4 1097859072 +byte 4 1097859072 +byte 4 1090519040 +export PM_SomeoneInFront +code +proc PM_SomeoneInFront 80 28 +line 948 +;942: } +;943:} +;944: +;945:#define FLIPHACK_DISTANCE 200 +;946: +;947:qboolean PM_SomeoneInFront(trace_t *tr) +;948:{ //Also a very simplified version of the sp counterpart +line 951 +;949: vec3_t flatAng; +;950: vec3_t fwd, back; +;951: vec3_t trmins = {-15, -15, -8}; +ADDRLP4 36 +ADDRGP4 $402 +INDIRB +ASGNB 12 +line 952 +;952: vec3_t trmaxs = {15, 15, 8}; +ADDRLP4 48 +ADDRGP4 $403 +INDIRB +ASGNB 12 +line 954 +;953: +;954: VectorCopy(pm->ps->viewangles, flatAng); +ADDRLP4 24 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRB +ASGNB 12 +line 955 +;955: flatAng[PITCH] = 0; +ADDRLP4 24 +CNSTF4 0 +ASGNF4 +line 957 +;956: +;957: AngleVectors(flatAng, fwd, 0, 0); +ADDRLP4 24 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 60 +CNSTP4 0 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 959 +;958: +;959: back[0] = pm->ps->origin[0] + fwd[0]*FLIPHACK_DISTANCE; +ADDRLP4 12 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +CNSTF4 1128792064 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 960 +;960: back[1] = pm->ps->origin[1] + fwd[1]*FLIPHACK_DISTANCE; +ADDRLP4 12+4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +CNSTF4 1128792064 +ADDRLP4 0+4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 961 +;961: back[2] = pm->ps->origin[2] + fwd[2]*FLIPHACK_DISTANCE; +ADDRLP4 12+8 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +CNSTF4 1128792064 +ADDRLP4 0+8 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 963 +;962: +;963: pm->trace(tr, pm->ps->origin, trmins, trmaxs, back, pm->ps->clientNum, MASK_PLAYERSOLID); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 68 +ADDRLP4 64 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 36 +ARGP4 +ADDRLP4 48 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 273 +ARGI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +CALLV +pop +line 965 +;964: +;965: if (tr->fraction != 1.0 && tr->entityNum >= 0 && tr->entityNum < MAX_CLIENTS) +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +EQF4 $408 +ADDRLP4 76 +ADDRLP4 72 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 0 +LTI4 $408 +ADDRLP4 76 +INDIRI4 +CNSTI4 32 +GEI4 $408 +line 966 +;966: { +line 967 +;967: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $401 +JUMPV +LABELV $408 +line 970 +;968: } +;969: +;970: return qfalse; +CNSTI4 0 +RETI4 +LABELV $401 +endproc PM_SomeoneInFront 80 28 +export PM_SaberLungeAttackMove +proc PM_SaberLungeAttackMove 32 16 +line 974 +;971:} +;972: +;973:saberMoveName_t PM_SaberLungeAttackMove( void ) +;974:{ +line 977 +;975: vec3_t fwdAngles, jumpFwd; +;976: +;977: VectorCopy( pm->ps->viewangles, fwdAngles ); +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRB +ASGNB 12 +line 978 +;978: fwdAngles[PITCH] = fwdAngles[ROLL] = 0; +ADDRLP4 24 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 24 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 980 +;979: //do the lunge +;980: AngleVectors( fwdAngles, jumpFwd, NULL, NULL ); +ADDRLP4 0 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 28 +CNSTP4 0 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 981 +;981: VectorScale( jumpFwd, 150, pm->ps->velocity ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTF4 1125515264 +ADDRLP4 12 +INDIRF4 +MULF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTF4 1125515264 +ADDRLP4 12+4 +INDIRF4 +MULF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1125515264 +ADDRLP4 12+8 +INDIRF4 +MULF4 +ASGNF4 +line 983 +;982: //pm->ps->velocity[2] = 50; +;983: PM_AddEvent( EV_JUMP ); +CNSTI4 14 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 985 +;984: +;985: return LS_A_LUNGE; +CNSTI4 14 +RETI4 +LABELV $410 +endproc PM_SaberLungeAttackMove 32 16 +export PM_SaberJumpAttackMove +proc PM_SaberJumpAttackMove 36 16 +line 989 +;986:} +;987: +;988:saberMoveName_t PM_SaberJumpAttackMove( void ) +;989:{ +line 992 +;990: vec3_t fwdAngles, jumpFwd; +;991: +;992: VectorCopy( pm->ps->viewangles, fwdAngles ); +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRB +ASGNB 12 +line 993 +;993: fwdAngles[PITCH] = fwdAngles[ROLL] = 0; +ADDRLP4 24 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 24 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 994 +;994: AngleVectors( fwdAngles, jumpFwd, NULL, NULL ); +ADDRLP4 0 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 28 +CNSTP4 0 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 995 +;995: VectorScale( jumpFwd, /*200*/300, pm->ps->velocity ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTF4 1133903872 +ADDRLP4 12 +INDIRF4 +MULF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTF4 1133903872 +ADDRLP4 12+4 +INDIRF4 +MULF4 +ASGNF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1133903872 +ADDRLP4 12+8 +INDIRF4 +MULF4 +ASGNF4 +line 996 +;996: pm->ps->velocity[2] = 280;//180; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1133248512 +ASGNF4 +line 997 +;997: pm->ps->fd.forceJumpZStart = pm->ps->origin[2];//so we don't take damage if we land at same height +ADDRLP4 32 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 1080 +ADDP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ASGNF4 +line 999 +;998: +;999: PM_AddEvent( EV_JUMP ); +CNSTI4 14 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 1000 +;1000: pm->ps->fd.forceJumpSound = 1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1088 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1001 +;1001: pm->cmd.upmove = 0; +ADDRGP4 pm +INDIRP4 +CNSTI4 30 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1003 +;1002: +;1003: return LS_A_JUMP_T__B_; +CNSTI4 15 +RETI4 +LABELV $414 +endproc PM_SaberJumpAttackMove 36 16 +export PM_GroundDistance +proc PM_GroundDistance 1108 28 +line 1007 +;1004:} +;1005: +;1006:float PM_GroundDistance(void) +;1007:{ +line 1011 +;1008: trace_t tr; +;1009: vec3_t down; +;1010: +;1011: VectorCopy(pm->ps->origin, down); +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 1013 +;1012: +;1013: down[2] -= 4096; +ADDRLP4 0+8 +ADDRLP4 0+8 +INDIRF4 +CNSTF4 1166016512 +SUBF4 +ASGNF4 +line 1015 +;1014: +;1015: pm->trace(&tr, pm->ps->origin, pm->mins, pm->maxs, down, pm->ps->clientNum, MASK_SOLID); +ADDRLP4 12 +ARGP4 +ADDRLP4 1092 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1096 +ADDRLP4 1092 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1096 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 188 +ADDP4 +ARGP4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 200 +ADDP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1096 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +CALLV +pop +line 1017 +;1016: +;1017: VectorSubtract(pm->ps->origin, tr.endpos, down); +ADDRLP4 1100 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 1100 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 12+12 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 0+4 +ADDRLP4 1100 +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 12+12+4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 0+8 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 12+12+8 +INDIRF4 +SUBF4 +ASGNF4 +line 1019 +;1018: +;1019: return VectorLength(down); +ADDRLP4 0 +ARGP4 +ADDRLP4 1104 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 1104 +INDIRF4 +RETF4 +LABELV $418 +endproc PM_GroundDistance 1108 28 +export PM_SaberAttackForMovement +proc PM_SaberAttackForMovement 1104 8 +line 1023 +;1020:} +;1021: +;1022:saberMoveName_t PM_SaberAttackForMovement(saberMoveName_t curmove) +;1023:{ +line 1024 +;1024: saberMoveName_t newmove = -1; +ADDRLP4 0 +CNSTI4 -1 +ASGNI4 +line 1026 +;1025: +;1026: if ( pm->cmd.rightmove > 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 29 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $428 +line 1027 +;1027: {//moving right +line 1028 +;1028: if ( pm->cmd.forwardmove > 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $430 +line 1029 +;1029: {//forward right = TL2BR slash +line 1030 +;1030: newmove = LS_A_TL2BR; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +line 1031 +;1031: } +ADDRGP4 $429 +JUMPV +LABELV $430 +line 1032 +;1032: else if ( pm->cmd.forwardmove < 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $432 +line 1033 +;1033: {//backward right = BL2TR uppercut +line 1034 +;1034: newmove = LS_A_BL2TR; +ADDRLP4 0 +CNSTI4 6 +ASGNI4 +line 1035 +;1035: } +ADDRGP4 $429 +JUMPV +LABELV $432 +line 1037 +;1036: else +;1037: {//just right is a left slice +line 1038 +;1038: newmove = LS_A_L2R; +ADDRLP4 0 +CNSTI4 5 +ASGNI4 +line 1039 +;1039: } +line 1040 +;1040: } +ADDRGP4 $429 +JUMPV +LABELV $428 +line 1041 +;1041: else if ( pm->cmd.rightmove < 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 29 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $434 +line 1042 +;1042: {//moving left +line 1043 +;1043: if ( pm->cmd.forwardmove > 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $436 +line 1044 +;1044: {//forward left = TR2BL slash +line 1045 +;1045: newmove = LS_A_TR2BL; +ADDRLP4 0 +CNSTI4 9 +ASGNI4 +line 1046 +;1046: } +ADDRGP4 $435 +JUMPV +LABELV $436 +line 1047 +;1047: else if ( pm->cmd.forwardmove < 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $438 +line 1048 +;1048: {//backward left = BR2TL uppercut +line 1049 +;1049: newmove = LS_A_BR2TL; +ADDRLP4 0 +CNSTI4 7 +ASGNI4 +line 1050 +;1050: } +ADDRGP4 $435 +JUMPV +LABELV $438 +line 1052 +;1051: else +;1052: {//just left is a right slice +line 1053 +;1053: newmove = LS_A_R2L; +ADDRLP4 0 +CNSTI4 8 +ASGNI4 +line 1054 +;1054: } +line 1055 +;1055: } +ADDRGP4 $435 +JUMPV +LABELV $434 +line 1057 +;1056: else +;1057: {//not moving left or right +line 1058 +;1058: if ( pm->cmd.forwardmove > 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $440 +line 1059 +;1059: {//forward= T2B slash +line 1060 +;1060: if (pm->ps->fd.saberAnimLevel == FORCE_LEVEL_2 && +ADDRLP4 4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $442 +ADDRLP4 4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 1120403456 +LEF4 $442 +ADDRLP4 8 +ADDRGP4 PM_GroundDistance +CALLF4 +ASGNF4 +ADDRLP4 8 +INDIRF4 +CNSTF4 1107296256 +GEF4 $442 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 BG_InSpecialJump +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $442 +line 1065 +;1061: /*pm->ps->groundEntityNum != ENTITYNUM_NONE &&*/ +;1062: pm->ps->velocity[2] > 100 && +;1063: PM_GroundDistance() < 32 && +;1064: !BG_InSpecialJump(pm->ps->legsAnim)) +;1065: { //FLIP AND DOWNWARD ATTACK +line 1068 +;1066: trace_t tr; +;1067: +;1068: if (PM_SomeoneInFront(&tr)) +ADDRLP4 16 +ARGP4 +ADDRLP4 1096 +ADDRGP4 PM_SomeoneInFront +CALLI4 +ASGNI4 +ADDRLP4 1096 +INDIRI4 +CNSTI4 0 +EQI4 $441 +line 1069 +;1069: { +line 1070 +;1070: newmove = PM_SaberFlipOverAttackMove(&tr); +ADDRLP4 16 +ARGP4 +ADDRLP4 1100 +ADDRGP4 PM_SaberFlipOverAttackMove +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 1100 +INDIRI4 +ASGNI4 +line 1071 +;1071: } +line 1072 +;1072: } +ADDRGP4 $441 +JUMPV +LABELV $442 +line 1073 +;1073: else if (pm->ps->fd.saberAnimLevel == FORCE_LEVEL_1 && +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +NEI4 $446 +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +BANDI4 +ADDRLP4 24 +INDIRI4 +EQI4 $446 +ADDRLP4 16 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ADDRLP4 24 +INDIRI4 +GTI4 $446 +line 1076 +;1074: (pm->ps->pm_flags & PMF_DUCKED) && +;1075: pm->ps->weaponTime <= 0) +;1076: { //LUNGE (weak) +line 1077 +;1077: newmove = PM_SaberLungeAttackMove(); +ADDRLP4 28 +ADDRGP4 PM_SaberLungeAttackMove +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1078 +;1078: } +ADDRGP4 $441 +JUMPV +LABELV $446 +line 1080 +;1079: else +;1080: { +line 1081 +;1081: newmove = LS_A_T2B; +ADDRLP4 0 +CNSTI4 10 +ASGNI4 +line 1082 +;1082: } +line 1083 +;1083: } +ADDRGP4 $441 +JUMPV +LABELV $440 +line 1084 +;1084: else if ( pm->cmd.forwardmove < 0 ) +ADDRGP4 pm +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +GEI4 $448 +line 1085 +;1085: {//backward= T2B slash//B2T uppercut? +line 1086 +;1086: if (PM_CanBackstab()) +ADDRLP4 4 +ADDRGP4 PM_CanBackstab +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $450 +line 1087 +;1087: { //BACKSTAB (attack varies by level) +line 1088 +;1088: if (pm->ps->fd.saberAnimLevel >= FORCE_LEVEL_2) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +CNSTI4 2 +LTI4 $452 +line 1089 +;1089: {//medium and higher attacks +line 1090 +;1090: if ( (pm->ps->pm_flags&PMF_DUCKED) || pm->cmd.upmove < 0 ) +ADDRLP4 8 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRLP4 8 +INDIRP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +ADDRLP4 12 +INDIRI4 +NEI4 $456 +ADDRLP4 8 +INDIRP4 +CNSTI4 30 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 12 +INDIRI4 +GEI4 $454 +LABELV $456 +line 1091 +;1091: { +line 1092 +;1092: newmove = LS_A_BACK_CR; +ADDRLP4 0 +CNSTI4 13 +ASGNI4 +line 1093 +;1093: } +ADDRGP4 $449 +JUMPV +LABELV $454 +line 1095 +;1094: else +;1095: { +line 1096 +;1096: newmove = LS_A_BACK; +ADDRLP4 0 +CNSTI4 12 +ASGNI4 +line 1097 +;1097: } +line 1098 +;1098: } +ADDRGP4 $449 +JUMPV +LABELV $452 +line 1100 +;1099: else +;1100: { //weak attack +line 1101 +;1101: newmove = LS_A_BACKSTAB; +ADDRLP4 0 +CNSTI4 11 +ASGNI4 +line 1102 +;1102: } +line 1103 +;1103: } +ADDRGP4 $449 +JUMPV +LABELV $450 +line 1105 +;1104: else +;1105: { +line 1106 +;1106: newmove = LS_A_T2B; +ADDRLP4 0 +CNSTI4 10 +ASGNI4 +line 1107 +;1107: } +line 1108 +;1108: } +ADDRGP4 $449 +JUMPV +LABELV $448 +line 1109 +;1109: else if ( PM_SaberInBounce( curmove ) ) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 PM_SaberInBounce +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $457 +line 1110 +;1110: {//bounces should go to their default attack if you don't specify a direction but are attacking +line 1111 +;1111: if ( PM_SaberKataDone() ) +ADDRLP4 8 +ADDRGP4 PM_SaberKataDone +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $459 +line 1112 +;1112: { +line 1113 +;1113: newmove = saberMoveData[curmove].chain_idle; +ADDRLP4 0 +CNSTI4 40 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+28 +ADDP4 +INDIRI4 +ASGNI4 +line 1114 +;1114: } +ADDRGP4 $458 +JUMPV +LABELV $459 +line 1116 +;1115: else +;1116: { +line 1117 +;1117: newmove = saberMoveData[curmove].chain_attack; +ADDRLP4 0 +CNSTI4 40 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+32 +ADDP4 +INDIRI4 +ASGNI4 +line 1118 +;1118: } +line 1119 +;1119: } +ADDRGP4 $458 +JUMPV +LABELV $457 +line 1120 +;1120: else if ( curmove == LS_READY ) +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +NEI4 $463 +line 1121 +;1121: {//Not moving at all, shouldn't have gotten here...? +line 1127 +;1122: //for now, just pick a random attack +;1123: //newmove = Q_irand( LS_A_TL2BR, LS_A_T2B ); +;1124: //rww - If we don't seed with a "common" value, the client and server will get mismatched +;1125: //prediction values. Under laggy conditions this will cause the appearance of rapid swing +;1126: //sequence changes. +;1127: newmove = PM_irand_timesync(LS_A_TL2BR, LS_A_T2B); +CNSTI4 4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 8 +ADDRGP4 PM_irand_timesync +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1128 +;1128: } +LABELV $463 +LABELV $458 +LABELV $449 +LABELV $441 +line 1129 +;1129: } +LABELV $435 +LABELV $429 +line 1131 +;1130: +;1131: return newmove; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $427 +endproc PM_SaberAttackForMovement 1104 8 +export PM_WeaponLightsaber +proc PM_WeaponLightsaber 104 16 +line 1144 +;1132:} +;1133:/* +;1134:================= +;1135:PM_WeaponLightsaber +;1136: +;1137:Consults a chart to choose what to do with the lightsaber. +;1138:While this is a little different than the Quake 3 code, there is no clean way of using the Q3 code for this kind of thing. +;1139:================= +;1140:*/ +;1141:// Ultimate goal is to set the sabermove to the proper next location +;1142:// Note that if the resultant animation is NONE, then the animation is essentially "idle", and is set in WP_TorsoAnim +;1143:void PM_WeaponLightsaber(void) +;1144:{ +line 1146 +;1145: int addTime,amount; +;1146: qboolean delayed_fire = qfalse; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +line 1147 +;1147: int anim=-1, curmove, newmove=LS_NONE; +ADDRLP4 16 +CNSTI4 -1 +ASGNI4 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1149 +;1148: +;1149: qboolean saberInAir = qtrue; +ADDRLP4 24 +CNSTI4 1 +ASGNI4 +line 1150 +;1150: qboolean checkOnlyWeap = qfalse; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 1152 +;1151: +;1152: if ( pm->ps->saberLockTime > pm->cmd.serverTime ) +ADDRLP4 32 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +INDIRP4 +CNSTI4 524 +ADDP4 +INDIRI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +LEI4 $466 +line 1153 +;1153: { +line 1154 +;1154: pm->ps->saberMove = LS_NONE; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1155 +;1155: PM_SaberLocked(); +ADDRGP4 PM_SaberLocked +CALLV +pop +line 1156 +;1156: return; +ADDRGP4 $465 +JUMPV +LABELV $466 +line 1159 +;1157: } +;1158: else +;1159: { +line 1160 +;1160: if ( ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || +ADDRLP4 36 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 36 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 538 +EQI4 $473 +ADDRLP4 40 +INDIRI4 +CNSTI4 541 +EQI4 $473 +ADDRLP4 40 +INDIRI4 +CNSTI4 548 +EQI4 $473 +ADDRLP4 40 +INDIRI4 +CNSTI4 549 +EQI4 $473 +ADDRLP4 36 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $468 +LABELV $473 +line 1166 +;1161: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || +;1162: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || +;1163: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK || +;1164: pm->ps->saberLockFrame ) +;1165: ) +;1166: { +line 1167 +;1167: if (pm->ps->saberLockEnemy < ENTITYNUM_NONE && +ADDRLP4 44 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 1023 +GEI4 $474 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +LTI4 $474 +line 1169 +;1168: pm->ps->saberLockEnemy >= 0) +;1169: { +line 1172 +;1170: playerState_t *en; +;1171: +;1172: en = pm->bgClients[pm->ps->saberLockEnemy]; +ADDRLP4 52 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 48 +ADDRLP4 52 +INDIRP4 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 248 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 1174 +;1173: +;1174: if (en) +ADDRLP4 48 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $476 +line 1175 +;1175: { +line 1176 +;1176: PM_SaberLockBreak(en, qfalse); +ADDRLP4 48 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 PM_SaberLockBreak +CALLV +pop +line 1177 +;1177: return; +ADDRGP4 $465 +JUMPV +LABELV $476 +line 1179 +;1178: } +;1179: } +LABELV $474 +line 1181 +;1180: +;1181: if ( ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || +ADDRLP4 48 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +ADDRLP4 48 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 538 +EQI4 $483 +ADDRLP4 52 +INDIRI4 +CNSTI4 541 +EQI4 $483 +ADDRLP4 52 +INDIRI4 +CNSTI4 548 +EQI4 $483 +ADDRLP4 52 +INDIRI4 +CNSTI4 549 +EQI4 $483 +ADDRLP4 48 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $478 +LABELV $483 +line 1187 +;1182: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || +;1183: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || +;1184: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK || +;1185: pm->ps->saberLockFrame ) +;1186: ) +;1187: { +line 1188 +;1188: pm->ps->torsoTimer = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1189 +;1189: PM_SetAnim(SETANIM_TORSO,BOTH_STAND1,SETANIM_FLAG_OVERRIDE, 100); +ADDRLP4 56 +CNSTI4 1 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ARGI4 +CNSTI4 550 +ARGI4 +ADDRLP4 56 +INDIRI4 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1190 +;1190: pm->ps->saberLockFrame = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 532 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1191 +;1191: } +LABELV $478 +line 1192 +;1192: } +LABELV $468 +line 1193 +;1193: } +line 1195 +;1194: +;1195: if (pm->ps->saberHolstered) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1300 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $484 +line 1196 +;1196: { +line 1197 +;1197: if (pm->ps->saberMove != LS_READY) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +CNSTI4 1 +EQI4 $486 +line 1198 +;1198: { +line 1199 +;1199: PM_SetSaberMove( LS_READY ); +CNSTI4 1 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1200 +;1200: } +LABELV $486 +line 1202 +;1201: +;1202: if ((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) != (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT)) +ADDRLP4 36 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 40 +CNSTI4 -2049 +ASGNI4 +ADDRLP4 36 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ADDRLP4 40 +INDIRI4 +BANDI4 +ADDRLP4 36 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +ADDRLP4 40 +INDIRI4 +BANDI4 +EQI4 $488 +line 1203 +;1203: { +line 1204 +;1204: PM_SetAnim(SETANIM_TORSO,(pm->ps->legsAnim & ~ANIM_TOGGLEBIT),SETANIM_FLAG_OVERRIDE, 100); +ADDRLP4 44 +CNSTI4 1 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ARGI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ARGI4 +ADDRLP4 44 +INDIRI4 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1205 +;1205: } +LABELV $488 +line 1207 +;1206: +;1207: if (BG_InSaberStandAnim(pm->ps->torsoAnim)) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 44 +ADDRGP4 BG_InSaberStandAnim +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $490 +line 1208 +;1208: { +line 1209 +;1209: PM_SetAnim(SETANIM_TORSO,BOTH_STAND1,SETANIM_FLAG_OVERRIDE, 100); +ADDRLP4 48 +CNSTI4 1 +ASGNI4 +ADDRLP4 48 +INDIRI4 +ARGI4 +CNSTI4 550 +ARGI4 +ADDRLP4 48 +INDIRI4 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1210 +;1210: } +LABELV $490 +line 1212 +;1211: +;1212: if (pm->ps->weaponTime < 1 && ((pm->cmd.buttons & BUTTON_ALT_ATTACK) || (pm->cmd.buttons & BUTTON_ATTACK))) +ADDRLP4 48 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 52 +CNSTI4 1 +ASGNI4 +ADDRLP4 48 +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ADDRLP4 52 +INDIRI4 +GEI4 $492 +ADDRLP4 56 +ADDRLP4 48 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 60 +CNSTI4 0 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 128 +BANDI4 +ADDRLP4 60 +INDIRI4 +NEI4 $494 +ADDRLP4 56 +INDIRI4 +ADDRLP4 52 +INDIRI4 +BANDI4 +ADDRLP4 60 +INDIRI4 +EQI4 $492 +LABELV $494 +line 1213 +;1213: { +line 1214 +;1214: if (pm->ps->duelTime < pm->cmd.serverTime) +ADDRLP4 64 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +INDIRP4 +CNSTI4 1288 +ADDP4 +INDIRI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +GEI4 $495 +line 1215 +;1215: { +line 1216 +;1216: pm->ps->saberHolstered = qfalse; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1300 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1217 +;1217: PM_AddEvent(EV_SABER_UNHOLSTER); +CNSTI4 29 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 1218 +;1218: } +LABELV $495 +line 1219 +;1219: } +LABELV $492 +line 1221 +;1220: +;1221: if ( pm->ps->weaponTime > 0 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $497 +line 1222 +;1222: { +line 1223 +;1223: pm->ps->weaponTime -= pml.msec; +ADDRLP4 64 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 64 +INDIRP4 +INDIRI4 +ADDRGP4 pml+40 +INDIRI4 +SUBI4 +ASGNI4 +line 1224 +;1224: } +LABELV $497 +line 1226 +;1225: +;1226: checkOnlyWeap = qtrue; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 1227 +;1227: goto weapChecks; +ADDRGP4 $500 +JUMPV +LABELV $484 +line 1230 +;1228: } +;1229: +;1230: if ((pm->cmd.buttons & BUTTON_ALT_ATTACK) && +ADDRLP4 36 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +ADDRLP4 36 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CNSTI4 128 +BANDI4 +ADDRLP4 40 +INDIRI4 +EQI4 $501 +ADDRLP4 44 +ADDRLP4 36 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 1 +GEI4 $501 +ADDRLP4 44 +INDIRP4 +CNSTI4 560 +ADDP4 +INDIRI4 +ADDRLP4 40 +INDIRI4 +EQI4 $501 +ADDRLP4 44 +INDIRP4 +CNSTI4 920 +ADDP4 +INDIRI4 +CNSTI4 72 +ADDRLP4 44 +INDIRP4 +CNSTI4 1000 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 forcePowerNeeded+68 +ADDP4 +INDIRI4 +LTI4 $501 +ADDRLP4 36 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 44 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 BG_HasYsalamiri +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $501 +ADDRLP4 52 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 52 +INDIRP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 17 +ARGI4 +ADDRLP4 56 +ADDRGP4 BG_CanUseFPNow +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $501 +line 1237 +;1231: pm->ps->weaponTime < 1 && +;1232: pm->ps->saberCanThrow && +;1233: pm->ps->fd.forcePower >= forcePowerNeeded[pm->ps->fd.forcePowerLevel[FP_SABERTHROW]][FP_SABERTHROW] && +;1234: !BG_HasYsalamiri(pm->gametype, pm->ps) && +;1235: BG_CanUseFPNow(pm->gametype, pm->ps, pm->cmd.serverTime, FP_SABERTHROW) +;1236: ) +;1237: { //might as well just check for a saber throw right here +line 1239 +;1238: //This will get set to false again once the saber makes it back to its owner game-side +;1239: if (!pm->ps->saberInFlight) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 504 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $504 +line 1240 +;1240: { +line 1241 +;1241: pm->ps->fd.forcePower -= forcePowerNeeded[pm->ps->fd.forcePowerLevel[FP_SABERTHROW]][FP_SABERTHROW]; +ADDRLP4 60 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 64 +ADDRLP4 60 +INDIRP4 +CNSTI4 920 +ADDP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 64 +INDIRP4 +INDIRI4 +CNSTI4 72 +ADDRLP4 60 +INDIRP4 +CNSTI4 1000 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 forcePowerNeeded+68 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 1242 +;1242: } +LABELV $504 +line 1244 +;1243: +;1244: pm->ps->saberInFlight = qtrue; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 504 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1245 +;1245: } +LABELV $501 +line 1247 +;1246: +;1247: if ( pm->ps->saberInFlight ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 504 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $507 +line 1248 +;1248: {//guiding saber +line 1249 +;1249: PM_SetAnim(SETANIM_TORSO, BOTH_SABERPULL, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 100); +CNSTI4 1 +ARGI4 +CNSTI4 946 +ARGI4 +CNSTI4 3 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1250 +;1250: pm->ps->torsoTimer = 1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1251 +;1251: return; +ADDRGP4 $465 +JUMPV +LABELV $507 +line 1255 +;1252: } +;1253: +;1254: // don't allow attack until all buttons are up +;1255: if ( pm->ps->pm_flags & PMF_RESPAWNED ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 512 +BANDI4 +CNSTI4 0 +EQI4 $509 +line 1256 +;1256: return; +ADDRGP4 $465 +JUMPV +LABELV $509 +line 1260 +;1257: } +;1258: +;1259: // check for dead player +;1260: if ( pm->ps->stats[STAT_HEALTH] <= 0 ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $511 +line 1261 +;1261: return; +ADDRGP4 $465 +JUMPV +LABELV $511 +line 1264 +;1262: } +;1263: +;1264: if (pm->ps->weaponstate == WEAPON_READY || +ADDRLP4 60 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 0 +EQI4 $515 +ADDRLP4 60 +INDIRI4 +CNSTI4 6 +NEI4 $513 +LABELV $515 +line 1266 +;1265: pm->ps->weaponstate == WEAPON_IDLE) +;1266: { +line 1267 +;1267: if (pm->ps->saberMove != LS_READY && pm->ps->weaponTime <= 0 && !pm->ps->saberBlocked) +ADDRLP4 64 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +CNSTI4 1 +EQI4 $516 +ADDRLP4 68 +CNSTI4 0 +ASGNI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ADDRLP4 68 +INDIRI4 +GTI4 $516 +ADDRLP4 64 +INDIRP4 +CNSTI4 520 +ADDP4 +INDIRI4 +ADDRLP4 68 +INDIRI4 +NEI4 $516 +line 1268 +;1268: { +line 1269 +;1269: PM_SetSaberMove( LS_READY ); +CNSTI4 1 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1270 +;1270: } +LABELV $516 +line 1271 +;1271: } +LABELV $513 +line 1273 +;1272: +;1273: if( (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN2 || +ADDRLP4 64 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 734 +EQI4 $520 +ADDRLP4 64 +INDIRI4 +CNSTI4 731 +NEI4 $518 +LABELV $520 +line 1275 +;1274: (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN1 ) +;1275: { +line 1276 +;1276: if ((pm->ps->torsoAnim & ~ANIM_TOGGLEBIT) != (pm->ps->legsAnim & ~ANIM_TOGGLEBIT)) +ADDRLP4 68 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 72 +CNSTI4 -2049 +ASGNI4 +ADDRLP4 68 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +ADDRLP4 72 +INDIRI4 +BANDI4 +ADDRLP4 68 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +ADDRLP4 72 +INDIRI4 +BANDI4 +EQI4 $521 +line 1277 +;1277: { +line 1278 +;1278: PM_SetAnim(SETANIM_TORSO,(pm->ps->legsAnim & ~ANIM_TOGGLEBIT),SETANIM_FLAG_OVERRIDE, 100); +ADDRLP4 76 +CNSTI4 1 +ASGNI4 +ADDRLP4 76 +INDIRI4 +ARGI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ARGI4 +ADDRLP4 76 +INDIRI4 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1279 +;1279: } +LABELV $521 +line 1280 +;1280: } +LABELV $518 +line 1283 +;1281: +;1282: // make weapon function +;1283: if ( pm->ps->weaponTime > 0 ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $523 +line 1284 +;1284: pm->ps->weaponTime -= pml.msec; +ADDRLP4 68 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 68 +INDIRP4 +INDIRI4 +ADDRGP4 pml+40 +INDIRI4 +SUBI4 +ASGNI4 +line 1286 +;1285: +;1286: if (pm->ps->saberBlocked && pm->ps->torsoAnim != saberMoveData[pm->ps->saberMove].animToUse) +ADDRLP4 72 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 520 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $524 +ADDRLP4 72 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 40 +ADDRLP4 72 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+4 +ADDP4 +INDIRI4 +EQI4 $524 +line 1287 +;1287: { //rww - keep him in the blocking pose until he can attack again +line 1288 +;1288: PM_SetAnim(SETANIM_TORSO,saberMoveData[pm->ps->saberMove].animToUse,saberMoveData[pm->ps->saberMove].animSetFlags|SETANIM_FLAG_HOLD, saberMoveData[pm->ps->saberMove].blendTime); +CNSTI4 1 +ARGI4 +ADDRLP4 76 +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +ADDRGP4 saberMoveData+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +INDIRI4 +ADDRGP4 saberMoveData+16 +ADDP4 +INDIRU4 +CNSTU4 2 +BORU4 +CVUI4 4 +ARGI4 +ADDRLP4 76 +INDIRI4 +ADDRGP4 saberMoveData+20 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1289 +;1289: return; +ADDRGP4 $465 +JUMPV +line 1291 +;1290: } +;1291: } +LABELV $523 +line 1293 +;1292: else +;1293: { +line 1294 +;1294: pm->ps->weaponstate = WEAPON_READY; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1295 +;1295: } +LABELV $524 +line 1298 +;1296: +;1297: // Now we react to a block action by the player's lightsaber. +;1298: if ( pm->ps->saberBlocked ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 520 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $532 +line 1299 +;1299: { +line 1300 +;1300: int firstSet = 0; +ADDRLP4 68 +CNSTI4 0 +ASGNI4 +line 1302 +;1301: +;1302: if (!pm->ps->weaponTime) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $534 +line 1303 +;1303: { +line 1304 +;1304: firstSet = 1; +ADDRLP4 68 +CNSTI4 1 +ASGNI4 +line 1305 +;1305: } +LABELV $534 +line 1307 +;1306: +;1307: switch ( pm->ps->saberBlocked ) +ADDRLP4 72 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 520 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 1 +LTI4 $536 +ADDRLP4 72 +INDIRI4 +CNSTI4 12 +GTI4 $536 +ADDRLP4 72 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $572-4 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $572 +address $539 +address $544 +address $562 +address $564 +address $566 +address $568 +address $570 +address $563 +address $565 +address $567 +address $569 +address $571 +code +line 1308 +;1308: { +LABELV $539 +line 1311 +;1309: case BLOCKED_PARRY_BROKEN: +;1310: //whatever parry we were is in now broken, play the appropriate knocked-away anim +;1311: { +line 1314 +;1312: int nextMove; +;1313: +;1314: if ( PM_SaberInBrokenParry( pm->ps->saberMove ) ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 84 +ADDRGP4 PM_SaberInBrokenParry +CALLI4 +ASGNI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 0 +EQI4 $540 +line 1315 +;1315: {//already have one...? +line 1316 +;1316: nextMove = pm->ps->saberMove; +ADDRLP4 80 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ASGNI4 +line 1317 +;1317: } +ADDRGP4 $541 +JUMPV +LABELV $540 +line 1319 +;1318: else +;1319: { +line 1320 +;1320: nextMove = PM_BrokenParryForParry( pm->ps->saberMove ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 88 +ADDRGP4 PM_BrokenParryForParry +CALLI4 +ASGNI4 +ADDRLP4 80 +ADDRLP4 88 +INDIRI4 +ASGNI4 +line 1321 +;1321: } +LABELV $541 +line 1322 +;1322: if ( nextMove != LS_NONE ) +ADDRLP4 80 +INDIRI4 +CNSTI4 0 +EQI4 $537 +line 1323 +;1323: { +line 1324 +;1324: PM_SetSaberMove( nextMove ); +ADDRLP4 80 +INDIRI4 +CVII2 4 +CVII4 2 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1325 +;1325: pm->ps->weaponTime = pm->ps->torsoTimer; +ADDRLP4 88 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDRLP4 88 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +ASGNI4 +line 1326 +;1326: } +line 1328 +;1327: else +;1328: {//Maybe in a knockaway? +line 1329 +;1329: } +line 1330 +;1330: } +line 1331 +;1331: break; +ADDRGP4 $537 +JUMPV +LABELV $544 +line 1335 +;1332: case BLOCKED_ATK_BOUNCE: +;1333: // If there is absolutely no blocked move in the chart, don't even mess with the animation. +;1334: // OR if we are already in a block or parry. +;1335: if (pm->ps->saberMove >= LS_T1_BR__R/*LS_BOUNCE_TOP*/ )//|| saberMoveData[pm->ps->saberMove].bounceMove == LS_NONE ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +CNSTI4 32 +LTI4 $545 +line 1336 +;1336: {//an actual bounce? Other bounces before this are actually transitions? +line 1337 +;1337: pm->ps->saberBlocked = BLOCKED_NONE; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 520 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1338 +;1338: } +ADDRGP4 $537 +JUMPV +LABELV $545 +line 1340 +;1339: else +;1340: { +line 1343 +;1341: int bounceMove; +;1342: +;1343: if ( pm->cmd.buttons & BUTTON_ATTACK ) +ADDRGP4 pm +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $547 +line 1344 +;1344: {//transition to a new attack +line 1345 +;1345: int newQuad = PM_SaberMoveQuadrantForMovement( &pm->cmd ); +ADDRGP4 pm +INDIRP4 +CNSTI4 4 +ADDP4 +ARGP4 +ADDRLP4 88 +ADDRGP4 PM_SaberMoveQuadrantForMovement +CALLI4 +ASGNI4 +ADDRLP4 84 +ADDRLP4 88 +INDIRI4 +ASGNI4 +ADDRGP4 $550 +JUMPV +LABELV $549 +line 1347 +;1346: while ( newQuad == saberMoveData[pm->ps->saberMove].startQuad ) +;1347: {//player is still in same attack quad, don't repeat that attack because it looks bad, +line 1350 +;1348: //FIXME: try to pick one that might look cool? +;1349: //newQuad = Q_irand( Q_BR, Q_BL ); +;1350: newQuad = PM_irand_timesync( Q_BR, Q_BL ); +CNSTI4 0 +ARGI4 +CNSTI4 6 +ARGI4 +ADDRLP4 92 +ADDRGP4 PM_irand_timesync +CALLI4 +ASGNI4 +ADDRLP4 84 +ADDRLP4 92 +INDIRI4 +ASGNI4 +line 1352 +;1351: //FIXME: sanity check, just in case? +;1352: }//else player is switching up anyway, take the new attack dir +LABELV $550 +line 1346 +ADDRLP4 84 +INDIRI4 +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +EQI4 $549 +line 1353 +;1353: bounceMove = transitionMove[saberMoveData[pm->ps->saberMove].startQuad][newQuad]; +ADDRLP4 80 +ADDRLP4 84 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 transitionMove +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 1354 +;1354: } +ADDRGP4 $548 +JUMPV +LABELV $547 +line 1356 +;1355: else +;1356: {//return to ready +line 1357 +;1357: if ( saberMoveData[pm->ps->saberMove].startQuad == Q_T ) +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $554 +line 1358 +;1358: { +line 1359 +;1359: bounceMove = LS_R_BL2TR; +ADDRLP4 80 +CNSTI4 27 +ASGNI4 +line 1360 +;1360: } +ADDRGP4 $555 +JUMPV +LABELV $554 +line 1361 +;1361: else if ( saberMoveData[pm->ps->saberMove].startQuad < Q_T ) +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +CNSTI4 3 +GEI4 $557 +line 1362 +;1362: { +line 1363 +;1363: bounceMove = LS_R_TL2BR+saberMoveData[pm->ps->saberMove].startQuad-Q_BR; +ADDRLP4 80 +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +CNSTI4 25 +ADDI4 +ASGNI4 +line 1364 +;1364: } +ADDRGP4 $558 +JUMPV +LABELV $557 +line 1366 +;1365: else// if ( saberMoveData[pm->ps->saberMove].startQuad > Q_T ) +;1366: { +line 1367 +;1367: bounceMove = LS_R_BR2TL+saberMoveData[pm->ps->saberMove].startQuad-Q_TL; +ADDRLP4 80 +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+8 +ADDP4 +INDIRI4 +CNSTI4 28 +ADDI4 +CNSTI4 4 +SUBI4 +ASGNI4 +line 1368 +;1368: } +LABELV $558 +LABELV $555 +line 1369 +;1369: } +LABELV $548 +line 1370 +;1370: PM_SetSaberMove( bounceMove ); +ADDRLP4 80 +INDIRI4 +CVII2 4 +CVII4 2 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1372 +;1371: +;1372: pm->ps->weaponTime = pm->ps->torsoTimer;//+saberMoveData[bounceMove].blendTime+SABER_BLOCK_DUR; +ADDRLP4 84 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDRLP4 84 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +ASGNI4 +line 1374 +;1373: +;1374: } +line 1375 +;1375: break; +ADDRGP4 $537 +JUMPV +LABELV $562 +line 1377 +;1376: case BLOCKED_UPPER_RIGHT: +;1377: PM_SetSaberMove( LS_PARRY_UR ); +CNSTI4 109 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1378 +;1378: break; +ADDRGP4 $537 +JUMPV +LABELV $563 +line 1380 +;1379: case BLOCKED_UPPER_RIGHT_PROJ: +;1380: PM_SetSaberMove( LS_REFLECT_UR ); +CNSTI4 114 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1381 +;1381: break; +ADDRGP4 $537 +JUMPV +LABELV $564 +line 1383 +;1382: case BLOCKED_UPPER_LEFT: +;1383: PM_SetSaberMove( LS_PARRY_UL ); +CNSTI4 110 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1384 +;1384: break; +ADDRGP4 $537 +JUMPV +LABELV $565 +line 1386 +;1385: case BLOCKED_UPPER_LEFT_PROJ: +;1386: PM_SetSaberMove( LS_REFLECT_UL ); +CNSTI4 115 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1387 +;1387: break; +ADDRGP4 $537 +JUMPV +LABELV $566 +line 1389 +;1388: case BLOCKED_LOWER_RIGHT: +;1389: PM_SetSaberMove( LS_PARRY_LR ); +CNSTI4 111 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1390 +;1390: break; +ADDRGP4 $537 +JUMPV +LABELV $567 +line 1392 +;1391: case BLOCKED_LOWER_RIGHT_PROJ: +;1392: PM_SetSaberMove( LS_REFLECT_LR ); +CNSTI4 116 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1393 +;1393: break; +ADDRGP4 $537 +JUMPV +LABELV $568 +line 1395 +;1394: case BLOCKED_LOWER_LEFT: +;1395: PM_SetSaberMove( LS_PARRY_LL ); +CNSTI4 112 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1396 +;1396: break; +ADDRGP4 $537 +JUMPV +LABELV $569 +line 1398 +;1397: case BLOCKED_LOWER_LEFT_PROJ: +;1398: PM_SetSaberMove( LS_REFLECT_LL); +CNSTI4 117 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1399 +;1399: break; +ADDRGP4 $537 +JUMPV +LABELV $570 +line 1401 +;1400: case BLOCKED_TOP: +;1401: PM_SetSaberMove( LS_PARRY_UP ); +CNSTI4 108 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1402 +;1402: break; +ADDRGP4 $537 +JUMPV +LABELV $571 +line 1404 +;1403: case BLOCKED_TOP_PROJ: +;1404: PM_SetSaberMove( LS_REFLECT_UP ); +CNSTI4 113 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1405 +;1405: break; +ADDRGP4 $537 +JUMPV +LABELV $536 +line 1407 +;1406: default: +;1407: pm->ps->saberBlocked = BLOCKED_NONE; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 520 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1408 +;1408: break; +LABELV $537 +line 1411 +;1409: } +;1410: +;1411: if (pm->ps->saberBlocked != BLOCKED_ATK_BOUNCE && pm->ps->saberBlocked != BLOCKED_PARRY_BROKEN && pm->ps->weaponTime < 1) +ADDRLP4 80 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 84 +ADDRLP4 80 +INDIRP4 +CNSTI4 520 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 2 +EQI4 $574 +ADDRLP4 88 +CNSTI4 1 +ASGNI4 +ADDRLP4 84 +INDIRI4 +ADDRLP4 88 +INDIRI4 +EQI4 $574 +ADDRLP4 80 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ADDRLP4 88 +INDIRI4 +GEI4 $574 +line 1412 +;1412: { +line 1413 +;1413: pm->ps->torsoTimer = SABER_BLOCK_DUR; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 96 +ADDP4 +CNSTI4 150 +ASGNI4 +line 1414 +;1414: pm->ps->weaponTime = pm->ps->torsoTimer; +ADDRLP4 92 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +ASGNI4 +line 1415 +;1415: } +LABELV $574 +line 1417 +;1416: +;1417: if (firstSet) +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +EQI4 $576 +line 1418 +;1418: { +line 1419 +;1419: return; +ADDRGP4 $465 +JUMPV +LABELV $576 +line 1423 +;1420: } +;1421: +;1422: // Charging is like a lead-up before attacking again. This is an appropriate use, or we can create a new weaponstate for blocking +;1423: pm->ps->weaponstate = WEAPON_READY; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1426 +;1424: +;1425: // Done with block, so stop these active weapon branches. +;1426: return; +ADDRGP4 $465 +JUMPV +LABELV $532 +LABELV $500 +line 1432 +;1427: } +;1428: +;1429:weapChecks: +;1430: // check for weapon change +;1431: // can't change if weapon is firing, but can change again if lowering or raising +;1432: if ( pm->ps->weaponTime <= 0 || pm->ps->weaponstate != WEAPON_FIRING ) { +ADDRLP4 68 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $580 +ADDRLP4 68 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $578 +LABELV $580 +line 1433 +;1433: if ( pm->ps->weapon != pm->cmd.weapon ) { +ADDRLP4 72 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +ADDRLP4 72 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRU1 +CVUI4 1 +EQI4 $581 +line 1434 +;1434: PM_BeginWeaponChange( pm->cmd.weapon ); +ADDRGP4 pm +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRU1 +CVUI4 1 +ARGI4 +ADDRGP4 PM_BeginWeaponChange +CALLV +pop +line 1435 +;1435: } +LABELV $581 +line 1436 +;1436: } +LABELV $578 +line 1438 +;1437: +;1438: if ( pm->ps->weaponTime > 0 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $583 +line 1439 +;1439: { +line 1440 +;1440: return; +ADDRGP4 $465 +JUMPV +LABELV $583 +line 1448 +;1441: } +;1442: +;1443: // ********************************************************* +;1444: // WEAPON_DROPPING +;1445: // ********************************************************* +;1446: +;1447: // change weapon if time +;1448: if ( pm->ps->weaponstate == WEAPON_DROPPING ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $585 +line 1449 +;1449: PM_FinishWeaponChange(); +ADDRGP4 PM_FinishWeaponChange +CALLV +pop +line 1450 +;1450: return; +ADDRGP4 $465 +JUMPV +LABELV $585 +line 1457 +;1451: } +;1452: +;1453: // ********************************************************* +;1454: // WEAPON_RAISING +;1455: // ********************************************************* +;1456: +;1457: if ( pm->ps->weaponstate == WEAPON_RAISING ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $587 +line 1458 +;1458: {//Just selected the weapon +line 1459 +;1459: pm->ps->weaponstate = WEAPON_IDLE; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 6 +ASGNI4 +line 1460 +;1460: if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK1 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +CNSTI4 723 +NEI4 $589 +line 1461 +;1461: { +line 1462 +;1462: PM_SetAnim(SETANIM_TORSO,BOTH_WALK1,SETANIM_FLAG_NORMAL, 100); +CNSTI4 1 +ARGI4 +CNSTI4 723 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1463 +;1463: } +ADDRGP4 $590 +JUMPV +LABELV $589 +line 1464 +;1464: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN2 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +CNSTI4 734 +NEI4 $591 +line 1465 +;1465: { +line 1466 +;1466: PM_SetAnim(SETANIM_TORSO,BOTH_RUN2,SETANIM_FLAG_NORMAL, 100); +CNSTI4 1 +ARGI4 +CNSTI4 734 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1467 +;1467: } +ADDRGP4 $592 +JUMPV +LABELV $591 +line 1468 +;1468: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK2 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +CNSTI4 724 +NEI4 $593 +line 1469 +;1469: { +line 1470 +;1470: PM_SetAnim(SETANIM_TORSO,BOTH_WALK2,SETANIM_FLAG_NORMAL, 100); +CNSTI4 1 +ARGI4 +CNSTI4 724 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1471 +;1471: } +ADDRGP4 $594 +JUMPV +LABELV $593 +line 1473 +;1472: else +;1473: { +line 1474 +;1474: PM_SetAnim(SETANIM_TORSO,PM_GetSaberStance(),SETANIM_FLAG_NORMAL, 100); +ADDRLP4 72 +ADDRGP4 PM_GetSaberStance +CALLI4 +ASGNI4 +CNSTI4 1 +ARGI4 +ADDRLP4 72 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1475 +;1475: } +LABELV $594 +LABELV $592 +LABELV $590 +line 1477 +;1476: +;1477: if (pm->ps->weaponstate == WEAPON_RAISING) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $595 +line 1478 +;1478: { +line 1479 +;1479: return; +ADDRGP4 $465 +JUMPV +LABELV $595 +line 1482 +;1480: } +;1481: +;1482: } +LABELV $587 +line 1484 +;1483: +;1484: if (checkOnlyWeap) +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $597 +line 1485 +;1485: { +line 1486 +;1486: return; +ADDRGP4 $465 +JUMPV +LABELV $597 +line 1495 +;1487: } +;1488: +;1489: // ********************************************************* +;1490: // Check for WEAPON ATTACK +;1491: // ********************************************************* +;1492: +;1493: // NOTENOTE This is simply a client-side struct. Anything that is needed client and server should be moved to bg_weapon. +;1494: +;1495: if(!delayed_fire) +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $599 +line 1496 +;1496: { +line 1498 +;1497: // Start with the current move, and cross index it with the current control states. +;1498: if ( pm->ps->saberMove > LS_NONE && pm->ps->saberMove < LS_MOVE_MAX ) +ADDRLP4 72 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +LEI4 $601 +ADDRLP4 72 +INDIRI4 +CNSTI4 118 +GEI4 $601 +line 1499 +;1499: { +line 1500 +;1500: curmove = pm->ps->saberMove; +ADDRLP4 4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ASGNI4 +line 1501 +;1501: } +ADDRGP4 $602 +JUMPV +LABELV $601 +line 1503 +;1502: else +;1503: { +line 1504 +;1504: curmove = LS_READY; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 1505 +;1505: } +LABELV $602 +line 1507 +;1506: // check for fire +;1507: if ( !(pm->cmd.buttons & (BUTTON_ATTACK/*|BUTTON_ALT_ATTACK*/)) ) +ADDRGP4 pm +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +NEI4 $603 +line 1508 +;1508: { +line 1509 +;1509: if (pm->ps->weaponTime != 0) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $605 +line 1510 +;1510: {//Still firing +line 1511 +;1511: pm->ps->weaponstate = WEAPON_FIRING; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 3 +ASGNI4 +line 1512 +;1512: } +ADDRGP4 $606 +JUMPV +LABELV $605 +line 1513 +;1513: else if ( pm->ps->weaponstate != WEAPON_READY ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $607 +line 1514 +;1514: { +line 1515 +;1515: pm->ps->weaponstate = WEAPON_IDLE; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 6 +ASGNI4 +line 1516 +;1516: } +LABELV $607 +LABELV $606 +line 1518 +;1517: //Check for finishing an anim if necc. +;1518: if ( curmove >= LS_S_TL2BR && curmove <= LS_S_T2B ) +ADDRLP4 76 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 18 +LTI4 $609 +ADDRLP4 76 +INDIRI4 +CNSTI4 24 +GTI4 $609 +line 1519 +;1519: {//started a swing, must continue from here +line 1520 +;1520: newmove = LS_A_TL2BR + (curmove-LS_S_TL2BR); +ADDRLP4 8 +ADDRLP4 4 +INDIRI4 +CNSTI4 18 +SUBI4 +CNSTI4 4 +ADDI4 +ASGNI4 +line 1521 +;1521: } +ADDRGP4 $610 +JUMPV +LABELV $609 +line 1522 +;1522: else if ( curmove >= LS_A_TL2BR && curmove <= LS_A_T2B ) +ADDRLP4 80 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +CNSTI4 4 +LTI4 $611 +ADDRLP4 80 +INDIRI4 +CNSTI4 10 +GTI4 $611 +line 1523 +;1523: {//finished an attack, must continue from here +line 1524 +;1524: newmove = LS_R_TL2BR + (curmove-LS_A_TL2BR); +ADDRLP4 8 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +SUBI4 +CNSTI4 25 +ADDI4 +ASGNI4 +line 1525 +;1525: } +ADDRGP4 $612 +JUMPV +LABELV $611 +line 1526 +;1526: else if ( PM_SaberInTransition( curmove ) ) +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 84 +ADDRGP4 PM_SaberInTransition +CALLI4 +ASGNI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 0 +EQI4 $613 +line 1527 +;1527: {//in a transition, must play sequential attack +line 1528 +;1528: newmove = saberMoveData[curmove].chain_attack; +ADDRLP4 8 +CNSTI4 40 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+32 +ADDP4 +INDIRI4 +ASGNI4 +line 1529 +;1529: } +ADDRGP4 $614 +JUMPV +LABELV $613 +line 1530 +;1530: else if ( PM_SaberInBounce( curmove ) ) +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 88 +ADDRGP4 PM_SaberInBounce +CALLI4 +ASGNI4 +ADDRLP4 88 +INDIRI4 +CNSTI4 0 +EQI4 $616 +line 1531 +;1531: {//in a bounce +line 1532 +;1532: newmove = saberMoveData[curmove].chain_idle;//oops, not attacking, so don't chain +ADDRLP4 8 +CNSTI4 40 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+28 +ADDP4 +INDIRI4 +ASGNI4 +line 1533 +;1533: } +ADDRGP4 $617 +JUMPV +LABELV $616 +line 1535 +;1534: else +;1535: {//FIXME: what about returning from a parry? +line 1536 +;1536: PM_SetSaberMove( LS_READY ); +CNSTI4 1 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1537 +;1537: return; +ADDRGP4 $465 +JUMPV +LABELV $617 +LABELV $614 +LABELV $612 +LABELV $610 +line 1539 +;1538: } +;1539: } +LABELV $603 +line 1544 +;1540: +;1541: // *************************************************** +;1542: // Pressing attack, so we must look up the proper attack move. +;1543: +;1544: saberInAir = qtrue; +ADDRLP4 24 +CNSTI4 1 +ASGNI4 +line 1546 +;1545: +;1546: if ( pm->ps->weaponTime > 0 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $619 +line 1547 +;1547: { // Last attack is not yet complete. +line 1548 +;1548: pm->ps->weaponstate = WEAPON_FIRING; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 3 +ASGNI4 +line 1549 +;1549: return; +ADDRGP4 $465 +JUMPV +LABELV $619 +line 1552 +;1550: } +;1551: else +;1552: { +line 1553 +;1553: int both = qfalse; +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +line 1555 +;1554: +;1555: if ( curmove >= LS_PARRY_UP && curmove <= LS_REFLECT_LL ) +ADDRLP4 80 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +CNSTI4 108 +LTI4 $621 +ADDRLP4 80 +INDIRI4 +CNSTI4 117 +GTI4 $621 +line 1556 +;1556: {//from a parry or deflection, can go directly into an attack (?) +line 1557 +;1557: switch ( saberMoveData[curmove].endQuad ) +ADDRLP4 84 +CNSTI4 40 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+12 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 0 +LTI4 $623 +ADDRLP4 84 +INDIRI4 +CNSTI4 6 +GTI4 $623 +ADDRLP4 84 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $632 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $632 +address $630 +address $623 +address $628 +address $627 +address $629 +address $623 +address $631 +code +line 1558 +;1558: { +LABELV $627 +line 1560 +;1559: case Q_T: +;1560: newmove = LS_A_T2B; +ADDRLP4 8 +CNSTI4 10 +ASGNI4 +line 1561 +;1561: break; +ADDRGP4 $624 +JUMPV +LABELV $628 +line 1563 +;1562: case Q_TR: +;1563: newmove = LS_A_TL2BR; +ADDRLP4 8 +CNSTI4 4 +ASGNI4 +line 1564 +;1564: break; +ADDRGP4 $624 +JUMPV +LABELV $629 +line 1566 +;1565: case Q_TL: +;1566: newmove = LS_A_TR2BL; +ADDRLP4 8 +CNSTI4 9 +ASGNI4 +line 1567 +;1567: break; +ADDRGP4 $624 +JUMPV +LABELV $630 +line 1569 +;1568: case Q_BR: +;1569: newmove = LS_A_BR2TL; +ADDRLP4 8 +CNSTI4 7 +ASGNI4 +line 1570 +;1570: break; +ADDRGP4 $624 +JUMPV +LABELV $631 +line 1572 +;1571: case Q_BL: +;1572: newmove = LS_A_BL2TR; +ADDRLP4 8 +CNSTI4 6 +ASGNI4 +line 1573 +;1573: break; +LABELV $623 +LABELV $624 +line 1576 +;1574: //shouldn't be a parry that ends at L, R or B +;1575: } +;1576: } +LABELV $621 +line 1578 +;1577: +;1578: if ( newmove != LS_NONE ) +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $633 +line 1579 +;1579: {//have a valid, final LS_ move picked, so skip findingt he transition move and just get the anim +line 1580 +;1580: anim = saberMoveData[newmove].animToUse; +ADDRLP4 16 +CNSTI4 40 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+4 +ADDP4 +INDIRI4 +ASGNI4 +line 1581 +;1581: } +LABELV $633 +line 1584 +;1582: +;1583: //FIXME: diagonal dirs use the figure-eight attacks from ready pose? +;1584: if ( anim == -1 ) +ADDRLP4 16 +INDIRI4 +CNSTI4 -1 +NEI4 $636 +line 1585 +;1585: { +line 1587 +;1586: //FIXME: take FP_SABER_OFFENSE into account here somehow? +;1587: if ( curmove >= LS_T1_BR__R && curmove <= LS_T1_BL__L ) +ADDRLP4 84 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 84 +INDIRI4 +CNSTI4 32 +LTI4 $638 +ADDRLP4 84 +INDIRI4 +CNSTI4 73 +GTI4 $638 +line 1588 +;1588: {//in a transition, must play sequential attack +line 1589 +;1589: newmove = saberMoveData[curmove].chain_attack; +ADDRLP4 8 +CNSTI4 40 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+32 +ADDP4 +INDIRI4 +ASGNI4 +line 1590 +;1590: } +ADDRGP4 $639 +JUMPV +LABELV $638 +line 1591 +;1591: else if ( curmove >= LS_S_TL2BR && curmove <= LS_S_T2B ) +ADDRLP4 88 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 88 +INDIRI4 +CNSTI4 18 +LTI4 $641 +ADDRLP4 88 +INDIRI4 +CNSTI4 24 +GTI4 $641 +line 1592 +;1592: {//started a swing, must continue from here +line 1593 +;1593: newmove = LS_A_TL2BR + (curmove-LS_S_TL2BR); +ADDRLP4 8 +ADDRLP4 4 +INDIRI4 +CNSTI4 18 +SUBI4 +CNSTI4 4 +ADDI4 +ASGNI4 +line 1594 +;1594: } +ADDRGP4 $642 +JUMPV +LABELV $641 +line 1596 +;1595: else +;1596: { +line 1597 +;1597: if ( PM_SaberKataDone() ) +ADDRLP4 92 +ADDRGP4 PM_SaberKataDone +CALLI4 +ASGNI4 +ADDRLP4 92 +INDIRI4 +CNSTI4 0 +EQI4 $643 +line 1598 +;1598: {//we came from a bounce and cannot chain to another attack because our kata is done +line 1599 +;1599: newmove = saberMoveData[curmove].chain_idle; +ADDRLP4 8 +CNSTI4 40 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+28 +ADDP4 +INDIRI4 +ASGNI4 +line 1600 +;1600: } +ADDRGP4 $644 +JUMPV +LABELV $643 +line 1602 +;1601: else +;1602: { +line 1603 +;1603: saberMoveName_t checkMove = PM_SaberAttackForMovement(curmove); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 100 +ADDRGP4 PM_SaberAttackForMovement +CALLI4 +ASGNI4 +ADDRLP4 96 +ADDRLP4 100 +INDIRI4 +ASGNI4 +line 1604 +;1604: if (checkMove != -1) +ADDRLP4 96 +INDIRI4 +CNSTI4 -1 +EQI4 $646 +line 1605 +;1605: { +line 1606 +;1606: newmove = checkMove; +ADDRLP4 8 +ADDRLP4 96 +INDIRI4 +ASGNI4 +line 1607 +;1607: } +LABELV $646 +line 1608 +;1608: } +LABELV $644 +line 1609 +;1609: } +LABELV $642 +LABELV $639 +line 1617 +;1610: /* +;1611: if ( newmove == LS_NONE ) +;1612: {//FIXME: should we allow this? Are there some anims that you should never be able to chain into an attack? +;1613: //only curmove that might get in here is LS_NONE, LS_DRAW, LS_PUTAWAY and the LS_R_ returns... all of which are in Q_R +;1614: newmove = PM_AttackMoveForQuad( saberMoveData[curmove].endQuad ); +;1615: } +;1616: */ +;1617: if ( newmove != LS_NONE ) +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $648 +line 1618 +;1618: { +line 1620 +;1619: //Now get the proper transition move +;1620: newmove = PM_SaberAnimTransitionAnim( curmove, newmove ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRLP4 92 +ADDRGP4 PM_SaberAnimTransitionAnim +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 92 +INDIRI4 +ASGNI4 +line 1626 +;1621: // NOTENOTE Had to remove this concept since there is no gent in pmove. +;1622: /* +;1623: if ( PM_HasAnimation( pm->gent, saberMoveData[newmove].animToUse ) ) +;1624: */ +;1625: +;1626: assert( bgGlobalAnimations[saberMoveData[newmove].animToUse].firstFrame != 0 || +line 1629 +;1627: bgGlobalAnimations[saberMoveData[newmove].animToUse].numFrames != 0); +;1628: +;1629: if (1) +line 1630 +;1630: { +line 1631 +;1631: anim = saberMoveData[newmove].animToUse; +ADDRLP4 16 +CNSTI4 40 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+4 +ADDP4 +INDIRI4 +ASGNI4 +line 1632 +;1632: } +LABELV $650 +line 1633 +;1633: } +LABELV $648 +line 1634 +;1634: } +LABELV $636 +line 1636 +;1635: +;1636: if (anim == -1) +ADDRLP4 16 +INDIRI4 +CNSTI4 -1 +NEI4 $653 +line 1637 +;1637: {//not side-stepping, pick neutral anim +line 1639 +;1638: // Add randomness for prototype? +;1639: newmove = saberMoveData[curmove].chain_attack; +ADDRLP4 8 +CNSTI4 40 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+32 +ADDP4 +INDIRI4 +ASGNI4 +line 1641 +;1640: +;1641: anim= saberMoveData[newmove].animToUse; +ADDRLP4 16 +CNSTI4 40 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+4 +ADDP4 +INDIRI4 +ASGNI4 +line 1643 +;1642: +;1643: if ( !pm->cmd.forwardmove && !pm->cmd.rightmove && pm->cmd.upmove >= 0 && pm->ps->groundEntityNum != ENTITYNUM_NONE ) +ADDRLP4 84 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 88 +CNSTI4 0 +ASGNI4 +ADDRLP4 84 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 88 +INDIRI4 +NEI4 $657 +ADDRLP4 84 +INDIRP4 +CNSTI4 29 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 88 +INDIRI4 +NEI4 $657 +ADDRLP4 84 +INDIRP4 +CNSTI4 30 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 88 +INDIRI4 +LTI4 $657 +ADDRLP4 84 +INDIRP4 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +CNSTI4 1023 +EQI4 $657 +line 1644 +;1644: {//not moving at all, so set the anim on entire body +line 1645 +;1645: both = qtrue; +ADDRLP4 76 +CNSTI4 1 +ASGNI4 +line 1646 +;1646: } +LABELV $657 +line 1648 +;1647: +;1648: } +LABELV $653 +line 1650 +;1649: +;1650: if ( anim == -1) +ADDRLP4 16 +INDIRI4 +CNSTI4 -1 +NEI4 $659 +line 1651 +;1651: { +line 1652 +;1652: if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK1 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +CNSTI4 723 +NEI4 $661 +line 1653 +;1653: { +line 1654 +;1654: anim = BOTH_WALK1; +ADDRLP4 16 +CNSTI4 723 +ASGNI4 +line 1655 +;1655: } +ADDRGP4 $662 +JUMPV +LABELV $661 +line 1656 +;1656: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN2 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +CNSTI4 734 +NEI4 $663 +line 1657 +;1657: { +line 1658 +;1658: anim = BOTH_RUN2; +ADDRLP4 16 +CNSTI4 734 +ASGNI4 +line 1659 +;1659: } +ADDRGP4 $664 +JUMPV +LABELV $663 +line 1660 +;1660: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK2 ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +CNSTI4 724 +NEI4 $665 +line 1661 +;1661: { +line 1662 +;1662: anim = BOTH_WALK2; +ADDRLP4 16 +CNSTI4 724 +ASGNI4 +line 1663 +;1663: } +ADDRGP4 $666 +JUMPV +LABELV $665 +line 1665 +;1664: else +;1665: { +line 1666 +;1666: anim = PM_GetSaberStance(); +ADDRLP4 84 +ADDRGP4 PM_GetSaberStance +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 84 +INDIRI4 +ASGNI4 +line 1667 +;1667: } +LABELV $666 +LABELV $664 +LABELV $662 +line 1668 +;1668: newmove = LS_READY; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 1669 +;1669: } +LABELV $659 +line 1671 +;1670: +;1671: if ( !pm->ps->saberActive ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 508 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $667 +line 1672 +;1672: {//turn on the saber if it's not on +line 1673 +;1673: pm->ps->saberActive = qtrue; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 508 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1674 +;1674: } +LABELV $667 +line 1676 +;1675: +;1676: PM_SetSaberMove( newmove ); +ADDRLP4 8 +INDIRI4 +CVII2 4 +CVII4 2 +ARGI4 +ADDRGP4 PM_SetSaberMove +CALLV +pop +line 1678 +;1677: +;1678: if ( both ) +ADDRLP4 76 +INDIRI4 +CNSTI4 0 +EQI4 $669 +line 1679 +;1679: { +line 1680 +;1680: PM_SetAnim(SETANIM_LEGS,anim,SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 100); +CNSTI4 2 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +CNSTI4 3 +ARGI4 +CNSTI4 100 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1681 +;1681: } +LABELV $669 +line 1684 +;1682: +;1683: //don't fire again until anim is done +;1684: pm->ps->weaponTime = pm->ps->torsoTimer; +ADDRLP4 84 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDRLP4 84 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +ASGNI4 +line 1685 +;1685: } +line 1686 +;1686: } +LABELV $599 +line 1692 +;1687: +;1688: // ********************************************************* +;1689: // WEAPON_FIRING +;1690: // ********************************************************* +;1691: +;1692: pm->ps->weaponstate = WEAPON_FIRING; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 3 +ASGNI4 +line 1694 +;1693: +;1694: amount = weaponData[pm->ps->weapon].energyPerShot; +ADDRLP4 28 +CNSTI4 56 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 weaponData+8 +ADDP4 +INDIRI4 +ASGNI4 +line 1696 +;1695: +;1696: addTime = pm->ps->weaponTime; +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ASGNI4 +line 1698 +;1697: +;1698: pm->ps->saberAttackSequence = pm->ps->torsoAnim; +ADDRLP4 72 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 732 +ADDP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +ASGNI4 +line 1699 +;1699: if ( !addTime ) +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $672 +line 1700 +;1700: { +line 1701 +;1701: addTime = weaponData[pm->ps->weapon].fireTime; +ADDRLP4 0 +CNSTI4 56 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 weaponData+12 +ADDP4 +INDIRI4 +ASGNI4 +line 1702 +;1702: } +LABELV $672 +line 1703 +;1703: pm->ps->weaponTime = addTime; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1704 +;1704:} +LABELV $465 +endproc PM_WeaponLightsaber 104 16 +export PM_SetSaberMove +proc PM_SetSaberMove 52 16 +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CVII2 4 +ASGNI2 +line 1707 +;1705: +;1706:void PM_SetSaberMove(short newMove) +;1707:{ +line 1708 +;1708: unsigned int setflags = saberMoveData[newMove].animSetFlags; +ADDRLP4 4 +CNSTI4 40 +ADDRFP4 0 +INDIRI2 +CVII4 2 +MULI4 +ADDRGP4 saberMoveData+16 +ADDP4 +INDIRU4 +ASGNU4 +line 1709 +;1709: int anim = saberMoveData[newMove].animToUse; +ADDRLP4 0 +CNSTI4 40 +ADDRFP4 0 +INDIRI2 +CVII4 2 +MULI4 +ADDRGP4 saberMoveData+4 +ADDP4 +INDIRI4 +ASGNI4 +line 1710 +;1710: int parts = SETANIM_TORSO; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 1712 +;1711: +;1712: if ( newMove == LS_READY ) +ADDRFP4 0 +INDIRI2 +CVII4 2 +CNSTI4 1 +NEI4 $678 +line 1713 +;1713: {//finished with a kata, reset attack counter +line 1714 +;1714: pm->ps->saberAttackChainCount = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1296 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1715 +;1715: } +ADDRGP4 $679 +JUMPV +LABELV $678 +line 1716 +;1716: else if ( BG_SaberInAttack( newMove ) ) +ADDRFP4 0 +INDIRI2 +CVII4 2 +ARGI4 +ADDRLP4 12 +ADDRGP4 BG_SaberInAttack +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $680 +line 1717 +;1717: {//continuing with a kata, increment attack counter +line 1718 +;1718: pm->ps->saberAttackChainCount++; +ADDRLP4 16 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1296 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1719 +;1719: } +LABELV $680 +LABELV $679 +line 1721 +;1720: +;1721: if (pm->ps->saberAttackChainCount > 16) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1296 +ADDP4 +INDIRI4 +CNSTI4 16 +LEI4 $682 +line 1722 +;1722: { //for the sake of being able to send the value over the net within a reasonable bit count +line 1723 +;1723: pm->ps->saberAttackChainCount = 16; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1296 +ADDP4 +CNSTI4 16 +ASGNI4 +line 1724 +;1724: } +LABELV $682 +line 1726 +;1725: +;1726: if ( pm->ps->fd.saberAnimLevel > FORCE_LEVEL_1 && +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +CNSTI4 1 +LEI4 $684 +ADDRFP4 0 +INDIRI2 +CVII4 2 +ARGI4 +ADDRLP4 16 +ADDRGP4 BG_SaberInIdle +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $684 +ADDRFP4 0 +INDIRI2 +CVII4 2 +ARGI4 +ADDRLP4 20 +ADDRGP4 PM_SaberInParry +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $684 +ADDRFP4 0 +INDIRI2 +CVII4 2 +ARGI4 +ADDRLP4 24 +ADDRGP4 PM_SaberInReflect +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $684 +ADDRFP4 0 +INDIRI2 +CVII4 2 +ARGI4 +ADDRLP4 28 +ADDRGP4 BG_SaberInSpecial +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $684 +line 1728 +;1727: !BG_SaberInIdle( newMove ) && !PM_SaberInParry( newMove ) && !PM_SaberInReflect( newMove ) && !BG_SaberInSpecial(newMove)) +;1728: {//readies, parries and reflections have only 1 level +line 1730 +;1729: //increment the anim to the next level of saber anims +;1730: if ( !PM_SaberInTransition( newMove ) ) +ADDRFP4 0 +INDIRI2 +CVII4 2 +ARGI4 +ADDRLP4 32 +ADDRGP4 PM_SaberInTransition +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $686 +line 1731 +;1731: {//FIXME: only have level 1 transitions for now +line 1732 +;1732: anim += (pm->ps->fd.saberAnimLevel-FORCE_LEVEL_1) * SABER_ANIM_GROUP_SIZE; +ADDRLP4 36 +CNSTI4 77 +ASGNI4 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRLP4 36 +INDIRI4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +MULI4 +ADDRLP4 36 +INDIRI4 +SUBI4 +ADDI4 +ASGNI4 +line 1733 +;1733: } +LABELV $686 +line 1734 +;1734: } +LABELV $684 +line 1737 +;1735: +;1736: // If the move does the same animation as the last one, we need to force a restart... +;1737: if ( saberMoveData[pm->ps->saberMove].animToUse == anim && newMove > LS_PUTAWAY) +CNSTI4 40 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 saberMoveData+4 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +NEI4 $688 +ADDRFP4 0 +INDIRI2 +CVII4 2 +CNSTI4 3 +LEI4 $688 +line 1738 +;1738: { +line 1739 +;1739: setflags |= SETANIM_FLAG_RESTART; +ADDRLP4 4 +ADDRLP4 4 +INDIRU4 +CNSTU4 4 +BORU4 +ASGNU4 +line 1740 +;1740: } +LABELV $688 +line 1743 +;1741: +;1742: //saber torso anims should always be highest priority +;1743: setflags |= SETANIM_FLAG_OVERRIDE; +ADDRLP4 4 +ADDRLP4 4 +INDIRU4 +CNSTU4 1 +BORU4 +ASGNU4 +line 1745 +;1744: +;1745: if ( BG_InSaberStandAnim(anim) || anim == BOTH_STAND1 ) +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 32 +ADDRGP4 BG_InSaberStandAnim +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $693 +ADDRLP4 0 +INDIRI4 +CNSTI4 550 +NEI4 $691 +LABELV $693 +line 1746 +;1746: { +line 1747 +;1747: anim = (pm->ps->legsAnim & ~ANIM_TOGGLEBIT); +ADDRLP4 0 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +line 1749 +;1748: +;1749: if ((anim >= BOTH_STAND1 && anim <= BOTH_STAND4TOATTACK2) || +ADDRLP4 0 +INDIRI4 +CNSTI4 550 +LTI4 $697 +ADDRLP4 0 +INDIRI4 +CNSTI4 571 +LEI4 $696 +LABELV $697 +ADDRLP4 0 +INDIRI4 +CNSTI4 954 +LTI4 $694 +ADDRLP4 0 +INDIRI4 +CNSTI4 985 +GTI4 $694 +LABELV $696 +line 1751 +;1750: (anim >= TORSO_DROPWEAP1 && anim <= TORSO_WEAPONIDLE12)) +;1751: { //If standing then use the special saber stand anim +line 1752 +;1752: anim = PM_GetSaberStance(); +ADDRLP4 44 +ADDRGP4 PM_GetSaberStance +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 1753 +;1753: } +LABELV $694 +line 1755 +;1754: +;1755: if (pm->ps->pm_flags & PMF_DUCKED) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $698 +line 1756 +;1756: { //Playing torso walk anims while crouched makes you look like a monkey +line 1757 +;1757: anim = PM_GetSaberStance(); +ADDRLP4 44 +ADDRGP4 PM_GetSaberStance +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 1758 +;1758: } +LABELV $698 +line 1760 +;1759: +;1760: if (anim == BOTH_WALKBACK1 || anim == BOTH_WALKBACK2) +ADDRLP4 0 +INDIRI4 +CNSTI4 748 +EQI4 $702 +ADDRLP4 0 +INDIRI4 +CNSTI4 749 +NEI4 $700 +LABELV $702 +line 1761 +;1761: { //normal stance when walking backward so saber doesn't look like it's cutting through leg +line 1762 +;1762: anim = PM_GetSaberStance(); +ADDRLP4 48 +ADDRGP4 PM_GetSaberStance +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 1763 +;1763: } +LABELV $700 +line 1765 +;1764: +;1765: parts = SETANIM_TORSO; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 1766 +;1766: } +LABELV $691 +line 1768 +;1767: +;1768: if ( newMove == LS_A_LUNGE +ADDRLP4 36 +ADDRFP4 0 +INDIRI2 +CVII4 2 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 14 +EQI4 $710 +ADDRLP4 36 +INDIRI4 +CNSTI4 15 +EQI4 $710 +ADDRLP4 36 +INDIRI4 +CNSTI4 11 +EQI4 $710 +ADDRLP4 36 +INDIRI4 +CNSTI4 12 +EQI4 $710 +ADDRLP4 36 +INDIRI4 +CNSTI4 13 +EQI4 $710 +ADDRLP4 36 +INDIRI4 +CNSTI4 16 +EQI4 $710 +ADDRLP4 36 +INDIRI4 +CNSTI4 17 +NEI4 $703 +LABELV $710 +line 1775 +;1769: || newMove == LS_A_JUMP_T__B_ +;1770: || newMove == LS_A_BACKSTAB +;1771: || newMove == LS_A_BACK +;1772: || newMove == LS_A_BACK_CR +;1773: || newMove == LS_A_FLIP_STAB +;1774: || newMove == LS_A_FLIP_SLASH ) +;1775: { +line 1776 +;1776: parts = SETANIM_BOTH; +ADDRLP4 8 +CNSTI4 3 +ASGNI4 +line 1777 +;1777: } +ADDRGP4 $704 +JUMPV +LABELV $703 +line 1778 +;1778: else if ( BG_SpinningSaberAnim( anim ) ) +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 40 +ADDRGP4 BG_SpinningSaberAnim +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +EQI4 $711 +line 1779 +;1779: {//spins must be played on entire body +line 1780 +;1780: parts = SETANIM_BOTH; +ADDRLP4 8 +CNSTI4 3 +ASGNI4 +line 1781 +;1781: } +LABELV $711 +LABELV $704 +line 1782 +;1782: PM_SetAnim(parts, anim, setflags|SETANIM_FLAG_HOLD, saberMoveData[newMove].blendTime); +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRU4 +CNSTU4 2 +BORU4 +CVUI4 4 +ARGI4 +CNSTI4 40 +ADDRFP4 0 +INDIRI2 +CVII4 2 +MULI4 +ADDRGP4 saberMoveData+20 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 PM_SetAnim +CALLV +pop +line 1784 +;1783: +;1784: if ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == anim ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ADDRLP4 0 +INDIRI4 +NEI4 $714 +line 1785 +;1785: {//successfully changed anims +line 1788 +;1786: //special check for *starting* a saber swing +;1787: //playing at attack +;1788: if ( BG_SaberInAttack( newMove ) || BG_SaberInSpecialAttack( anim ) ) +ADDRFP4 0 +INDIRI2 +CVII4 2 +ARGI4 +ADDRLP4 44 +ADDRGP4 BG_SaberInAttack +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +NEI4 $718 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 48 +ADDRGP4 BG_SaberInSpecialAttack +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +EQI4 $716 +LABELV $718 +line 1789 +;1789: { +line 1790 +;1790: if ( pm->ps->saberMove != newMove ) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI2 +CVII4 2 +EQI4 $719 +line 1791 +;1791: {//wasn't playing that attack before +line 1792 +;1792: PM_AddEvent(EV_SABER_ATTACK); +CNSTI4 26 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 1793 +;1793: } +LABELV $719 +line 1794 +;1794: } +LABELV $716 +line 1796 +;1795: +;1796: pm->ps->saberMove = newMove; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 512 +ADDP4 +ADDRFP4 0 +INDIRI2 +CVII4 2 +ASGNI4 +line 1797 +;1797: pm->ps->saberBlocking = saberMoveData[newMove].blocking; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 516 +ADDP4 +CNSTI4 40 +ADDRFP4 0 +INDIRI2 +CVII4 2 +MULI4 +ADDRGP4 saberMoveData+24 +ADDP4 +INDIRI4 +ASGNI4 +line 1799 +;1798: +;1799: pm->ps->torsoAnim = anim;//saberMoveData[newMove].animToUse; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 100 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1801 +;1800: +;1801: if (pm->ps->weaponTime <= 0) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $722 +line 1802 +;1802: { +line 1803 +;1803: pm->ps->saberBlocked = BLOCKED_NONE; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 520 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1804 +;1804: } +LABELV $722 +line 1805 +;1805: } +LABELV $714 +line 1806 +;1806:} +LABELV $675 +endproc PM_SetSaberMove 52 16 +import ValidAnimFileIndex +import PM_SetAnim +import PM_FinishWeaponChange +import PM_BeginWeaponChange +import PM_ForceLegsAnim +import PM_ContinueLegsAnim +import PM_StartTorsoAnim +import BG_CycleInven +import PM_StepSlideMove +import PM_SlideMove +import PM_AddEvent +import PM_AddTouchEnt +import PM_ClipVelocity +import PM_GetSaberStance +import PM_AnimLength +import PM_InRollComplete +import PM_InOnGroundAnim +import PM_SpinningAnim +import PM_LandingAnim +import PM_JumpingAnim +import PM_PainAnim +import PM_InKnockDown +import PM_InSaberAnim +import PM_SaberInStart +import PM_SaberInReflect +import PM_SaberInParry +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import forcePowerNeeded +import c_pmove +import pm_flightfriction +import pm_waterfriction +import pm_friction +import pm_flyaccelerate +import pm_wateraccelerate +import pm_airaccelerate +import pm_accelerate +import pm_wadeScale +import pm_swimScale +import pm_duckScale +import pm_stopspeed +import pml +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $212 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $211 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 76 +char 1 82 +char 1 0 +align 1 +LABELV $210 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 85 +char 1 76 +char 1 0 +align 1 +LABELV $209 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 85 +char 1 82 +char 1 0 +align 1 +LABELV $208 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 84 +char 1 111 +char 1 112 +char 1 0 +align 1 +LABELV $207 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $206 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 76 +char 1 82 +char 1 0 +align 1 +LABELV $205 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 85 +char 1 76 +char 1 0 +align 1 +LABELV $204 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 85 +char 1 82 +char 1 0 +align 1 +LABELV $203 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 84 +char 1 111 +char 1 112 +char 1 0 +align 1 +LABELV $202 +char 1 75 +char 1 110 +char 1 111 +char 1 99 +char 1 107 +char 1 32 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $201 +char 1 75 +char 1 110 +char 1 111 +char 1 99 +char 1 107 +char 1 32 +char 1 76 +char 1 82 +char 1 0 +align 1 +LABELV $200 +char 1 75 +char 1 110 +char 1 111 +char 1 99 +char 1 107 +char 1 32 +char 1 85 +char 1 76 +char 1 0 +align 1 +LABELV $199 +char 1 75 +char 1 110 +char 1 111 +char 1 99 +char 1 107 +char 1 32 +char 1 85 +char 1 82 +char 1 0 +align 1 +LABELV $198 +char 1 75 +char 1 110 +char 1 111 +char 1 99 +char 1 107 +char 1 32 +char 1 84 +char 1 111 +char 1 112 +char 1 0 +align 1 +LABELV $197 +char 1 66 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 76 +char 1 76 +char 1 0 +align 1 +LABELV $196 +char 1 66 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 66 +char 1 111 +char 1 116 +char 1 0 +align 1 +LABELV $195 +char 1 66 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 76 +char 1 82 +char 1 0 +align 1 +LABELV $194 +char 1 66 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 85 +char 1 76 +char 1 0 +align 1 +LABELV $193 +char 1 66 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 85 +char 1 82 +char 1 0 +align 1 +LABELV $192 +char 1 66 +char 1 80 +char 1 97 +char 1 114 +char 1 114 +char 1 121 +char 1 32 +char 1 84 +char 1 111 +char 1 112 +char 1 0 +align 1 +LABELV $191 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 66 +char 1 0 +align 1 +LABELV $190 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $189 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 76 +char 1 0 +align 1 +LABELV $188 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $187 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 84 +char 1 0 +align 1 +LABELV $186 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $185 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 82 +char 1 0 +align 1 +LABELV $184 +char 1 82 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $183 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 66 +char 1 0 +align 1 +LABELV $182 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $181 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 76 +char 1 0 +align 1 +LABELV $180 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $179 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 84 +char 1 0 +align 1 +LABELV $178 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $177 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 82 +char 1 0 +align 1 +LABELV $176 +char 1 68 +char 1 101 +char 1 102 +char 1 108 +char 1 101 +char 1 99 +char 1 116 +char 1 32 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $175 +char 1 66 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 66 +char 1 76 +char 1 0 +align 1 +LABELV $174 +char 1 66 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 76 +char 1 0 +align 1 +LABELV $173 +char 1 66 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 84 +char 1 76 +char 1 0 +align 1 +LABELV $172 +char 1 66 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 84 +char 1 0 +align 1 +LABELV $171 +char 1 66 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 84 +char 1 82 +char 1 0 +align 1 +LABELV $170 +char 1 66 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 82 +char 1 0 +align 1 +LABELV $169 +char 1 66 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 32 +char 1 66 +char 1 82 +char 1 0 +align 1 +LABELV $168 +char 1 66 +char 1 76 +char 1 50 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $167 +char 1 66 +char 1 76 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $166 +char 1 66 +char 1 76 +char 1 50 +char 1 84 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $165 +char 1 66 +char 1 76 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $164 +char 1 66 +char 1 76 +char 1 50 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $163 +char 1 66 +char 1 76 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $162 +char 1 76 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $161 +char 1 76 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $160 +char 1 76 +char 1 50 +char 1 84 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $159 +char 1 76 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $158 +char 1 76 +char 1 50 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $157 +char 1 76 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $156 +char 1 84 +char 1 76 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $155 +char 1 84 +char 1 76 +char 1 50 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $154 +char 1 84 +char 1 76 +char 1 50 +char 1 84 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $153 +char 1 84 +char 1 76 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $152 +char 1 84 +char 1 76 +char 1 50 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $151 +char 1 84 +char 1 76 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $150 +char 1 84 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $149 +char 1 84 +char 1 50 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $148 +char 1 84 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $147 +char 1 84 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $146 +char 1 84 +char 1 50 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $145 +char 1 84 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $144 +char 1 84 +char 1 82 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $143 +char 1 84 +char 1 82 +char 1 50 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $142 +char 1 84 +char 1 82 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $141 +char 1 84 +char 1 82 +char 1 50 +char 1 84 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $140 +char 1 84 +char 1 82 +char 1 50 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $139 +char 1 84 +char 1 82 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $138 +char 1 82 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $137 +char 1 82 +char 1 50 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $136 +char 1 82 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $135 +char 1 82 +char 1 50 +char 1 84 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $134 +char 1 82 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $133 +char 1 82 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $132 +char 1 66 +char 1 82 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $131 +char 1 66 +char 1 82 +char 1 50 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $130 +char 1 66 +char 1 82 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $129 +char 1 66 +char 1 82 +char 1 50 +char 1 84 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $128 +char 1 66 +char 1 82 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $127 +char 1 66 +char 1 82 +char 1 50 +char 1 82 +char 1 32 +char 1 84 +char 1 114 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $126 +char 1 84 +char 1 50 +char 1 66 +char 1 32 +char 1 82 +char 1 101 +char 1 116 +char 1 0 +align 1 +LABELV $125 +char 1 84 +char 1 82 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 82 +char 1 101 +char 1 116 +char 1 0 +align 1 +LABELV $124 +char 1 82 +char 1 50 +char 1 76 +char 1 32 +char 1 82 +char 1 101 +char 1 116 +char 1 0 +align 1 +LABELV $123 +char 1 66 +char 1 82 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 82 +char 1 101 +char 1 116 +char 1 0 +align 1 +LABELV $122 +char 1 66 +char 1 76 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 82 +char 1 101 +char 1 116 +char 1 0 +align 1 +LABELV $121 +char 1 76 +char 1 50 +char 1 82 +char 1 32 +char 1 82 +char 1 101 +char 1 116 +char 1 0 +align 1 +LABELV $120 +char 1 84 +char 1 76 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 82 +char 1 101 +char 1 116 +char 1 0 +align 1 +LABELV $119 +char 1 84 +char 1 50 +char 1 66 +char 1 32 +char 1 83 +char 1 116 +char 1 0 +align 1 +LABELV $118 +char 1 84 +char 1 82 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 83 +char 1 116 +char 1 0 +align 1 +LABELV $117 +char 1 82 +char 1 50 +char 1 76 +char 1 32 +char 1 83 +char 1 116 +char 1 0 +align 1 +LABELV $116 +char 1 66 +char 1 82 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 83 +char 1 116 +char 1 0 +align 1 +LABELV $115 +char 1 66 +char 1 76 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 83 +char 1 116 +char 1 0 +align 1 +LABELV $114 +char 1 76 +char 1 50 +char 1 82 +char 1 32 +char 1 83 +char 1 116 +char 1 0 +align 1 +LABELV $113 +char 1 84 +char 1 76 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 83 +char 1 116 +char 1 0 +align 1 +LABELV $112 +char 1 70 +char 1 108 +char 1 105 +char 1 112 +char 1 32 +char 1 83 +char 1 108 +char 1 97 +char 1 115 +char 1 104 +char 1 0 +align 1 +LABELV $111 +char 1 70 +char 1 108 +char 1 105 +char 1 112 +char 1 32 +char 1 83 +char 1 116 +char 1 97 +char 1 98 +char 1 0 +align 1 +LABELV $110 +char 1 74 +char 1 117 +char 1 109 +char 1 112 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $109 +char 1 76 +char 1 117 +char 1 110 +char 1 103 +char 1 101 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $108 +char 1 67 +char 1 82 +char 1 32 +char 1 66 +char 1 97 +char 1 99 +char 1 107 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $107 +char 1 66 +char 1 97 +char 1 99 +char 1 107 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $106 +char 1 66 +char 1 97 +char 1 99 +char 1 107 +char 1 32 +char 1 83 +char 1 116 +char 1 97 +char 1 98 +char 1 0 +align 1 +LABELV $105 +char 1 84 +char 1 50 +char 1 66 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $104 +char 1 84 +char 1 82 +char 1 50 +char 1 66 +char 1 76 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $103 +char 1 82 +char 1 50 +char 1 76 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $102 +char 1 66 +char 1 82 +char 1 50 +char 1 84 +char 1 76 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $101 +char 1 66 +char 1 76 +char 1 50 +char 1 84 +char 1 82 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $100 +char 1 76 +char 1 50 +char 1 82 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $99 +char 1 84 +char 1 76 +char 1 50 +char 1 66 +char 1 82 +char 1 32 +char 1 65 +char 1 116 +char 1 116 +char 1 0 +align 1 +LABELV $98 +char 1 80 +char 1 117 +char 1 116 +char 1 97 +char 1 119 +char 1 97 +char 1 121 +char 1 0 +align 1 +LABELV $97 +char 1 68 +char 1 114 +char 1 97 +char 1 119 +char 1 0 +align 1 +LABELV $96 +char 1 82 +char 1 101 +char 1 97 +char 1 100 +char 1 121 +char 1 0 +align 1 +LABELV $95 +char 1 78 +char 1 111 +char 1 110 +char 1 101 +char 1 0 diff --git a/CODE-mp/game/vm/bg_slidemove.asm b/CODE-mp/game/vm/bg_slidemove.asm new file mode 100644 index 0000000..f274526 --- /dev/null +++ b/CODE-mp/game/vm/bg_slidemove.asm @@ -0,0 +1,2878 @@ +export PM_SlideMove +code +proc PM_SlideMove 1332 28 +file "../bg_slidemove.c" +line 25 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:// bg_slidemove.c -- part of bg_pmove functionality +;4: +;5:#include "q_shared.h" +;6:#include "bg_public.h" +;7:#include "bg_local.h" +;8: +;9:/* +;10: +;11:input: origin, velocity, bounds, groundPlane, trace function +;12: +;13:output: origin, velocity, impacts, stairup boolean +;14: +;15:*/ +;16: +;17:/* +;18:================== +;19:PM_SlideMove +;20: +;21:Returns qtrue if the velocity was clipped in some way +;22:================== +;23:*/ +;24:#define MAX_CLIP_PLANES 5 +;25:qboolean PM_SlideMove( qboolean gravity ) { +line 41 +;26: int bumpcount, numbumps; +;27: vec3_t dir; +;28: float d; +;29: int numplanes; +;30: vec3_t planes[MAX_CLIP_PLANES]; +;31: vec3_t primal_velocity; +;32: vec3_t clipVelocity; +;33: int i, j, k; +;34: trace_t trace; +;35: vec3_t end; +;36: float time_left; +;37: float into; +;38: vec3_t endVelocity; +;39: vec3_t endClipVelocity; +;40: +;41: numbumps = 4; +ADDRLP4 1232 +CNSTI4 4 +ASGNI4 +line 43 +;42: +;43: VectorCopy (pm->ps->velocity, primal_velocity); +ADDRLP4 1236 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 45 +;44: +;45: if ( gravity ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $66 +line 46 +;46: VectorCopy( pm->ps->velocity, endVelocity ); +ADDRLP4 116 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 47 +;47: endVelocity[2] -= pm->ps->gravity * pml.frametime; +ADDRLP4 116+8 +ADDRLP4 116+8 +INDIRF4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRGP4 pml+36 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 48 +;48: pm->ps->velocity[2] = ( pm->ps->velocity[2] + endVelocity[2] ) * 0.5; +ADDRLP4 1248 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +ASGNP4 +ADDRLP4 1248 +INDIRP4 +CNSTF4 1056964608 +ADDRLP4 1248 +INDIRP4 +INDIRF4 +ADDRLP4 116+8 +INDIRF4 +ADDF4 +MULF4 +ASGNF4 +line 49 +;49: primal_velocity[2] = endVelocity[2]; +ADDRLP4 1236+8 +ADDRLP4 116+8 +INDIRF4 +ASGNF4 +line 50 +;50: if ( pml.groundPlane ) { +ADDRGP4 pml+48 +INDIRI4 +CNSTI4 0 +EQI4 $73 +line 52 +;51: // slide along the ground plane +;52: PM_ClipVelocity (pm->ps->velocity, pml.groundTrace.plane.normal, +ADDRLP4 1252 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 1252 +INDIRP4 +ARGP4 +ADDRGP4 pml+52+24 +ARGP4 +ADDRLP4 1252 +INDIRP4 +ARGP4 +CNSTF4 1065361605 +ARGF4 +ADDRGP4 PM_ClipVelocity +CALLV +pop +line 54 +;53: pm->ps->velocity, OVERCLIP ); +;54: } +LABELV $73 +line 55 +;55: } +LABELV $66 +line 57 +;56: +;57: time_left = pml.frametime; +ADDRLP4 1212 +ADDRGP4 pml+36 +INDIRF4 +ASGNF4 +line 60 +;58: +;59: // never turn against the ground plane +;60: if ( pml.groundPlane ) { +ADDRGP4 pml+48 +INDIRI4 +CNSTI4 0 +EQI4 $79 +line 61 +;61: numplanes = 1; +ADDRLP4 96 +CNSTI4 1 +ASGNI4 +line 62 +;62: VectorCopy( pml.groundTrace.plane.normal, planes[0] ); +ADDRLP4 4 +ADDRGP4 pml+52+24 +INDIRB +ASGNB 12 +line 63 +;63: } else { +ADDRGP4 $80 +JUMPV +LABELV $79 +line 64 +;64: numplanes = 0; +ADDRLP4 96 +CNSTI4 0 +ASGNI4 +line 65 +;65: } +LABELV $80 +line 68 +;66: +;67: // never turn against original velocity +;68: VectorNormalize2( pm->ps->velocity, planes[numplanes] ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ARGP4 +CNSTI4 12 +ADDRLP4 96 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRGP4 VectorNormalize2 +CALLF4 +pop +line 69 +;69: numplanes++; +ADDRLP4 96 +ADDRLP4 96 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 71 +;70: +;71: for ( bumpcount=0 ; bumpcount < numbumps ; bumpcount++ ) { +ADDRLP4 1228 +CNSTI4 0 +ASGNI4 +ADDRGP4 $87 +JUMPV +LABELV $84 +line 74 +;72: +;73: // calculate position we are trying to move to +;74: VectorMA( pm->ps->origin, time_left, pm->ps->velocity, end ); +ADDRLP4 1248 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1252 +ADDRLP4 1248 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1216 +ADDRLP4 1252 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 1252 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 1212 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 1260 +ADDRLP4 1248 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1216+4 +ADDRLP4 1260 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 1260 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ADDRLP4 1212 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 1264 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1216+8 +ADDRLP4 1264 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 1264 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ADDRLP4 1212 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 77 +;75: +;76: // see if we can make it there +;77: pm->trace ( &trace, pm->ps->origin, pm->mins, pm->maxs, end, pm->ps->clientNum, pm->tracemask); +ADDRLP4 128 +ARGP4 +ADDRLP4 1268 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1272 +ADDRLP4 1268 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1272 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 1268 +INDIRP4 +CNSTI4 188 +ADDP4 +ARGP4 +ADDRLP4 1268 +INDIRP4 +CNSTI4 200 +ADDP4 +ARGP4 +ADDRLP4 1216 +ARGP4 +ADDRLP4 1272 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1268 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1268 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +CALLV +pop +line 79 +;78: +;79: if (trace.allsolid) { +ADDRLP4 128 +INDIRI4 +CNSTI4 0 +EQI4 $90 +line 81 +;80: // entity is completely trapped in another solid +;81: pm->ps->velocity[2] = 0; // don't build up falling damage, but allow sideways acceleration +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 0 +ASGNF4 +line 82 +;82: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $65 +JUMPV +LABELV $90 +line 85 +;83: } +;84: +;85: if (trace.fraction > 0) { +ADDRLP4 128+8 +INDIRF4 +CNSTF4 0 +LEF4 $92 +line 87 +;86: // actually covered some distance +;87: VectorCopy (trace.endpos, pm->ps->origin); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 128+12 +INDIRB +ASGNB 12 +line 88 +;88: } +LABELV $92 +line 90 +;89: +;90: if (trace.fraction == 1) { +ADDRLP4 128+8 +INDIRF4 +CNSTF4 1065353216 +NEF4 $96 +line 91 +;91: break; // moved the entire distance +ADDRGP4 $86 +JUMPV +LABELV $96 +line 95 +;92: } +;93: +;94: // save entity for contact +;95: PM_AddTouchEnt( trace.entityNum ); +ADDRLP4 128+52 +INDIRI4 +ARGI4 +ADDRGP4 PM_AddTouchEnt +CALLV +pop +line 97 +;96: +;97: time_left -= time_left * trace.fraction; +ADDRLP4 1212 +ADDRLP4 1212 +INDIRF4 +ADDRLP4 1212 +INDIRF4 +ADDRLP4 128+8 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 99 +;98: +;99: if (numplanes >= MAX_CLIP_PLANES) { +ADDRLP4 96 +INDIRI4 +CNSTI4 5 +LTI4 $101 +line 101 +;100: // this shouldn't really happen +;101: VectorClear( pm->ps->velocity ); +ADDRLP4 1280 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1284 +CNSTF4 0 +ASGNF4 +ADDRLP4 1280 +INDIRP4 +CNSTI4 40 +ADDP4 +ADDRLP4 1284 +INDIRF4 +ASGNF4 +ADDRLP4 1280 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRLP4 1284 +INDIRF4 +ASGNF4 +ADDRLP4 1280 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 1284 +INDIRF4 +ASGNF4 +line 102 +;102: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $65 +JUMPV +LABELV $101 +line 110 +;103: } +;104: +;105: // +;106: // if this is the same plane we hit before, nudge velocity +;107: // out along it, which fixes some epsilon issues with +;108: // non-axial planes +;109: // +;110: for ( i = 0 ; i < numplanes ; i++ ) { +ADDRLP4 80 +CNSTI4 0 +ASGNI4 +ADDRGP4 $106 +JUMPV +LABELV $103 +line 111 +;111: if ( DotProduct( trace.plane.normal, planes[i] ) > 0.99 ) { +ADDRLP4 1280 +CNSTI4 12 +ADDRLP4 80 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 128+24 +INDIRF4 +ADDRLP4 1280 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 128+24+4 +INDIRF4 +ADDRLP4 1280 +INDIRI4 +ADDRLP4 4+4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 128+24+8 +INDIRF4 +ADDRLP4 1280 +INDIRI4 +ADDRLP4 4+8 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +CNSTF4 1065185444 +LEF4 $107 +line 112 +;112: VectorAdd( trace.plane.normal, pm->ps->velocity, pm->ps->velocity ); +ADDRLP4 1284 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 1284 +INDIRP4 +ADDRLP4 128+24 +INDIRF4 +ADDRLP4 1284 +INDIRP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1288 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 36 +ADDP4 +ASGNP4 +ADDRLP4 1288 +INDIRP4 +ADDRLP4 128+24+4 +INDIRF4 +ADDRLP4 1288 +INDIRP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1292 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +ASGNP4 +ADDRLP4 1292 +INDIRP4 +ADDRLP4 128+24+8 +INDIRF4 +ADDRLP4 1292 +INDIRP4 +INDIRF4 +ADDF4 +ASGNF4 +line 113 +;113: break; +ADDRGP4 $105 +JUMPV +LABELV $107 +line 115 +;114: } +;115: } +LABELV $104 +line 110 +ADDRLP4 80 +ADDRLP4 80 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $106 +ADDRLP4 80 +INDIRI4 +ADDRLP4 96 +INDIRI4 +LTI4 $103 +LABELV $105 +line 116 +;116: if ( i < numplanes ) { +ADDRLP4 80 +INDIRI4 +ADDRLP4 96 +INDIRI4 +GEI4 $121 +line 117 +;117: continue; +ADDRGP4 $85 +JUMPV +LABELV $121 +line 119 +;118: } +;119: VectorCopy (trace.plane.normal, planes[numplanes]); +CNSTI4 12 +ADDRLP4 96 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ADDRLP4 128+24 +INDIRB +ASGNB 12 +line 120 +;120: numplanes++; +ADDRLP4 96 +ADDRLP4 96 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 127 +;121: +;122: // +;123: // modify velocity so it parallels all of the clip planes +;124: // +;125: +;126: // find a plane that it enters +;127: for ( i = 0 ; i < numplanes ; i++ ) { +ADDRLP4 80 +CNSTI4 0 +ASGNI4 +ADDRGP4 $127 +JUMPV +LABELV $124 +line 128 +;128: into = DotProduct( pm->ps->velocity, planes[i] ); +ADDRLP4 1280 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1284 +CNSTI4 12 +ADDRLP4 80 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 1208 +ADDRLP4 1280 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 1284 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 1280 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ADDRLP4 1284 +INDIRI4 +ADDRLP4 4+4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 1280 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ADDRLP4 1284 +INDIRI4 +ADDRLP4 4+8 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 129 +;129: if ( into >= 0.1 ) { +ADDRLP4 1208 +INDIRF4 +CNSTF4 1036831949 +LTF4 $130 +line 130 +;130: continue; // move doesn't interact with the plane +ADDRGP4 $125 +JUMPV +LABELV $130 +line 134 +;131: } +;132: +;133: // see how hard we are hitting things +;134: if ( -into > pml.impactSpeed ) { +ADDRLP4 1208 +INDIRF4 +NEGF4 +ADDRGP4 pml+1132 +INDIRF4 +LEF4 $132 +line 135 +;135: pml.impactSpeed = -into; +ADDRGP4 pml+1132 +ADDRLP4 1208 +INDIRF4 +NEGF4 +ASGNF4 +line 136 +;136: } +LABELV $132 +line 139 +;137: +;138: // slide along the plane +;139: PM_ClipVelocity (pm->ps->velocity, planes[i], clipVelocity, OVERCLIP ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ARGP4 +CNSTI4 12 +ADDRLP4 80 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 64 +ARGP4 +CNSTF4 1065361605 +ARGF4 +ADDRGP4 PM_ClipVelocity +CALLV +pop +line 142 +;140: +;141: // slide along the plane +;142: PM_ClipVelocity (endVelocity, planes[i], endClipVelocity, OVERCLIP ); +ADDRLP4 116 +ARGP4 +CNSTI4 12 +ADDRLP4 80 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 104 +ARGP4 +CNSTF4 1065361605 +ARGF4 +ADDRGP4 PM_ClipVelocity +CALLV +pop +line 145 +;143: +;144: // see if there is a second plane that the new move enters +;145: for ( j = 0 ; j < numplanes ; j++ ) { +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +ADDRGP4 $139 +JUMPV +LABELV $136 +line 146 +;146: if ( j == i ) { +ADDRLP4 76 +INDIRI4 +ADDRLP4 80 +INDIRI4 +NEI4 $140 +line 147 +;147: continue; +ADDRGP4 $137 +JUMPV +LABELV $140 +line 149 +;148: } +;149: if ( DotProduct( clipVelocity, planes[j] ) >= 0.1 ) { +ADDRLP4 1288 +CNSTI4 12 +ADDRLP4 76 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 64 +INDIRF4 +ADDRLP4 1288 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 64+4 +INDIRF4 +ADDRLP4 1288 +INDIRI4 +ADDRLP4 4+4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 64+8 +INDIRF4 +ADDRLP4 1288 +INDIRI4 +ADDRLP4 4+8 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +CNSTF4 1036831949 +LTF4 $142 +line 150 +;150: continue; // move doesn't interact with the plane +ADDRGP4 $137 +JUMPV +LABELV $142 +line 154 +;151: } +;152: +;153: // try clipping the move to the plane +;154: PM_ClipVelocity( clipVelocity, planes[j], clipVelocity, OVERCLIP ); +ADDRLP4 64 +ARGP4 +CNSTI4 12 +ADDRLP4 76 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 64 +ARGP4 +CNSTF4 1065361605 +ARGF4 +ADDRGP4 PM_ClipVelocity +CALLV +pop +line 155 +;155: PM_ClipVelocity( endClipVelocity, planes[j], endClipVelocity, OVERCLIP ); +ADDRLP4 104 +ARGP4 +CNSTI4 12 +ADDRLP4 76 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 104 +ARGP4 +CNSTF4 1065361605 +ARGF4 +ADDRGP4 PM_ClipVelocity +CALLV +pop +line 158 +;156: +;157: // see if it goes back into the first clip plane +;158: if ( DotProduct( clipVelocity, planes[i] ) >= 0 ) { +ADDRLP4 1292 +CNSTI4 12 +ADDRLP4 80 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 64 +INDIRF4 +ADDRLP4 1292 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 64+4 +INDIRF4 +ADDRLP4 1292 +INDIRI4 +ADDRLP4 4+4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 64+8 +INDIRF4 +ADDRLP4 1292 +INDIRI4 +ADDRLP4 4+8 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +CNSTF4 0 +LTF4 $148 +line 159 +;159: continue; +ADDRGP4 $137 +JUMPV +LABELV $148 +line 163 +;160: } +;161: +;162: // slide the original velocity along the crease +;163: CrossProduct (planes[i], planes[j], dir); +ADDRLP4 1296 +CNSTI4 12 +ASGNI4 +ADDRLP4 1296 +INDIRI4 +ADDRLP4 80 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 1296 +INDIRI4 +ADDRLP4 76 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 84 +ARGP4 +ADDRGP4 CrossProduct +CALLV +pop +line 164 +;164: VectorNormalize( dir ); +ADDRLP4 84 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 165 +;165: d = DotProduct( dir, pm->ps->velocity ); +ADDRLP4 1300 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 100 +ADDRLP4 84 +INDIRF4 +ADDRLP4 1300 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 84+4 +INDIRF4 +ADDRLP4 1300 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 84+8 +INDIRF4 +ADDRLP4 1300 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 166 +;166: VectorScale( dir, d, clipVelocity ); +ADDRLP4 64 +ADDRLP4 84 +INDIRF4 +ADDRLP4 100 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 64+4 +ADDRLP4 84+4 +INDIRF4 +ADDRLP4 100 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 64+8 +ADDRLP4 84+8 +INDIRF4 +ADDRLP4 100 +INDIRF4 +MULF4 +ASGNF4 +line 168 +;167: +;168: CrossProduct (planes[i], planes[j], dir); +ADDRLP4 1308 +CNSTI4 12 +ASGNI4 +ADDRLP4 1308 +INDIRI4 +ADDRLP4 80 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 1308 +INDIRI4 +ADDRLP4 76 +INDIRI4 +MULI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 84 +ARGP4 +ADDRGP4 CrossProduct +CALLV +pop +line 169 +;169: VectorNormalize( dir ); +ADDRLP4 84 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 170 +;170: d = DotProduct( dir, endVelocity ); +ADDRLP4 100 +ADDRLP4 84 +INDIRF4 +ADDRLP4 116 +INDIRF4 +MULF4 +ADDRLP4 84+4 +INDIRF4 +ADDRLP4 116+4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 84+8 +INDIRF4 +ADDRLP4 116+8 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 171 +;171: VectorScale( dir, d, endClipVelocity ); +ADDRLP4 104 +ADDRLP4 84 +INDIRF4 +ADDRLP4 100 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 104+4 +ADDRLP4 84+4 +INDIRF4 +ADDRLP4 100 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 104+8 +ADDRLP4 84+8 +INDIRF4 +ADDRLP4 100 +INDIRF4 +MULF4 +ASGNF4 +line 174 +;172: +;173: // see if there is a third plane the the new move enters +;174: for ( k = 0 ; k < numplanes ; k++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $171 +JUMPV +LABELV $168 +line 175 +;175: if ( k == i || k == j ) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 80 +INDIRI4 +EQI4 $174 +ADDRLP4 0 +INDIRI4 +ADDRLP4 76 +INDIRI4 +NEI4 $172 +LABELV $174 +line 176 +;176: continue; +ADDRGP4 $169 +JUMPV +LABELV $172 +line 178 +;177: } +;178: if ( DotProduct( clipVelocity, planes[k] ) >= 0.1 ) { +ADDRLP4 1320 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 64 +INDIRF4 +ADDRLP4 1320 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 64+4 +INDIRF4 +ADDRLP4 1320 +INDIRI4 +ADDRLP4 4+4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 64+8 +INDIRF4 +ADDRLP4 1320 +INDIRI4 +ADDRLP4 4+8 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +CNSTF4 1036831949 +LTF4 $175 +line 179 +;179: continue; // move doesn't interact with the plane +ADDRGP4 $169 +JUMPV +LABELV $175 +line 183 +;180: } +;181: +;182: // stop dead at a tripple plane interaction +;183: VectorClear( pm->ps->velocity ); +ADDRLP4 1324 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1328 +CNSTF4 0 +ASGNF4 +ADDRLP4 1324 +INDIRP4 +CNSTI4 40 +ADDP4 +ADDRLP4 1328 +INDIRF4 +ASGNF4 +ADDRLP4 1324 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRLP4 1328 +INDIRF4 +ASGNF4 +ADDRLP4 1324 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 1328 +INDIRF4 +ASGNF4 +line 184 +;184: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $65 +JUMPV +LABELV $169 +line 174 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $171 +ADDRLP4 0 +INDIRI4 +ADDRLP4 96 +INDIRI4 +LTI4 $168 +line 186 +;185: } +;186: } +LABELV $137 +line 145 +ADDRLP4 76 +ADDRLP4 76 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $139 +ADDRLP4 76 +INDIRI4 +ADDRLP4 96 +INDIRI4 +LTI4 $136 +line 189 +;187: +;188: // if we have fixed all interactions, try another move +;189: VectorCopy( clipVelocity, pm->ps->velocity ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 64 +INDIRB +ASGNB 12 +line 190 +;190: VectorCopy( endClipVelocity, endVelocity ); +ADDRLP4 116 +ADDRLP4 104 +INDIRB +ASGNB 12 +line 191 +;191: break; +ADDRGP4 $126 +JUMPV +LABELV $125 +line 127 +ADDRLP4 80 +ADDRLP4 80 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $127 +ADDRLP4 80 +INDIRI4 +ADDRLP4 96 +INDIRI4 +LTI4 $124 +LABELV $126 +line 193 +;192: } +;193: } +LABELV $85 +line 71 +ADDRLP4 1228 +ADDRLP4 1228 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $87 +ADDRLP4 1228 +INDIRI4 +ADDRLP4 1232 +INDIRI4 +LTI4 $84 +LABELV $86 +line 195 +;194: +;195: if ( gravity ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $181 +line 196 +;196: VectorCopy( endVelocity, pm->ps->velocity ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 116 +INDIRB +ASGNB 12 +line 197 +;197: } +LABELV $181 +line 200 +;198: +;199: // don't change velocity if in a timer (FIXME: is this correct?) +;200: if ( pm->ps->pm_time ) { +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $183 +line 201 +;201: VectorCopy( primal_velocity, pm->ps->velocity ); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 1236 +INDIRB +ASGNB 12 +line 202 +;202: } +LABELV $183 +line 204 +;203: +;204: return ( bumpcount != 0 ); +ADDRLP4 1228 +INDIRI4 +CNSTI4 0 +EQI4 $186 +ADDRLP4 1248 +CNSTI4 1 +ASGNI4 +ADDRGP4 $187 +JUMPV +LABELV $186 +ADDRLP4 1248 +CNSTI4 0 +ASGNI4 +LABELV $187 +ADDRLP4 1248 +INDIRI4 +RETI4 +LABELV $65 +endproc PM_SlideMove 1332 28 +export PM_StepSlideMove +proc PM_StepSlideMove 1244 28 +line 213 +;205:} +;206: +;207:/* +;208:================== +;209:PM_StepSlideMove +;210: +;211:================== +;212:*/ +;213:void PM_StepSlideMove( qboolean gravity ) { +line 227 +;214: vec3_t start_o, start_v; +;215: vec3_t down_o, down_v; +;216: trace_t trace; +;217:// float down_dist, up_dist; +;218:// vec3_t delta, delta2; +;219: vec3_t up, down; +;220: vec3_t nvel, prevel; +;221: float stepSize; +;222: float totalVel; +;223: float pre_z; +;224: int usingspeed; +;225: int i; +;226: +;227: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 229 +;228: +;229: usingspeed = 0; +ADDRLP4 1136 +CNSTI4 0 +ASGNI4 +line 231 +;230: +;231: VectorCopy (pm->ps->origin, start_o); +ADDRLP4 1108 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 232 +;232: VectorCopy (pm->ps->velocity, start_v); +ADDRLP4 1152 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 234 +;233: +;234: if ( PM_SlideMove( gravity ) == 0 ) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1196 +ADDRGP4 PM_SlideMove +CALLI4 +ASGNI4 +ADDRLP4 1196 +INDIRI4 +CNSTI4 0 +NEI4 $189 +line 235 +;235: return; // we got exactly where we wanted to go first try +ADDRGP4 $188 +JUMPV +LABELV $189 +line 238 +;236: } +;237: +;238: if (pm->ps->fd.forcePowersActive & (1 << FP_SPEED)) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $191 +line 239 +;239: { +line 240 +;240: usingspeed = 1; +ADDRLP4 1136 +CNSTI4 1 +ASGNI4 +line 241 +;241: } +LABELV $191 +line 243 +;242: +;243: VectorCopy(start_o, down); +ADDRLP4 1120 +ADDRLP4 1108 +INDIRB +ASGNB 12 +line 244 +;244: down[2] -= STEPSIZE; +ADDRLP4 1120+8 +ADDRLP4 1120+8 +INDIRF4 +CNSTF4 1099956224 +SUBF4 +ASGNF4 +line 245 +;245: pm->trace (&trace, start_o, pm->mins, pm->maxs, down, pm->ps->clientNum, pm->tracemask); +ADDRLP4 16 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1200 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1200 +INDIRP4 +CNSTI4 188 +ADDP4 +ARGP4 +ADDRLP4 1200 +INDIRP4 +CNSTI4 200 +ADDP4 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 1200 +INDIRP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1200 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1200 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +CALLV +pop +line 246 +;246: VectorSet(up, 0, 0, 1); +ADDRLP4 1204 +CNSTF4 0 +ASGNF4 +ADDRLP4 1096 +ADDRLP4 1204 +INDIRF4 +ASGNF4 +ADDRLP4 1096+4 +ADDRLP4 1204 +INDIRF4 +ASGNF4 +ADDRLP4 1096+8 +CNSTF4 1065353216 +ASGNF4 +line 248 +;247: // never step up when you still have up velocity +;248: if ( pm->ps->velocity[2] > 0 && (trace.fraction == 1.0 || +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +CNSTF4 0 +LEF4 $196 +ADDRLP4 16+8 +INDIRF4 +CNSTF4 1065353216 +EQF4 $206 +ADDRLP4 16+24 +INDIRF4 +ADDRLP4 1096 +INDIRF4 +MULF4 +ADDRLP4 16+24+4 +INDIRF4 +ADDRLP4 1096+4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 16+24+8 +INDIRF4 +ADDRLP4 1096+8 +INDIRF4 +MULF4 +ADDF4 +CNSTF4 1060320051 +GEF4 $196 +LABELV $206 +line 249 +;249: DotProduct(trace.plane.normal, up) < 0.7)) { +line 251 +;250: +;251: if (!usingspeed) +ADDRLP4 1136 +INDIRI4 +CNSTI4 0 +NEI4 $207 +line 252 +;252: { +line 253 +;253: return; +ADDRGP4 $188 +JUMPV +LABELV $207 +line 255 +;254: } +;255: } +LABELV $196 +line 257 +;256: +;257: VectorCopy (pm->ps->origin, down_o); +ADDRLP4 1172 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 258 +;258: VectorCopy (pm->ps->velocity, down_v); +ADDRLP4 1184 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 260 +;259: +;260: VectorCopy (start_o, up); +ADDRLP4 1096 +ADDRLP4 1108 +INDIRB +ASGNB 12 +line 261 +;261: up[2] += STEPSIZE; +ADDRLP4 1096+8 +ADDRLP4 1096+8 +INDIRF4 +CNSTF4 1099956224 +ADDF4 +ASGNF4 +line 264 +;262: +;263: // test the player position if they were a stepheight higher +;264: pm->trace (&trace, start_o, pm->mins, pm->maxs, up, pm->ps->clientNum, pm->tracemask); +ADDRLP4 16 +ARGP4 +ADDRLP4 1108 +ARGP4 +ADDRLP4 1208 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1208 +INDIRP4 +CNSTI4 188 +ADDP4 +ARGP4 +ADDRLP4 1208 +INDIRP4 +CNSTI4 200 +ADDP4 +ARGP4 +ADDRLP4 1096 +ARGP4 +ADDRLP4 1208 +INDIRP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1208 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1208 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +CALLV +pop +line 265 +;265: if ( trace.allsolid ) { +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $210 +line 266 +;266: if ( pm->debugLevel ) { +ADDRGP4 pm +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $212 +line 267 +;267: Com_Printf("%i:bend can't step\n", c_pmove); +ADDRGP4 $214 +ARGP4 +ADDRGP4 c_pmove +INDIRI4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 268 +;268: } +LABELV $212 +line 269 +;269: if (!usingspeed) +ADDRLP4 1136 +INDIRI4 +CNSTI4 0 +NEI4 $215 +line 270 +;270: { +line 271 +;271: return; // can't step up +ADDRGP4 $188 +JUMPV +LABELV $215 +line 273 +;272: } +;273: } +LABELV $210 +line 275 +;274: +;275: stepSize = trace.endpos[2] - start_o[2]; +ADDRLP4 1164 +ADDRLP4 16+12+8 +INDIRF4 +ADDRLP4 1108+8 +INDIRF4 +SUBF4 +ASGNF4 +line 277 +;276: // try slidemove from this position +;277: VectorCopy (trace.endpos, pm->ps->origin); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 16+12 +INDIRB +ASGNB 12 +line 278 +;278: VectorCopy (start_v, pm->ps->velocity); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 1152 +INDIRB +ASGNB 12 +line 280 +;279: +;280: VectorCopy(pm->ps->velocity, prevel); +ADDRLP4 4 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 282 +;281: +;282: pre_z = prevel[2]; +ADDRLP4 1132 +ADDRLP4 4+8 +INDIRF4 +ASGNF4 +line 284 +;283: +;284: PM_SlideMove( gravity ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 PM_SlideMove +CALLI4 +pop +line 286 +;285: +;286: VectorSubtract(pm->ps->velocity, prevel, prevel); +ADDRLP4 1212 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 1212 +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 4+4 +ADDRLP4 1212 +INDIRP4 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ADDRLP4 4+4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 4+8 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ADDRLP4 4+8 +INDIRF4 +SUBF4 +ASGNF4 +line 287 +;287: if (prevel[0] < 0) +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +GEF4 $226 +line 288 +;288: { +line 289 +;289: prevel[0] = -prevel[0]; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +NEGF4 +ASGNF4 +line 290 +;290: } +LABELV $226 +line 291 +;291: if (prevel[1] < 0) +ADDRLP4 4+4 +INDIRF4 +CNSTF4 0 +GEF4 $228 +line 292 +;292: { +line 293 +;293: prevel[1] = -prevel[1]; +ADDRLP4 4+4 +ADDRLP4 4+4 +INDIRF4 +NEGF4 +ASGNF4 +line 294 +;294: } +LABELV $228 +line 296 +;295: +;296: totalVel = prevel[0]+prevel[1]; +ADDRLP4 1168 +ADDRLP4 4 +INDIRF4 +ADDRLP4 4+4 +INDIRF4 +ADDF4 +ASGNF4 +line 298 +;297: +;298: if (pre_z > 480 && (pre_z - pm->ps->velocity[2]) >= 480 && pm->ps->fd.forceJumpZStart) +ADDRLP4 1220 +CNSTF4 1139802112 +ASGNF4 +ADDRLP4 1132 +INDIRF4 +ADDRLP4 1220 +INDIRF4 +LEF4 $234 +ADDRLP4 1224 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1132 +INDIRF4 +ADDRLP4 1224 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +SUBF4 +ADDRLP4 1220 +INDIRF4 +LTF4 $234 +ADDRLP4 1224 +INDIRP4 +CNSTI4 1080 +ADDP4 +INDIRF4 +CNSTF4 0 +EQF4 $234 +line 299 +;299: { //smashed head on the ceiling during a force jump +line 300 +;300: pm->ps->fd.forceSpeedDoDamage = (pre_z - pm->ps->velocity[2])*0.04; +ADDRLP4 1228 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1228 +INDIRP4 +CNSTI4 1128 +ADDP4 +CNSTF4 1025758986 +ADDRLP4 1132 +INDIRF4 +ADDRLP4 1228 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +SUBF4 +MULF4 +ASGNF4 +line 301 +;301: if (pm->numtouch) +ADDRGP4 pm +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $236 +line 302 +;302: { //do damage to the other player if we hit one +ADDRGP4 $239 +JUMPV +LABELV $238 +line 304 +;303: while (i < pm->numtouch) +;304: { +line 305 +;305: if (pm->touchents[i] < MAX_CLIENTS && pm->touchents[i] != pm->ps->clientNum) +ADDRLP4 1232 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1236 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1232 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1236 +INDIRI4 +CNSTI4 32 +GEI4 $241 +ADDRLP4 1236 +INDIRI4 +ADDRLP4 1232 +INDIRP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +EQI4 $241 +line 306 +;306: { +line 307 +;307: pm->ps->fd.forceSpeedHitIndex = pm->touchents[i]; +ADDRLP4 1240 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1240 +INDIRP4 +INDIRP4 +CNSTI4 1132 +ADDP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1240 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 308 +;308: break; +ADDRGP4 $240 +JUMPV +LABELV $241 +line 311 +;309: } +;310: +;311: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 312 +;312: } +LABELV $239 +line 303 +ADDRLP4 0 +INDIRI4 +ADDRGP4 pm +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +LTI4 $238 +LABELV $240 +line 313 +;313: } +LABELV $236 +line 315 +;314: +;315: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 316 +;316: } +LABELV $234 +line 318 +;317: +;318: if (usingspeed) +ADDRLP4 1136 +INDIRI4 +CNSTI4 0 +EQI4 $243 +line 319 +;319: { +line 320 +;320: if (pm->ps->fd.forceSpeedSmash > 1.3 && totalVel > 500) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1124 +ADDP4 +INDIRF4 +CNSTF4 1067869798 +LEF4 $245 +ADDRLP4 1168 +INDIRF4 +CNSTF4 1140457472 +LEF4 $245 +line 321 +;321: { //if we were going fast enough and hadn't hit a while in a while then smash into it hard +line 324 +;322: //the difference between our velocity pre and post colide must also be greater than 600 to do damage +;323: //Com_Printf("SMASH %f\n", pm->ps->fd.forceSpeedSmash); +;324: VectorCopy(start_v, nvel); //then bounce the player back a bit in the opposite of the direction he was going +ADDRLP4 1140 +ADDRLP4 1152 +INDIRB +ASGNB 12 +line 325 +;325: nvel[0] += start_o[0]; +ADDRLP4 1140 +ADDRLP4 1140 +INDIRF4 +ADDRLP4 1108 +INDIRF4 +ADDF4 +ASGNF4 +line 326 +;326: nvel[1] += start_o[1]; +ADDRLP4 1140+4 +ADDRLP4 1140+4 +INDIRF4 +ADDRLP4 1108+4 +INDIRF4 +ADDF4 +ASGNF4 +line 327 +;327: nvel[2] += start_o[2]; +ADDRLP4 1140+8 +ADDRLP4 1140+8 +INDIRF4 +ADDRLP4 1108+8 +INDIRF4 +ADDF4 +ASGNF4 +line 328 +;328: VectorSubtract(start_o, nvel, nvel); +ADDRLP4 1140 +ADDRLP4 1108 +INDIRF4 +ADDRLP4 1140 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1140+4 +ADDRLP4 1108+4 +INDIRF4 +ADDRLP4 1140+4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1140+8 +ADDRLP4 1108+8 +INDIRF4 +ADDRLP4 1140+8 +INDIRF4 +SUBF4 +ASGNF4 +line 329 +;329: pm->ps->velocity[0] = nvel[0]*0.1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTF4 1036831949 +ADDRLP4 1140 +INDIRF4 +MULF4 +ASGNF4 +line 330 +;330: pm->ps->velocity[1] = nvel[1]*0.1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTF4 1036831949 +ADDRLP4 1140+4 +INDIRF4 +MULF4 +ASGNF4 +line 331 +;331: pm->ps->velocity[2] = 64; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1115684864 +ASGNF4 +line 332 +;332: pm->ps->fd.forceSpeedDoDamage = pm->ps->fd.forceSpeedSmash*10; //do somewhere in the range of 15-25 damage, depending on speed +ADDRLP4 1228 +ADDRGP4 pm +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1228 +INDIRP4 +CNSTI4 1128 +ADDP4 +CNSTF4 1092616192 +ADDRLP4 1228 +INDIRP4 +CNSTI4 1124 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 333 +;333: pm->ps->fd.forceSpeedSmash = 0; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1124 +ADDP4 +CNSTF4 0 +ASGNF4 +line 335 +;334: +;335: if (pm->numtouch) +ADDRGP4 pm +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $188 +line 336 +;336: { +ADDRGP4 $261 +JUMPV +LABELV $260 +line 338 +;337: while (i < pm->numtouch) +;338: { +line 339 +;339: if (pm->touchents[i] < MAX_CLIENTS && pm->touchents[i] != pm->ps->clientNum) +ADDRLP4 1232 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1236 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1232 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1236 +INDIRI4 +CNSTI4 32 +GEI4 $263 +ADDRLP4 1236 +INDIRI4 +ADDRLP4 1232 +INDIRP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +EQI4 $263 +line 340 +;340: { +line 341 +;341: pm->ps->fd.forceSpeedHitIndex = pm->touchents[i]; +ADDRLP4 1240 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1240 +INDIRP4 +INDIRP4 +CNSTI4 1132 +ADDP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1240 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 342 +;342: break; +ADDRGP4 $188 +JUMPV +LABELV $263 +line 345 +;343: } +;344: +;345: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 346 +;346: } +LABELV $261 +line 337 +ADDRLP4 0 +INDIRI4 +ADDRGP4 pm +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +LTI4 $260 +line 347 +;347: } +line 348 +;348: return; +ADDRGP4 $188 +JUMPV +LABELV $245 +line 351 +;349: } +;350: +;351: pm->ps->fd.forceSpeedSmash -= 0.1; +ADDRLP4 1228 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1124 +ADDP4 +ASGNP4 +ADDRLP4 1228 +INDIRP4 +ADDRLP4 1228 +INDIRP4 +INDIRF4 +CNSTF4 1036831949 +SUBF4 +ASGNF4 +line 354 +;352: //we hit a wall so decrease speed +;353: +;354: if (pm->ps->fd.forceSpeedSmash < 1) +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1124 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +GEF4 $265 +line 355 +;355: { +line 356 +;356: pm->ps->fd.forceSpeedSmash = 1; +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 1124 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 357 +;357: } +LABELV $265 +line 358 +;358: } +LABELV $243 +line 361 +;359: +;360: // push down the final amount +;361: VectorCopy (pm->ps->origin, down); +ADDRLP4 1120 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 362 +;362: down[2] -= stepSize; +ADDRLP4 1120+8 +ADDRLP4 1120+8 +INDIRF4 +ADDRLP4 1164 +INDIRF4 +SUBF4 +ASGNF4 +line 363 +;363: pm->trace (&trace, pm->ps->origin, pm->mins, pm->maxs, down, pm->ps->clientNum, pm->tracemask); +ADDRLP4 16 +ARGP4 +ADDRLP4 1228 +ADDRGP4 pm +INDIRP4 +ASGNP4 +ADDRLP4 1232 +ADDRLP4 1228 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRLP4 1232 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 1228 +INDIRP4 +CNSTI4 188 +ADDP4 +ARGP4 +ADDRLP4 1228 +INDIRP4 +CNSTI4 200 +ADDP4 +ARGP4 +ADDRLP4 1120 +ARGP4 +ADDRLP4 1232 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1228 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1228 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +CALLV +pop +line 364 +;364: if ( !trace.allsolid ) { +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $268 +line 365 +;365: VectorCopy (trace.endpos, pm->ps->origin); +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 16+12 +INDIRB +ASGNB 12 +line 366 +;366: } +LABELV $268 +line 367 +;367: if ( trace.fraction < 1.0 ) { +ADDRLP4 16+8 +INDIRF4 +CNSTF4 1065353216 +GEF4 $271 +line 368 +;368: PM_ClipVelocity( pm->ps->velocity, trace.plane.normal, pm->ps->velocity, OVERCLIP ); +ADDRLP4 1236 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 1236 +INDIRP4 +ARGP4 +ADDRLP4 16+24 +ARGP4 +ADDRLP4 1236 +INDIRP4 +ARGP4 +CNSTF4 1065361605 +ARGF4 +ADDRGP4 PM_ClipVelocity +CALLV +pop +line 369 +;369: } +LABELV $271 +line 383 +;370: +;371:#if 0 +;372: // if the down trace can trace back to the original position directly, don't step +;373: pm->trace( &trace, pm->ps->origin, pm->mins, pm->maxs, start_o, pm->ps->clientNum, pm->tracemask); +;374: if ( trace.fraction == 1.0 ) { +;375: // use the original move +;376: VectorCopy (down_o, pm->ps->origin); +;377: VectorCopy (down_v, pm->ps->velocity); +;378: if ( pm->debugLevel ) { +;379: Com_Printf("%i:bend\n", c_pmove); +;380: } +;381: } else +;382:#endif +;383: { +line 387 +;384: // use the step move +;385: float delta; +;386: +;387: delta = pm->ps->origin[2] - start_o[2]; +ADDRLP4 1236 +ADDRGP4 pm +INDIRP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 1108+8 +INDIRF4 +SUBF4 +ASGNF4 +line 388 +;388: if ( delta > 2 ) { +ADDRLP4 1236 +INDIRF4 +CNSTF4 1073741824 +LEF4 $276 +line 389 +;389: if ( delta < 7 ) { +ADDRLP4 1236 +INDIRF4 +CNSTF4 1088421888 +GEF4 $278 +line 390 +;390: PM_AddEvent( EV_STEP_4 ); +CNSTI4 7 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 391 +;391: } else if ( delta < 11 ) { +ADDRGP4 $279 +JUMPV +LABELV $278 +ADDRLP4 1236 +INDIRF4 +CNSTF4 1093664768 +GEF4 $280 +line 392 +;392: PM_AddEvent( EV_STEP_8 ); +CNSTI4 8 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 393 +;393: } else if ( delta < 15 ) { +ADDRGP4 $281 +JUMPV +LABELV $280 +ADDRLP4 1236 +INDIRF4 +CNSTF4 1097859072 +GEF4 $282 +line 394 +;394: PM_AddEvent( EV_STEP_12 ); +CNSTI4 9 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 395 +;395: } else { +ADDRGP4 $283 +JUMPV +LABELV $282 +line 396 +;396: PM_AddEvent( EV_STEP_16 ); +CNSTI4 10 +ARGI4 +ADDRGP4 PM_AddEvent +CALLV +pop +line 397 +;397: } +LABELV $283 +LABELV $281 +LABELV $279 +line 398 +;398: } +LABELV $276 +line 399 +;399: if ( pm->debugLevel ) { +ADDRGP4 pm +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $284 +line 400 +;400: Com_Printf("%i:stepped\n", c_pmove); +ADDRGP4 $286 +ARGP4 +ADDRGP4 c_pmove +INDIRI4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 401 +;401: } +LABELV $284 +line 402 +;402: } +line 403 +;403:} +LABELV $188 +endproc PM_StepSlideMove 1244 28 +import PM_SetSaberMove +import PM_WeaponLightsaber +import PM_SetAnim +import PM_FinishWeaponChange +import PM_BeginWeaponChange +import PM_ForceLegsAnim +import PM_ContinueLegsAnim +import PM_StartTorsoAnim +import BG_CycleInven +import PM_AddEvent +import PM_AddTouchEnt +import PM_ClipVelocity +import PM_SaberJumpAttackMove +import PM_SaberFlipOverAttackMove +import PM_SomeoneInFront +import PM_GroundDistance +import PM_GetSaberStance +import PM_AnimLength +import PM_InRollComplete +import PM_InOnGroundAnim +import PM_SpinningAnim +import PM_LandingAnim +import PM_JumpingAnim +import PM_PainAnim +import PM_InKnockDown +import PM_InSaberAnim +import PM_SaberInStart +import PM_SaberInReflect +import PM_SaberInParry +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import forcePowerNeeded +import c_pmove +import pm_flightfriction +import pm_waterfriction +import pm_friction +import pm_flyaccelerate +import pm_wateraccelerate +import pm_airaccelerate +import pm_accelerate +import pm_wadeScale +import pm_swimScale +import pm_duckScale +import pm_stopspeed +import pml +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $286 +char 1 37 +char 1 105 +char 1 58 +char 1 115 +char 1 116 +char 1 101 +char 1 112 +char 1 112 +char 1 101 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $214 +char 1 37 +char 1 105 +char 1 58 +char 1 98 +char 1 101 +char 1 110 +char 1 100 +char 1 32 +char 1 99 +char 1 97 +char 1 110 +char 1 39 +char 1 116 +char 1 32 +char 1 115 +char 1 116 +char 1 101 +char 1 112 +char 1 10 +char 1 0 diff --git a/CODE-mp/game/vm/bg_weapons.asm b/CODE-mp/game/vm/bg_weapons.asm new file mode 100644 index 0000000..878dc25 --- /dev/null +++ b/CODE-mp/game/vm/bg_weapons.asm @@ -0,0 +1,538 @@ +data +export WP_MuzzlePoint +align 4 +LABELV WP_MuzzlePoint +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1090519040 +byte 4 0 +byte 4 1090519040 +byte 4 1098907648 +byte 4 0 +byte 4 1094713344 +byte 4 1086324736 +byte 4 3233808384 +byte 4 1094713344 +byte 4 1086324736 +byte 4 3233808384 +byte 4 1094713344 +byte 4 1086324736 +byte 4 3233808384 +byte 4 1094713344 +byte 4 1073741824 +byte 4 3233808384 +byte 4 1094713344 +byte 4 1083179008 +byte 4 3233808384 +byte 4 1094713344 +byte 4 1086324736 +byte 4 3233808384 +byte 4 1094713344 +byte 4 1086324736 +byte 4 3233808384 +byte 4 1094713344 +byte 4 1090519040 +byte 4 0 +byte 4 1094713344 +byte 4 0 +byte 4 3229614080 +byte 4 1094713344 +byte 4 0 +byte 4 3240099840 +byte 4 1094713344 +byte 4 0 +byte 4 3229614080 +skip 24 +export weaponData +align 4 +LABELV weaponData +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 5 +byte 4 0 +byte 4 400 +byte 4 8192 +byte 4 0 +byte 4 400 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 5 +byte 4 0 +byte 4 100 +byte 4 8192 +byte 4 0 +byte 4 100 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 2 +byte 4 15 +byte 4 2 +byte 4 400 +byte 4 8192 +byte 4 2 +byte 4 400 +byte 4 8192 +byte 4 0 +byte 4 200 +byte 4 0 +byte 4 1 +byte 4 0 +byte 4 1500 +byte 4 2 +byte 4 5 +byte 4 2 +byte 4 350 +byte 4 8192 +byte 4 3 +byte 4 150 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 3 +byte 4 5 +byte 4 5 +byte 4 600 +byte 4 8192 +byte 4 6 +byte 4 1300 +byte 4 8192 +byte 4 0 +byte 4 200 +byte 4 0 +byte 4 3 +byte 4 0 +byte 4 1700 +byte 4 3 +byte 4 5 +byte 4 5 +byte 4 1000 +byte 4 8192 +byte 4 5 +byte 4 750 +byte 4 8192 +byte 4 400 +byte 4 0 +byte 4 5 +byte 4 0 +byte 4 1700 +byte 4 0 +byte 4 4 +byte 4 5 +byte 4 1 +byte 4 100 +byte 4 8192 +byte 4 8 +byte 4 800 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 3 +byte 4 5 +byte 4 8 +byte 4 500 +byte 4 8192 +byte 4 6 +byte 4 900 +byte 4 8192 +byte 4 0 +byte 4 250 +byte 4 0 +byte 4 3 +byte 4 0 +byte 4 2100 +byte 4 4 +byte 4 5 +byte 4 10 +byte 4 700 +byte 4 8192 +byte 4 15 +byte 4 800 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 5 +byte 4 5 +byte 4 1 +byte 4 900 +byte 4 8192 +byte 4 2 +byte 4 1200 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 7 +byte 4 0 +byte 4 1 +byte 4 800 +byte 4 8192 +byte 4 1 +byte 4 400 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 8 +byte 4 0 +byte 4 1 +byte 4 800 +byte 4 8192 +byte 4 1 +byte 4 400 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 9 +byte 4 0 +byte 4 1 +byte 4 800 +byte 4 8192 +byte 4 0 +byte 4 400 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 100 +byte 4 8192 +byte 4 0 +byte 4 100 +byte 4 8192 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +skip 56 +export ammoData +align 4 +LABELV ammoData +byte 4 0 +byte 4 100 +byte 4 300 +byte 4 300 +byte 4 300 +byte 4 25 +byte 4 800 +byte 4 10 +byte 4 10 +byte 4 10 +import PM_SetSaberMove +import PM_WeaponLightsaber +import PM_SetAnim +import PM_FinishWeaponChange +import PM_BeginWeaponChange +import PM_ForceLegsAnim +import PM_ContinueLegsAnim +import PM_StartTorsoAnim +import BG_CycleInven +import PM_StepSlideMove +import PM_SlideMove +import PM_AddEvent +import PM_AddTouchEnt +import PM_ClipVelocity +import PM_SaberJumpAttackMove +import PM_SaberFlipOverAttackMove +import PM_SomeoneInFront +import PM_GroundDistance +import PM_GetSaberStance +import PM_AnimLength +import PM_InRollComplete +import PM_InOnGroundAnim +import PM_SpinningAnim +import PM_LandingAnim +import PM_JumpingAnim +import PM_PainAnim +import PM_InKnockDown +import PM_InSaberAnim +import PM_SaberInStart +import PM_SaberInReflect +import PM_SaberInParry +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import forcePowerNeeded +import c_pmove +import pm_flightfriction +import pm_waterfriction +import pm_friction +import pm_flyaccelerate +import pm_wateraccelerate +import pm_airaccelerate +import pm_accelerate +import pm_wadeScale +import pm_swimScale +import pm_duckScale +import pm_stopspeed +import pml +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort diff --git a/CODE-mp/game/vm/g_active.asm b/CODE-mp/game/vm/g_active.asm new file mode 100644 index 0000000..5e540d4 --- /dev/null +++ b/CODE-mp/game/vm/g_active.asm @@ -0,0 +1,12167 @@ +export P_SetTwitchInfo +code +proc P_SetTwitchInfo 4 0 +file "../g_active.c" +line 7 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3: +;4:#include "g_local.h" +;5: +;6:void P_SetTwitchInfo(gclient_t *client) +;7:{ +line 8 +;8: client->ps.painTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 192 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 9 +;9: client->ps.painDirection ^= 1; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +BXORI4 +ASGNI4 +line 10 +;10:} +LABELV $78 +endproc P_SetTwitchInfo 4 0 +export P_DamageFeedback +proc P_DamageFeedback 48 12 +line 22 +;11: +;12:/* +;13:=============== +;14:G_DamageFeedback +;15: +;16:Called just before a snapshot is sent to the given player. +;17:Totals up all damage and generates both the player_state_t +;18:damage values to that client for pain blends and kicks, and +;19:global pain sound events for all clients. +;20:=============== +;21:*/ +;22:void P_DamageFeedback( gentity_t *player ) { +line 27 +;23: gclient_t *client; +;24: float count; +;25: vec3_t angles; +;26: +;27: client = player->client; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 28 +;28: if ( client->ps.pm_type == PM_DEAD ) { +ADDRLP4 20 +CNSTI4 4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +NEI4 $81 +line 29 +;29: return; +ADDRGP4 $80 +JUMPV +LABELV $81 +line 33 +;30: } +;31: +;32: // total points of damage shot at the player this frame +;33: count = client->damage_blood + client->damage_armor; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1612 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1608 +ADDP4 +INDIRI4 +ADDI4 +CVIF4 4 +ASGNF4 +line 34 +;34: if ( count == 0 ) { +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +NEF4 $83 +line 35 +;35: return; // didn't take any damage +ADDRGP4 $80 +JUMPV +LABELV $83 +line 38 +;36: } +;37: +;38: if ( count > 255 ) { +ADDRLP4 4 +INDIRF4 +CNSTF4 1132396544 +LEF4 $85 +line 39 +;39: count = 255; +ADDRLP4 4 +CNSTF4 1132396544 +ASGNF4 +line 40 +;40: } +LABELV $85 +line 46 +;41: +;42: // send the information to the client +;43: +;44: // world damage (falling, slime, etc) uses a special code +;45: // to make the blend blob centered instead of positional +;46: if ( client->damage_fromWorld ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1632 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $87 +line 47 +;47: client->ps.damagePitch = 255; +ADDRLP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +CNSTI4 255 +ASGNI4 +line 48 +;48: client->ps.damageYaw = 255; +ADDRLP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +CNSTI4 255 +ASGNI4 +line 50 +;49: +;50: client->damage_fromWorld = qfalse; +ADDRLP4 0 +INDIRP4 +CNSTI4 1632 +ADDP4 +CNSTI4 0 +ASGNI4 +line 51 +;51: } else { +ADDRGP4 $88 +JUMPV +LABELV $87 +line 52 +;52: vectoangles( client->damage_from, angles ); +ADDRLP4 0 +INDIRP4 +CNSTI4 1620 +ADDP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 vectoangles +CALLV +pop +line 53 +;53: client->ps.damagePitch = angles[PITCH]/360.0 * 256; +ADDRLP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +CNSTF4 1132462080 +ADDRLP4 8 +INDIRF4 +CNSTF4 1135869952 +DIVF4 +MULF4 +CVFI4 4 +ASGNI4 +line 54 +;54: client->ps.damageYaw = angles[YAW]/360.0 * 256; +ADDRLP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +CNSTF4 1132462080 +ADDRLP4 8+4 +INDIRF4 +CNSTF4 1135869952 +DIVF4 +MULF4 +CVFI4 4 +ASGNI4 +line 55 +;55: } +LABELV $88 +line 58 +;56: +;57: // play an apropriate pain sound +;58: if ( (level.time > player->pain_debounce_time) && !(player->flags & FL_GODMODE) ) { +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 level+32 +INDIRI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 664 +ADDP4 +INDIRI4 +LEI4 $90 +ADDRLP4 28 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +CNSTI4 16 +BANDI4 +CNSTI4 0 +NEI4 $90 +line 61 +;59: +;60: // don't do more than two pain sounds a second +;61: if ( level.time - client->ps.painTime < 500 ) { +ADDRGP4 level+32 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 192 +ADDP4 +INDIRI4 +SUBI4 +CNSTI4 500 +GEI4 $93 +line 62 +;62: return; +ADDRGP4 $80 +JUMPV +LABELV $93 +line 64 +;63: } +;64: P_SetTwitchInfo(client); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 P_SetTwitchInfo +CALLV +pop +line 65 +;65: player->pain_debounce_time = level.time + 700; +ADDRFP4 0 +INDIRP4 +CNSTI4 664 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 700 +ADDI4 +ASGNI4 +line 66 +;66: G_AddEvent( player, EV_PAIN, player->health ); +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +CNSTI4 77 +ARGI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 67 +;67: client->ps.damageEvent++; +ADDRLP4 36 +ADDRLP4 0 +INDIRP4 +CNSTI4 172 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 36 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 69 +;68: +;69: if (client->damage_armor && !client->damage_blood) +ADDRLP4 44 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1608 +ADDP4 +INDIRI4 +ADDRLP4 44 +INDIRI4 +EQI4 $97 +ADDRLP4 0 +INDIRP4 +CNSTI4 1612 +ADDP4 +INDIRI4 +ADDRLP4 44 +INDIRI4 +NEI4 $97 +line 70 +;70: { +line 71 +;71: client->ps.damageType = 1; //pure shields +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +CNSTI4 1 +ASGNI4 +line 72 +;72: } +ADDRGP4 $98 +JUMPV +LABELV $97 +line 73 +;73: else if (client->damage_armor) +ADDRLP4 0 +INDIRP4 +CNSTI4 1608 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $99 +line 74 +;74: { +line 75 +;75: client->ps.damageType = 2; //shields and health +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +CNSTI4 2 +ASGNI4 +line 76 +;76: } +ADDRGP4 $100 +JUMPV +LABELV $99 +line 78 +;77: else +;78: { +line 79 +;79: client->ps.damageType = 0; //pure health +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +CNSTI4 0 +ASGNI4 +line 80 +;80: } +LABELV $100 +LABELV $98 +line 81 +;81: } +LABELV $90 +line 84 +;82: +;83: +;84: client->ps.damageCount = count; +ADDRLP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 89 +;85: +;86: // +;87: // clear totals +;88: // +;89: client->damage_blood = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 1612 +ADDP4 +CNSTI4 0 +ASGNI4 +line 90 +;90: client->damage_armor = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 1608 +ADDP4 +CNSTI4 0 +ASGNI4 +line 91 +;91: client->damage_knockback = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 1616 +ADDP4 +CNSTI4 0 +ASGNI4 +line 92 +;92:} +LABELV $80 +endproc P_DamageFeedback 48 12 +export P_WorldEffects +proc P_WorldEffects 40 32 +line 103 +;93: +;94: +;95: +;96:/* +;97:============= +;98:P_WorldEffects +;99: +;100:Check for lava / slime contents and drowning +;101:============= +;102:*/ +;103:void P_WorldEffects( gentity_t *ent ) { +line 107 +;104: qboolean envirosuit; +;105: int waterlevel; +;106: +;107: if ( ent->client->noclip ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1576 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $102 +line 108 +;108: ent->client->airOutTime = level.time + 12000; // don't need air +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1688 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 12000 +ADDI4 +ASGNI4 +line 109 +;109: return; +ADDRGP4 $101 +JUMPV +LABELV $102 +line 112 +;110: } +;111: +;112: waterlevel = ent->waterlevel; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 748 +ADDP4 +INDIRI4 +ASGNI4 +line 114 +;113: +;114: envirosuit = ent->client->ps.powerups[PW_BATTLESUIT] > level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 352 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $107 +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +ADDRGP4 $108 +JUMPV +LABELV $107 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +LABELV $108 +ADDRLP4 4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 119 +;115: +;116: // +;117: // check for drowning +;118: // +;119: if ( waterlevel == 3 ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +NEI4 $109 +line 121 +;120: // envirosuit give air +;121: if ( envirosuit ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $111 +line 122 +;122: ent->client->airOutTime = level.time + 10000; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1688 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 10000 +ADDI4 +ASGNI4 +line 123 +;123: } +LABELV $111 +line 126 +;124: +;125: // if out of air, start drowning +;126: if ( ent->client->airOutTime < level.time) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1688 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +GEI4 $110 +line 128 +;127: // drown! +;128: ent->client->airOutTime += 1000; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1688 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1000 +ADDI4 +ASGNI4 +line 129 +;129: if ( ent->health > 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $110 +line 131 +;130: // take more damage the longer underwater +;131: ent->damage += 2; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 688 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CNSTI4 2 +ADDI4 +ASGNI4 +line 132 +;132: if (ent->damage > 15) +ADDRFP4 0 +INDIRP4 +CNSTI4 688 +ADDP4 +INDIRI4 +CNSTI4 15 +LEI4 $119 +line 133 +;133: ent->damage = 15; +ADDRFP4 0 +INDIRP4 +CNSTI4 688 +ADDP4 +CNSTI4 15 +ASGNI4 +LABELV $119 +line 136 +;134: +;135: // play a gurp sound instead of a normal pain sound +;136: if (ent->health <= ent->damage) { +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 688 +ADDP4 +INDIRI4 +GTI4 $121 +line 137 +;137: G_Sound(ent, CHAN_VOICE, G_SoundIndex(/*"*drown.wav"*/"sound/player/gurp1.wav")); +ADDRGP4 $123 +ARGP4 +ADDRLP4 24 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 3 +ARGI4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 G_Sound +CALLV +pop +line 138 +;138: } else if (rand()&1) { +ADDRGP4 $122 +JUMPV +LABELV $121 +ADDRLP4 24 +ADDRGP4 rand +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $124 +line 139 +;139: G_Sound(ent, CHAN_VOICE, G_SoundIndex("sound/player/gurp1.wav")); +ADDRGP4 $123 +ARGP4 +ADDRLP4 28 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 3 +ARGI4 +ADDRLP4 28 +INDIRI4 +ARGI4 +ADDRGP4 G_Sound +CALLV +pop +line 140 +;140: } else { +ADDRGP4 $125 +JUMPV +LABELV $124 +line 141 +;141: G_Sound(ent, CHAN_VOICE, G_SoundIndex("sound/player/gurp2.wav")); +ADDRGP4 $126 +ARGP4 +ADDRLP4 28 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 3 +ARGI4 +ADDRLP4 28 +INDIRI4 +ARGI4 +ADDRGP4 G_Sound +CALLV +pop +line 142 +;142: } +LABELV $125 +LABELV $122 +line 145 +;143: +;144: // don't play a normal pain sound +;145: ent->pain_debounce_time = level.time + 200; +ADDRFP4 0 +INDIRP4 +CNSTI4 664 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 200 +ADDI4 +ASGNI4 +line 147 +;146: +;147: G_Damage (ent, NULL, NULL, NULL, NULL, +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +CNSTP4 0 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 36 +CNSTP4 0 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 28 +INDIRP4 +CNSTI4 688 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 2 +ARGI4 +CNSTI4 29 +ARGI4 +ADDRGP4 G_Damage +CALLV +pop +line 149 +;148: ent->damage, DAMAGE_NO_ARMOR, MOD_WATER); +;149: } +line 150 +;150: } +line 151 +;151: } else { +ADDRGP4 $110 +JUMPV +LABELV $109 +line 152 +;152: ent->client->airOutTime = level.time + 12000; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1688 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 12000 +ADDI4 +ASGNI4 +line 153 +;153: ent->damage = 2; +ADDRFP4 0 +INDIRP4 +CNSTI4 688 +ADDP4 +CNSTI4 2 +ASGNI4 +line 154 +;154: } +LABELV $110 +line 159 +;155: +;156: // +;157: // check for sizzle damage (move to pmove?) +;158: // +;159: if (waterlevel && +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $129 +ADDRFP4 0 +INDIRP4 +CNSTI4 744 +ADDP4 +INDIRI4 +CNSTI4 131074 +BANDI4 +ADDRLP4 12 +INDIRI4 +EQI4 $129 +line 160 +;160: (ent->watertype&(CONTENTS_LAVA|CONTENTS_SLIME)) ) { +line 161 +;161: if (ent->health > 0 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $131 +ADDRLP4 16 +INDIRP4 +CNSTI4 664 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +GTI4 $131 +line 162 +;162: && ent->pain_debounce_time <= level.time ) { +line 164 +;163: +;164: if ( envirosuit ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $134 +line 165 +;165: G_AddEvent( ent, EV_POWERUP_BATTLESUIT, 0 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 83 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 166 +;166: } else { +ADDRGP4 $135 +JUMPV +LABELV $134 +line 167 +;167: if (ent->watertype & CONTENTS_LAVA) { +ADDRFP4 0 +INDIRP4 +CNSTI4 744 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $136 +line 168 +;168: G_Damage (ent, NULL, NULL, NULL, NULL, +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20 +CNSTP4 0 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 24 +CNSTP4 0 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +CNSTI4 30 +ADDRLP4 0 +INDIRI4 +MULI4 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTI4 31 +ARGI4 +ADDRGP4 G_Damage +CALLV +pop +line 170 +;169: 30*waterlevel, 0, MOD_LAVA); +;170: } +LABELV $136 +line 172 +;171: +;172: if (ent->watertype & CONTENTS_SLIME) { +ADDRFP4 0 +INDIRP4 +CNSTI4 744 +ADDP4 +INDIRI4 +CNSTI4 131072 +BANDI4 +CNSTI4 0 +EQI4 $138 +line 173 +;173: G_Damage (ent, NULL, NULL, NULL, NULL, +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20 +CNSTP4 0 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 24 +CNSTP4 0 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +CNSTI4 10 +ADDRLP4 0 +INDIRI4 +MULI4 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTI4 30 +ARGI4 +ADDRGP4 G_Damage +CALLV +pop +line 175 +;174: 10*waterlevel, 0, MOD_SLIME); +;175: } +LABELV $138 +line 176 +;176: } +LABELV $135 +line 177 +;177: } +LABELV $131 +line 178 +;178: } +LABELV $129 +line 179 +;179:} +LABELV $101 +endproc P_WorldEffects 40 32 +export DoImpact +proc DoImpact 96 32 +line 188 +;180: +;181: +;182: +;183: +;184: +;185://============================================================== +;186:extern void G_ApplyKnockback( gentity_t *targ, vec3_t newDir, float knockback ); +;187:void DoImpact( gentity_t *self, gentity_t *other, qboolean damageSelf ) +;188:{ +line 193 +;189: float magnitude, my_mass; +;190: vec3_t velocity; +;191: int cont; +;192: +;193: if( self->client ) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $141 +line 194 +;194: { +line 195 +;195: VectorCopy( self->client->ps.velocity, velocity ); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 196 +;196: my_mass = self->mass; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 624 +ADDP4 +INDIRF4 +ASGNF4 +line 197 +;197: } +ADDRGP4 $142 +JUMPV +LABELV $141 +line 199 +;198: else +;199: { +line 200 +;200: VectorCopy( self->s.pos.trDelta, velocity ); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRB +ASGNB 12 +line 201 +;201: if ( self->s.pos.trType == TR_GRAVITY ) +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 5 +NEI4 $143 +line 202 +;202: { +line 203 +;203: velocity[2] -= 0.25f * g_gravity.value; +ADDRLP4 4+8 +ADDRLP4 4+8 +INDIRF4 +CNSTF4 1048576000 +ADDRGP4 g_gravity+8 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 204 +;204: } +LABELV $143 +line 205 +;205: if( !self->mass ) +ADDRFP4 0 +INDIRP4 +CNSTI4 624 +ADDP4 +INDIRF4 +CNSTF4 0 +NEF4 $147 +line 206 +;206: { +line 207 +;207: my_mass = 1; +ADDRLP4 16 +CNSTF4 1065353216 +ASGNF4 +line 208 +;208: } +ADDRGP4 $148 +JUMPV +LABELV $147 +line 209 +;209: else if ( self->mass <= 10 ) +ADDRFP4 0 +INDIRP4 +CNSTI4 624 +ADDP4 +INDIRF4 +CNSTF4 1092616192 +GTF4 $149 +line 210 +;210: { +line 211 +;211: my_mass = 10; +ADDRLP4 16 +CNSTF4 1092616192 +ASGNF4 +line 212 +;212: } +ADDRGP4 $150 +JUMPV +LABELV $149 +line 214 +;213: else +;214: { +line 215 +;215: my_mass = self->mass;///10; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 624 +ADDP4 +INDIRF4 +ASGNF4 +line 216 +;216: } +LABELV $150 +LABELV $148 +line 217 +;217: } +LABELV $142 +line 219 +;218: +;219: magnitude = VectorLength( velocity ) * my_mass / 10; +ADDRLP4 4 +ARGP4 +ADDRLP4 24 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 24 +INDIRF4 +ADDRLP4 16 +INDIRF4 +MULF4 +CNSTF4 1092616192 +DIVF4 +ASGNF4 +line 232 +;220: +;221: /* +;222: if(pointcontents(self.absmax)==CONTENT_WATER)//FIXME: or other watertypes +;223: magnitude/=3; //water absorbs 2/3 velocity +;224: +;225: if(self.classname=="barrel"&&self.aflag)//rolling barrels are made for impacts! +;226: magnitude*=3; +;227: +;228: if(self.frozen>0&&magnitude<300&&self.flags&FL_ONGROUND&&loser==world&&self.velocity_z<-20&&self.last_onground+0.3client || self->client->ps.lastOnGround+300client->ps.lastOnGround+100 < level.time && other->material >= MAT_GLASS ) ) +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $156 +ADDRLP4 32 +ADDRLP4 28 +INDIRP4 +CNSTI4 500 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 300 +ADDI4 +ADDRGP4 level+32 +INDIRI4 +LTI4 $156 +ADDRLP4 32 +INDIRI4 +CNSTI4 100 +ADDI4 +ADDRGP4 level+32 +INDIRI4 +GEI4 $151 +ADDRFP4 4 +INDIRP4 +CNSTI4 684 +ADDP4 +INDIRI4 +CNSTI4 1 +LTI4 $151 +LABELV $156 +line 233 +;233: { +line 235 +;234: vec3_t dir1, dir2; +;235: float force = 0, dot; +ADDRLP4 36 +CNSTF4 0 +ASGNF4 +line 237 +;236: +;237: if ( other->material >= MAT_GLASS ) +ADDRFP4 4 +INDIRP4 +CNSTI4 684 +ADDP4 +INDIRI4 +CNSTI4 1 +LTI4 $157 +line 238 +;238: magnitude *= 2; +ADDRLP4 0 +CNSTF4 1073741824 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +LABELV $157 +line 241 +;239: +;240: //damage them +;241: if ( magnitude >= 100 && other->s.number < ENTITYNUM_WORLD ) +ADDRLP4 0 +INDIRF4 +CNSTF4 1120403456 +LTF4 $159 +ADDRFP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1022 +GEI4 $159 +line 242 +;242: { +line 243 +;243: VectorCopy( velocity, dir1 ); +ADDRLP4 52 +ADDRLP4 4 +INDIRB +ASGNB 12 +line 244 +;244: VectorNormalize( dir1 ); +ADDRLP4 52 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 245 +;245: if( VectorCompare( other->r.currentOrigin, vec3_origin ) ) +ADDRFP4 4 +INDIRP4 +CNSTI4 368 +ADDP4 +ARGP4 +ADDRGP4 vec3_origin +ARGP4 +ADDRLP4 68 +ADDRGP4 VectorCompare +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +EQI4 $161 +line 246 +;246: {//a brush with no origin +line 247 +;247: VectorCopy ( dir1, dir2 ); +ADDRLP4 40 +ADDRLP4 52 +INDIRB +ASGNB 12 +line 248 +;248: } +ADDRGP4 $162 +JUMPV +LABELV $161 +line 250 +;249: else +;250: { +line 251 +;251: VectorSubtract( other->r.currentOrigin, self->r.currentOrigin, dir2 ); +ADDRLP4 72 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 76 +CNSTI4 368 +ASGNI4 +ADDRLP4 80 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 72 +INDIRP4 +ADDRLP4 76 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 80 +INDIRP4 +ADDRLP4 76 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 84 +CNSTI4 372 +ASGNI4 +ADDRLP4 40+4 +ADDRLP4 72 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 80 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 88 +CNSTI4 376 +ASGNI4 +ADDRLP4 40+8 +ADDRFP4 4 +INDIRP4 +ADDRLP4 88 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 88 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 252 +;252: VectorNormalize( dir2 ); +ADDRLP4 40 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 253 +;253: } +LABELV $162 +line 255 +;254: +;255: dot = DotProduct( dir1, dir2 ); +ADDRLP4 64 +ADDRLP4 52 +INDIRF4 +ADDRLP4 40 +INDIRF4 +MULF4 +ADDRLP4 52+4 +INDIRF4 +ADDRLP4 40+4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 52+8 +INDIRF4 +ADDRLP4 40+8 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 257 +;256: +;257: if ( dot >= 0.2 ) +ADDRLP4 64 +INDIRF4 +CNSTF4 1045220557 +LTF4 $169 +line 258 +;258: { +line 259 +;259: force = dot; +ADDRLP4 36 +ADDRLP4 64 +INDIRF4 +ASGNF4 +line 260 +;260: } +ADDRGP4 $170 +JUMPV +LABELV $169 +line 262 +;261: else +;262: { +line 263 +;263: force = 0; +ADDRLP4 36 +CNSTF4 0 +ASGNF4 +line 264 +;264: } +LABELV $170 +line 266 +;265: +;266: force *= (magnitude/50); +ADDRLP4 36 +ADDRLP4 36 +INDIRF4 +ADDRLP4 0 +INDIRF4 +CNSTF4 1112014848 +DIVF4 +MULF4 +ASGNF4 +line 268 +;267: +;268: cont = trap_PointContents( other->r.absmax, other->s.number ); +ADDRLP4 72 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 356 +ADDP4 +ARGP4 +ADDRLP4 72 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +ADDRGP4 trap_PointContents +CALLI4 +ASGNI4 +ADDRLP4 20 +ADDRLP4 76 +INDIRI4 +ASGNI4 +line 269 +;269: if( (cont&CONTENTS_WATER) )//|| (self.classname=="barrel"&&self.aflag))//FIXME: or other watertypes +ADDRLP4 20 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $171 +line 270 +;270: { +line 271 +;271: force /= 3; //water absorbs 2/3 velocity +ADDRLP4 36 +ADDRLP4 36 +INDIRF4 +CNSTF4 1077936128 +DIVF4 +ASGNF4 +line 272 +;272: } +LABELV $171 +line 279 +;273: +;274: /* +;275: if(self.frozen>0&&force>10) +;276: force=10; +;277: */ +;278: +;279: if( ( force >= 1 && other->s.number != 0 ) || force >= 10) +ADDRLP4 36 +INDIRF4 +CNSTF4 1065353216 +LTF4 $176 +ADDRFP4 4 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $175 +LABELV $176 +ADDRLP4 36 +INDIRF4 +CNSTF4 1092616192 +LTF4 $173 +LABELV $175 +line 280 +;280: { +line 288 +;281: /* +;282: dprint("Damage other ("); +;283: dprint(loser.classname); +;284: dprint("): "); +;285: dprint(ftos(force)); +;286: dprint("\n"); +;287: */ +;288: if ( other->r.svFlags & SVF_GLASS_BRUSH ) +ADDRFP4 4 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 134217728 +BANDI4 +CNSTI4 0 +EQI4 $177 +line 289 +;289: { +line 290 +;290: other->splashRadius = (float)(self->r.maxs[0] - self->r.mins[0])/4.0f; +ADDRLP4 80 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 700 +ADDP4 +ADDRLP4 80 +INDIRP4 +CNSTI4 328 +ADDP4 +INDIRF4 +ADDRLP4 80 +INDIRP4 +CNSTI4 316 +ADDP4 +INDIRF4 +SUBF4 +CNSTF4 1082130432 +DIVF4 +CVFI4 4 +ASGNI4 +line 291 +;291: } +LABELV $177 +line 292 +;292: if ( other->takedamage ) +ADDRFP4 4 +INDIRP4 +CNSTI4 680 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $179 +line 293 +;293: { +line 294 +;294: G_Damage( other, self, self, velocity, self->r.currentOrigin, force, DAMAGE_NO_ARMOR, MOD_CRUSH);//FIXME: MOD_IMPACT +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 80 +INDIRP4 +ARGP4 +ADDRLP4 80 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 80 +INDIRP4 +CNSTI4 368 +ADDP4 +ARGP4 +ADDRLP4 36 +INDIRF4 +CVFI4 4 +ARGI4 +CNSTI4 2 +ARGI4 +CNSTI4 32 +ARGI4 +ADDRGP4 G_Damage +CALLV +pop +line 295 +;295: } +ADDRGP4 $180 +JUMPV +LABELV $179 +line 297 +;296: else +;297: { +line 298 +;298: G_ApplyKnockback( other, dir2, force ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 40 +ARGP4 +ADDRLP4 36 +INDIRF4 +ARGF4 +ADDRGP4 G_ApplyKnockback +CALLV +pop +line 299 +;299: } +LABELV $180 +line 300 +;300: } +LABELV $173 +line 301 +;301: } +LABELV $159 +line 303 +;302: +;303: if ( damageSelf && self->takedamage ) +ADDRLP4 68 +CNSTI4 0 +ASGNI4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 68 +INDIRI4 +EQI4 $181 +ADDRFP4 0 +INDIRP4 +CNSTI4 680 +ADDP4 +INDIRI4 +ADDRLP4 68 +INDIRI4 +EQI4 $181 +line 304 +;304: { +line 307 +;305: //Now damage me +;306: //FIXME: more lenient falling damage, especially for when driving a vehicle +;307: if ( self->client && self->client->ps.fd.forceJumpZStart ) +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $183 +ADDRLP4 72 +INDIRP4 +CNSTI4 1080 +ADDP4 +INDIRF4 +CNSTF4 0 +EQF4 $183 +line 308 +;308: {//we were force-jumping +line 309 +;309: if ( self->r.currentOrigin[2] >= self->client->ps.fd.forceJumpZStart ) +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +CNSTI4 376 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1080 +ADDP4 +INDIRF4 +LTF4 $185 +line 310 +;310: {//we landed at same height or higher than we landed +line 311 +;311: magnitude = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 312 +;312: } +ADDRGP4 $186 +JUMPV +LABELV $185 +line 314 +;313: else +;314: {//FIXME: take off some of it, at least? +line 315 +;315: magnitude = (self->client->ps.fd.forceJumpZStart-self->r.currentOrigin[2])/3; +ADDRLP4 80 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 80 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1080 +ADDP4 +INDIRF4 +ADDRLP4 80 +INDIRP4 +CNSTI4 376 +ADDP4 +INDIRF4 +SUBF4 +CNSTF4 1077936128 +DIVF4 +ASGNF4 +line 316 +;316: } +LABELV $186 +line 317 +;317: } +LABELV $183 +line 319 +;318: //if(self.classname!="monster_mezzoman"&&self.netname!="spider")//Cats always land on their feet +;319: if( ( magnitude >= 100 + self->health && self->s.number != 0 && self->s.weapon != WP_SABER ) || ( magnitude >= 700 ) )//&& self.safe_time < level.time ))//health here is used to simulate structural integrity +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRF4 +ADDRLP4 76 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +CNSTI4 100 +ADDI4 +CVIF4 4 +LTF4 $191 +ADDRLP4 76 +INDIRP4 +INDIRI4 +CNSTI4 0 +EQI4 $191 +ADDRLP4 76 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $189 +LABELV $191 +ADDRLP4 0 +INDIRF4 +CNSTF4 1143930880 +LTF4 $187 +LABELV $189 +line 320 +;320: { +line 321 +;321: if ( (self->s.weapon == WP_SABER || self->s.number == 0) && self->client && self->client->ps.groundEntityNum < ENTITYNUM_NONE && magnitude < 1000 ) +ADDRLP4 80 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 80 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $194 +ADDRLP4 80 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $192 +LABELV $194 +ADDRLP4 84 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $192 +ADDRLP4 84 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +CNSTI4 1023 +GEI4 $192 +ADDRLP4 0 +INDIRF4 +CNSTF4 1148846080 +GEF4 $192 +line 322 +;322: {//players and jedi take less impact damage +line 324 +;323: //allow for some lenience on high falls +;324: magnitude /= 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +ASGNF4 +line 331 +;325: /* +;326: if ( self.absorb_time >= time )//crouching on impact absorbs 1/2 the damage +;327: { +;328: magnitude/=2; +;329: } +;330: */ +;331: } +LABELV $192 +line 332 +;332: magnitude /= 40; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1109393408 +DIVF4 +ASGNF4 +line 333 +;333: magnitude = magnitude - force/2;//If damage other, subtract half of that damage off of own injury +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRLP4 36 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +SUBF4 +ASGNF4 +line 334 +;334: if ( magnitude >= 1 ) +ADDRLP4 0 +INDIRF4 +CNSTF4 1065353216 +LTF4 $195 +line 335 +;335: { +line 348 +;336: //FIXME: Put in a thingtype impact sound function +;337: /* +;338: dprint("Damage self ("); +;339: dprint(self.classname); +;340: dprint("): "); +;341: dprint(ftos(magnitude)); +;342: dprint("\n"); +;343: */ +;344: /* +;345: if ( self.classname=="player_sheep "&& self.flags&FL_ONGROUND && self.velocity_z > -50 ) +;346: return; +;347: */ +;348: G_Damage( self, NULL, NULL, NULL, self->r.currentOrigin, magnitude/2, DAMAGE_NO_ARMOR, MOD_FALLING );//FIXME: MOD_IMPACT +ADDRLP4 88 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +ARGP4 +ADDRLP4 92 +CNSTP4 0 +ASGNP4 +ADDRLP4 92 +INDIRP4 +ARGP4 +ADDRLP4 92 +INDIRP4 +ARGP4 +CNSTP4 0 +ARGP4 +ADDRLP4 88 +INDIRP4 +CNSTI4 368 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +CVFI4 4 +ARGI4 +CNSTI4 2 +ARGI4 +CNSTI4 34 +ARGI4 +ADDRGP4 G_Damage +CALLV +pop +line 349 +;349: } +LABELV $195 +line 350 +;350: } +LABELV $187 +line 351 +;351: } +LABELV $181 +line 362 +;352: +;353: //FIXME: slow my velocity some? +;354: +;355: // NOTENOTE We don't use lastimpact as of yet +;356:// self->lastImpact = level.time; +;357: +;358: /* +;359: if(self.flags&FL_ONGROUND) +;360: self.last_onground=time; +;361: */ +;362: } +LABELV $151 +line 363 +;363:} +LABELV $140 +endproc DoImpact 96 32 +export G_SetClientSound +proc G_SetClientSound 8 0 +line 370 +;364: +;365:/* +;366:=============== +;367:G_SetClientSound +;368:=============== +;369:*/ +;370:void G_SetClientSound( gentity_t *ent ) { +line 371 +;371: if (ent->waterlevel && (ent->watertype&(CONTENTS_LAVA|CONTENTS_SLIME)) ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 748 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $198 +ADDRLP4 0 +INDIRP4 +CNSTI4 744 +ADDP4 +INDIRI4 +CNSTI4 131074 +BANDI4 +ADDRLP4 4 +INDIRI4 +EQI4 $198 +line 372 +;372: ent->client->ps.loopSound = level.snd_fry; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 476 +ADDP4 +ADDRGP4 level+220 +INDIRI4 +ASGNI4 +line 373 +;373: } else { +ADDRGP4 $199 +JUMPV +LABELV $198 +line 374 +;374: ent->client->ps.loopSound = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 476 +ADDP4 +CNSTI4 0 +ASGNI4 +line 375 +;375: } +LABELV $199 +line 376 +;376:} +LABELV $197 +endproc G_SetClientSound 8 0 +export ClientImpacts +proc ClientImpacts 1100 12 +line 387 +;377: +;378: +;379: +;380://============================================================== +;381: +;382:/* +;383:============== +;384:ClientImpacts +;385:============== +;386:*/ +;387:void ClientImpacts( gentity_t *ent, pmove_t *pm ) { +line 392 +;388: int i, j; +;389: trace_t trace; +;390: gentity_t *other; +;391: +;392: memset( &trace, 0, sizeof( trace ) ); +ADDRLP4 12 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1080 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 393 +;393: for (i=0 ; inumtouch ; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $205 +JUMPV +LABELV $202 +line 394 +;394: for (j=0 ; jtouchents[j] == pm->touchents[i] ) { +ADDRLP4 1092 +CNSTI4 2 +ASGNI4 +ADDRLP4 1096 +ADDRFP4 4 +INDIRP4 +CNSTI4 56 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1092 +INDIRI4 +LSHI4 +ADDRLP4 1096 +INDIRP4 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 1092 +INDIRI4 +LSHI4 +ADDRLP4 1096 +INDIRP4 +ADDP4 +INDIRI4 +NEI4 $210 +line 396 +;396: break; +ADDRGP4 $208 +JUMPV +LABELV $210 +line 398 +;397: } +;398: } +LABELV $207 +line 394 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $209 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LTI4 $206 +LABELV $208 +line 399 +;399: if (j != i) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $212 +line 400 +;400: continue; // duplicated +ADDRGP4 $203 +JUMPV +LABELV $212 +line 402 +;401: } +;402: other = &g_entities[ pm->touchents[i] ]; +ADDRLP4 8 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 404 +;403: +;404: if ( ( ent->r.svFlags & SVF_BOT ) && ( ent->touch ) ) { +ADDRLP4 1092 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $214 +ADDRLP4 1092 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $214 +line 405 +;405: ent->touch( ent, other, &trace ); +ADDRLP4 1096 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1096 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 1096 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CALLV +pop +line 406 +;406: } +LABELV $214 +line 408 +;407: +;408: if ( !other->touch ) { +ADDRLP4 8 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $216 +line 409 +;409: continue; +ADDRGP4 $203 +JUMPV +LABELV $216 +line 412 +;410: } +;411: +;412: other->touch( other, ent, &trace ); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CALLV +pop +line 413 +;413: } +LABELV $203 +line 393 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $205 +ADDRLP4 4 +INDIRI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +LTI4 $202 +line 415 +;414: +;415:} +LABELV $201 +endproc ClientImpacts 1100 12 +data +align 4 +LABELV $219 +byte 4 1109393408 +byte 4 1109393408 +byte 4 1112539136 +export G_TouchTriggers +code +proc G_TouchTriggers 5264 16 +line 425 +;416: +;417:/* +;418:============ +;419:G_TouchTriggers +;420: +;421:Find all trigger entities that ent's current position touches. +;422:Spectators will only interact with teleporters. +;423:============ +;424:*/ +;425:void G_TouchTriggers( gentity_t *ent ) { +line 433 +;426: int i, num; +;427: int touch[MAX_GENTITIES]; +;428: gentity_t *hit; +;429: trace_t trace; +;430: vec3_t mins, maxs; +;431: static vec3_t range = { 40, 40, 52 }; +;432: +;433: if ( !ent->client ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $220 +line 434 +;434: return; +ADDRGP4 $218 +JUMPV +LABELV $220 +line 438 +;435: } +;436: +;437: // dead clients don't activate triggers! +;438: if ( ent->client->ps.stats[STAT_HEALTH] <= 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $222 +line 439 +;439: return; +ADDRGP4 $218 +JUMPV +LABELV $222 +line 442 +;440: } +;441: +;442: VectorSubtract( ent->client->ps.origin, range, mins ); +ADDRLP4 5212 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +ASGNP4 +ADDRLP4 1088 +ADDRLP4 5212 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRGP4 $219 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1088+4 +ADDRLP4 5212 +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRGP4 $219+4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1088+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRGP4 $219+8 +INDIRF4 +SUBF4 +ASGNF4 +line 443 +;443: VectorAdd( ent->client->ps.origin, range, maxs ); +ADDRLP4 5216 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +ASGNP4 +ADDRLP4 1100 +ADDRLP4 5216 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRGP4 $219 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1100+4 +ADDRLP4 5216 +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRGP4 $219+4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1100+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRGP4 $219+8 +INDIRF4 +ADDF4 +ASGNF4 +line 445 +;444: +;445: num = trap_EntitiesInBox( mins, maxs, touch, MAX_GENTITIES ); +ADDRLP4 1088 +ARGP4 +ADDRLP4 1100 +ARGP4 +ADDRLP4 1116 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 5220 +ADDRGP4 trap_EntitiesInBox +CALLI4 +ASGNI4 +ADDRLP4 1112 +ADDRLP4 5220 +INDIRI4 +ASGNI4 +line 448 +;446: +;447: // can't use ent->r.absmin, because that has a one unit pad +;448: VectorAdd( ent->client->ps.origin, ent->r.mins, mins ); +ADDRLP4 5224 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 5228 +ADDRLP4 5224 +INDIRP4 +CNSTI4 408 +ADDP4 +ASGNP4 +ADDRLP4 1088 +ADDRLP4 5228 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 5224 +INDIRP4 +CNSTI4 316 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1088+4 +ADDRLP4 5228 +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 5224 +INDIRP4 +CNSTI4 320 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 5232 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1088+8 +ADDRLP4 5232 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 5232 +INDIRP4 +CNSTI4 324 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 449 +;449: VectorAdd( ent->client->ps.origin, ent->r.maxs, maxs ); +ADDRLP4 5236 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 5240 +ADDRLP4 5236 +INDIRP4 +CNSTI4 408 +ADDP4 +ASGNP4 +ADDRLP4 1100 +ADDRLP4 5240 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 5236 +INDIRP4 +CNSTI4 328 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1100+4 +ADDRLP4 5240 +INDIRP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 5236 +INDIRP4 +CNSTI4 332 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 5244 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1100+8 +ADDRLP4 5244 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 5244 +INDIRP4 +CNSTI4 336 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 451 +;450: +;451: for ( i=0 ; itouch && !ent->touch ) { +ADDRLP4 5248 +CNSTI4 648 +ASGNI4 +ADDRLP4 5252 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 5248 +INDIRI4 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 5252 +INDIRU4 +NEU4 $240 +ADDRFP4 0 +INDIRP4 +ADDRLP4 5248 +INDIRI4 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 5252 +INDIRU4 +NEU4 $240 +line 455 +;455: continue; +ADDRGP4 $237 +JUMPV +LABELV $240 +line 457 +;456: } +;457: if ( !( hit->r.contents & CONTENTS_TRIGGER ) ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 340 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +NEI4 $242 +line 458 +;458: continue; +ADDRGP4 $237 +JUMPV +LABELV $242 +line 462 +;459: } +;460: +;461: // ignore most entities if a spectator +;462: if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $244 +line 463 +;463: if ( hit->s.eType != ET_TELEPORT_TRIGGER && +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 11 +EQI4 $246 +ADDRLP4 0 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRGP4 Touch_DoorTrigger +CVPU4 4 +EQU4 $246 +line 466 +;464: // this is ugly but adding a new ET_? type will +;465: // most likely cause network incompatibilities +;466: hit->touch != Touch_DoorTrigger) { +line 467 +;467: continue; +ADDRGP4 $237 +JUMPV +LABELV $246 +line 469 +;468: } +;469: } +LABELV $244 +line 473 +;470: +;471: // use seperate code for determining if an item is picked up +;472: // so you don't have to actually contact its bounding box +;473: if ( hit->s.eType == ET_ITEM ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $248 +line 474 +;474: if ( !BG_PlayerTouchesItem( &ent->client->ps, &hit->s, level.time ) ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 level+32 +INDIRI4 +ARGI4 +ADDRLP4 5256 +ADDRGP4 BG_PlayerTouchesItem +CALLI4 +ASGNI4 +ADDRLP4 5256 +INDIRI4 +CNSTI4 0 +NEI4 $249 +line 475 +;475: continue; +ADDRGP4 $237 +JUMPV +line 477 +;476: } +;477: } else { +LABELV $248 +line 478 +;478: if ( !trap_EntityContact( mins, maxs, hit ) ) { +ADDRLP4 1088 +ARGP4 +ADDRLP4 1100 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 5256 +ADDRGP4 trap_EntityContact +CALLI4 +ASGNI4 +ADDRLP4 5256 +INDIRI4 +CNSTI4 0 +NEI4 $253 +line 479 +;479: continue; +ADDRGP4 $237 +JUMPV +LABELV $253 +line 481 +;480: } +;481: } +LABELV $249 +line 483 +;482: +;483: memset( &trace, 0, sizeof(trace) ); +ADDRLP4 8 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1080 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 485 +;484: +;485: if ( hit->touch ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $255 +line 486 +;486: hit->touch (hit, ent, &trace); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CALLV +pop +line 487 +;487: } +LABELV $255 +line 489 +;488: +;489: if ( ( ent->r.svFlags & SVF_BOT ) && ( ent->touch ) ) { +ADDRLP4 5256 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 5256 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $257 +ADDRLP4 5256 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $257 +line 490 +;490: ent->touch( ent, hit, &trace ); +ADDRLP4 5260 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 5260 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 5260 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CALLV +pop +line 491 +;491: } +LABELV $257 +line 492 +;492: } +LABELV $237 +line 451 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $239 +ADDRLP4 4 +INDIRI4 +ADDRLP4 1112 +INDIRI4 +LTI4 $236 +line 495 +;493: +;494: // if we didn't touch a jump pad this pmove frame +;495: if ( ent->client->ps.jumppad_frame != ent->client->ps.pmove_framecount ) { +ADDRLP4 5248 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 5248 +INDIRP4 +CNSTI4 492 +ADDP4 +INDIRI4 +ADDRLP4 5248 +INDIRP4 +CNSTI4 488 +ADDP4 +INDIRI4 +EQI4 $259 +line 496 +;496: ent->client->ps.jumppad_frame = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 492 +ADDP4 +CNSTI4 0 +ASGNI4 +line 497 +;497: ent->client->ps.jumppad_ent = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 480 +ADDP4 +CNSTI4 0 +ASGNI4 +line 498 +;498: } +LABELV $259 +line 499 +;499:} +LABELV $218 +endproc G_TouchTriggers 5264 16 +lit +align 4 +LABELV $262 +byte 4 1109393408 +byte 4 1109393408 +byte 4 1112539136 +export G_MoverTouchPushTriggers +code +proc G_MoverTouchPushTriggers 5328 16 +line 511 +;500: +;501: +;502:/* +;503:============ +;504:G_MoverTouchTriggers +;505: +;506:Find all trigger entities that ent's current position touches. +;507:Spectators will only interact with teleporters. +;508:============ +;509:*/ +;510:void G_MoverTouchPushTriggers( gentity_t *ent, vec3_t oldOrg ) +;511:{ +line 518 +;512: int i, num; +;513: float step, stepSize, dist; +;514: int touch[MAX_GENTITIES]; +;515: gentity_t *hit; +;516: trace_t trace; +;517: vec3_t mins, maxs, dir, size, checkSpot; +;518: const vec3_t range = { 40, 40, 52 }; +ADDRLP4 5224 +ADDRGP4 $262 +INDIRB +ASGNB 12 +line 521 +;519: +;520: // non-moving movers don't hit triggers! +;521: if ( !VectorLengthSquared( ent->s.pos.trDelta ) ) +ADDRFP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +ARGP4 +ADDRLP4 5272 +ADDRGP4 VectorLengthSquared +CALLF4 +ASGNF4 +ADDRLP4 5272 +INDIRF4 +CNSTF4 0 +NEF4 $263 +line 522 +;522: { +line 523 +;523: return; +ADDRGP4 $261 +JUMPV +LABELV $263 +line 526 +;524: } +;525: +;526: VectorSubtract( ent->r.mins, ent->r.maxs, size ); +ADDRLP4 5276 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 5260 +ADDRLP4 5276 +INDIRP4 +CNSTI4 316 +ADDP4 +INDIRF4 +ADDRLP4 5276 +INDIRP4 +CNSTI4 328 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 5260+4 +ADDRLP4 5276 +INDIRP4 +CNSTI4 320 +ADDP4 +INDIRF4 +ADDRLP4 5276 +INDIRP4 +CNSTI4 332 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 5280 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 5260+8 +ADDRLP4 5280 +INDIRP4 +CNSTI4 324 +ADDP4 +INDIRF4 +ADDRLP4 5280 +INDIRP4 +CNSTI4 336 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 527 +;527: stepSize = VectorLength( size ); +ADDRLP4 5260 +ARGP4 +ADDRLP4 5284 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 5252 +ADDRLP4 5284 +INDIRF4 +ASGNF4 +line 528 +;528: if ( stepSize < 1 ) +ADDRLP4 5252 +INDIRF4 +CNSTF4 1065353216 +GEF4 $267 +line 529 +;529: { +line 530 +;530: stepSize = 1; +ADDRLP4 5252 +CNSTF4 1065353216 +ASGNF4 +line 531 +;531: } +LABELV $267 +line 533 +;532: +;533: VectorSubtract( ent->r.currentOrigin, oldOrg, dir ); +ADDRLP4 5288 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 5292 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 5240 +ADDRLP4 5288 +INDIRP4 +CNSTI4 368 +ADDP4 +INDIRF4 +ADDRLP4 5292 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 5240+4 +ADDRLP4 5288 +INDIRP4 +CNSTI4 372 +ADDP4 +INDIRF4 +ADDRLP4 5292 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 5240+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 376 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 534 +;534: dist = VectorNormalize( dir ); +ADDRLP4 5240 +ARGP4 +ADDRLP4 5296 +ADDRGP4 VectorNormalize +CALLF4 +ASGNF4 +ADDRLP4 5256 +ADDRLP4 5296 +INDIRF4 +ASGNF4 +line 535 +;535: for ( step = 0; step <= dist; step += stepSize ) +ADDRLP4 5236 +CNSTF4 0 +ASGNF4 +ADDRGP4 $274 +JUMPV +LABELV $271 +line 536 +;536: { +line 537 +;537: VectorMA( ent->r.currentOrigin, step, dir, checkSpot ); +ADDRLP4 5300 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1112 +ADDRLP4 5300 +INDIRP4 +CNSTI4 368 +ADDP4 +INDIRF4 +ADDRLP4 5240 +INDIRF4 +ADDRLP4 5236 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 1112+4 +ADDRLP4 5300 +INDIRP4 +CNSTI4 372 +ADDP4 +INDIRF4 +ADDRLP4 5240+4 +INDIRF4 +ADDRLP4 5236 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 1112+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 376 +ADDP4 +INDIRF4 +ADDRLP4 5240+8 +INDIRF4 +ADDRLP4 5236 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 538 +;538: VectorSubtract( checkSpot, range, mins ); +ADDRLP4 1088 +ADDRLP4 1112 +INDIRF4 +ADDRLP4 5224 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1088+4 +ADDRLP4 1112+4 +INDIRF4 +ADDRLP4 5224+4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 1088+8 +ADDRLP4 1112+8 +INDIRF4 +ADDRLP4 5224+8 +INDIRF4 +SUBF4 +ASGNF4 +line 539 +;539: VectorAdd( checkSpot, range, maxs ); +ADDRLP4 1100 +ADDRLP4 1112 +INDIRF4 +ADDRLP4 5224 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1100+4 +ADDRLP4 1112+4 +INDIRF4 +ADDRLP4 5224+4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1100+8 +ADDRLP4 1112+8 +INDIRF4 +ADDRLP4 5224+8 +INDIRF4 +ADDF4 +ASGNF4 +line 541 +;540: +;541: num = trap_EntitiesInBox( mins, maxs, touch, MAX_GENTITIES ); +ADDRLP4 1088 +ARGP4 +ADDRLP4 1100 +ARGP4 +ADDRLP4 1128 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 5308 +ADDRGP4 trap_EntitiesInBox +CALLI4 +ASGNI4 +ADDRLP4 1124 +ADDRLP4 5308 +INDIRI4 +ASGNI4 +line 544 +;542: +;543: // can't use ent->r.absmin, because that has a one unit pad +;544: VectorAdd( checkSpot, ent->r.mins, mins ); +ADDRLP4 5312 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1088 +ADDRLP4 1112 +INDIRF4 +ADDRLP4 5312 +INDIRP4 +CNSTI4 316 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1088+4 +ADDRLP4 1112+4 +INDIRF4 +ADDRLP4 5312 +INDIRP4 +CNSTI4 320 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1088+8 +ADDRLP4 1112+8 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 324 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 545 +;545: VectorAdd( checkSpot, ent->r.maxs, maxs ); +ADDRLP4 5316 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1100 +ADDRLP4 1112 +INDIRF4 +ADDRLP4 5316 +INDIRP4 +CNSTI4 328 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1100+4 +ADDRLP4 1112+4 +INDIRF4 +ADDRLP4 5316 +INDIRP4 +CNSTI4 332 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 1100+8 +ADDRLP4 1112+8 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 336 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 547 +;546: +;547: for ( i=0 ; is.eType != ET_PUSH_TRIGGER ) +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 10 +EQI4 $303 +line 552 +;552: { +line 553 +;553: continue; +ADDRGP4 $300 +JUMPV +LABELV $303 +line 556 +;554: } +;555: +;556: if ( hit->touch == NULL ) +ADDRLP4 0 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $305 +line 557 +;557: { +line 558 +;558: continue; +ADDRGP4 $300 +JUMPV +LABELV $305 +line 561 +;559: } +;560: +;561: if ( !( hit->r.contents & CONTENTS_TRIGGER ) ) +ADDRLP4 0 +INDIRP4 +CNSTI4 340 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +NEI4 $307 +line 562 +;562: { +line 563 +;563: continue; +ADDRGP4 $300 +JUMPV +LABELV $307 +line 567 +;564: } +;565: +;566: +;567: if ( !trap_EntityContact( mins, maxs, hit ) ) +ADDRLP4 1088 +ARGP4 +ADDRLP4 1100 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 5320 +ADDRGP4 trap_EntityContact +CALLI4 +ASGNI4 +ADDRLP4 5320 +INDIRI4 +CNSTI4 0 +NEI4 $309 +line 568 +;568: { +line 569 +;569: continue; +ADDRGP4 $300 +JUMPV +LABELV $309 +line 572 +;570: } +;571: +;572: memset( &trace, 0, sizeof(trace) ); +ADDRLP4 8 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1080 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 574 +;573: +;574: if ( hit->touch != NULL ) +ADDRLP4 0 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $311 +line 575 +;575: { +line 576 +;576: hit->touch(hit, ent, &trace); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 648 +ADDP4 +INDIRP4 +CALLV +pop +line 577 +;577: } +LABELV $311 +line 578 +;578: } +LABELV $300 +line 547 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $302 +ADDRLP4 4 +INDIRI4 +ADDRLP4 1124 +INDIRI4 +LTI4 $299 +line 579 +;579: } +LABELV $272 +line 535 +ADDRLP4 5236 +ADDRLP4 5236 +INDIRF4 +ADDRLP4 5252 +INDIRF4 +ADDF4 +ASGNF4 +LABELV $274 +ADDRLP4 5236 +INDIRF4 +ADDRLP4 5256 +INDIRF4 +LEF4 $271 +line 580 +;580:} +LABELV $261 +endproc G_MoverTouchPushTriggers 5328 16 +export SpectatorThink +proc SpectatorThink 396 12 +line 587 +;581: +;582:/* +;583:================= +;584:SpectatorThink +;585:================= +;586:*/ +;587:void SpectatorThink( gentity_t *ent, usercmd_t *ucmd ) { +line 591 +;588: pmove_t pm; +;589: gclient_t *client; +;590: +;591: client = ent->client; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 593 +;592: +;593: if ( client->sess.spectatorState != SPECTATOR_FOLLOW ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $314 +line 594 +;594: client->ps.pm_type = PM_SPECTATOR; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 3 +ASGNI4 +line 595 +;595: client->ps.speed = 400; // faster than normal +ADDRLP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +CNSTI4 400 +ASGNI4 +line 596 +;596: client->ps.basespeed = 400; +ADDRLP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +CNSTI4 400 +ASGNI4 +line 599 +;597: +;598: // set up for pmove +;599: memset (&pm, 0, sizeof(pm)); +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 376 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 600 +;600: pm.ps = &client->ps; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 601 +;601: pm.cmd = *ucmd; +ADDRLP4 4+4 +ADDRFP4 4 +INDIRP4 +INDIRB +ASGNB 28 +line 602 +;602: pm.tracemask = MASK_PLAYERSOLID & ~CONTENTS_BODY; // spectators can fly through bodies +ADDRLP4 4+32 +CNSTI4 17 +ASGNI4 +line 603 +;603: pm.trace = trap_Trace; +ADDRLP4 4+240 +ADDRGP4 trap_Trace +ASGNP4 +line 604 +;604: pm.pointcontents = trap_PointContents; +ADDRLP4 4+244 +ADDRGP4 trap_PointContents +ASGNP4 +line 606 +;605: +;606: pm.animations = NULL; +ADDRLP4 4+224 +CNSTP4 0 +ASGNP4 +line 609 +;607: +;608: // perform a pmove +;609: Pmove (&pm); +ADDRLP4 4 +ARGP4 +ADDRGP4 Pmove +CALLV +pop +line 611 +;610: // save results of pmove +;611: VectorCopy( client->ps.origin, ent->s.origin ); +ADDRFP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 613 +;612: +;613: G_TouchTriggers( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_TouchTriggers +CALLV +pop +line 614 +;614: trap_UnlinkEntity( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_UnlinkEntity +CALLV +pop +line 615 +;615: } +LABELV $314 +line 617 +;616: +;617: client->oldbuttons = client->buttons; +ADDRLP4 0 +INDIRP4 +CNSTI4 1588 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1584 +ADDP4 +INDIRI4 +ASGNI4 +line 618 +;618: client->buttons = ucmd->buttons; +ADDRLP4 0 +INDIRP4 +CNSTI4 1584 +ADDP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ASGNI4 +line 621 +;619: +;620: // attack button cycles through spectators +;621: if ( ( client->buttons & BUTTON_ATTACK ) && ! ( client->oldbuttons & BUTTON_ATTACK ) ) { +ADDRLP4 388 +CNSTI4 1 +ASGNI4 +ADDRLP4 392 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1584 +ADDP4 +INDIRI4 +ADDRLP4 388 +INDIRI4 +BANDI4 +ADDRLP4 392 +INDIRI4 +EQI4 $321 +ADDRLP4 0 +INDIRP4 +CNSTI4 1588 +ADDP4 +INDIRI4 +ADDRLP4 388 +INDIRI4 +BANDI4 +ADDRLP4 392 +INDIRI4 +NEI4 $321 +line 622 +;622: Cmd_FollowCycle_f( ent, 1 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 Cmd_FollowCycle_f +CALLV +pop +line 623 +;623: } +LABELV $321 +line 625 +;624: +;625: if (client->sess.spectatorState == SPECTATOR_FOLLOW && (ucmd->upmove > 0)) +ADDRLP4 0 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $323 +ADDRFP4 4 +INDIRP4 +CNSTI4 26 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +LEI4 $323 +line 626 +;626: { //jump now removes you from follow mode +line 627 +;627: StopFollowing(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 StopFollowing +CALLV +pop +line 628 +;628: } +LABELV $323 +line 629 +;629:} +LABELV $313 +endproc SpectatorThink 396 12 +export ClientInactivityTimer +proc ClientInactivityTimer 12 8 +line 640 +;630: +;631: +;632: +;633:/* +;634:================= +;635:ClientInactivityTimer +;636: +;637:Returns qfalse if the client is dropped +;638:================= +;639:*/ +;640:qboolean ClientInactivityTimer( gclient_t *client ) { +line 641 +;641: if ( ! g_inactivity.integer ) { +ADDRGP4 g_inactivity+12 +INDIRI4 +CNSTI4 0 +NEI4 $326 +line 644 +;642: // give everyone some time, so if the operator sets g_inactivity during +;643: // gameplay, everyone isn't kicked +;644: client->inactivityTime = level.time + 60 * 1000; +ADDRFP4 0 +INDIRP4 +CNSTI4 1676 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 60000 +ADDI4 +ASGNI4 +line 645 +;645: client->inactivityWarning = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 1680 +ADDP4 +CNSTI4 0 +ASGNI4 +line 646 +;646: } else if ( client->pers.cmd.forwardmove || +ADDRGP4 $327 +JUMPV +LABELV $326 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1396 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 4 +INDIRI4 +NEI4 $334 +ADDRLP4 0 +INDIRP4 +CNSTI4 1397 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 4 +INDIRI4 +NEI4 $334 +ADDRLP4 0 +INDIRP4 +CNSTI4 1398 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 4 +INDIRI4 +NEI4 $334 +ADDRLP4 0 +INDIRP4 +CNSTI4 1388 +ADDP4 +INDIRI4 +CNSTI4 129 +BANDI4 +ADDRLP4 4 +INDIRI4 +EQI4 $330 +LABELV $334 +line 649 +;647: client->pers.cmd.rightmove || +;648: client->pers.cmd.upmove || +;649: (client->pers.cmd.buttons & (BUTTON_ATTACK|BUTTON_ALT_ATTACK)) ) { +line 650 +;650: client->inactivityTime = level.time + g_inactivity.integer * 1000; +ADDRFP4 0 +INDIRP4 +CNSTI4 1676 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 1000 +ADDRGP4 g_inactivity+12 +INDIRI4 +MULI4 +ADDI4 +ASGNI4 +line 651 +;651: client->inactivityWarning = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 1680 +ADDP4 +CNSTI4 0 +ASGNI4 +line 652 +;652: } else if ( !client->pers.localClient ) { +ADDRGP4 $331 +JUMPV +LABELV $330 +ADDRFP4 0 +INDIRP4 +CNSTI4 1400 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $337 +line 653 +;653: if ( level.time > client->inactivityTime ) { +ADDRGP4 level+32 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1676 +ADDP4 +INDIRI4 +LEI4 $339 +line 654 +;654: trap_DropClient( client - level.clients, "Dropped due to inactivity" ); +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 level +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1756 +DIVI4 +ARGI4 +ADDRGP4 $342 +ARGP4 +ADDRGP4 trap_DropClient +CALLV +pop +line 655 +;655: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $325 +JUMPV +LABELV $339 +line 657 +;656: } +;657: if ( level.time > client->inactivityTime - 10000 && !client->inactivityWarning ) { +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 level+32 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1676 +ADDP4 +INDIRI4 +CNSTI4 10000 +SUBI4 +LEI4 $343 +ADDRLP4 8 +INDIRP4 +CNSTI4 1680 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $343 +line 658 +;658: client->inactivityWarning = qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 1680 +ADDP4 +CNSTI4 1 +ASGNI4 +line 659 +;659: trap_SendServerCommand( client - level.clients, "cp \"Ten seconds until inactivity drop!\n\"" ); +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 level +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1756 +DIVI4 +ARGI4 +ADDRGP4 $346 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 660 +;660: } +LABELV $343 +line 661 +;661: } +LABELV $337 +LABELV $331 +LABELV $327 +line 662 +;662: return qtrue; +CNSTI4 1 +RETI4 +LABELV $325 +endproc ClientInactivityTimer 12 8 +export ClientTimerActions +proc ClientTimerActions 20 0 +line 672 +;663:} +;664: +;665:/* +;666:================== +;667:ClientTimerActions +;668: +;669:Actions that happen once a second +;670:================== +;671:*/ +;672:void ClientTimerActions( gentity_t *ent, int msec ) { +line 675 +;673: gclient_t *client; +;674: +;675: client = ent->client; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 676 +;676: client->timeResidual += msec; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1708 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +ADDI4 +ASGNI4 +ADDRGP4 $349 +JUMPV +LABELV $348 +line 679 +;677: +;678: while ( client->timeResidual >= 1000 ) +;679: { +line 680 +;680: client->timeResidual -= 1000; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 1708 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1000 +SUBI4 +ASGNI4 +line 683 +;681: +;682: // count down health when over max +;683: if ( ent->health > client->ps.stats[STAT_MAX_HEALTH] ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +LEI4 $351 +line 684 +;684: ent->health--; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 685 +;685: } +LABELV $351 +line 688 +;686: +;687: // count down armor when over max +;688: if ( client->ps.stats[STAT_ARMOR] > client->ps.stats[STAT_MAX_HEALTH] ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +LEI4 $353 +line 689 +;689: client->ps.stats[STAT_ARMOR]--; +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 690 +;690: } +LABELV $353 +line 691 +;691: } +LABELV $349 +line 678 +ADDRLP4 0 +INDIRP4 +CNSTI4 1708 +ADDP4 +INDIRI4 +CNSTI4 1000 +GEI4 $348 +line 692 +;692:} +LABELV $347 +endproc ClientTimerActions 20 0 +export ClientIntermissionThink +proc ClientIntermissionThink 24 0 +line 699 +;693: +;694:/* +;695:==================== +;696:ClientIntermissionThink +;697:==================== +;698:*/ +;699:void ClientIntermissionThink( gclient_t *client ) { +line 700 +;700: client->ps.eFlags &= ~EF_TALK; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 -4097 +BANDI4 +ASGNI4 +line 701 +;701: client->ps.eFlags &= ~EF_FIRING; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -257 +BANDI4 +ASGNI4 +line 706 +;702: +;703: // the level will exit when everyone wants to or after timeouts +;704: +;705: // swap and latch button actions +;706: client->oldbuttons = client->buttons; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1588 +ADDP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1584 +ADDP4 +INDIRI4 +ASGNI4 +line 707 +;707: client->buttons = client->pers.cmd.buttons; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1584 +ADDP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1388 +ADDP4 +INDIRI4 +ASGNI4 +line 708 +;708: if ( client->buttons & ( BUTTON_ATTACK | BUTTON_USE_HOLDABLE ) & ( client->oldbuttons ^ client->buttons ) ) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +ADDRLP4 16 +INDIRP4 +CNSTI4 1584 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 5 +BANDI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 1588 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +BXORI4 +BANDI4 +CNSTI4 0 +EQI4 $356 +line 710 +;709: // this used to be an ^1 but once a player says ready, it should stick +;710: client->readyToExit = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 1572 +ADDP4 +CNSTI4 1 +ASGNI4 +line 711 +;711: } +LABELV $356 +line 712 +;712:} +LABELV $355 +endproc ClientIntermissionThink 24 0 +export ClientEvents +proc ClientEvents 68 32 +line 723 +;713: +;714: +;715:/* +;716:================ +;717:ClientEvents +;718: +;719:Events will be passed on to the clients for presentation, +;720:but any server game effects are handled here +;721:================ +;722:*/ +;723:void ClientEvents( gentity_t *ent, int oldEventSequence ) { +line 734 +;724: int i;//, j; +;725: int event; +;726: gclient_t *client; +;727: int damage; +;728: vec3_t dir; +;729:// vec3_t origin, angles; +;730:// qboolean fired; +;731:// gitem_t *item; +;732:// gentity_t *drop; +;733: +;734: client = ent->client; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 736 +;735: +;736: if ( oldEventSequence < client->ps.eventSequence - MAX_PS_EVENTS ) { +ADDRFP4 4 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +GEI4 $359 +line 737 +;737: oldEventSequence = client->ps.eventSequence - MAX_PS_EVENTS; +ADDRFP4 4 +ADDRLP4 8 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 738 +;738: } +LABELV $359 +line 739 +;739: for ( i = oldEventSequence ; i < client->ps.eventSequence ; i++ ) { +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRGP4 $364 +JUMPV +LABELV $361 +line 740 +;740: event = client->ps.events[ i & (MAX_PS_EVENTS-1) ]; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 742 +;741: +;742: switch ( event ) { +ADDRLP4 32 +CNSTI4 15 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 32 +INDIRI4 +EQI4 $367 +ADDRLP4 4 +INDIRI4 +ADDRLP4 32 +INDIRI4 +GTI4 $393 +LABELV $392 +ADDRLP4 4 +INDIRI4 +CNSTI4 11 +EQI4 $367 +ADDRGP4 $366 +JUMPV +LABELV $393 +ADDRLP4 40 +CNSTI4 24 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 40 +INDIRI4 +EQI4 $380 +ADDRLP4 4 +INDIRI4 +CNSTI4 25 +EQI4 $382 +ADDRLP4 4 +INDIRI4 +CNSTI4 26 +EQI4 $384 +ADDRLP4 4 +INDIRI4 +ADDRLP4 40 +INDIRI4 +LTI4 $366 +LABELV $394 +ADDRLP4 4 +INDIRI4 +CNSTI4 41 +LTI4 $366 +ADDRLP4 4 +INDIRI4 +CNSTI4 46 +GTI4 $366 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $395-164 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $395 +address $386 +address $387 +address $388 +address $366 +address $390 +address $391 +code +LABELV $367 +line 745 +;743: case EV_FALL: +;744: case EV_ROLL: +;745: { +line 746 +;746: int delta = client->ps.eventParms[ i & (MAX_PS_EVENTS-1) ]; +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 124 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 748 +;747: +;748: if (ent->client && ent->client->ps.fallingToDeath) +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $368 +ADDRLP4 52 +INDIRP4 +CNSTI4 1340 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $368 +line 749 +;749: { +line 750 +;750: break; +ADDRGP4 $366 +JUMPV +LABELV $368 +line 753 +;751: } +;752: +;753: if ( ent->s.eType != ET_PLAYER ) +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 1 +EQI4 $370 +line 754 +;754: { +line 755 +;755: break; // not in the player model +ADDRGP4 $366 +JUMPV +LABELV $370 +line 758 +;756: } +;757: +;758: if ( g_dmflags.integer & DF_NO_FALLING ) +ADDRGP4 g_dmflags+12 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $372 +line 759 +;759: { +line 760 +;760: break; +ADDRGP4 $366 +JUMPV +LABELV $372 +line 763 +;761: } +;762: +;763: if (delta <= 44) +ADDRLP4 48 +INDIRI4 +CNSTI4 44 +GTI4 $375 +line 764 +;764: { +line 765 +;765: break; +ADDRGP4 $366 +JUMPV +LABELV $375 +line 768 +;766: } +;767: +;768: damage = delta*0.16; //good enough for now, I guess +ADDRLP4 24 +CNSTF4 1042536202 +ADDRLP4 48 +INDIRI4 +CVIF4 4 +MULF4 +CVFI4 4 +ASGNI4 +line 770 +;769: +;770: VectorSet (dir, 0, 0, 1); +ADDRLP4 56 +CNSTF4 0 +ASGNF4 +ADDRLP4 12 +ADDRLP4 56 +INDIRF4 +ASGNF4 +ADDRLP4 12+4 +ADDRLP4 56 +INDIRF4 +ASGNF4 +ADDRLP4 12+8 +CNSTF4 1065353216 +ASGNF4 +line 771 +;771: ent->pain_debounce_time = level.time + 200; // no normal pain sound +ADDRFP4 0 +INDIRP4 +CNSTI4 664 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 200 +ADDI4 +ASGNI4 +line 772 +;772: G_Damage (ent, NULL, NULL, NULL, NULL, damage, DAMAGE_NO_ARMOR, MOD_FALLING); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 60 +CNSTP4 0 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRLP4 64 +CNSTP4 0 +ASGNP4 +ADDRLP4 64 +INDIRP4 +ARGP4 +ADDRLP4 64 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRI4 +ARGI4 +CNSTI4 2 +ARGI4 +CNSTI4 34 +ARGI4 +ADDRGP4 G_Damage +CALLV +pop +line 773 +;773: } +line 774 +;774: break; +ADDRGP4 $366 +JUMPV +LABELV $380 +line 776 +;775: case EV_FIRE_WEAPON: +;776: FireWeapon( ent, qfalse ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 FireWeapon +CALLV +pop +line 777 +;777: ent->client->dangerTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1748 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 778 +;778: ent->client->ps.eFlags &= ~EF_INVULNERABLE; +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 48 +INDIRP4 +INDIRI4 +CNSTI4 -67108865 +BANDI4 +ASGNI4 +line 779 +;779: ent->client->invulnerableTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1564 +ADDP4 +CNSTI4 0 +ASGNI4 +line 780 +;780: break; +ADDRGP4 $366 +JUMPV +LABELV $382 +line 783 +;781: +;782: case EV_ALT_FIRE: +;783: FireWeapon( ent, qtrue ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 FireWeapon +CALLV +pop +line 784 +;784: ent->client->dangerTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1748 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 785 +;785: ent->client->ps.eFlags &= ~EF_INVULNERABLE; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 52 +INDIRP4 +INDIRI4 +CNSTI4 -67108865 +BANDI4 +ASGNI4 +line 786 +;786: ent->client->invulnerableTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1564 +ADDP4 +CNSTI4 0 +ASGNI4 +line 787 +;787: break; +ADDRGP4 $366 +JUMPV +LABELV $384 +line 790 +;788: +;789: case EV_SABER_ATTACK: +;790: ent->client->dangerTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1748 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 791 +;791: ent->client->ps.eFlags &= ~EF_INVULNERABLE; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRLP4 56 +INDIRP4 +INDIRI4 +CNSTI4 -67108865 +BANDI4 +ASGNI4 +line 792 +;792: ent->client->invulnerableTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1564 +ADDP4 +CNSTI4 0 +ASGNI4 +line 793 +;793: break; +ADDRGP4 $366 +JUMPV +LABELV $386 +line 797 +;794: +;795: //rww - Note that these must be in the same order (ITEM#-wise) as they are in holdable_t +;796: case EV_USE_ITEM1: //seeker droid +;797: ItemUse_Seeker(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Seeker +CALLV +pop +line 798 +;798: break; +ADDRGP4 $366 +JUMPV +LABELV $387 +line 800 +;799: case EV_USE_ITEM2: //shield +;800: ItemUse_Shield(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Shield +CALLV +pop +line 801 +;801: break; +ADDRGP4 $366 +JUMPV +LABELV $388 +line 803 +;802: case EV_USE_ITEM3: //medpack +;803: ItemUse_MedPack(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_MedPack +CALLV +pop +line 804 +;804: break; +ADDRGP4 $366 +JUMPV +line 807 +;805: case EV_USE_ITEM4: //datapad +;806: //G_Printf("Used Datapad\n"); +;807: break; +LABELV $390 +line 809 +;808: case EV_USE_ITEM5: //binoculars +;809: ItemUse_Binoculars(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Binoculars +CALLV +pop +line 810 +;810: break; +ADDRGP4 $366 +JUMPV +LABELV $391 +line 812 +;811: case EV_USE_ITEM6: //sentry gun +;812: ItemUse_Sentry(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Sentry +CALLV +pop +line 813 +;813: break; +line 816 +;814: +;815: default: +;816: break; +LABELV $366 +line 818 +;817: } +;818: } +LABELV $362 +line 739 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $364 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +LTI4 $361 +line 820 +;819: +;820:} +LABELV $358 +endproc ClientEvents 68 32 +export SendPendingPredictableEvents +proc SendPendingPredictableEvents 40 12 +line 827 +;821: +;822:/* +;823:============== +;824:SendPendingPredictableEvents +;825:============== +;826:*/ +;827:void SendPendingPredictableEvents( playerState_t *ps ) { +line 833 +;828: gentity_t *t; +;829: int event, seq; +;830: int extEvent, number; +;831: +;832: // if there are still events pending +;833: if ( ps->entityEventSequence < ps->eventSequence ) { +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +GEI4 $398 +line 836 +;834: // create a temporary entity for this event which is sent to everyone +;835: // except the client who generated the event +;836: seq = ps->entityEventSequence & (MAX_PS_EVENTS-1); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +ASGNI4 +line 837 +;837: event = ps->events[ seq ] | ( ( ps->entityEventSequence & 3 ) << 8 ); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 24 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDP4 +INDIRI4 +ADDRLP4 24 +INDIRP4 +CNSTI4 496 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 8 +LSHI4 +BORI4 +ASGNI4 +line 839 +;838: // set external event to zero before calling BG_PlayerStateToEntityState +;839: extEvent = ps->externalEvent; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRI4 +ASGNI4 +line 840 +;840: ps->externalEvent = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +CNSTI4 0 +ASGNI4 +line 842 +;841: // create temporary entity for event +;842: t = G_TempEntity( ps->origin, event ); +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 28 +INDIRP4 +ASGNP4 +line 843 +;843: number = t->s.number; +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 844 +;844: BG_PlayerStateToEntityState( ps, &t->s, qtrue ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 BG_PlayerStateToEntityState +CALLV +pop +line 845 +;845: t->s.number = number; +ADDRLP4 0 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 846 +;846: t->s.eType = ET_EVENTS + event; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 16 +ADDI4 +ASGNI4 +line 847 +;847: t->s.eFlags |= EF_PLAYER_EVENT; +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +CNSTI4 16 +BORI4 +ASGNI4 +line 848 +;848: t->s.otherEntityNum = ps->clientNum; +ADDRLP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 850 +;849: // send to everyone except the client who generated the event +;850: t->r.svFlags |= SVF_NOTSINGLECLIENT; +ADDRLP4 36 +ADDRLP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 36 +INDIRP4 +INDIRI4 +CNSTI4 2048 +BORI4 +ASGNI4 +line 851 +;851: t->r.singleClient = ps->clientNum; +ADDRLP4 0 +INDIRP4 +CNSTI4 308 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 853 +;852: // set back external event +;853: ps->externalEvent = extEvent; +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 854 +;854: } +LABELV $398 +line 855 +;855:} +LABELV $397 +endproc SendPendingPredictableEvents 40 12 +proc G_UpdateForceSightBroadcasts 72 12 +line 875 +;856: +;857:extern int saberOffSound; +;858:extern int saberOnSound; +;859: +;860:/* +;861:================== +;862:G_UpdateClientBroadcasts +;863: +;864:Determines whether this client should be broadcast to any other clients. +;865:A client is broadcast when another client is using force sight or is +;866:================== +;867:*/ +;868:#define MAX_JEDIMASTER_DISTANCE 2500 +;869:#define MAX_JEDIMASTER_FOV 100 +;870: +;871:#define MAX_SIGHT_DISTANCE 1500 +;872:#define MAX_SIGHT_FOV 100 +;873: +;874:static void G_UpdateForceSightBroadcasts ( gentity_t *self ) +;875:{ +line 879 +;876: int i; +;877: +;878: // Any clients with force sight on should see this client +;879: for ( i = 0; i < level.numConnectedClients; i ++ ) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $404 +JUMPV +LABELV $401 +line 880 +;880: { +line 881 +;881: gentity_t *ent = &g_entities[level.sortedClients[i]]; +ADDRLP4 4 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 level+84 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 885 +;882: float dist; +;883: vec3_t angles; +;884: +;885: if ( ent == self ) +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +NEU4 $407 +line 886 +;886: { +line 887 +;887: continue; +ADDRGP4 $402 +JUMPV +LABELV $407 +line 891 +;888: } +;889: +;890: // Not using force sight so we shouldnt broadcast to this one +;891: if ( !(ent->client->ps.fd.forcePowersActive & (1<client->ps.origin, ent->client->ps.origin, angles ); +ADDRLP4 24 +CNSTI4 408 +ASGNI4 +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 32 +CNSTI4 20 +ASGNI4 +ADDRLP4 36 +ADDRLP4 4 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 28 +INDIRP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 40 +CNSTI4 24 +ASGNI4 +ADDRLP4 8+4 +ADDRLP4 28 +INDIRP4 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 44 +CNSTI4 408 +ASGNI4 +ADDRLP4 48 +CNSTI4 28 +ASGNI4 +ADDRLP4 8+8 +ADDRFP4 0 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 897 +;897: dist = VectorLengthSquared ( angles ); +ADDRLP4 8 +ARGP4 +ADDRLP4 52 +ADDRGP4 VectorLengthSquared +CALLF4 +ASGNF4 +ADDRLP4 20 +ADDRLP4 52 +INDIRF4 +ASGNF4 +line 898 +;898: vectoangles ( angles, angles ); +ADDRLP4 8 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 vectoangles +CALLV +pop +line 901 +;899: +;900: // Too far away then just forget it +;901: if ( dist > MAX_SIGHT_DISTANCE * MAX_SIGHT_DISTANCE ) +ADDRLP4 20 +INDIRF4 +CNSTF4 1242125376 +LEF4 $413 +line 902 +;902: { +line 903 +;903: continue; +ADDRGP4 $402 +JUMPV +LABELV $413 +line 907 +;904: } +;905: +;906: // If not within the field of view then forget it +;907: if ( !InFieldOfVision ( ent->client->ps.viewangles, MAX_SIGHT_FOV, angles ) ) +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 156 +ADDP4 +ARGP4 +CNSTF4 1120403456 +ARGF4 +ADDRLP4 8 +ARGP4 +ADDRLP4 56 +ADDRGP4 InFieldOfVision +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +NEI4 $415 +line 908 +;908: { +line 909 +;909: break; +ADDRGP4 $403 +JUMPV +LABELV $415 +line 914 +;910: } +;911: +;912: // Turn on the broadcast bit for the master and since there is only one +;913: // master we are done +;914: self->r.broadcastClients[ent->s.clientNum/32] |= (1 << (ent->s.clientNum%32)); +ADDRLP4 60 +ADDRLP4 4 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 64 +CNSTI4 32 +ASGNI4 +ADDRLP4 68 +ADDRLP4 60 +INDIRI4 +ADDRLP4 64 +INDIRI4 +DIVI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 400 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 68 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 60 +INDIRI4 +ADDRLP4 64 +INDIRI4 +MODI4 +LSHI4 +BORI4 +ASGNI4 +line 916 +;915: +;916: break; +ADDRGP4 $403 +JUMPV +LABELV $402 +line 879 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $404 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+72 +INDIRI4 +LTI4 $401 +LABELV $403 +line 918 +;917: } +;918:} +LABELV $400 +endproc G_UpdateForceSightBroadcasts 72 12 +proc G_UpdateJediMasterBroadcasts 72 12 +line 921 +;919: +;920:static void G_UpdateJediMasterBroadcasts ( gentity_t *self ) +;921:{ +line 925 +;922: int i; +;923: +;924: // Not jedi master mode then nothing to do +;925: if ( g_gametype.integer != GT_JEDIMASTER ) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 2 +EQI4 $418 +line 926 +;926: { +line 927 +;927: return; +ADDRGP4 $417 +JUMPV +LABELV $418 +line 931 +;928: } +;929: +;930: // This client isnt the jedi master so it shouldnt broadcast +;931: if ( !self->client->ps.isJediMaster ) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 604 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $421 +line 932 +;932: { +line 933 +;933: return; +ADDRGP4 $417 +JUMPV +LABELV $421 +line 937 +;934: } +;935: +;936: // Broadcast ourself to all clients within range +;937: for ( i = 0; i < level.numConnectedClients; i ++ ) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $426 +JUMPV +LABELV $423 +line 938 +;938: { +line 939 +;939: gentity_t *ent = &g_entities[level.sortedClients[i]]; +ADDRLP4 4 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 level+84 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 943 +;940: float dist; +;941: vec3_t angles; +;942: +;943: if ( ent == self ) +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +NEU4 $429 +line 944 +;944: { +line 945 +;945: continue; +ADDRGP4 $424 +JUMPV +LABELV $429 +line 948 +;946: } +;947: +;948: VectorSubtract( self->client->ps.origin, ent->client->ps.origin, angles ); +ADDRLP4 24 +CNSTI4 408 +ASGNI4 +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 32 +CNSTI4 20 +ASGNI4 +ADDRLP4 36 +ADDRLP4 4 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 28 +INDIRP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 40 +CNSTI4 24 +ASGNI4 +ADDRLP4 8+4 +ADDRLP4 28 +INDIRP4 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 44 +CNSTI4 408 +ASGNI4 +ADDRLP4 48 +CNSTI4 28 +ASGNI4 +ADDRLP4 8+8 +ADDRFP4 0 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 949 +;949: dist = VectorLengthSquared ( angles ); +ADDRLP4 8 +ARGP4 +ADDRLP4 52 +ADDRGP4 VectorLengthSquared +CALLF4 +ASGNF4 +ADDRLP4 20 +ADDRLP4 52 +INDIRF4 +ASGNF4 +line 950 +;950: vectoangles ( angles, angles ); +ADDRLP4 8 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 vectoangles +CALLV +pop +line 953 +;951: +;952: // Too far away then just forget it +;953: if ( dist > MAX_JEDIMASTER_DISTANCE * MAX_JEDIMASTER_DISTANCE ) +ADDRLP4 20 +INDIRF4 +CNSTF4 1254013984 +LEF4 $433 +line 954 +;954: { +line 955 +;955: continue; +ADDRGP4 $424 +JUMPV +LABELV $433 +line 959 +;956: } +;957: +;958: // If not within the field of view then forget it +;959: if ( !InFieldOfVision ( ent->client->ps.viewangles, MAX_JEDIMASTER_FOV, angles ) ) +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 156 +ADDP4 +ARGP4 +CNSTF4 1120403456 +ARGF4 +ADDRLP4 8 +ARGP4 +ADDRLP4 56 +ADDRGP4 InFieldOfVision +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +NEI4 $435 +line 960 +;960: { +line 961 +;961: continue; +ADDRGP4 $424 +JUMPV +LABELV $435 +line 966 +;962: } +;963: +;964: // Turn on the broadcast bit for the master and since there is only one +;965: // master we are done +;966: self->r.broadcastClients[ent->s.clientNum/32] |= (1 << (ent->s.clientNum%32)); +ADDRLP4 60 +ADDRLP4 4 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 64 +CNSTI4 32 +ASGNI4 +ADDRLP4 68 +ADDRLP4 60 +INDIRI4 +ADDRLP4 64 +INDIRI4 +DIVI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 400 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 68 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 60 +INDIRI4 +ADDRLP4 64 +INDIRI4 +MODI4 +LSHI4 +BORI4 +ASGNI4 +line 967 +;967: } +LABELV $424 +line 937 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $426 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+72 +INDIRI4 +LTI4 $423 +line 968 +;968:} +LABELV $417 +endproc G_UpdateJediMasterBroadcasts 72 12 +export G_UpdateClientBroadcasts +proc G_UpdateClientBroadcasts 0 12 +line 971 +;969: +;970:void G_UpdateClientBroadcasts ( gentity_t *self ) +;971:{ +line 973 +;972: // Clear all the broadcast bits for this client +;973: memset ( self->r.broadcastClients, 0, sizeof ( self->r.broadcastClients ) ); +ADDRFP4 0 +INDIRP4 +CNSTI4 400 +ADDP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 8 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 976 +;974: +;975: // The jedi master is broadcast to everyone in range +;976: G_UpdateJediMasterBroadcasts ( self ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_UpdateJediMasterBroadcasts +CALLV +pop +line 979 +;977: +;978: // Anyone with force sight on should see this client +;979: G_UpdateForceSightBroadcasts ( self ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_UpdateForceSightBroadcasts +CALLV +pop +line 980 +;980:} +LABELV $437 +endproc G_UpdateClientBroadcasts 0 12 +export ClientThink_real +proc ClientThink_real 580 32 +line 993 +;981: +;982:/* +;983:============== +;984:ClientThink +;985: +;986:This will be called once for each client frame, which will +;987:usually be a couple times for each server frame on fast clients. +;988: +;989:If "g_synchronousClients 1" is set, this will be called exactly +;990:once for each server frame, which makes for smooth demo recording. +;991:============== +;992:*/ +;993:void ClientThink_real( gentity_t *ent ) { +line 1001 +;994: gclient_t *client; +;995: pmove_t pm; +;996: int oldEventSequence; +;997: int msec; +;998: int i; +;999: usercmd_t *ucmd; +;1000: +;1001: client = ent->client; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 1004 +;1002: +;1003: // don't think if the client is not yet connected (and thus not yet spawned in) +;1004: if (client->pers.connected != CON_CONNECTED) { +ADDRLP4 4 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $439 +line 1005 +;1005: return; +ADDRGP4 $438 +JUMPV +LABELV $439 +line 1008 +;1006: } +;1007: // mark the time, so the connection sprite can be removed +;1008: ucmd = &ent->client->pers.cmd; +ADDRLP4 384 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1372 +ADDP4 +ASGNP4 +line 1011 +;1009: +;1010: // sanity check the command time to prevent speedup cheating +;1011: if ( ucmd->serverTime > level.time + 200 ) { +ADDRLP4 384 +INDIRP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 200 +ADDI4 +LEI4 $441 +line 1012 +;1012: ucmd->serverTime = level.time + 200; +ADDRLP4 384 +INDIRP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 200 +ADDI4 +ASGNI4 +line 1014 +;1013:// G_Printf("serverTime <<<<<\n" ); +;1014: } +LABELV $441 +line 1015 +;1015: if ( ucmd->serverTime < level.time - 1000 ) { +ADDRLP4 384 +INDIRP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 1000 +SUBI4 +GEI4 $445 +line 1016 +;1016: ucmd->serverTime = level.time - 1000; +ADDRLP4 384 +INDIRP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 1000 +SUBI4 +ASGNI4 +line 1018 +;1017:// G_Printf("serverTime >>>>>\n" ); +;1018: } +LABELV $445 +line 1020 +;1019: +;1020: msec = ucmd->serverTime - client->ps.commandTime; +ADDRLP4 388 +ADDRLP4 384 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +SUBI4 +ASGNI4 +line 1023 +;1021: // following others may result in bad times, but we still want +;1022: // to check for follow toggles +;1023: if ( msec < 1 && client->sess.spectatorState != SPECTATOR_FOLLOW ) { +ADDRLP4 388 +INDIRI4 +CNSTI4 1 +GEI4 $449 +ADDRLP4 4 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $449 +line 1024 +;1024: return; +ADDRGP4 $438 +JUMPV +LABELV $449 +line 1026 +;1025: } +;1026: if ( msec > 200 ) { +ADDRLP4 388 +INDIRI4 +CNSTI4 200 +LEI4 $451 +line 1027 +;1027: msec = 200; +ADDRLP4 388 +CNSTI4 200 +ASGNI4 +line 1028 +;1028: } +LABELV $451 +line 1030 +;1029: +;1030: if ( pmove_msec.integer < 8 ) { +ADDRGP4 pmove_msec+12 +INDIRI4 +CNSTI4 8 +GEI4 $453 +line 1031 +;1031: trap_Cvar_Set("pmove_msec", "8"); +ADDRGP4 $456 +ARGP4 +ADDRGP4 $457 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1032 +;1032: } +ADDRGP4 $454 +JUMPV +LABELV $453 +line 1033 +;1033: else if (pmove_msec.integer > 33) { +ADDRGP4 pmove_msec+12 +INDIRI4 +CNSTI4 33 +LEI4 $458 +line 1034 +;1034: trap_Cvar_Set("pmove_msec", "33"); +ADDRGP4 $456 +ARGP4 +ADDRGP4 $461 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1035 +;1035: } +LABELV $458 +LABELV $454 +line 1037 +;1036: +;1037: if ( pmove_fixed.integer || client->pers.pmoveFixed ) { +ADDRLP4 396 +CNSTI4 0 +ASGNI4 +ADDRGP4 pmove_fixed+12 +INDIRI4 +ADDRLP4 396 +INDIRI4 +NEI4 $465 +ADDRLP4 4 +INDIRP4 +CNSTI4 1412 +ADDP4 +INDIRI4 +ADDRLP4 396 +INDIRI4 +EQI4 $462 +LABELV $465 +line 1038 +;1038: ucmd->serverTime = ((ucmd->serverTime + pmove_msec.integer-1) / pmove_msec.integer) * pmove_msec.integer; +ADDRLP4 384 +INDIRP4 +ADDRLP4 384 +INDIRP4 +INDIRI4 +ADDRGP4 pmove_msec+12 +INDIRI4 +ADDI4 +CNSTI4 1 +SUBI4 +ADDRGP4 pmove_msec+12 +INDIRI4 +DIVI4 +ADDRGP4 pmove_msec+12 +INDIRI4 +MULI4 +ASGNI4 +line 1041 +;1039: //if (ucmd->serverTime - client->ps.commandTime <= 0) +;1040: // return; +;1041: } +LABELV $462 +line 1046 +;1042: +;1043: // +;1044: // check for exiting intermission +;1045: // +;1046: if ( level.intermissiontime ) { +ADDRGP4 level+9008 +INDIRI4 +CNSTI4 0 +EQI4 $469 +line 1047 +;1047: ClientIntermissionThink( client ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 ClientIntermissionThink +CALLV +pop +line 1048 +;1048: return; +ADDRGP4 $438 +JUMPV +LABELV $469 +line 1052 +;1049: } +;1050: +;1051: // spectators don't do much +;1052: if ( client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $472 +line 1053 +;1053: if ( client->sess.spectatorState == SPECTATOR_SCOREBOARD ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $474 +line 1054 +;1054: return; +ADDRGP4 $438 +JUMPV +LABELV $474 +line 1056 +;1055: } +;1056: SpectatorThink( ent, ucmd ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 384 +INDIRP4 +ARGP4 +ADDRGP4 SpectatorThink +CALLV +pop +line 1057 +;1057: return; +ADDRGP4 $438 +JUMPV +LABELV $472 +line 1060 +;1058: } +;1059: +;1060: if (ent && ent->client && (ent->client->ps.eFlags & EF_INVULNERABLE)) +ADDRLP4 400 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 404 +CNSTU4 0 +ASGNU4 +ADDRLP4 400 +INDIRP4 +CVPU4 4 +ADDRLP4 404 +INDIRU4 +EQU4 $476 +ADDRLP4 408 +ADDRLP4 400 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 408 +INDIRP4 +CVPU4 4 +ADDRLP4 404 +INDIRU4 +EQU4 $476 +ADDRLP4 408 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 67108864 +BANDI4 +CNSTI4 0 +EQI4 $476 +line 1061 +;1061: { +line 1062 +;1062: if (ent->client->invulnerableTimer <= level.time) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1564 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +GTI4 $478 +line 1063 +;1063: { +line 1064 +;1064: ent->client->ps.eFlags &= ~EF_INVULNERABLE; +ADDRLP4 412 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 412 +INDIRP4 +ADDRLP4 412 +INDIRP4 +INDIRI4 +CNSTI4 -67108865 +BANDI4 +ASGNI4 +line 1065 +;1065: } +LABELV $478 +line 1066 +;1066: } +LABELV $476 +line 1069 +;1067: +;1068: // check for inactivity timer, but never drop the local client of a non-dedicated server +;1069: if ( !ClientInactivityTimer( client ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 412 +ADDRGP4 ClientInactivityTimer +CALLI4 +ASGNI4 +ADDRLP4 412 +INDIRI4 +CNSTI4 0 +NEI4 $481 +line 1070 +;1070: return; +ADDRGP4 $438 +JUMPV +LABELV $481 +line 1074 +;1071: } +;1072: +;1073: // clear the rewards if time +;1074: if ( level.time > client->rewardTime ) { +ADDRGP4 level+32 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1684 +ADDP4 +INDIRI4 +LEI4 $483 +line 1075 +;1075: client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP ); +ADDRLP4 416 +ADDRLP4 4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 416 +INDIRP4 +ADDRLP4 416 +INDIRP4 +INDIRI4 +CNSTI4 -231497 +BANDI4 +ASGNI4 +line 1076 +;1076: } +LABELV $483 +line 1078 +;1077: +;1078: if ( client->noclip ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 1576 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $486 +line 1079 +;1079: client->ps.pm_type = PM_NOCLIP; +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 2 +ASGNI4 +line 1080 +;1080: } else if ( client->ps.eFlags & EF_DISINTEGRATION ) { +ADDRGP4 $487 +JUMPV +LABELV $486 +ADDRLP4 4 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 33554432 +BANDI4 +CNSTI4 0 +EQI4 $488 +line 1081 +;1081: client->ps.pm_type = PM_NOCLIP; +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 2 +ASGNI4 +line 1082 +;1082: } else if ( client->ps.stats[STAT_HEALTH] <= 0 ) { +ADDRGP4 $489 +JUMPV +LABELV $488 +ADDRLP4 4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $490 +line 1083 +;1083: client->ps.pm_type = PM_DEAD; +ADDRLP4 416 +CNSTI4 4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 416 +INDIRI4 +ADDP4 +ADDRLP4 416 +INDIRI4 +ASGNI4 +line 1084 +;1084: } else { +ADDRGP4 $491 +JUMPV +LABELV $490 +line 1085 +;1085: if (client->ps.forceGripChangeMovetype) +ADDRLP4 4 +INDIRP4 +CNSTI4 1276 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $492 +line 1086 +;1086: { +line 1087 +;1087: client->ps.pm_type = client->ps.forceGripChangeMovetype; +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1276 +ADDP4 +INDIRI4 +ASGNI4 +line 1088 +;1088: } +ADDRGP4 $493 +JUMPV +LABELV $492 +line 1090 +;1089: else +;1090: { +line 1091 +;1091: client->ps.pm_type = PM_NORMAL; +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1092 +;1092: } +LABELV $493 +line 1093 +;1093: } +LABELV $491 +LABELV $489 +LABELV $487 +line 1095 +;1094: +;1095: client->ps.gravity = g_gravity.value; +ADDRLP4 4 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDRGP4 g_gravity+8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1098 +;1096: +;1097: // set speed +;1098: client->ps.speed = g_speed.value; +ADDRLP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRGP4 g_speed+8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1099 +;1099: client->ps.basespeed = g_speed.value; +ADDRLP4 4 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDRGP4 g_speed+8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1101 +;1100: +;1101: if (ent->client->ps.duelInProgress) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1292 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $497 +line 1102 +;1102: { +line 1103 +;1103: gentity_t *duelAgainst = &g_entities[ent->client->ps.duelIndex]; +ADDRLP4 416 +CNSTI4 828 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1284 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1108 +;1104: +;1105: //Keep the time updated, so once this duel ends this player can't engage in a duel for another +;1106: //10 seconds. This will give other people a chance to engage in duels in case this player wants +;1107: //to engage again right after he's done fighting and someone else is waiting. +;1108: ent->client->ps.fd.privateDuelTime = level.time + 10000; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1228 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 10000 +ADDI4 +ASGNI4 +line 1110 +;1109: +;1110: if (ent->client->ps.duelTime < level.time) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1288 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +GEI4 $500 +line 1111 +;1111: { +line 1113 +;1112: //Bring out the sabers +;1113: if (ent->client->ps.weapon == WP_SABER && ent->client->ps.saberHolstered && +ADDRLP4 420 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 420 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $503 +ADDRLP4 424 +CNSTI4 0 +ASGNI4 +ADDRLP4 420 +INDIRP4 +CNSTI4 1300 +ADDP4 +INDIRI4 +ADDRLP4 424 +INDIRI4 +EQI4 $503 +ADDRLP4 420 +INDIRP4 +CNSTI4 1288 +ADDP4 +INDIRI4 +ADDRLP4 424 +INDIRI4 +EQI4 $503 +line 1115 +;1114: ent->client->ps.duelTime) +;1115: { +line 1116 +;1116: if (!saberOffSound || !saberOnSound) +ADDRLP4 428 +CNSTI4 0 +ASGNI4 +ADDRGP4 saberOffSound +INDIRI4 +ADDRLP4 428 +INDIRI4 +EQI4 $507 +ADDRGP4 saberOnSound +INDIRI4 +ADDRLP4 428 +INDIRI4 +NEI4 $505 +LABELV $507 +line 1117 +;1117: { +line 1118 +;1118: saberOffSound = G_SoundIndex("sound/weapons/saber/saberoffquick.wav"); +ADDRGP4 $508 +ARGP4 +ADDRLP4 432 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRGP4 saberOffSound +ADDRLP4 432 +INDIRI4 +ASGNI4 +line 1119 +;1119: saberOnSound = G_SoundIndex("sound/weapons/saber/saberon.wav"); +ADDRGP4 $509 +ARGP4 +ADDRLP4 436 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRGP4 saberOnSound +ADDRLP4 436 +INDIRI4 +ASGNI4 +line 1120 +;1120: } +LABELV $505 +line 1122 +;1121: +;1122: ent->client->ps.saberHolstered = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1300 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1123 +;1123: G_Sound(ent, CHAN_AUTO, saberOnSound); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 saberOnSound +INDIRI4 +ARGI4 +ADDRGP4 G_Sound +CALLV +pop +line 1125 +;1124: +;1125: G_AddEvent(ent, EV_PRIVATE_DUEL, 2); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1127 +;1126: +;1127: ent->client->ps.duelTime = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1288 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1128 +;1128: } +LABELV $503 +line 1130 +;1129: +;1130: if (duelAgainst && duelAgainst->client && duelAgainst->inuse && +ADDRLP4 432 +CNSTU4 0 +ASGNU4 +ADDRLP4 416 +INDIRP4 +CVPU4 4 +ADDRLP4 432 +INDIRU4 +EQU4 $501 +ADDRLP4 436 +ADDRLP4 416 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 436 +INDIRP4 +CVPU4 4 +ADDRLP4 432 +INDIRU4 +EQU4 $501 +ADDRLP4 440 +CNSTI4 0 +ASGNI4 +ADDRLP4 416 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +ADDRLP4 440 +INDIRI4 +EQI4 $501 +ADDRLP4 436 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $501 +ADDRLP4 436 +INDIRP4 +CNSTI4 1300 +ADDP4 +INDIRI4 +ADDRLP4 440 +INDIRI4 +EQI4 $501 +ADDRLP4 436 +INDIRP4 +CNSTI4 1288 +ADDP4 +INDIRI4 +ADDRLP4 440 +INDIRI4 +EQI4 $501 +line 1133 +;1131: duelAgainst->client->ps.weapon == WP_SABER && duelAgainst->client->ps.saberHolstered && +;1132: duelAgainst->client->ps.duelTime) +;1133: { +line 1134 +;1134: if (!saberOffSound || !saberOnSound) +ADDRLP4 444 +CNSTI4 0 +ASGNI4 +ADDRGP4 saberOffSound +INDIRI4 +ADDRLP4 444 +INDIRI4 +EQI4 $514 +ADDRGP4 saberOnSound +INDIRI4 +ADDRLP4 444 +INDIRI4 +NEI4 $512 +LABELV $514 +line 1135 +;1135: { +line 1136 +;1136: saberOffSound = G_SoundIndex("sound/weapons/saber/saberoffquick.wav"); +ADDRGP4 $508 +ARGP4 +ADDRLP4 448 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRGP4 saberOffSound +ADDRLP4 448 +INDIRI4 +ASGNI4 +line 1137 +;1137: saberOnSound = G_SoundIndex("sound/weapons/saber/saberon.wav"); +ADDRGP4 $509 +ARGP4 +ADDRLP4 452 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRGP4 saberOnSound +ADDRLP4 452 +INDIRI4 +ASGNI4 +line 1138 +;1138: } +LABELV $512 +line 1140 +;1139: +;1140: duelAgainst->client->ps.saberHolstered = qfalse; +ADDRLP4 416 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1300 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1141 +;1141: G_Sound(duelAgainst, CHAN_AUTO, saberOnSound); +ADDRLP4 416 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 saberOnSound +INDIRI4 +ARGI4 +ADDRGP4 G_Sound +CALLV +pop +line 1143 +;1142: +;1143: G_AddEvent(duelAgainst, EV_PRIVATE_DUEL, 2); +ADDRLP4 416 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1145 +;1144: +;1145: duelAgainst->client->ps.duelTime = 0; +ADDRLP4 416 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1288 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1146 +;1146: } +line 1147 +;1147: } +ADDRGP4 $501 +JUMPV +LABELV $500 +line 1149 +;1148: else +;1149: { +line 1150 +;1150: client->ps.speed = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1151 +;1151: client->ps.basespeed = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 64 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1152 +;1152: ucmd->forwardmove = 0; +ADDRLP4 384 +INDIRP4 +CNSTI4 24 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1153 +;1153: ucmd->rightmove = 0; +ADDRLP4 384 +INDIRP4 +CNSTI4 25 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1154 +;1154: ucmd->upmove = 0; +ADDRLP4 384 +INDIRP4 +CNSTI4 26 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1155 +;1155: } +LABELV $501 +line 1157 +;1156: +;1157: if (!duelAgainst || !duelAgainst->client || !duelAgainst->inuse || +ADDRLP4 424 +CNSTU4 0 +ASGNU4 +ADDRLP4 416 +INDIRP4 +CVPU4 4 +ADDRLP4 424 +INDIRU4 +EQU4 $519 +ADDRLP4 428 +ADDRLP4 416 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 428 +INDIRP4 +CVPU4 4 +ADDRLP4 424 +INDIRU4 +EQU4 $519 +ADDRLP4 416 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $519 +ADDRLP4 428 +INDIRP4 +CNSTI4 1284 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +EQI4 $515 +LABELV $519 +line 1159 +;1158: duelAgainst->client->ps.duelIndex != ent->s.number) +;1159: { +line 1160 +;1160: ent->client->ps.duelInProgress = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1292 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1161 +;1161: G_AddEvent(ent, EV_PRIVATE_DUEL, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1162 +;1162: } +ADDRGP4 $516 +JUMPV +LABELV $515 +line 1163 +;1163: else if (duelAgainst->health < 1 || duelAgainst->client->ps.stats[STAT_HEALTH] < 1) +ADDRLP4 436 +CNSTI4 1 +ASGNI4 +ADDRLP4 416 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 436 +INDIRI4 +LTI4 $522 +ADDRLP4 416 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +ADDRLP4 436 +INDIRI4 +GEI4 $520 +LABELV $522 +line 1164 +;1164: { +line 1165 +;1165: ent->client->ps.duelInProgress = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1292 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1166 +;1166: duelAgainst->client->ps.duelInProgress = 0; +ADDRLP4 416 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1292 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1168 +;1167: +;1168: G_AddEvent(ent, EV_PRIVATE_DUEL, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1169 +;1169: G_AddEvent(duelAgainst, EV_PRIVATE_DUEL, 0); +ADDRLP4 416 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1172 +;1170: +;1171: //Winner gets full health.. providing he's still alive +;1172: if (ent->health > 0 && ent->client->ps.stats[STAT_HEALTH] > 0) +ADDRLP4 440 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 444 +CNSTI4 0 +ASGNI4 +ADDRLP4 440 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 444 +INDIRI4 +LEI4 $523 +ADDRLP4 440 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +ADDRLP4 444 +INDIRI4 +LEI4 $523 +line 1173 +;1173: { +line 1174 +;1174: if (ent->health < ent->client->ps.stats[STAT_MAX_HEALTH]) +ADDRLP4 448 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 448 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 448 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +GEI4 $525 +line 1175 +;1175: { +line 1176 +;1176: ent->client->ps.stats[STAT_HEALTH] = ent->health = ent->client->ps.stats[STAT_MAX_HEALTH]; +ADDRLP4 452 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 456 +ADDRLP4 452 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 460 +ADDRLP4 456 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 452 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 460 +INDIRI4 +ASGNI4 +ADDRLP4 456 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRLP4 460 +INDIRI4 +ASGNI4 +line 1177 +;1177: } +LABELV $525 +line 1179 +;1178: +;1179: if (g_spawnInvulnerability.integer) +ADDRGP4 g_spawnInvulnerability+12 +INDIRI4 +CNSTI4 0 +EQI4 $527 +line 1180 +;1180: { +line 1181 +;1181: ent->client->ps.eFlags |= EF_INVULNERABLE; +ADDRLP4 452 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 452 +INDIRP4 +ADDRLP4 452 +INDIRP4 +INDIRI4 +CNSTI4 67108864 +BORI4 +ASGNI4 +line 1182 +;1182: ent->client->invulnerableTimer = level.time + g_spawnInvulnerability.integer; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1564 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ADDRGP4 g_spawnInvulnerability+12 +INDIRI4 +ADDI4 +ASGNI4 +line 1183 +;1183: } +LABELV $527 +line 1184 +;1184: } +LABELV $523 +line 1191 +;1185: +;1186: /* +;1187: trap_SendServerCommand( ent-g_entities, va("print \"%s %s\n\"", ent->client->pers.netname, G_GetStripEdString("SVINGAME", "PLDUELWINNER")) ); +;1188: trap_SendServerCommand( duelAgainst-g_entities, va("print \"%s %s\n\"", ent->client->pers.netname, G_GetStripEdString("SVINGAME", "PLDUELWINNER")) ); +;1189: */ +;1190: //Private duel announcements are now made globally because we only want one duel at a time. +;1191: if (ent->health > 0 && ent->client->ps.stats[STAT_HEALTH] > 0) +ADDRLP4 448 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 452 +CNSTI4 0 +ASGNI4 +ADDRLP4 448 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 452 +INDIRI4 +LEI4 $532 +ADDRLP4 448 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +ADDRLP4 452 +INDIRI4 +LEI4 $532 +line 1192 +;1192: { +line 1193 +;1193: trap_SendServerCommand( -1, va("cp \"%s %s %s!\n\"", ent->client->pers.netname, G_GetStripEdString("SVINGAME", "PLDUELWINNER"), duelAgainst->client->pers.netname) ); +ADDRGP4 $535 +ARGP4 +ADDRGP4 $536 +ARGP4 +ADDRLP4 456 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $534 +ARGP4 +ADDRLP4 460 +CNSTI4 408 +ASGNI4 +ADDRLP4 464 +CNSTI4 1416 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 460 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 464 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 456 +INDIRP4 +ARGP4 +ADDRLP4 416 +INDIRP4 +ADDRLP4 460 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 464 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 468 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 468 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1194 +;1194: } +ADDRGP4 $521 +JUMPV +LABELV $532 +line 1196 +;1195: else +;1196: { //it was a draw, because we both managed to die in the same frame +line 1197 +;1197: trap_SendServerCommand( -1, va("cp \"%s\n\"", G_GetStripEdString("SVINGAME", "PLDUELTIE")) ); +ADDRGP4 $535 +ARGP4 +ADDRGP4 $538 +ARGP4 +ADDRLP4 456 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $537 +ARGP4 +ADDRLP4 456 +INDIRP4 +ARGP4 +ADDRLP4 460 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 460 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1198 +;1198: } +line 1199 +;1199: } +ADDRGP4 $521 +JUMPV +LABELV $520 +line 1201 +;1200: else +;1201: { +line 1203 +;1202: vec3_t vSub; +;1203: float subLen = 0; +ADDRLP4 440 +CNSTF4 0 +ASGNF4 +line 1205 +;1204: +;1205: VectorSubtract(ent->client->ps.origin, duelAgainst->client->ps.origin, vSub); +ADDRLP4 456 +CNSTI4 408 +ASGNI4 +ADDRLP4 460 +ADDRFP4 0 +INDIRP4 +ADDRLP4 456 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 464 +CNSTI4 20 +ASGNI4 +ADDRLP4 468 +ADDRLP4 416 +INDIRP4 +ADDRLP4 456 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 444 +ADDRLP4 460 +INDIRP4 +INDIRP4 +ADDRLP4 464 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 468 +INDIRP4 +INDIRP4 +ADDRLP4 464 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 472 +CNSTI4 24 +ASGNI4 +ADDRLP4 444+4 +ADDRLP4 460 +INDIRP4 +INDIRP4 +ADDRLP4 472 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 468 +INDIRP4 +INDIRP4 +ADDRLP4 472 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 476 +CNSTI4 408 +ASGNI4 +ADDRLP4 480 +CNSTI4 28 +ASGNI4 +ADDRLP4 444+8 +ADDRFP4 0 +INDIRP4 +ADDRLP4 476 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 480 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 416 +INDIRP4 +ADDRLP4 476 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 480 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1206 +;1206: subLen = VectorLength(vSub); +ADDRLP4 444 +ARGP4 +ADDRLP4 484 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 440 +ADDRLP4 484 +INDIRF4 +ASGNF4 +line 1208 +;1207: +;1208: if (subLen >= 1024) +ADDRLP4 440 +INDIRF4 +CNSTF4 1149239296 +LTF4 $541 +line 1209 +;1209: { +line 1210 +;1210: ent->client->ps.duelInProgress = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1292 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1211 +;1211: duelAgainst->client->ps.duelInProgress = 0; +ADDRLP4 416 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1292 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1213 +;1212: +;1213: G_AddEvent(ent, EV_PRIVATE_DUEL, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1214 +;1214: G_AddEvent(duelAgainst, EV_PRIVATE_DUEL, 0); +ADDRLP4 416 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1216 +;1215: +;1216: trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "PLDUELSTOP")) ); +ADDRGP4 $535 +ARGP4 +ADDRGP4 $544 +ARGP4 +ADDRLP4 488 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $543 +ARGP4 +ADDRLP4 488 +INDIRP4 +ARGP4 +ADDRLP4 492 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 492 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1217 +;1217: } +LABELV $541 +line 1218 +;1218: } +LABELV $521 +LABELV $516 +line 1219 +;1219: } +LABELV $497 +line 1227 +;1220: +;1221: /* +;1222: if ( client->ps.powerups[PW_HASTE] ) { +;1223: client->ps.speed *= 1.3; +;1224: } +;1225: */ +;1226: +;1227: if (client->ps.usingATST && ent->health > 0) +ADDRLP4 416 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1304 +ADDP4 +INDIRI4 +ADDRLP4 416 +INDIRI4 +EQI4 $545 +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 416 +INDIRI4 +LEI4 $545 +line 1228 +;1228: { //we have special shot clip boxes as an ATST +line 1229 +;1229: ent->r.contents |= CONTENTS_NOSHOT; +ADDRLP4 420 +ADDRFP4 0 +INDIRP4 +CNSTI4 340 +ADDP4 +ASGNP4 +ADDRLP4 420 +INDIRP4 +ADDRLP4 420 +INDIRP4 +INDIRI4 +CNSTI4 2097152 +BORI4 +ASGNI4 +line 1230 +;1230: ATST_ManageDamageBoxes(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ATST_ManageDamageBoxes +CALLV +pop +line 1231 +;1231: } +ADDRGP4 $546 +JUMPV +LABELV $545 +line 1233 +;1232: else +;1233: { +line 1234 +;1234: ent->r.contents &= ~CONTENTS_NOSHOT; +ADDRLP4 420 +ADDRFP4 0 +INDIRP4 +CNSTI4 340 +ADDP4 +ASGNP4 +ADDRLP4 420 +INDIRP4 +ADDRLP4 420 +INDIRP4 +INDIRI4 +CNSTI4 -2097153 +BANDI4 +ASGNI4 +line 1235 +;1235: client->damageBoxHandle_Head = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 1636 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1236 +;1236: client->damageBoxHandle_RLeg = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 1640 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1237 +;1237: client->damageBoxHandle_LLeg = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 1644 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1238 +;1238: } +LABELV $546 +line 1244 +;1239: +;1240: //rww - moved this stuff into the pmove code so that it's predicted properly +;1241: //BG_AdjustClientSpeed(&client->ps, &client->pers.cmd, level.time); +;1242: +;1243: // set up for pmove +;1244: oldEventSequence = client->ps.eventSequence; +ADDRLP4 392 +ADDRLP4 4 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +ASGNI4 +line 1246 +;1245: +;1246: memset (&pm, 0, sizeof(pm)); +ADDRLP4 8 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 376 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1248 +;1247: +;1248: if ( ent->flags & FL_FORCE_GESTURE ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +CNSTI4 32768 +BANDI4 +CNSTI4 0 +EQI4 $547 +line 1249 +;1249: ent->flags &= ~FL_FORCE_GESTURE; +ADDRLP4 420 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +ASGNP4 +ADDRLP4 420 +INDIRP4 +ADDRLP4 420 +INDIRP4 +INDIRI4 +CNSTI4 -32769 +BANDI4 +ASGNI4 +line 1250 +;1250: ent->client->pers.cmd.buttons |= BUTTON_GESTURE; +ADDRLP4 424 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1388 +ADDP4 +ASGNP4 +ADDRLP4 424 +INDIRP4 +ADDRLP4 424 +INDIRP4 +INDIRI4 +CNSTI4 8 +BORI4 +ASGNI4 +line 1251 +;1251: } +LABELV $547 +line 1253 +;1252: +;1253: if (ent->client && ent->client->ps.fallingToDeath && +ADDRLP4 420 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 420 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $549 +ADDRLP4 424 +ADDRLP4 420 +INDIRP4 +CNSTI4 1340 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 424 +INDIRI4 +CNSTI4 0 +EQI4 $549 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 3000 +SUBI4 +ADDRLP4 424 +INDIRI4 +LEI4 $549 +line 1255 +;1254: (level.time - FALL_FADE_TIME) > ent->client->ps.fallingToDeath) +;1255: { //die! +line 1256 +;1256: player_die(ent, ent, ent, 100000, MOD_FALLING); +ADDRLP4 428 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 428 +INDIRP4 +ARGP4 +ADDRLP4 428 +INDIRP4 +ARGP4 +ADDRLP4 428 +INDIRP4 +ARGP4 +CNSTI4 100000 +ARGI4 +CNSTI4 34 +ARGI4 +ADDRGP4 player_die +CALLV +pop +line 1257 +;1257: respawn(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 respawn +CALLV +pop +line 1258 +;1258: ent->client->ps.fallingToDeath = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1340 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1260 +;1259: +;1260: G_MuteSound(ent->s.number, CHAN_VOICE); //stop screaming, because you are dead! +ADDRFP4 0 +INDIRP4 +INDIRI4 +ARGI4 +CNSTI4 3 +ARGI4 +ADDRGP4 G_MuteSound +CALLV +pop +line 1261 +;1261: } +LABELV $549 +line 1263 +;1262: +;1263: if (ent->client->ps.otherKillerTime > level.time && +ADDRLP4 428 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 428 +INDIRP4 +CNSTI4 752 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $552 +ADDRLP4 428 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +CNSTI4 1023 +EQI4 $552 +ADDRLP4 428 +INDIRP4 +CNSTI4 756 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +GEI4 $552 +line 1266 +;1264: ent->client->ps.groundEntityNum != ENTITYNUM_NONE && +;1265: ent->client->ps.otherKillerDebounceTime < level.time) +;1266: { +line 1267 +;1267: ent->client->ps.otherKillerTime = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 752 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1268 +;1268: ent->client->ps.otherKiller = ENTITYNUM_NONE; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 748 +ADDP4 +CNSTI4 1023 +ASGNI4 +line 1269 +;1269: } +ADDRGP4 $553 +JUMPV +LABELV $552 +line 1270 +;1270: else if (ent->client->ps.otherKillerTime > level.time && +ADDRLP4 432 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 432 +INDIRP4 +CNSTI4 752 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $556 +ADDRLP4 432 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +CNSTI4 1023 +NEI4 $556 +line 1272 +;1271: ent->client->ps.groundEntityNum == ENTITYNUM_NONE) +;1272: { +line 1273 +;1273: if (ent->client->ps.otherKillerDebounceTime < (level.time + 100)) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 756 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 100 +ADDI4 +GEI4 $559 +line 1274 +;1274: { +line 1275 +;1275: ent->client->ps.otherKillerDebounceTime = level.time + 100; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 756 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 100 +ADDI4 +ASGNI4 +line 1276 +;1276: } +LABELV $559 +line 1277 +;1277: } +LABELV $556 +LABELV $553 +line 1282 +;1278: +;1279:// WP_ForcePowersUpdate( ent, msec, ucmd); //update any active force powers +;1280:// WP_SaberPositionUpdate(ent, ucmd); //check the server-side saber point, do apprioriate server-side actions (effects are cs-only) +;1281: +;1282: if ((ent->client->pers.cmd.buttons & BUTTON_USE) && ent->client->ps.useDelay < level.time) +ADDRLP4 436 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 436 +INDIRP4 +CNSTI4 1388 +ADDP4 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +EQI4 $563 +ADDRLP4 436 +INDIRP4 +CNSTI4 1344 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +GEI4 $563 +line 1283 +;1283: { +line 1284 +;1284: TryUse(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 TryUse +CALLV +pop +line 1285 +;1285: ent->client->ps.useDelay = level.time + 100; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1344 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 100 +ADDI4 +ASGNI4 +line 1286 +;1286: } +LABELV $563 +line 1288 +;1287: +;1288: pm.ps = &client->ps; +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1289 +;1289: pm.cmd = *ucmd; +ADDRLP4 8+4 +ADDRLP4 384 +INDIRP4 +INDIRB +ASGNB 28 +line 1290 +;1290: if ( pm.ps->pm_type == PM_DEAD ) { +ADDRLP4 440 +CNSTI4 4 +ASGNI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 440 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 440 +INDIRI4 +NEI4 $568 +line 1291 +;1291: pm.tracemask = MASK_PLAYERSOLID & ~CONTENTS_BODY; +ADDRLP4 8+32 +CNSTI4 17 +ASGNI4 +line 1292 +;1292: } +ADDRGP4 $569 +JUMPV +LABELV $568 +line 1293 +;1293: else if ( ent->r.svFlags & SVF_BOT ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $571 +line 1294 +;1294: pm.tracemask = MASK_PLAYERSOLID | CONTENTS_BOTCLIP; +ADDRLP4 8+32 +CNSTI4 337 +ASGNI4 +line 1295 +;1295: } +ADDRGP4 $572 +JUMPV +LABELV $571 +line 1296 +;1296: else { +line 1297 +;1297: pm.tracemask = MASK_PLAYERSOLID; +ADDRLP4 8+32 +CNSTI4 273 +ASGNI4 +line 1298 +;1298: } +LABELV $572 +LABELV $569 +line 1299 +;1299: pm.trace = trap_Trace; +ADDRLP4 8+240 +ADDRGP4 trap_Trace +ASGNP4 +line 1300 +;1300: pm.pointcontents = trap_PointContents; +ADDRLP4 8+244 +ADDRGP4 trap_PointContents +ASGNP4 +line 1301 +;1301: pm.debugLevel = g_debugMove.integer; +ADDRLP4 8+36 +ADDRGP4 g_debugMove+12 +INDIRI4 +ASGNI4 +line 1302 +;1302: pm.noFootsteps = ( g_dmflags.integer & DF_NO_FOOTSTEPS ) > 0; +ADDRGP4 g_dmflags+12 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +LEI4 $582 +ADDRLP4 444 +CNSTI4 1 +ASGNI4 +ADDRGP4 $583 +JUMPV +LABELV $582 +ADDRLP4 444 +CNSTI4 0 +ASGNI4 +LABELV $583 +ADDRLP4 8+40 +ADDRLP4 444 +INDIRI4 +ASGNI4 +line 1304 +;1303: +;1304: pm.pmove_fixed = pmove_fixed.integer | client->pers.pmoveFixed; +ADDRLP4 8+232 +ADDRGP4 pmove_fixed+12 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1412 +ADDP4 +INDIRI4 +BORI4 +ASGNI4 +line 1305 +;1305: pm.pmove_msec = pmove_msec.integer; +ADDRLP4 8+236 +ADDRGP4 pmove_msec+12 +INDIRI4 +ASGNI4 +line 1307 +;1306: +;1307: pm.animations = bgGlobalAnimations;//NULL; +ADDRLP4 8+224 +ADDRGP4 bgGlobalAnimations +ASGNP4 +line 1309 +;1308: +;1309: pm.gametype = g_gametype.integer; +ADDRLP4 8+220 +ADDRGP4 g_gametype+12 +INDIRI4 +ASGNI4 +line 1311 +;1310: +;1311: VectorCopy( client->ps.origin, client->oldOrigin ); +ADDRLP4 4 +INDIRP4 +CNSTI4 1596 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 1313 +;1312: +;1313: if (level.intermissionQueued != 0 && g_singlePlayer.integer) { +ADDRLP4 452 +CNSTI4 0 +ASGNI4 +ADDRGP4 level+9004 +INDIRI4 +ADDRLP4 452 +INDIRI4 +EQI4 $591 +ADDRGP4 g_singlePlayer+12 +INDIRI4 +ADDRLP4 452 +INDIRI4 +EQI4 $591 +line 1314 +;1314: if ( level.time - level.intermissionQueued >= 1000 ) { +ADDRGP4 level+32 +INDIRI4 +ADDRGP4 level+9004 +INDIRI4 +SUBI4 +CNSTI4 1000 +LTI4 $595 +line 1315 +;1315: pm.cmd.buttons = 0; +ADDRLP4 8+4+16 +CNSTI4 0 +ASGNI4 +line 1316 +;1316: pm.cmd.forwardmove = 0; +ADDRLP4 8+4+24 +CNSTI1 0 +ASGNI1 +line 1317 +;1317: pm.cmd.rightmove = 0; +ADDRLP4 8+4+25 +CNSTI1 0 +ASGNI1 +line 1318 +;1318: pm.cmd.upmove = 0; +ADDRLP4 8+4+26 +CNSTI1 0 +ASGNI1 +line 1319 +;1319: if ( level.time - level.intermissionQueued >= 2000 && level.time - level.intermissionQueued <= 2500 ) { +ADDRGP4 level+32 +INDIRI4 +ADDRGP4 level+9004 +INDIRI4 +SUBI4 +CNSTI4 2000 +LTI4 $607 +ADDRGP4 level+32 +INDIRI4 +ADDRGP4 level+9004 +INDIRI4 +SUBI4 +CNSTI4 2500 +GTI4 $607 +line 1320 +;1320: trap_SendConsoleCommand( EXEC_APPEND, "centerview\n"); +CNSTI4 2 +ARGI4 +ADDRGP4 $613 +ARGP4 +ADDRGP4 trap_SendConsoleCommand +CALLV +pop +line 1321 +;1321: } +LABELV $607 +line 1322 +;1322: ent->client->ps.pm_type = PM_SPINTERMISSION; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 7 +ASGNI4 +line 1323 +;1323: } +LABELV $595 +line 1324 +;1324: } +LABELV $591 +line 1326 +;1325: +;1326: for ( i = 0 ; i < MAX_CLIENTS ; i++ ) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $614 +line 1327 +;1327: { +line 1328 +;1328: if (g_entities[i].inuse && g_entities[i].client) +ADDRLP4 456 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 456 +INDIRI4 +ADDRGP4 g_entities+412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $618 +ADDRLP4 456 +INDIRI4 +ADDRGP4 g_entities+408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $618 +line 1329 +;1329: { +line 1330 +;1330: pm.bgClients[i] = &g_entities[i].client->ps; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8+248 +ADDP4 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities+408 +ADDP4 +INDIRP4 +ASGNP4 +line 1331 +;1331: } +LABELV $618 +line 1332 +;1332: } +LABELV $615 +line 1326 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 32 +LTI4 $614 +line 1334 +;1333: +;1334: if (ent->client->ps.saberLockTime > level.time) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 524 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $624 +line 1335 +;1335: { +line 1336 +;1336: gentity_t *blockOpp = &g_entities[ent->client->ps.saberLockEnemy]; +ADDRLP4 456 +CNSTI4 828 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1338 +;1337: +;1338: if (blockOpp && blockOpp->inuse && blockOpp->client) +ADDRLP4 464 +CNSTU4 0 +ASGNU4 +ADDRLP4 456 +INDIRP4 +CVPU4 4 +ADDRLP4 464 +INDIRU4 +EQU4 $627 +ADDRLP4 456 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $627 +ADDRLP4 456 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 464 +INDIRU4 +EQU4 $627 +line 1339 +;1339: { +line 1343 +;1340: vec3_t lockDir, lockAng; +;1341: +;1342: //VectorClear( ent->client->ps.velocity ); +;1343: VectorSubtract( blockOpp->r.currentOrigin, ent->r.currentOrigin, lockDir ); +ADDRLP4 496 +CNSTI4 368 +ASGNI4 +ADDRLP4 500 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 468 +ADDRLP4 456 +INDIRP4 +ADDRLP4 496 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 500 +INDIRP4 +ADDRLP4 496 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 504 +CNSTI4 372 +ASGNI4 +ADDRLP4 468+4 +ADDRLP4 456 +INDIRP4 +ADDRLP4 504 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 500 +INDIRP4 +ADDRLP4 504 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 508 +CNSTI4 376 +ASGNI4 +ADDRLP4 468+8 +ADDRLP4 456 +INDIRP4 +ADDRLP4 508 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 508 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1345 +;1344: //lockAng[YAW] = vectoyaw( defDir ); +;1345: vectoangles(lockDir, lockAng); +ADDRLP4 468 +ARGP4 +ADDRLP4 480 +ARGP4 +ADDRGP4 vectoangles +CALLV +pop +line 1346 +;1346: SetClientViewAngle( ent, lockAng ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 480 +ARGP4 +ADDRGP4 SetClientViewAngle +CALLV +pop +line 1347 +;1347: } +LABELV $627 +line 1349 +;1348: +;1349: if ( ( ent->client->buttons & BUTTON_ATTACK ) && ! ( ent->client->oldbuttons & BUTTON_ATTACK ) ) +ADDRLP4 468 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 472 +CNSTI4 1 +ASGNI4 +ADDRLP4 476 +CNSTI4 0 +ASGNI4 +ADDRLP4 468 +INDIRP4 +CNSTI4 1584 +ADDP4 +INDIRI4 +ADDRLP4 472 +INDIRI4 +BANDI4 +ADDRLP4 476 +INDIRI4 +EQI4 $631 +ADDRLP4 468 +INDIRP4 +CNSTI4 1588 +ADDP4 +INDIRI4 +ADDRLP4 472 +INDIRI4 +BANDI4 +ADDRLP4 476 +INDIRI4 +NEI4 $631 +line 1350 +;1350: { +line 1351 +;1351: ent->client->ps.saberLockHits++; +ADDRLP4 480 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 536 +ADDP4 +ASGNP4 +ADDRLP4 480 +INDIRP4 +ADDRLP4 480 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1352 +;1352: } +LABELV $631 +line 1353 +;1353: if (ent->client->ps.saberLockHits > 2) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRI4 +CNSTI4 2 +LEI4 $625 +line 1354 +;1354: { +line 1355 +;1355: if (!ent->client->ps.saberLockAdvance) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 540 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $635 +line 1356 +;1356: { +line 1357 +;1357: ent->client->ps.saberLockHits -= 3; +ADDRLP4 480 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 536 +ADDP4 +ASGNP4 +ADDRLP4 480 +INDIRP4 +ADDRLP4 480 +INDIRP4 +INDIRI4 +CNSTI4 3 +SUBI4 +ASGNI4 +line 1358 +;1358: } +LABELV $635 +line 1359 +;1359: ent->client->ps.saberLockAdvance = qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 540 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1360 +;1360: } +line 1361 +;1361: } +ADDRGP4 $625 +JUMPV +LABELV $624 +line 1363 +;1362: else +;1363: { +line 1364 +;1364: ent->client->ps.saberLockFrame = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 532 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1365 +;1365: } +LABELV $625 +line 1367 +;1366: +;1367: Pmove (&pm); +ADDRLP4 8 +ARGP4 +ADDRGP4 Pmove +CALLV +pop +line 1369 +;1368: +;1369: switch(pm.cmd.generic_cmd) +ADDRLP4 456 +ADDRLP4 8+4+23 +INDIRU1 +CVUI4 1 +ASGNI4 +ADDRLP4 456 +INDIRI4 +CNSTI4 0 +LTI4 $638 +ADDRLP4 456 +INDIRI4 +CNSTI4 20 +GTI4 $638 +ADDRLP4 456 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $679 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $679 +address $638 +address $643 +address $644 +address $645 +address $646 +address $647 +address $648 +address $649 +address $650 +address $651 +address $652 +address $653 +address $654 +address $655 +address $656 +address $659 +address $662 +address $665 +address $670 +address $675 +address $678 +code +line 1370 +;1370: { +line 1372 +;1371: case 0: +;1372: break; +LABELV $643 +line 1374 +;1373: case GENCMD_SABERSWITCH: +;1374: Cmd_ToggleSaber_f(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Cmd_ToggleSaber_f +CALLV +pop +line 1375 +;1375: break; +ADDRGP4 $638 +JUMPV +LABELV $644 +line 1377 +;1376: case GENCMD_ENGAGE_DUEL: +;1377: Cmd_EngageDuel_f(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Cmd_EngageDuel_f +CALLV +pop +line 1378 +;1378: break; +ADDRGP4 $638 +JUMPV +LABELV $645 +line 1380 +;1379: case GENCMD_FORCE_HEAL: +;1380: ForceHeal(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceHeal +CALLV +pop +line 1381 +;1381: break; +ADDRGP4 $638 +JUMPV +LABELV $646 +line 1383 +;1382: case GENCMD_FORCE_SPEED: +;1383: ForceSpeed(ent, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 ForceSpeed +CALLV +pop +line 1384 +;1384: break; +ADDRGP4 $638 +JUMPV +LABELV $647 +line 1386 +;1385: case GENCMD_FORCE_THROW: +;1386: ForceThrow(ent, qfalse); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 ForceThrow +CALLV +pop +line 1387 +;1387: break; +ADDRGP4 $638 +JUMPV +LABELV $648 +line 1389 +;1388: case GENCMD_FORCE_PULL: +;1389: ForceThrow(ent, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 ForceThrow +CALLV +pop +line 1390 +;1390: break; +ADDRGP4 $638 +JUMPV +LABELV $649 +line 1392 +;1391: case GENCMD_FORCE_DISTRACT: +;1392: ForceTelepathy(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceTelepathy +CALLV +pop +line 1393 +;1393: break; +ADDRGP4 $638 +JUMPV +LABELV $650 +line 1395 +;1394: case GENCMD_FORCE_RAGE: +;1395: ForceRage(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceRage +CALLV +pop +line 1396 +;1396: break; +ADDRGP4 $638 +JUMPV +LABELV $651 +line 1398 +;1397: case GENCMD_FORCE_PROTECT: +;1398: ForceProtect(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceProtect +CALLV +pop +line 1399 +;1399: break; +ADDRGP4 $638 +JUMPV +LABELV $652 +line 1401 +;1400: case GENCMD_FORCE_ABSORB: +;1401: ForceAbsorb(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceAbsorb +CALLV +pop +line 1402 +;1402: break; +ADDRGP4 $638 +JUMPV +LABELV $653 +line 1404 +;1403: case GENCMD_FORCE_HEALOTHER: +;1404: ForceTeamHeal(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceTeamHeal +CALLV +pop +line 1405 +;1405: break; +ADDRGP4 $638 +JUMPV +LABELV $654 +line 1407 +;1406: case GENCMD_FORCE_FORCEPOWEROTHER: +;1407: ForceTeamForceReplenish(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceTeamForceReplenish +CALLV +pop +line 1408 +;1408: break; +ADDRGP4 $638 +JUMPV +LABELV $655 +line 1410 +;1409: case GENCMD_FORCE_SEEING: +;1410: ForceSeeing(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ForceSeeing +CALLV +pop +line 1411 +;1411: break; +ADDRGP4 $638 +JUMPV +LABELV $656 +line 1413 +;1412: case GENCMD_USE_SEEKER: +;1413: if ( (ent->client->ps.stats[STAT_HOLDABLE_ITEMS] & (1 << HI_SEEKER)) && +ADDRLP4 464 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 464 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $638 +ADDRLP4 464 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 468 +ADDRGP4 G_ItemUsable +CALLI4 +ASGNI4 +ADDRLP4 468 +INDIRI4 +CNSTI4 0 +EQI4 $638 +line 1415 +;1414: G_ItemUsable(&ent->client->ps, HI_SEEKER) ) +;1415: { +line 1416 +;1416: ItemUse_Seeker(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Seeker +CALLV +pop +line 1417 +;1417: G_AddEvent(ent, EV_USE_ITEM0+HI_SEEKER, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 41 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1418 +;1418: ent->client->ps.stats[STAT_HOLDABLE_ITEMS] &= ~(1 << HI_SEEKER); +ADDRLP4 472 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 224 +ADDP4 +ASGNP4 +ADDRLP4 472 +INDIRP4 +ADDRLP4 472 +INDIRP4 +INDIRI4 +CNSTI4 -3 +BANDI4 +ASGNI4 +line 1419 +;1419: } +line 1420 +;1420: break; +ADDRGP4 $638 +JUMPV +LABELV $659 +line 1422 +;1421: case GENCMD_USE_FIELD: +;1422: if ( (ent->client->ps.stats[STAT_HOLDABLE_ITEMS] & (1 << HI_SHIELD)) && +ADDRLP4 472 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 472 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $638 +ADDRLP4 472 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRLP4 476 +ADDRGP4 G_ItemUsable +CALLI4 +ASGNI4 +ADDRLP4 476 +INDIRI4 +CNSTI4 0 +EQI4 $638 +line 1424 +;1423: G_ItemUsable(&ent->client->ps, HI_SHIELD) ) +;1424: { +line 1425 +;1425: ItemUse_Shield(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Shield +CALLV +pop +line 1426 +;1426: G_AddEvent(ent, EV_USE_ITEM0+HI_SHIELD, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 42 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1427 +;1427: ent->client->ps.stats[STAT_HOLDABLE_ITEMS] &= ~(1 << HI_SHIELD); +ADDRLP4 480 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 224 +ADDP4 +ASGNP4 +ADDRLP4 480 +INDIRP4 +ADDRLP4 480 +INDIRP4 +INDIRI4 +CNSTI4 -5 +BANDI4 +ASGNI4 +line 1428 +;1428: } +line 1429 +;1429: break; +ADDRGP4 $638 +JUMPV +LABELV $662 +line 1431 +;1430: case GENCMD_USE_BACTA: +;1431: if ( (ent->client->ps.stats[STAT_HOLDABLE_ITEMS] & (1 << HI_MEDPAC)) && +ADDRLP4 480 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 480 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $638 +ADDRLP4 480 +INDIRP4 +ARGP4 +CNSTI4 3 +ARGI4 +ADDRLP4 484 +ADDRGP4 G_ItemUsable +CALLI4 +ASGNI4 +ADDRLP4 484 +INDIRI4 +CNSTI4 0 +EQI4 $638 +line 1433 +;1432: G_ItemUsable(&ent->client->ps, HI_MEDPAC) ) +;1433: { +line 1434 +;1434: ItemUse_MedPack(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_MedPack +CALLV +pop +line 1435 +;1435: G_AddEvent(ent, EV_USE_ITEM0+HI_MEDPAC, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 43 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1436 +;1436: ent->client->ps.stats[STAT_HOLDABLE_ITEMS] &= ~(1 << HI_MEDPAC); +ADDRLP4 488 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 224 +ADDP4 +ASGNP4 +ADDRLP4 488 +INDIRP4 +ADDRLP4 488 +INDIRP4 +INDIRI4 +CNSTI4 -9 +BANDI4 +ASGNI4 +line 1437 +;1437: } +line 1438 +;1438: break; +ADDRGP4 $638 +JUMPV +LABELV $665 +line 1440 +;1439: case GENCMD_USE_ELECTROBINOCULARS: +;1440: if ( (ent->client->ps.stats[STAT_HOLDABLE_ITEMS] & (1 << HI_BINOCULARS)) && +ADDRLP4 488 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 488 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +EQI4 $638 +ADDRLP4 488 +INDIRP4 +ARGP4 +CNSTI4 5 +ARGI4 +ADDRLP4 492 +ADDRGP4 G_ItemUsable +CALLI4 +ASGNI4 +ADDRLP4 492 +INDIRI4 +CNSTI4 0 +EQI4 $638 +line 1442 +;1441: G_ItemUsable(&ent->client->ps, HI_BINOCULARS) ) +;1442: { +line 1443 +;1443: ItemUse_Binoculars(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Binoculars +CALLV +pop +line 1444 +;1444: if (ent->client->ps.zoomMode == 0) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1320 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $668 +line 1445 +;1445: { +line 1446 +;1446: G_AddEvent(ent, EV_USE_ITEM0+HI_BINOCULARS, 1); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 45 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1447 +;1447: } +ADDRGP4 $638 +JUMPV +LABELV $668 +line 1449 +;1448: else +;1449: { +line 1450 +;1450: G_AddEvent(ent, EV_USE_ITEM0+HI_BINOCULARS, 2); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 45 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1451 +;1451: } +line 1452 +;1452: } +line 1453 +;1453: break; +ADDRGP4 $638 +JUMPV +LABELV $670 +line 1455 +;1454: case GENCMD_ZOOM: +;1455: if ( (ent->client->ps.stats[STAT_HOLDABLE_ITEMS] & (1 << HI_BINOCULARS)) && +ADDRLP4 496 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 496 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +EQI4 $638 +ADDRLP4 496 +INDIRP4 +ARGP4 +CNSTI4 5 +ARGI4 +ADDRLP4 500 +ADDRGP4 G_ItemUsable +CALLI4 +ASGNI4 +ADDRLP4 500 +INDIRI4 +CNSTI4 0 +EQI4 $638 +line 1457 +;1456: G_ItemUsable(&ent->client->ps, HI_BINOCULARS) ) +;1457: { +line 1458 +;1458: ItemUse_Binoculars(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Binoculars +CALLV +pop +line 1459 +;1459: if (ent->client->ps.zoomMode == 0) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1320 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $673 +line 1460 +;1460: { +line 1461 +;1461: G_AddEvent(ent, EV_USE_ITEM0+HI_BINOCULARS, 1); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 45 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1462 +;1462: } +ADDRGP4 $638 +JUMPV +LABELV $673 +line 1464 +;1463: else +;1464: { +line 1465 +;1465: G_AddEvent(ent, EV_USE_ITEM0+HI_BINOCULARS, 2); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 45 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1466 +;1466: } +line 1467 +;1467: } +line 1468 +;1468: break; +ADDRGP4 $638 +JUMPV +LABELV $675 +line 1470 +;1469: case GENCMD_USE_SENTRY: +;1470: if ( (ent->client->ps.stats[STAT_HOLDABLE_ITEMS] & (1 << HI_SENTRY_GUN)) && +ADDRLP4 504 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 504 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRI4 +CNSTI4 64 +BANDI4 +CNSTI4 0 +EQI4 $638 +ADDRLP4 504 +INDIRP4 +ARGP4 +CNSTI4 6 +ARGI4 +ADDRLP4 508 +ADDRGP4 G_ItemUsable +CALLI4 +ASGNI4 +ADDRLP4 508 +INDIRI4 +CNSTI4 0 +EQI4 $638 +line 1472 +;1471: G_ItemUsable(&ent->client->ps, HI_SENTRY_GUN) ) +;1472: { +line 1473 +;1473: ItemUse_Sentry(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ItemUse_Sentry +CALLV +pop +line 1474 +;1474: G_AddEvent(ent, EV_USE_ITEM0+HI_SENTRY_GUN, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 46 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 1475 +;1475: ent->client->ps.stats[STAT_HOLDABLE_ITEMS] &= ~(1 << HI_SENTRY_GUN); +ADDRLP4 512 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 224 +ADDP4 +ASGNP4 +ADDRLP4 512 +INDIRP4 +ADDRLP4 512 +INDIRP4 +INDIRI4 +CNSTI4 -65 +BANDI4 +ASGNI4 +line 1476 +;1476: } +line 1477 +;1477: break; +ADDRGP4 $638 +JUMPV +LABELV $678 +line 1479 +;1478: case GENCMD_SABERATTACKCYCLE: +;1479: Cmd_SaberAttackCycle_f(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Cmd_SaberAttackCycle_f +CALLV +pop +line 1480 +;1480: break; +line 1482 +;1481: default: +;1482: break; +LABELV $638 +line 1486 +;1483: } +;1484: +;1485: // save results of pmove +;1486: if ( ent->client->ps.eventSequence != oldEventSequence ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +ADDRLP4 392 +INDIRI4 +EQI4 $680 +line 1487 +;1487: ent->eventTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 488 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 1488 +;1488: } +LABELV $680 +line 1489 +;1489: if (g_smoothClients.integer) { +ADDRGP4 g_smoothClients+12 +INDIRI4 +CNSTI4 0 +EQI4 $683 +line 1490 +;1490: BG_PlayerStateToEntityStateExtraPolate( &ent->client->ps, &ent->s, ent->client->ps.commandTime, qtrue ); +ADDRLP4 464 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 468 +ADDRLP4 464 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 468 +INDIRP4 +ARGP4 +ADDRLP4 464 +INDIRP4 +ARGP4 +ADDRLP4 468 +INDIRP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 BG_PlayerStateToEntityStateExtraPolate +CALLV +pop +line 1491 +;1491: } +ADDRGP4 $684 +JUMPV +LABELV $683 +line 1492 +;1492: else { +line 1493 +;1493: BG_PlayerStateToEntityState( &ent->client->ps, &ent->s, qtrue ); +ADDRLP4 464 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 464 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 464 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 BG_PlayerStateToEntityState +CALLV +pop +line 1494 +;1494: } +LABELV $684 +line 1495 +;1495: SendPendingPredictableEvents( &ent->client->ps ); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 SendPendingPredictableEvents +CALLV +pop +line 1497 +;1496: +;1497: if ( !( ent->client->ps.eFlags & EF_FIRING ) ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 256 +BANDI4 +CNSTI4 0 +NEI4 $686 +line 1498 +;1498: client->fireHeld = qfalse; // for grapple +ADDRLP4 4 +INDIRP4 +CNSTI4 1696 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1499 +;1499: } +LABELV $686 +line 1502 +;1500: +;1501: // use the snapped origin for linking so it matches client predicted versions +;1502: VectorCopy( ent->s.pos.trBase, ent->r.currentOrigin ); +ADDRLP4 464 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 464 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRLP4 464 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 1504 +;1503: +;1504: VectorCopy (pm.mins, ent->r.mins); +ADDRFP4 0 +INDIRP4 +CNSTI4 316 +ADDP4 +ADDRLP4 8+188 +INDIRB +ASGNB 12 +line 1505 +;1505: VectorCopy (pm.maxs, ent->r.maxs); +ADDRFP4 0 +INDIRP4 +CNSTI4 328 +ADDP4 +ADDRLP4 8+200 +INDIRB +ASGNB 12 +line 1507 +;1506: +;1507: ent->waterlevel = pm.waterlevel; +ADDRFP4 0 +INDIRP4 +CNSTI4 748 +ADDP4 +ADDRLP4 8+216 +INDIRI4 +ASGNI4 +line 1508 +;1508: ent->watertype = pm.watertype; +ADDRFP4 0 +INDIRP4 +CNSTI4 744 +ADDP4 +ADDRLP4 8+212 +INDIRI4 +ASGNI4 +line 1511 +;1509: +;1510: // execute client events +;1511: ClientEvents( ent, oldEventSequence ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 392 +INDIRI4 +ARGI4 +ADDRGP4 ClientEvents +CALLV +pop +line 1513 +;1512: +;1513: if ( pm.useEvent ) +ADDRLP4 8+184 +INDIRI4 +CNSTI4 0 +EQI4 $692 +line 1514 +;1514: { +line 1517 +;1515: //TODO: Use +;1516:// TryUse( ent ); +;1517: } +LABELV $692 +line 1520 +;1518: +;1519: // link entity now, after any personal teleporters have been used +;1520: trap_LinkEntity (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 1521 +;1521: if ( !ent->client->noclip ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1576 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $695 +line 1522 +;1522: G_TouchTriggers( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_TouchTriggers +CALLV +pop +line 1523 +;1523: } +LABELV $695 +line 1526 +;1524: +;1525: // NOTE: now copy the exact origin over otherwise clients can be snapped into solid +;1526: VectorCopy( ent->client->ps.origin, ent->r.currentOrigin ); +ADDRLP4 468 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 468 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRLP4 468 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 1532 +;1527: +;1528: //test for solid areas in the AAS file +;1529:// BotTestAAS(ent->r.currentOrigin); +;1530: +;1531: // touch other objects +;1532: ClientImpacts( ent, &pm ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 ClientImpacts +CALLV +pop +line 1535 +;1533: +;1534: // save results of triggers and client events +;1535: if (ent->client->ps.eventSequence != oldEventSequence) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +ADDRLP4 392 +INDIRI4 +EQI4 $697 +line 1536 +;1536: ent->eventTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 488 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 1537 +;1537: } +LABELV $697 +line 1540 +;1538: +;1539: // swap and latch button actions +;1540: client->oldbuttons = client->buttons; +ADDRLP4 4 +INDIRP4 +CNSTI4 1588 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1584 +ADDP4 +INDIRI4 +ASGNI4 +line 1541 +;1541: client->buttons = ucmd->buttons; +ADDRLP4 4 +INDIRP4 +CNSTI4 1584 +ADDP4 +ADDRLP4 384 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ASGNI4 +line 1542 +;1542: client->latched_buttons |= client->buttons & ~client->oldbuttons; +ADDRLP4 480 +ADDRLP4 4 +INDIRP4 +CNSTI4 1592 +ADDP4 +ASGNP4 +ADDRLP4 480 +INDIRP4 +ADDRLP4 480 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1584 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1588 +ADDP4 +INDIRI4 +BCOMI4 +BANDI4 +BORI4 +ASGNI4 +line 1545 +;1543: +;1544: // Did we kick someone in our pmove sequence? +;1545: if (client->ps.forceKickFlip) +ADDRLP4 4 +INDIRP4 +CNSTI4 1280 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $700 +line 1546 +;1546: { +line 1547 +;1547: gentity_t *faceKicked = &g_entities[client->ps.forceKickFlip-1]; +ADDRLP4 484 +CNSTI4 828 +ADDRLP4 4 +INDIRP4 +CNSTI4 1280 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities-828 +ADDP4 +ASGNP4 +line 1549 +;1548: +;1549: if (faceKicked && faceKicked->client && (!OnSameTeam(ent, faceKicked) || g_friendlyFire.integer) && +ADDRLP4 492 +CNSTU4 0 +ASGNU4 +ADDRLP4 484 +INDIRP4 +CVPU4 4 +ADDRLP4 492 +INDIRU4 +EQU4 $703 +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 492 +INDIRU4 +EQU4 $703 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 484 +INDIRP4 +ARGP4 +ADDRLP4 496 +ADDRGP4 OnSameTeam +CALLI4 +ASGNI4 +ADDRLP4 500 +CNSTI4 0 +ASGNI4 +ADDRLP4 496 +INDIRI4 +ADDRLP4 500 +INDIRI4 +EQI4 $706 +ADDRGP4 g_friendlyFire+12 +INDIRI4 +ADDRLP4 500 +INDIRI4 +EQI4 $703 +LABELV $706 +ADDRLP4 504 +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 504 +INDIRP4 +CNSTI4 1292 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $707 +ADDRLP4 504 +INDIRP4 +CNSTI4 1284 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +NEI4 $703 +LABELV $707 +ADDRLP4 508 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 508 +INDIRP4 +CNSTI4 1292 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $708 +ADDRLP4 508 +INDIRP4 +CNSTI4 1284 +ADDP4 +INDIRI4 +ADDRLP4 484 +INDIRP4 +INDIRI4 +NEI4 $703 +LABELV $708 +line 1552 +;1550: (!faceKicked->client->ps.duelInProgress || faceKicked->client->ps.duelIndex == ent->s.number) && +;1551: (!ent->client->ps.duelInProgress || ent->client->ps.duelIndex == faceKicked->s.number)) +;1552: { +line 1553 +;1553: if ( faceKicked && faceKicked->client && faceKicked->health && faceKicked->takedamage ) +ADDRLP4 516 +CNSTU4 0 +ASGNU4 +ADDRLP4 484 +INDIRP4 +CVPU4 4 +ADDRLP4 516 +INDIRU4 +EQU4 $709 +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 516 +INDIRU4 +EQU4 $709 +ADDRLP4 520 +CNSTI4 0 +ASGNI4 +ADDRLP4 484 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 520 +INDIRI4 +EQI4 $709 +ADDRLP4 484 +INDIRP4 +CNSTI4 680 +ADDP4 +INDIRI4 +ADDRLP4 520 +INDIRI4 +EQI4 $709 +line 1554 +;1554: {//push them away and do pain +line 1556 +;1555: vec3_t oppDir; +;1556: int strength = (int)VectorNormalize2( client->ps.velocity, oppDir ); +ADDRLP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ARGP4 +ADDRLP4 528 +ARGP4 +ADDRLP4 540 +ADDRGP4 VectorNormalize2 +CALLF4 +ASGNF4 +ADDRLP4 524 +ADDRLP4 540 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1558 +;1557: +;1558: strength *= 0.05; +ADDRLP4 524 +CNSTF4 1028443341 +ADDRLP4 524 +INDIRI4 +CVIF4 4 +MULF4 +CVFI4 4 +ASGNI4 +line 1560 +;1559: +;1560: VectorScale( oppDir, -1, oppDir ); +ADDRLP4 544 +CNSTF4 3212836864 +ASGNF4 +ADDRLP4 528 +ADDRLP4 544 +INDIRF4 +ADDRLP4 528 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 528+4 +ADDRLP4 544 +INDIRF4 +ADDRLP4 528+4 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 528+8 +CNSTF4 3212836864 +ADDRLP4 528+8 +INDIRF4 +MULF4 +ASGNF4 +line 1562 +;1561: +;1562: G_Damage( faceKicked, ent, ent, oppDir, client->ps.origin, strength, DAMAGE_NO_ARMOR, MOD_MELEE ); +ADDRLP4 484 +INDIRP4 +ARGP4 +ADDRLP4 548 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 548 +INDIRP4 +ARGP4 +ADDRLP4 548 +INDIRP4 +ARGP4 +ADDRLP4 528 +ARGP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 524 +INDIRI4 +ARGI4 +ADDRLP4 552 +CNSTI4 2 +ASGNI4 +ADDRLP4 552 +INDIRI4 +ARGI4 +ADDRLP4 552 +INDIRI4 +ARGI4 +ADDRGP4 G_Damage +CALLV +pop +line 1564 +;1563: +;1564: if (faceKicked->health > 0 && +ADDRLP4 560 +CNSTI4 0 +ASGNI4 +ADDRLP4 484 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 560 +INDIRI4 +LEI4 $715 +ADDRLP4 564 +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 564 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +ADDRLP4 560 +INDIRI4 +LEI4 $715 +ADDRLP4 564 +INDIRP4 +CNSTI4 1236 +ADDP4 +INDIRI4 +CNSTI4 8 +EQI4 $715 +line 1567 +;1565: faceKicked->client->ps.stats[STAT_HEALTH] > 0 && +;1566: faceKicked->client->ps.forceHandExtend != HANDEXTEND_KNOCKDOWN) +;1567: { +line 1568 +;1568: if (Q_irand(1, 10) <= 3) +CNSTI4 1 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 568 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRLP4 568 +INDIRI4 +CNSTI4 3 +GTI4 $717 +line 1569 +;1569: { //only actually knock over sometimes, but always do velocity hit +line 1570 +;1570: faceKicked->client->ps.forceHandExtend = HANDEXTEND_KNOCKDOWN; +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 8 +ASGNI4 +line 1571 +;1571: faceKicked->client->ps.forceHandExtendTime = level.time + 1100; +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1240 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 1100 +ADDI4 +ASGNI4 +line 1572 +;1572: faceKicked->client->ps.forceDodgeAnim = 0; //this toggles between 1 and 0, when it's 1 we should play the get up anim +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1248 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1573 +;1573: } +LABELV $717 +line 1575 +;1574: +;1575: faceKicked->client->ps.otherKiller = ent->s.number; +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 748 +ADDP4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 1576 +;1576: faceKicked->client->ps.otherKillerTime = level.time + 5000; +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 752 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 5000 +ADDI4 +ASGNI4 +line 1577 +;1577: faceKicked->client->ps.otherKillerDebounceTime = level.time + 100; +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 756 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 100 +ADDI4 +ASGNI4 +line 1579 +;1578: +;1579: faceKicked->client->ps.velocity[0] = oppDir[0]*(strength*40); +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRLP4 528 +INDIRF4 +CNSTI4 40 +ADDRLP4 524 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1580 +;1580: faceKicked->client->ps.velocity[1] = oppDir[1]*(strength*40); +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRLP4 528+4 +INDIRF4 +CNSTI4 40 +ADDRLP4 524 +INDIRI4 +MULI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1581 +;1581: faceKicked->client->ps.velocity[2] = 200; +ADDRLP4 484 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1128792064 +ASGNF4 +line 1582 +;1582: } +LABELV $715 +line 1584 +;1583: +;1584: G_Sound( faceKicked, CHAN_AUTO, G_SoundIndex( va("sound/weapons/melee/punch%d", Q_irand(1, 4)) ) ); +CNSTI4 1 +ARGI4 +CNSTI4 4 +ARGI4 +ADDRLP4 568 +ADDRGP4 Q_irand +CALLI4 +ASGNI4 +ADDRGP4 $723 +ARGP4 +ADDRLP4 568 +INDIRI4 +ARGI4 +ADDRLP4 572 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 572 +INDIRP4 +ARGP4 +ADDRLP4 576 +ADDRGP4 G_SoundIndex +CALLI4 +ASGNI4 +ADDRLP4 484 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 576 +INDIRI4 +ARGI4 +ADDRGP4 G_Sound +CALLV +pop +line 1585 +;1585: } +LABELV $709 +line 1586 +;1586: } +LABELV $703 +line 1588 +;1587: +;1588: client->ps.forceKickFlip = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 1280 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1589 +;1589: } +LABELV $700 +line 1592 +;1590: +;1591: // check for respawning +;1592: if ( client->ps.stats[STAT_HEALTH] <= 0 ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $724 +line 1594 +;1593: // wait for the attack button to be pressed +;1594: if ( level.time > client->respawnTime ) { +ADDRGP4 level+32 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1672 +ADDP4 +INDIRI4 +LEI4 $438 +line 1596 +;1595: // forcerespawn is to prevent users from waiting out powerups +;1596: if ( g_forcerespawn.integer > 0 && +ADDRGP4 g_forcerespawn+12 +INDIRI4 +CNSTI4 0 +LEI4 $729 +ADDRGP4 level+32 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1672 +ADDP4 +INDIRI4 +SUBI4 +CNSTI4 1000 +ADDRGP4 g_forcerespawn+12 +INDIRI4 +MULI4 +LEI4 $729 +line 1597 +;1597: ( level.time - client->respawnTime ) > g_forcerespawn.integer * 1000 ) { +line 1598 +;1598: respawn( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 respawn +CALLV +pop +line 1599 +;1599: return; +ADDRGP4 $438 +JUMPV +LABELV $729 +line 1603 +;1600: } +;1601: +;1602: // pressing attack or use is the normal respawn method +;1603: if ( ucmd->buttons & ( BUTTON_ATTACK | BUTTON_USE_HOLDABLE ) ) { +ADDRLP4 384 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +CNSTI4 5 +BANDI4 +CNSTI4 0 +EQI4 $438 +line 1604 +;1604: respawn( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 respawn +CALLV +pop +line 1605 +;1605: } +line 1606 +;1606: } +line 1607 +;1607: return; +ADDRGP4 $438 +JUMPV +LABELV $724 +line 1611 +;1608: } +;1609: +;1610: // perform once-a-second actions +;1611: ClientTimerActions( ent, msec ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 388 +INDIRI4 +ARGI4 +ADDRGP4 ClientTimerActions +CALLV +pop +line 1613 +;1612: +;1613: G_UpdateClientBroadcasts ( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_UpdateClientBroadcasts +CALLV +pop +line 1614 +;1614:} +LABELV $438 +endproc ClientThink_real 580 32 +export G_CheckClientTimeouts +proc G_CheckClientTimeouts 0 8 +line 1624 +;1615: +;1616:/* +;1617:================== +;1618:G_CheckClientTimeouts +;1619: +;1620:Checks whether a client has exceded any timeouts and act accordingly +;1621:================== +;1622:*/ +;1623:void G_CheckClientTimeouts ( gentity_t *ent ) +;1624:{ +line 1626 +;1625: // Only timeout supported right now is the timeout to spectator mode +;1626: if ( !g_timeouttospec.integer ) +ADDRGP4 g_timeouttospec+12 +INDIRI4 +CNSTI4 0 +NEI4 $737 +line 1627 +;1627: { +line 1628 +;1628: return; +ADDRGP4 $736 +JUMPV +LABELV $737 +line 1632 +;1629: } +;1630: +;1631: // Already a spectator, no need to boot them to spectator +;1632: if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $740 +line 1633 +;1633: { +line 1634 +;1634: return; +ADDRGP4 $736 +JUMPV +LABELV $740 +line 1639 +;1635: } +;1636: +;1637: // See how long its been since a command was received by the client and if its +;1638: // longer than the timeout to spectator then force this client into spectator mode +;1639: if ( level.time - ent->client->pers.cmd.serverTime > g_timeouttospec.integer * 1000 ) +ADDRGP4 level+32 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1372 +ADDP4 +INDIRI4 +SUBI4 +CNSTI4 1000 +ADDRGP4 g_timeouttospec+12 +INDIRI4 +MULI4 +LEI4 $742 +line 1640 +;1640: { +line 1641 +;1641: SetTeam ( ent, "spectator" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $746 +ARGP4 +ADDRGP4 SetTeam +CALLV +pop +line 1642 +;1642: } +LABELV $742 +line 1643 +;1643:} +LABELV $736 +endproc G_CheckClientTimeouts 0 8 +export ClientThink +proc ClientThink 8 8 +line 1652 +;1644: +;1645:/* +;1646:================== +;1647:ClientThink +;1648: +;1649:A new command has arrived from the client +;1650:================== +;1651:*/ +;1652:void ClientThink( int clientNum ) { +line 1655 +;1653: gentity_t *ent; +;1654: +;1655: ent = g_entities + clientNum; +ADDRLP4 0 +CNSTI4 828 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1656 +;1656: trap_GetUsercmd( clientNum, &ent->client->pers.cmd ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1372 +ADDP4 +ARGP4 +ADDRGP4 trap_GetUsercmd +CALLV +pop +line 1660 +;1657: +;1658: // mark the time we got info, so we can display the +;1659: // phone jack if they don't get any for a while +;1660: ent->client->lastCmdTime = level.time; +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1580 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 1662 +;1661: +;1662: if ( !(ent->r.svFlags & SVF_BOT) && !g_synchronousClients.integer ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +ADDRLP4 4 +INDIRI4 +NEI4 $749 +ADDRGP4 g_synchronousClients+12 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $749 +line 1663 +;1663: ClientThink_real( ent ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ClientThink_real +CALLV +pop +line 1664 +;1664: } +LABELV $749 +line 1665 +;1665:} +LABELV $747 +endproc ClientThink 8 8 +export G_RunClient +proc G_RunClient 4 4 +line 1668 +;1666: +;1667: +;1668:void G_RunClient( gentity_t *ent ) { +line 1669 +;1669: if ( !(ent->r.svFlags & SVF_BOT) && !g_synchronousClients.integer ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +ADDRLP4 0 +INDIRI4 +NEI4 $753 +ADDRGP4 g_synchronousClients+12 +INDIRI4 +ADDRLP4 0 +INDIRI4 +NEI4 $753 +line 1670 +;1670: return; +ADDRGP4 $752 +JUMPV +LABELV $753 +line 1672 +;1671: } +;1672: ent->client->pers.cmd.serverTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1372 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 1673 +;1673: ClientThink_real( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ClientThink_real +CALLV +pop +line 1674 +;1674:} +LABELV $752 +endproc G_RunClient 4 4 +export SpectatorClientEndFrame +proc SpectatorClientEndFrame 24 8 +line 1683 +;1675: +;1676: +;1677:/* +;1678:================== +;1679:SpectatorClientEndFrame +;1680: +;1681:================== +;1682:*/ +;1683:void SpectatorClientEndFrame( gentity_t *ent ) { +line 1687 +;1684: gclient_t *cl; +;1685: +;1686: // if we are doing a chase cam or a remote view, grab the latest info +;1687: if ( ent->client->sess.spectatorState == SPECTATOR_FOLLOW ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $758 +line 1690 +;1688: int clientNum, flags; +;1689: +;1690: clientNum = ent->client->sess.spectatorClient; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1532 +ADDP4 +INDIRI4 +ASGNI4 +line 1693 +;1691: +;1692: // team follow1 and team follow2 go to whatever clients are playing +;1693: if ( clientNum == -1 ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 -1 +NEI4 $760 +line 1694 +;1694: clientNum = level.follow1; +ADDRLP4 4 +ADDRGP4 level+212 +INDIRI4 +ASGNI4 +line 1695 +;1695: } else if ( clientNum == -2 ) { +ADDRGP4 $761 +JUMPV +LABELV $760 +ADDRLP4 4 +INDIRI4 +CNSTI4 -2 +NEI4 $763 +line 1696 +;1696: clientNum = level.follow2; +ADDRLP4 4 +ADDRGP4 level+216 +INDIRI4 +ASGNI4 +line 1697 +;1697: } +LABELV $763 +LABELV $761 +line 1698 +;1698: if ( clientNum >= 0 ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $766 +line 1699 +;1699: cl = &level.clients[ clientNum ]; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 1700 +;1700: if ( cl->pers.connected == CON_CONNECTED && cl->sess.sessionTeam != TEAM_SPECTATOR ) { +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $768 +ADDRLP4 12 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $768 +line 1701 +;1701: flags = (cl->ps.eFlags & ~(EF_VOTED | EF_TEAMVOTED)) | (ent->client->ps.eFlags & (EF_VOTED | EF_TEAMVOTED)); +ADDRLP4 16 +CNSTI4 108 +ASGNI4 +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRI4 +CNSTI4 -540673 +BANDI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRI4 +CNSTI4 540672 +BANDI4 +BORI4 +ASGNI4 +line 1702 +;1702: ent->client->ps = cl->ps; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRB +ASGNB 1368 +line 1703 +;1703: ent->client->ps.pm_flags |= PMF_FOLLOW; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 4096 +BORI4 +ASGNI4 +line 1704 +;1704: ent->client->ps.eFlags = flags; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1705 +;1705: return; +ADDRGP4 $757 +JUMPV +LABELV $768 +line 1706 +;1706: } else { +line 1708 +;1707: // drop them to free spectators unless they are dedicated camera followers +;1708: if ( ent->client->sess.spectatorClient >= 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1532 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $770 +line 1709 +;1709: ent->client->sess.spectatorState = SPECTATOR_FREE; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1710 +;1710: ClientBegin( ent->client - level.clients, qtrue ); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRGP4 level +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1756 +DIVI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 ClientBegin +CALLV +pop +line 1711 +;1711: } +LABELV $770 +line 1712 +;1712: } +line 1713 +;1713: } +LABELV $766 +line 1714 +;1714: } +LABELV $758 +line 1716 +;1715: +;1716: if ( ent->client->sess.spectatorState == SPECTATOR_SCOREBOARD ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $772 +line 1717 +;1717: ent->client->ps.pm_flags |= PMF_SCOREBOARD; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 8192 +BORI4 +ASGNI4 +line 1718 +;1718: } else { +ADDRGP4 $773 +JUMPV +LABELV $772 +line 1719 +;1719: ent->client->ps.pm_flags &= ~PMF_SCOREBOARD; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -8193 +BANDI4 +ASGNI4 +line 1720 +;1720: } +LABELV $773 +line 1721 +;1721:} +LABELV $757 +endproc SpectatorClientEndFrame 24 8 +export ClientEndFrame +proc ClientEndFrame 20 16 +line 1732 +;1722: +;1723:/* +;1724:============== +;1725:ClientEndFrame +;1726: +;1727:Called at the end of each server frame for each connected client +;1728:A fast client will have multiple ClientThink for each ClientEdFrame, +;1729:while a slow client may have multiple ClientEndFrame between ClientThink. +;1730:============== +;1731:*/ +;1732:void ClientEndFrame( gentity_t *ent ) { +line 1736 +;1733: int i; +;1734: clientPersistant_t *pers; +;1735: +;1736: if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $775 +line 1737 +;1737: SpectatorClientEndFrame( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 SpectatorClientEndFrame +CALLV +pop +line 1738 +;1738: return; +ADDRGP4 $774 +JUMPV +LABELV $775 +line 1741 +;1739: } +;1740: +;1741: pers = &ent->client->pers; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1368 +ADDP4 +ASGNP4 +line 1744 +;1742: +;1743: // turn off any expired powerups +;1744: for ( i = 0 ; i < MAX_POWERUPS ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $777 +line 1745 +;1745: if ( ent->client->ps.powerups[ i ] < level.time ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 344 +ADDP4 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +GEI4 $781 +line 1746 +;1746: ent->client->ps.powerups[ i ] = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 344 +ADDP4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1747 +;1747: } +LABELV $781 +line 1748 +;1748: } +LABELV $778 +line 1744 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $777 +line 1762 +;1749: +;1750: // save network bandwidth +;1751:#if 0 +;1752: if ( !g_synchronousClients->integer && (ent->client->ps.pm_type == PM_NORMAL || ent->client->ps.pm_type == PM_FLOAT) ) { +;1753: // FIXME: this must change eventually for non-sync demo recording +;1754: VectorClear( ent->client->ps.viewangles ); +;1755: } +;1756:#endif +;1757: +;1758: // +;1759: // If the end of unit layout is displayed, don't give +;1760: // the player any normal movement attributes +;1761: // +;1762: if ( level.intermissiontime ) { +ADDRGP4 level+9008 +INDIRI4 +CNSTI4 0 +EQI4 $784 +line 1763 +;1763: return; +ADDRGP4 $774 +JUMPV +LABELV $784 +line 1767 +;1764: } +;1765: +;1766: // burn from lava, etc +;1767: P_WorldEffects (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 P_WorldEffects +CALLV +pop +line 1770 +;1768: +;1769: // apply all the damage taken this frame +;1770: P_DamageFeedback (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 P_DamageFeedback +CALLV +pop +line 1773 +;1771: +;1772: // add the EF_CONNECTION flag if we haven't gotten commands recently +;1773: if ( level.time - ent->client->lastCmdTime > 1000 ) { +ADDRGP4 level+32 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1580 +ADDP4 +INDIRI4 +SUBI4 +CNSTI4 1000 +LEI4 $787 +line 1774 +;1774: ent->s.eFlags |= EF_CONNECTION; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 8192 +BORI4 +ASGNI4 +line 1775 +;1775: } else { +ADDRGP4 $788 +JUMPV +LABELV $787 +line 1776 +;1776: ent->s.eFlags &= ~EF_CONNECTION; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 -8193 +BANDI4 +ASGNI4 +line 1777 +;1777: } +LABELV $788 +line 1779 +;1778: +;1779: ent->client->ps.stats[STAT_HEALTH] = ent->health; // FIXME: get rid of ent->health... +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ASGNI4 +line 1781 +;1780: +;1781: G_SetClientSound (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_SetClientSound +CALLV +pop +line 1784 +;1782: +;1783: // set the latest infor +;1784: if (g_smoothClients.integer) { +ADDRGP4 g_smoothClients+12 +INDIRI4 +CNSTI4 0 +EQI4 $790 +line 1785 +;1785: BG_PlayerStateToEntityStateExtraPolate( &ent->client->ps, &ent->s, ent->client->ps.commandTime, qtrue ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 12 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 BG_PlayerStateToEntityStateExtraPolate +CALLV +pop +line 1786 +;1786: } +ADDRGP4 $791 +JUMPV +LABELV $790 +line 1787 +;1787: else { +line 1788 +;1788: BG_PlayerStateToEntityState( &ent->client->ps, &ent->s, qtrue ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 BG_PlayerStateToEntityState +CALLV +pop +line 1789 +;1789: } +LABELV $791 +line 1790 +;1790: SendPendingPredictableEvents( &ent->client->ps ); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 SendPendingPredictableEvents +CALLV +pop +line 1795 +;1791: +;1792: // set the bit for the reachability area the client is currently in +;1793:// i = trap_AAS_PointReachabilityAreaIndex( ent->client->ps.origin ); +;1794:// ent->client->areabits[i >> 3] |= 1 << (i & 7); +;1795:} +LABELV $774 +endproc ClientEndFrame 20 16 +import saberOnSound +import saberOffSound +import G_ApplyKnockback +import trap_ROFF_Purge_Ent +import trap_ROFF_Play +import trap_ROFF_Cache +import trap_ROFF_UpdateEntities +import trap_ROFF_Clean +import trap_SP_GetStringTextString +import trap_SP_Register +import trap_SP_RegisterServer +import trap_SnapVector +import trap_GeneticParentsAndChildSelection +import trap_BotResetWeaponState +import trap_BotFreeWeaponState +import trap_BotAllocWeaponState +import trap_BotLoadWeaponWeights +import trap_BotGetWeaponInfo +import trap_BotChooseBestFightWeapon +import trap_BotAddAvoidSpot +import trap_BotInitMoveState +import trap_BotFreeMoveState +import trap_BotAllocMoveState +import trap_BotPredictVisiblePosition +import trap_BotMovementViewTarget +import trap_BotReachabilityArea +import trap_BotResetLastAvoidReach +import trap_BotResetAvoidReach +import trap_BotMoveInDirection +import trap_BotMoveToGoal +import trap_BotResetMoveState +import trap_BotFreeGoalState +import trap_BotAllocGoalState +import trap_BotMutateGoalFuzzyLogic +import trap_BotSaveGoalFuzzyLogic +import trap_BotInterbreedGoalFuzzyLogic +import trap_BotFreeItemWeights +import trap_BotLoadItemWeights +import trap_BotUpdateEntityItems +import trap_BotInitLevelItems +import trap_BotSetAvoidGoalTime +import trap_BotAvoidGoalTime +import trap_BotGetLevelItemGoal +import trap_BotGetMapLocationGoal +import trap_BotGetNextCampSpotGoal +import trap_BotItemGoalInVisButNotVisible +import trap_BotTouchingGoal +import trap_BotChooseNBGItem +import trap_BotChooseLTGItem +import trap_BotGetSecondGoal +import trap_BotGetTopGoal +import trap_BotGoalName +import trap_BotDumpGoalStack +import trap_BotDumpAvoidGoals +import trap_BotEmptyGoalStack +import trap_BotPopGoal +import trap_BotPushGoal +import trap_BotResetAvoidGoals +import trap_BotRemoveFromAvoidGoals +import trap_BotResetGoalState +import trap_BotSetChatName +import trap_BotSetChatGender +import trap_BotLoadChatFile +import trap_BotReplaceSynonyms +import trap_UnifyWhiteSpaces +import trap_BotMatchVariable +import trap_BotFindMatch +import trap_StringContains +import trap_BotGetChatMessage +import trap_BotEnterChat +import trap_BotChatLength +import trap_BotReplyChat +import trap_BotNumInitialChats +import trap_BotInitialChat +import trap_BotNumConsoleMessages +import trap_BotNextConsoleMessage +import trap_BotRemoveConsoleMessage +import trap_BotQueueConsoleMessage +import trap_BotFreeChatState +import trap_BotAllocChatState +import trap_Characteristic_String +import trap_Characteristic_BInteger +import trap_Characteristic_Integer +import trap_Characteristic_BFloat +import trap_Characteristic_Float +import trap_BotFreeCharacter +import trap_BotLoadCharacter +import trap_EA_ResetInput +import trap_EA_GetInput +import trap_EA_EndRegular +import trap_EA_ForcePower +import trap_EA_Alt_Attack +import trap_EA_View +import trap_EA_Move +import trap_EA_DelayedJump +import trap_EA_Jump +import trap_EA_SelectWeapon +import trap_EA_MoveRight +import trap_EA_MoveLeft +import trap_EA_MoveBack +import trap_EA_MoveForward +import trap_EA_MoveDown +import trap_EA_MoveUp +import trap_EA_Crouch +import trap_EA_Respawn +import trap_EA_Use +import trap_EA_Attack +import trap_EA_Talk +import trap_EA_Gesture +import trap_EA_Action +import trap_EA_Command +import trap_EA_SayTeam +import trap_EA_Say +import trap_AAS_PredictClientMovement +import trap_AAS_Swimming +import trap_AAS_AlternativeRouteGoals +import trap_AAS_PredictRoute +import trap_AAS_EnableRoutingArea +import trap_AAS_AreaTravelTimeToGoalArea +import trap_AAS_AreaReachability +import trap_AAS_IntForBSPEpairKey +import trap_AAS_FloatForBSPEpairKey +import trap_AAS_VectorForBSPEpairKey +import trap_AAS_ValueForBSPEpairKey +import trap_AAS_NextBSPEntity +import trap_AAS_PointContents +import trap_AAS_TraceAreas +import trap_AAS_PointReachabilityAreaIndex +import trap_AAS_PointAreaNum +import trap_AAS_Time +import trap_AAS_PresenceTypeBoundingBox +import trap_AAS_Initialized +import trap_AAS_EntityInfo +import trap_AAS_AreaInfo +import trap_AAS_BBoxAreas +import trap_BotUserCommand +import trap_BotGetServerCommand +import trap_BotGetSnapshotEntity +import trap_BotLibTest +import trap_BotLibUpdateEntity +import trap_BotLibLoadMap +import trap_BotLibStartFrame +import trap_BotLibDefine +import trap_BotLibVarGet +import trap_BotLibVarSet +import trap_BotLibShutdown +import trap_BotLibSetup +import trap_DebugPolygonDelete +import trap_DebugPolygonCreate +import trap_GetEntityToken +import trap_GetUsercmd +import trap_BotFreeClient +import trap_BotAllocateClient +import trap_EntityContact +import trap_EntitiesInBox +import trap_UnlinkEntity +import trap_LinkEntity +import trap_AreasConnected +import trap_AdjustAreaPortalState +import trap_InPVSIgnorePortals +import trap_InPVS +import trap_PointContents +import trap_Trace +import trap_SetBrushModel +import trap_GetServerinfo +import trap_SetUserinfo +import trap_GetUserinfo +import trap_GetConfigstring +import trap_SetConfigstring +import trap_SendServerCommand +import trap_DropClient +import trap_LocateGameData +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_VariableIntegerValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_SendConsoleCommand +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Args +import trap_Argv +import trap_Argc +import trap_Milliseconds +import trap_Error +import trap_Printf +import g_timeouttospec +import g_forceDodge +import g_dismember +import g_singlePlayer +import g_enableBreath +import g_enableDust +import g_rankings +import pmove_msec +import pmove_fixed +import g_smoothClients +import g_blueteam +import g_redteam +import g_debugUp +import g_debugRight +import g_debugForward +import g_filterBan +import g_banIPs +import g_teamForceBalance +import g_teamAutoJoin +import g_allowVote +import g_blood +import g_doWarmup +import g_warmup +import g_motd +import g_synchronousClients +import g_adaptRespawn +import g_weaponTeamRespawn +import g_weaponRespawn +import g_debugDamage +import g_debugAlloc +import g_debugMove +import g_inactivity +import g_forcerespawn +import g_quadfactor +import g_knockback +import g_speed +import g_gravity +import g_needpass +import g_password +import g_friendlySaber +import g_friendlyFire +import g_saberInterpolate +import g_capturelimit +import g_timelimit +import g_duel_fraglimit +import g_fraglimit +import g_duelWeaponDisable +import g_weaponDisable +import g_forcePowerDisable +import g_spawnInvulnerability +import g_forceRegenTime +import g_saberLocking +import g_privateDuel +import g_forceBasedTeams +import g_maxForceRank +import g_dmflags +import g_autoMapCycle +import g_restarted +import g_maxGameClients +import g_maxclients +import g_cheats +import g_dedicated +import g_gametype +import g_entities +import level +import Pickup_Team +import CheckTeamStatus +import TeamplayInfoMessage +import Team_GetLocationMsg +import Team_GetLocation +import SelectSagaSpawnPoint +import SelectCTFSpawnPoint +import Team_FreeEntity +import Team_ReturnFlag +import Team_InitGame +import Team_CheckHurtCarrier +import Team_FragBonuses +import Team_DroppedFlagThink +import AddTeamScore +import TeamColorString +import OtherTeamName +import TeamName +import OtherTeam +import BotAIStartFrame +import BotAIShutdownClient +import BotAISetupClient +import BotAILoadMap +import BotAIShutdown +import BotAISetup +import B_CleanupAlloc +import B_InitAlloc +import InFieldOfVision +import BotOrder +import OrgVisible +import InitSagaMode +import G_ClearClientLog +import G_LogExit +import G_LogWeaponOutput +import G_LogWeaponInit +import G_LogWeaponItem +import G_LogWeaponPowerup +import G_LogWeaponFrag +import G_LogWeaponDeath +import G_LogWeaponKill +import G_LogWeaponDamage +import G_LogWeaponFire +import G_LogWeaponPickup +import Jedi_DodgeEvasion +import ForceTelepathy +import ForceThrow +import ForceSeeing +import ForceTeamForceReplenish +import ForceTeamHeal +import ForceAbsorb +import ForceProtect +import ForceGrip +import ForceRage +import ForceSpeed +import ForceHeal +import ForcePowerUsableOn +import WP_ForcePowersUpdate +import WP_SpawnInitForcePowers +import WP_InitForcePowers +import WP_SaberInitBladeData +import WP_SaberCanBlock +import WP_SaberPositionUpdate +import WP_ForcePowerStop +import HasSetSaberOnly +import G_PreDefSound +import G_RefreshNextMap +import G_DoesMapSupportGametype +import BotInterbreedEndMatch +import Svcmd_BotList_f +import Svcmd_AddBot_f +import G_BotConnect +import G_RemoveQueuedBotBegin +import G_CheckBotSpawn +import G_GetBotInfoByName +import G_GetBotInfoByNumber +import G_InitBots +import UpdateTournamentInfo +import G_WriteSessionData +import G_InitWorldSession +import G_InitSessionData +import G_ReadSessionData +import Svcmd_GameMem_f +import G_InitMemory +import G_Alloc +import Team_CheckDroppedItem +import OnSameTeam +import ClientCommand +import ClientBegin +import ClientDisconnect +import ClientUserinfoChanged +import ClientConnect +import G_GetStripEdString +import G_Error +import G_Printf +import SendScoreboardMessageToAllClients +import G_LogPrintf +import G_RunThink +import CheckTeamLeader +import SetLeader +import FindIntermissionPoint +import g_ff_objectives +import DeathmatchScoreboardMessage +import G_SetStats +import MoveClientToIntermission +import BlowDetpacks +import FireWeapon +import G_FilterPacket +import G_ProcessIPBans +import ConsoleCommand +import gJMSaberEnt +import SpotWouldTelefrag +import CalculateRanks +import AddScore +import player_die +import ClientSpawn +import InitBodyQue +import BeginIntermission +import respawn +import CopyToBodyQue +import SelectSpawnPoint +import SetClientViewAngle +import PickTeam +import TeamLeader +import TeamCount +import CheckGauntletAttack +import SnapVectorTowards +import CalcMuzzlePoint +import LogAccuracyHit +import WP_FireGenericBlasterMissile +import WP_FireTurretMissile +import G_PlayerBecomeATST +import ATST_ManageDamageBoxes +import TeleportPlayer +import trigger_teleporter_touch +import Touch_DoorTrigger +import G_RunMover +import WP_FireBlasterMissile +import G_ExplodeMissile +import G_BounceProjectile +import CreateMissile +import G_RunMissile +import G_ReflectMissile +import ExplodeDeath +import TossClientCubes +import TossClientItems +import TossClientWeapon +import body_die +import G_RadiusDamage +import G_Damage +import CanDamage +import trap_G2API_SetBoneAnim +import trap_G2API_GetGLAName +import trap_G2API_SetBoneAngles +import trap_G2API_CleanGhoul2Models +import trap_G2API_RemoveGhoul2Model +import trap_G2API_HasGhoul2ModelOnIndex +import trap_G2API_DuplicateGhoul2Instance +import trap_G2API_CopySpecificGhoul2Model +import trap_G2API_CopyGhoul2Instance +import trap_G2API_SetBoltInfo +import trap_G2API_AddBolt +import trap_G2API_InitGhoul2Model +import trap_G2API_GetBoltMatrix_NoReconstruct +import trap_G2API_GetBoltMatrix +import trap_G2_HaveWeGhoul2Models +import trap_G2_SetGhoul2ModelIndexes +import trap_G2_ListModelBones +import trap_G2_ListModelSurfaces +import G_SkinIndex +import BuildShaderStateConfig +import AddRemap +import G_SetOrigin +import G_AddEvent +import G_AddPredictableEvent +import vtos +import tv +import G_RunObject +import G_TouchSolids +import G_EntitiesFree +import G_FreeEntity +import G_KillG2Queue +import G_SendG2KillQueue +import TryUse +import G_EntitySound +import G_SoundAtLoc +import G_Sound +import G_MuteSound +import G_ScreenShake +import G_PlayEffect +import G_TempEntity +import G_Spawn +import G_InitGentity +import G_SetAngles +import G_SetMovedir +import G_UseTargets +import G_PickTarget +import G_RadiusList +import G_Find +import G_KillBox +import G_TeamCommand +import G_EffectIndex +import G_SoundIndex +import G_ModelIndex +import SaveRegisteredItems +import RegisterItem +import ClearRegisteredItems +import Touch_Item +import Add_Ammo +import ArmorIndex +import Think_Weapon +import FinishSpawningItem +import G_SpawnItem +import SetRespawn +import LaunchItem +import Drop_Item +import PrecacheItem +import UseHoldableItem +import RespawnItem +import G_RunItem +import G_CheckTeamItems +import ItemUse_MedPack +import ItemUse_Seeker +import ItemUse_Sentry +import ItemUse_Shield +import ItemUse_Binoculars +import G_GetDuelWinner +import Cmd_EngageDuel_f +import Cmd_ToggleSaber_f +import G_ItemUsable +import Cmd_SaberAttackCycle_f +import Cmd_FollowCycle_f +import SetTeam +import BroadcastTeamChange +import StopFollowing +import Cmd_Score_f +import G_NewString +import G_SpawnEntitiesFromString +import G_SpawnVector +import G_SpawnInt +import G_SpawnFloat +import G_SpawnString +import g2SaberInstance +import precachedKyle +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $746 +char 1 115 +char 1 112 +char 1 101 +char 1 99 +char 1 116 +char 1 97 +char 1 116 +char 1 111 +char 1 114 +char 1 0 +align 1 +LABELV $723 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 109 +char 1 101 +char 1 108 +char 1 101 +char 1 101 +char 1 47 +char 1 112 +char 1 117 +char 1 110 +char 1 99 +char 1 104 +char 1 37 +char 1 100 +char 1 0 +align 1 +LABELV $613 +char 1 99 +char 1 101 +char 1 110 +char 1 116 +char 1 101 +char 1 114 +char 1 118 +char 1 105 +char 1 101 +char 1 119 +char 1 10 +char 1 0 +align 1 +LABELV $544 +char 1 80 +char 1 76 +char 1 68 +char 1 85 +char 1 69 +char 1 76 +char 1 83 +char 1 84 +char 1 79 +char 1 80 +char 1 0 +align 1 +LABELV $543 +char 1 112 +char 1 114 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 34 +char 1 37 +char 1 115 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $538 +char 1 80 +char 1 76 +char 1 68 +char 1 85 +char 1 69 +char 1 76 +char 1 84 +char 1 73 +char 1 69 +char 1 0 +align 1 +LABELV $537 +char 1 99 +char 1 112 +char 1 32 +char 1 34 +char 1 37 +char 1 115 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $536 +char 1 80 +char 1 76 +char 1 68 +char 1 85 +char 1 69 +char 1 76 +char 1 87 +char 1 73 +char 1 78 +char 1 78 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $535 +char 1 83 +char 1 86 +char 1 73 +char 1 78 +char 1 71 +char 1 65 +char 1 77 +char 1 69 +char 1 0 +align 1 +LABELV $534 +char 1 99 +char 1 112 +char 1 32 +char 1 34 +char 1 37 +char 1 115 +char 1 32 +char 1 37 +char 1 115 +char 1 32 +char 1 37 +char 1 115 +char 1 33 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $509 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 111 +char 1 110 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $508 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 111 +char 1 102 +char 1 102 +char 1 113 +char 1 117 +char 1 105 +char 1 99 +char 1 107 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $461 +char 1 51 +char 1 51 +char 1 0 +align 1 +LABELV $457 +char 1 56 +char 1 0 +align 1 +LABELV $456 +char 1 112 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 95 +char 1 109 +char 1 115 +char 1 101 +char 1 99 +char 1 0 +align 1 +LABELV $346 +char 1 99 +char 1 112 +char 1 32 +char 1 34 +char 1 84 +char 1 101 +char 1 110 +char 1 32 +char 1 115 +char 1 101 +char 1 99 +char 1 111 +char 1 110 +char 1 100 +char 1 115 +char 1 32 +char 1 117 +char 1 110 +char 1 116 +char 1 105 +char 1 108 +char 1 32 +char 1 105 +char 1 110 +char 1 97 +char 1 99 +char 1 116 +char 1 105 +char 1 118 +char 1 105 +char 1 116 +char 1 121 +char 1 32 +char 1 100 +char 1 114 +char 1 111 +char 1 112 +char 1 33 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $342 +char 1 68 +char 1 114 +char 1 111 +char 1 112 +char 1 112 +char 1 101 +char 1 100 +char 1 32 +char 1 100 +char 1 117 +char 1 101 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 105 +char 1 110 +char 1 97 +char 1 99 +char 1 116 +char 1 105 +char 1 118 +char 1 105 +char 1 116 +char 1 121 +char 1 0 +align 1 +LABELV $126 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 103 +char 1 117 +char 1 114 +char 1 112 +char 1 50 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 +align 1 +LABELV $123 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 103 +char 1 117 +char 1 114 +char 1 112 +char 1 49 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 0 diff --git a/CODE-mp/game/vm/g_arenas.asm b/CODE-mp/game/vm/g_arenas.asm new file mode 100644 index 0000000..a1c2feb --- /dev/null +++ b/CODE-mp/game/vm/g_arenas.asm @@ -0,0 +1,1517 @@ +export UpdateTournamentInfo +code +proc UpdateTournamentInfo 1116 68 +file "../g_arenas.c" +line 20 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:// +;4:// g_arenas.c +;5:// +;6: +;7:#include "g_local.h" +;8: +;9: +;10:gentity_t *podium1; +;11:gentity_t *podium2; +;12:gentity_t *podium3; +;13: +;14: +;15:/* +;16:================== +;17:UpdateTournamentInfo +;18:================== +;19:*/ +;20:void UpdateTournamentInfo( void ) { +line 32 +;21: int i; +;22: gentity_t *player; +;23: int playerClientNum; +;24: int n, accuracy, perfect, msglen; +;25: int buflen; +;26: int score1, score2; +;27: qboolean won; +;28: char buf[32]; +;29: char msg[MAX_STRING_CHARS]; +;30: +;31: // find the real player +;32: player = NULL; +ADDRLP4 40 +CNSTP4 0 +ASGNP4 +line 33 +;33: for (i = 0; i < level.maxclients; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $82 +JUMPV +LABELV $79 +line 34 +;34: player = &g_entities[i]; +ADDRLP4 40 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 35 +;35: if ( !player->inuse ) { +ADDRLP4 40 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $84 +line 36 +;36: continue; +ADDRGP4 $80 +JUMPV +LABELV $84 +line 38 +;37: } +;38: if ( !( player->r.svFlags & SVF_BOT ) ) { +ADDRLP4 40 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $86 +line 39 +;39: break; +ADDRGP4 $81 +JUMPV +LABELV $86 +line 41 +;40: } +;41: } +LABELV $80 +line 33 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $82 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $79 +LABELV $81 +line 43 +;42: // this should never happen! +;43: if ( !player || i == level.maxclients ) { +ADDRLP4 40 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $91 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +NEI4 $88 +LABELV $91 +line 44 +;44: return; +ADDRGP4 $78 +JUMPV +LABELV $88 +line 46 +;45: } +;46: playerClientNum = i; +ADDRLP4 1076 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 48 +;47: +;48: CalculateRanks(); +ADDRGP4 CalculateRanks +CALLV +pop +line 50 +;49: +;50: if ( level.clients[playerClientNum].sess.sessionTeam == TEAM_SPECTATOR ) { +CNSTI4 1756 +ADDRLP4 1076 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $92 +line 51 +;51: Com_sprintf( msg, sizeof(msg), "postgame %i %i 0 0 0 0 0 0 0 0 0 0 0", level.numNonSpectatorClients, playerClientNum ); +ADDRLP4 44 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $94 +ARGP4 +ADDRGP4 level+76 +INDIRI4 +ARGI4 +ADDRLP4 1076 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 52 +;52: } +ADDRGP4 $93 +JUMPV +LABELV $92 +line 53 +;53: else { +line 54 +;54: if( player->client->accuracy_shots ) { +ADDRLP4 40 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1652 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $96 +line 55 +;55: accuracy = player->client->accuracy_hits * 100 / player->client->accuracy_shots; +ADDRLP4 1100 +ADDRLP4 40 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1084 +CNSTI4 100 +ADDRLP4 1100 +INDIRP4 +CNSTI4 1656 +ADDP4 +INDIRI4 +MULI4 +ADDRLP4 1100 +INDIRP4 +CNSTI4 1652 +ADDP4 +INDIRI4 +DIVI4 +ASGNI4 +line 56 +;56: } +ADDRGP4 $97 +JUMPV +LABELV $96 +line 57 +;57: else { +line 58 +;58: accuracy = 0; +ADDRLP4 1084 +CNSTI4 0 +ASGNI4 +line 59 +;59: } +LABELV $97 +line 60 +;60: won = qfalse; +ADDRLP4 1080 +CNSTI4 0 +ASGNI4 +line 61 +;61: if (g_gametype.integer >= GT_CTF) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 7 +LTI4 $98 +line 62 +;62: score1 = level.teamScores[TEAM_RED]; +ADDRLP4 1092 +ADDRGP4 level+44+4 +INDIRI4 +ASGNI4 +line 63 +;63: score2 = level.teamScores[TEAM_BLUE]; +ADDRLP4 1096 +ADDRGP4 level+44+8 +INDIRI4 +ASGNI4 +line 64 +;64: if (level.clients[playerClientNum].sess.sessionTeam == TEAM_RED) { +CNSTI4 1756 +ADDRLP4 1076 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $105 +line 65 +;65: won = (level.teamScores[TEAM_RED] > level.teamScores[TEAM_BLUE]); +ADDRGP4 level+44+4 +INDIRI4 +ADDRGP4 level+44+8 +INDIRI4 +LEI4 $112 +ADDRLP4 1100 +CNSTI4 1 +ASGNI4 +ADDRGP4 $113 +JUMPV +LABELV $112 +ADDRLP4 1100 +CNSTI4 0 +ASGNI4 +LABELV $113 +ADDRLP4 1080 +ADDRLP4 1100 +INDIRI4 +ASGNI4 +line 66 +;66: } else { +ADDRGP4 $99 +JUMPV +LABELV $105 +line 67 +;67: won = (level.teamScores[TEAM_BLUE] > level.teamScores[TEAM_RED]); +ADDRGP4 level+44+8 +INDIRI4 +ADDRGP4 level+44+4 +INDIRI4 +LEI4 $119 +ADDRLP4 1100 +CNSTI4 1 +ASGNI4 +ADDRGP4 $120 +JUMPV +LABELV $119 +ADDRLP4 1100 +CNSTI4 0 +ASGNI4 +LABELV $120 +ADDRLP4 1080 +ADDRLP4 1100 +INDIRI4 +ASGNI4 +line 68 +;68: } +line 69 +;69: } else { +ADDRGP4 $99 +JUMPV +LABELV $98 +line 70 +;70: if (&level.clients[playerClientNum] == &level.clients[ level.sortedClients[0] ]) { +ADDRLP4 1100 +CNSTI4 1756 +ASGNI4 +ADDRLP4 1104 +ADDRGP4 level +INDIRP4 +ASGNP4 +ADDRLP4 1100 +INDIRI4 +ADDRLP4 1076 +INDIRI4 +MULI4 +ADDRLP4 1104 +INDIRP4 +ADDP4 +CVPU4 4 +ADDRLP4 1100 +INDIRI4 +ADDRGP4 level+84 +INDIRI4 +MULI4 +ADDRLP4 1104 +INDIRP4 +ADDP4 +CVPU4 4 +NEU4 $121 +line 71 +;71: won = qtrue; +ADDRLP4 1080 +CNSTI4 1 +ASGNI4 +line 72 +;72: score1 = level.clients[ level.sortedClients[0] ].ps.persistant[PERS_SCORE]; +ADDRLP4 1092 +CNSTI4 1756 +ADDRGP4 level+84 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 280 +ADDP4 +INDIRI4 +ASGNI4 +line 73 +;73: score2 = level.clients[ level.sortedClients[1] ].ps.persistant[PERS_SCORE]; +ADDRLP4 1096 +CNSTI4 1756 +ADDRGP4 level+84+4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 280 +ADDP4 +INDIRI4 +ASGNI4 +line 74 +;74: } else { +ADDRGP4 $122 +JUMPV +LABELV $121 +line 75 +;75: score2 = level.clients[ level.sortedClients[0] ].ps.persistant[PERS_SCORE]; +ADDRLP4 1096 +CNSTI4 1756 +ADDRGP4 level+84 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 280 +ADDP4 +INDIRI4 +ASGNI4 +line 76 +;76: score1 = level.clients[ level.sortedClients[1] ].ps.persistant[PERS_SCORE]; +ADDRLP4 1092 +CNSTI4 1756 +ADDRGP4 level+84+4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 280 +ADDP4 +INDIRI4 +ASGNI4 +line 77 +;77: } +LABELV $122 +line 78 +;78: } +LABELV $99 +line 79 +;79: if (won && player->client->ps.persistant[PERS_KILLED] == 0) { +ADDRLP4 1100 +CNSTI4 0 +ASGNI4 +ADDRLP4 1080 +INDIRI4 +ADDRLP4 1100 +INDIRI4 +EQI4 $130 +ADDRLP4 40 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 312 +ADDP4 +INDIRI4 +ADDRLP4 1100 +INDIRI4 +NEI4 $130 +line 80 +;80: perfect = 1; +ADDRLP4 1088 +CNSTI4 1 +ASGNI4 +line 81 +;81: } else { +ADDRGP4 $131 +JUMPV +LABELV $130 +line 82 +;82: perfect = 0; +ADDRLP4 1088 +CNSTI4 0 +ASGNI4 +line 83 +;83: } +LABELV $131 +line 84 +;84: Com_sprintf( msg, sizeof(msg), "postgame %i %i %i %i %i %i %i %i %i %i %i %i %i %i", level.numNonSpectatorClients, playerClientNum, accuracy, +ADDRLP4 44 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $132 +ARGP4 +ADDRGP4 level+76 +INDIRI4 +ARGI4 +ADDRLP4 1076 +INDIRI4 +ARGI4 +ADDRLP4 1084 +INDIRI4 +ARGI4 +ADDRLP4 1104 +ADDRLP4 40 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1104 +INDIRP4 +CNSTI4 316 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1104 +INDIRP4 +CNSTI4 320 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1104 +INDIRP4 +CNSTI4 324 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1104 +INDIRP4 +CNSTI4 328 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1104 +INDIRP4 +CNSTI4 332 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1104 +INDIRP4 +CNSTI4 280 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1088 +INDIRI4 +ARGI4 +ADDRLP4 1092 +INDIRI4 +ARGI4 +ADDRLP4 1096 +INDIRI4 +ARGI4 +ADDRGP4 level+32 +INDIRI4 +ARGI4 +ADDRLP4 1104 +INDIRP4 +CNSTI4 336 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 88 +;85: player->client->ps.persistant[PERS_IMPRESSIVE_COUNT], player->client->ps.persistant[PERS_EXCELLENT_COUNT],player->client->ps.persistant[PERS_DEFEND_COUNT], +;86: player->client->ps.persistant[PERS_ASSIST_COUNT], player->client->ps.persistant[PERS_GAUNTLET_FRAG_COUNT], player->client->ps.persistant[PERS_SCORE], +;87: perfect, score1, score2, level.time, player->client->ps.persistant[PERS_CAPTURES] ); +;88: } +LABELV $93 +line 90 +;89: +;90: msglen = strlen( msg ); +ADDRLP4 44 +ARGP4 +ADDRLP4 1100 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1072 +ADDRLP4 1100 +INDIRI4 +ASGNI4 +line 91 +;91: for( i = 0; i < level.numNonSpectatorClients; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $138 +JUMPV +LABELV $135 +line 92 +;92: n = level.sortedClients[i]; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 level+84 +ADDP4 +INDIRI4 +ASGNI4 +line 93 +;93: Com_sprintf( buf, sizeof(buf), " %i %i %i", n, level.clients[n].ps.persistant[PERS_RANK], level.clients[n].ps.persistant[PERS_SCORE] ); +ADDRLP4 8 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 $141 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 1108 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 1108 +INDIRP4 +CNSTI4 288 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1108 +INDIRP4 +CNSTI4 280 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 94 +;94: buflen = strlen( buf ); +ADDRLP4 8 +ARGP4 +ADDRLP4 1112 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1068 +ADDRLP4 1112 +INDIRI4 +ASGNI4 +line 95 +;95: if( msglen + buflen + 1 >= sizeof(msg) ) { +ADDRLP4 1072 +INDIRI4 +ADDRLP4 1068 +INDIRI4 +ADDI4 +CNSTI4 1 +ADDI4 +CVIU4 4 +CNSTU4 1024 +LTU4 $142 +line 96 +;96: break; +ADDRGP4 $137 +JUMPV +LABELV $142 +line 98 +;97: } +;98: strcat( msg, buf ); +ADDRLP4 44 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 99 +;99: } +LABELV $136 +line 91 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $138 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+76 +INDIRI4 +LTI4 $135 +LABELV $137 +line 100 +;100: trap_SendConsoleCommand( EXEC_APPEND, msg ); +CNSTI4 2 +ARGI4 +ADDRLP4 44 +ARGP4 +ADDRGP4 trap_SendConsoleCommand +CALLV +pop +line 101 +;101:} +LABELV $78 +endproc UpdateTournamentInfo 1116 68 +bss +export podium3 +align 4 +LABELV podium3 +skip 4 +export podium2 +align 4 +LABELV podium2 +skip 4 +export podium1 +align 4 +LABELV podium1 +skip 4 +import trap_ROFF_Purge_Ent +import trap_ROFF_Play +import trap_ROFF_Cache +import trap_ROFF_UpdateEntities +import trap_ROFF_Clean +import trap_SP_GetStringTextString +import trap_SP_Register +import trap_SP_RegisterServer +import trap_SnapVector +import trap_GeneticParentsAndChildSelection +import trap_BotResetWeaponState +import trap_BotFreeWeaponState +import trap_BotAllocWeaponState +import trap_BotLoadWeaponWeights +import trap_BotGetWeaponInfo +import trap_BotChooseBestFightWeapon +import trap_BotAddAvoidSpot +import trap_BotInitMoveState +import trap_BotFreeMoveState +import trap_BotAllocMoveState +import trap_BotPredictVisiblePosition +import trap_BotMovementViewTarget +import trap_BotReachabilityArea +import trap_BotResetLastAvoidReach +import trap_BotResetAvoidReach +import trap_BotMoveInDirection +import trap_BotMoveToGoal +import trap_BotResetMoveState +import trap_BotFreeGoalState +import trap_BotAllocGoalState +import trap_BotMutateGoalFuzzyLogic +import trap_BotSaveGoalFuzzyLogic +import trap_BotInterbreedGoalFuzzyLogic +import trap_BotFreeItemWeights +import trap_BotLoadItemWeights +import trap_BotUpdateEntityItems +import trap_BotInitLevelItems +import trap_BotSetAvoidGoalTime +import trap_BotAvoidGoalTime +import trap_BotGetLevelItemGoal +import trap_BotGetMapLocationGoal +import trap_BotGetNextCampSpotGoal +import trap_BotItemGoalInVisButNotVisible +import trap_BotTouchingGoal +import trap_BotChooseNBGItem +import trap_BotChooseLTGItem +import trap_BotGetSecondGoal +import trap_BotGetTopGoal +import trap_BotGoalName +import trap_BotDumpGoalStack +import trap_BotDumpAvoidGoals +import trap_BotEmptyGoalStack +import trap_BotPopGoal +import trap_BotPushGoal +import trap_BotResetAvoidGoals +import trap_BotRemoveFromAvoidGoals +import trap_BotResetGoalState +import trap_BotSetChatName +import trap_BotSetChatGender +import trap_BotLoadChatFile +import trap_BotReplaceSynonyms +import trap_UnifyWhiteSpaces +import trap_BotMatchVariable +import trap_BotFindMatch +import trap_StringContains +import trap_BotGetChatMessage +import trap_BotEnterChat +import trap_BotChatLength +import trap_BotReplyChat +import trap_BotNumInitialChats +import trap_BotInitialChat +import trap_BotNumConsoleMessages +import trap_BotNextConsoleMessage +import trap_BotRemoveConsoleMessage +import trap_BotQueueConsoleMessage +import trap_BotFreeChatState +import trap_BotAllocChatState +import trap_Characteristic_String +import trap_Characteristic_BInteger +import trap_Characteristic_Integer +import trap_Characteristic_BFloat +import trap_Characteristic_Float +import trap_BotFreeCharacter +import trap_BotLoadCharacter +import trap_EA_ResetInput +import trap_EA_GetInput +import trap_EA_EndRegular +import trap_EA_ForcePower +import trap_EA_Alt_Attack +import trap_EA_View +import trap_EA_Move +import trap_EA_DelayedJump +import trap_EA_Jump +import trap_EA_SelectWeapon +import trap_EA_MoveRight +import trap_EA_MoveLeft +import trap_EA_MoveBack +import trap_EA_MoveForward +import trap_EA_MoveDown +import trap_EA_MoveUp +import trap_EA_Crouch +import trap_EA_Respawn +import trap_EA_Use +import trap_EA_Attack +import trap_EA_Talk +import trap_EA_Gesture +import trap_EA_Action +import trap_EA_Command +import trap_EA_SayTeam +import trap_EA_Say +import trap_AAS_PredictClientMovement +import trap_AAS_Swimming +import trap_AAS_AlternativeRouteGoals +import trap_AAS_PredictRoute +import trap_AAS_EnableRoutingArea +import trap_AAS_AreaTravelTimeToGoalArea +import trap_AAS_AreaReachability +import trap_AAS_IntForBSPEpairKey +import trap_AAS_FloatForBSPEpairKey +import trap_AAS_VectorForBSPEpairKey +import trap_AAS_ValueForBSPEpairKey +import trap_AAS_NextBSPEntity +import trap_AAS_PointContents +import trap_AAS_TraceAreas +import trap_AAS_PointReachabilityAreaIndex +import trap_AAS_PointAreaNum +import trap_AAS_Time +import trap_AAS_PresenceTypeBoundingBox +import trap_AAS_Initialized +import trap_AAS_EntityInfo +import trap_AAS_AreaInfo +import trap_AAS_BBoxAreas +import trap_BotUserCommand +import trap_BotGetServerCommand +import trap_BotGetSnapshotEntity +import trap_BotLibTest +import trap_BotLibUpdateEntity +import trap_BotLibLoadMap +import trap_BotLibStartFrame +import trap_BotLibDefine +import trap_BotLibVarGet +import trap_BotLibVarSet +import trap_BotLibShutdown +import trap_BotLibSetup +import trap_DebugPolygonDelete +import trap_DebugPolygonCreate +import trap_GetEntityToken +import trap_GetUsercmd +import trap_BotFreeClient +import trap_BotAllocateClient +import trap_EntityContact +import trap_EntitiesInBox +import trap_UnlinkEntity +import trap_LinkEntity +import trap_AreasConnected +import trap_AdjustAreaPortalState +import trap_InPVSIgnorePortals +import trap_InPVS +import trap_PointContents +import trap_Trace +import trap_SetBrushModel +import trap_GetServerinfo +import trap_SetUserinfo +import trap_GetUserinfo +import trap_GetConfigstring +import trap_SetConfigstring +import trap_SendServerCommand +import trap_DropClient +import trap_LocateGameData +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_VariableIntegerValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_SendConsoleCommand +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Args +import trap_Argv +import trap_Argc +import trap_Milliseconds +import trap_Error +import trap_Printf +import g_timeouttospec +import g_forceDodge +import g_dismember +import g_singlePlayer +import g_enableBreath +import g_enableDust +import g_rankings +import pmove_msec +import pmove_fixed +import g_smoothClients +import g_blueteam +import g_redteam +import g_debugUp +import g_debugRight +import g_debugForward +import g_filterBan +import g_banIPs +import g_teamForceBalance +import g_teamAutoJoin +import g_allowVote +import g_blood +import g_doWarmup +import g_warmup +import g_motd +import g_synchronousClients +import g_adaptRespawn +import g_weaponTeamRespawn +import g_weaponRespawn +import g_debugDamage +import g_debugAlloc +import g_debugMove +import g_inactivity +import g_forcerespawn +import g_quadfactor +import g_knockback +import g_speed +import g_gravity +import g_needpass +import g_password +import g_friendlySaber +import g_friendlyFire +import g_saberInterpolate +import g_capturelimit +import g_timelimit +import g_duel_fraglimit +import g_fraglimit +import g_duelWeaponDisable +import g_weaponDisable +import g_forcePowerDisable +import g_spawnInvulnerability +import g_forceRegenTime +import g_saberLocking +import g_privateDuel +import g_forceBasedTeams +import g_maxForceRank +import g_dmflags +import g_autoMapCycle +import g_restarted +import g_maxGameClients +import g_maxclients +import g_cheats +import g_dedicated +import g_gametype +import g_entities +import level +import Pickup_Team +import CheckTeamStatus +import TeamplayInfoMessage +import Team_GetLocationMsg +import Team_GetLocation +import SelectSagaSpawnPoint +import SelectCTFSpawnPoint +import Team_FreeEntity +import Team_ReturnFlag +import Team_InitGame +import Team_CheckHurtCarrier +import Team_FragBonuses +import Team_DroppedFlagThink +import AddTeamScore +import TeamColorString +import OtherTeamName +import TeamName +import OtherTeam +import BotAIStartFrame +import BotAIShutdownClient +import BotAISetupClient +import BotAILoadMap +import BotAIShutdown +import BotAISetup +import B_CleanupAlloc +import B_InitAlloc +import InFieldOfVision +import BotOrder +import OrgVisible +import InitSagaMode +import G_ClearClientLog +import G_LogExit +import G_LogWeaponOutput +import G_LogWeaponInit +import G_LogWeaponItem +import G_LogWeaponPowerup +import G_LogWeaponFrag +import G_LogWeaponDeath +import G_LogWeaponKill +import G_LogWeaponDamage +import G_LogWeaponFire +import G_LogWeaponPickup +import Jedi_DodgeEvasion +import ForceTelepathy +import ForceThrow +import ForceSeeing +import ForceTeamForceReplenish +import ForceTeamHeal +import ForceAbsorb +import ForceProtect +import ForceGrip +import ForceRage +import ForceSpeed +import ForceHeal +import ForcePowerUsableOn +import WP_ForcePowersUpdate +import WP_SpawnInitForcePowers +import WP_InitForcePowers +import WP_SaberInitBladeData +import WP_SaberCanBlock +import WP_SaberPositionUpdate +import WP_ForcePowerStop +import HasSetSaberOnly +import G_PreDefSound +import G_RefreshNextMap +import G_DoesMapSupportGametype +import BotInterbreedEndMatch +import Svcmd_BotList_f +import Svcmd_AddBot_f +import G_BotConnect +import G_RemoveQueuedBotBegin +import G_CheckBotSpawn +import G_GetBotInfoByName +import G_GetBotInfoByNumber +import G_InitBots +import G_WriteSessionData +import G_InitWorldSession +import G_InitSessionData +import G_ReadSessionData +import Svcmd_GameMem_f +import G_InitMemory +import G_Alloc +import Team_CheckDroppedItem +import OnSameTeam +import G_RunClient +import ClientEndFrame +import ClientThink +import G_CheckClientTimeouts +import ClientCommand +import ClientBegin +import ClientDisconnect +import ClientUserinfoChanged +import ClientConnect +import G_GetStripEdString +import G_Error +import G_Printf +import SendScoreboardMessageToAllClients +import G_LogPrintf +import G_RunThink +import CheckTeamLeader +import SetLeader +import FindIntermissionPoint +import g_ff_objectives +import DeathmatchScoreboardMessage +import G_SetStats +import MoveClientToIntermission +import BlowDetpacks +import FireWeapon +import G_FilterPacket +import G_ProcessIPBans +import ConsoleCommand +import gJMSaberEnt +import SpotWouldTelefrag +import CalculateRanks +import AddScore +import player_die +import ClientSpawn +import InitBodyQue +import BeginIntermission +import respawn +import CopyToBodyQue +import SelectSpawnPoint +import SetClientViewAngle +import PickTeam +import TeamLeader +import TeamCount +import CheckGauntletAttack +import SnapVectorTowards +import CalcMuzzlePoint +import LogAccuracyHit +import WP_FireGenericBlasterMissile +import WP_FireTurretMissile +import G_PlayerBecomeATST +import ATST_ManageDamageBoxes +import TeleportPlayer +import trigger_teleporter_touch +import Touch_DoorTrigger +import G_RunMover +import WP_FireBlasterMissile +import G_ExplodeMissile +import G_BounceProjectile +import CreateMissile +import G_RunMissile +import G_ReflectMissile +import ExplodeDeath +import TossClientCubes +import TossClientItems +import TossClientWeapon +import body_die +import G_RadiusDamage +import G_Damage +import CanDamage +import trap_G2API_SetBoneAnim +import trap_G2API_GetGLAName +import trap_G2API_SetBoneAngles +import trap_G2API_CleanGhoul2Models +import trap_G2API_RemoveGhoul2Model +import trap_G2API_HasGhoul2ModelOnIndex +import trap_G2API_DuplicateGhoul2Instance +import trap_G2API_CopySpecificGhoul2Model +import trap_G2API_CopyGhoul2Instance +import trap_G2API_SetBoltInfo +import trap_G2API_AddBolt +import trap_G2API_InitGhoul2Model +import trap_G2API_GetBoltMatrix_NoReconstruct +import trap_G2API_GetBoltMatrix +import trap_G2_HaveWeGhoul2Models +import trap_G2_SetGhoul2ModelIndexes +import trap_G2_ListModelBones +import trap_G2_ListModelSurfaces +import G_SkinIndex +import BuildShaderStateConfig +import AddRemap +import G_SetOrigin +import G_AddEvent +import G_AddPredictableEvent +import vtos +import tv +import G_RunObject +import G_TouchSolids +import G_TouchTriggers +import G_EntitiesFree +import G_FreeEntity +import G_KillG2Queue +import G_SendG2KillQueue +import TryUse +import G_EntitySound +import G_SoundAtLoc +import G_Sound +import G_MuteSound +import G_ScreenShake +import G_PlayEffect +import G_TempEntity +import G_Spawn +import G_InitGentity +import G_SetAngles +import G_SetMovedir +import G_UseTargets +import G_PickTarget +import G_RadiusList +import G_Find +import G_KillBox +import G_TeamCommand +import G_EffectIndex +import G_SoundIndex +import G_ModelIndex +import SaveRegisteredItems +import RegisterItem +import ClearRegisteredItems +import Touch_Item +import Add_Ammo +import ArmorIndex +import Think_Weapon +import FinishSpawningItem +import G_SpawnItem +import SetRespawn +import LaunchItem +import Drop_Item +import PrecacheItem +import UseHoldableItem +import RespawnItem +import G_RunItem +import G_CheckTeamItems +import ItemUse_MedPack +import ItemUse_Seeker +import ItemUse_Sentry +import ItemUse_Shield +import ItemUse_Binoculars +import G_GetDuelWinner +import Cmd_EngageDuel_f +import Cmd_ToggleSaber_f +import G_ItemUsable +import Cmd_SaberAttackCycle_f +import Cmd_FollowCycle_f +import SetTeam +import BroadcastTeamChange +import StopFollowing +import Cmd_Score_f +import G_NewString +import G_SpawnEntitiesFromString +import G_SpawnVector +import G_SpawnInt +import G_SpawnFloat +import G_SpawnString +import g2SaberInstance +import precachedKyle +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $141 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $132 +char 1 112 +char 1 111 +char 1 115 +char 1 116 +char 1 103 +char 1 97 +char 1 109 +char 1 101 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $94 +char 1 112 +char 1 111 +char 1 115 +char 1 116 +char 1 103 +char 1 97 +char 1 109 +char 1 101 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 32 +char 1 48 +char 1 0 diff --git a/CODE-mp/game/vm/g_bot.asm b/CODE-mp/game/vm/g_bot.asm new file mode 100644 index 0000000..a5ccc64 --- /dev/null +++ b/CODE-mp/game/vm/g_bot.asm @@ -0,0 +1,8798 @@ +export trap_Cvar_VariableValue +code +proc trap_Cvar_VariableValue 132 12 +file "../g_bot.c" +line 35 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:// g_bot.c +;4: +;5:#include "g_local.h" +;6: +;7: +;8:static int g_numBots; +;9:static char *g_botInfos[MAX_BOTS]; +;10: +;11: +;12:int g_numArenas; +;13:static char *g_arenaInfos[MAX_ARENAS]; +;14: +;15: +;16:#define BOT_BEGIN_DELAY_BASE 2000 +;17:#define BOT_BEGIN_DELAY_INCREMENT 1500 +;18: +;19:#define BOT_SPAWN_QUEUE_DEPTH 16 +;20: +;21:typedef struct { +;22: int clientNum; +;23: int spawnTime; +;24:} botSpawnQueue_t; +;25: +;26://static int botBeginDelay = 0; // bk001206 - unused, init +;27:static botSpawnQueue_t botSpawnQueue[BOT_SPAWN_QUEUE_DEPTH]; +;28: +;29:vmCvar_t bot_minplayers; +;30: +;31:extern gentity_t *podium1; +;32:extern gentity_t *podium2; +;33:extern gentity_t *podium3; +;34: +;35:float trap_Cvar_VariableValue( const char *var_name ) { +line 38 +;36: char buf[128]; +;37: +;38: trap_Cvar_VariableStringBuffer(var_name, buf, sizeof(buf)); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 trap_Cvar_VariableStringBuffer +CALLV +pop +line 39 +;39: return atof(buf); +ADDRLP4 0 +ARGP4 +ADDRLP4 128 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 128 +INDIRF4 +RETF4 +LABELV $79 +endproc trap_Cvar_VariableValue 132 12 +export G_ParseInfos +proc G_ParseInfos 2084 12 +line 49 +;40:} +;41: +;42: +;43: +;44:/* +;45:=============== +;46:G_ParseInfos +;47:=============== +;48:*/ +;49:int G_ParseInfos( char *buf, int max, char *infos[] ) { +line 55 +;50: char *token; +;51: int count; +;52: char key[MAX_TOKEN_CHARS]; +;53: char info[MAX_INFO_STRING]; +;54: +;55: count = 0; +ADDRLP4 2052 +CNSTI4 0 +ASGNI4 +ADDRGP4 $82 +JUMPV +LABELV $81 +line 57 +;56: +;57: while ( 1 ) { +line 58 +;58: token = COM_Parse( (const char **)(&buf) ); +ADDRFP4 0 +ARGP4 +ADDRLP4 2056 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2056 +INDIRP4 +ASGNP4 +line 59 +;59: if ( !token[0] ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $84 +line 60 +;60: break; +ADDRGP4 $83 +JUMPV +LABELV $84 +line 62 +;61: } +;62: if ( strcmp( token, "{" ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $88 +ARGP4 +ADDRLP4 2060 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 2060 +INDIRI4 +CNSTI4 0 +EQI4 $86 +line 63 +;63: Com_Printf( "Missing { in info file\n" ); +ADDRGP4 $89 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 64 +;64: break; +ADDRGP4 $83 +JUMPV +LABELV $86 +line 67 +;65: } +;66: +;67: if ( count == max ) { +ADDRLP4 2052 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $90 +line 68 +;68: Com_Printf( "Max infos exceeded\n" ); +ADDRGP4 $92 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 69 +;69: break; +ADDRGP4 $83 +JUMPV +LABELV $90 +line 72 +;70: } +;71: +;72: info[0] = '\0'; +ADDRLP4 1028 +CNSTI1 0 +ASGNI1 +ADDRGP4 $94 +JUMPV +LABELV $93 +line 73 +;73: while ( 1 ) { +line 74 +;74: token = COM_ParseExt( (const char **)(&buf), qtrue ); +ADDRFP4 0 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 2064 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2064 +INDIRP4 +ASGNP4 +line 75 +;75: if ( !token[0] ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $96 +line 76 +;76: Com_Printf( "Unexpected end of info file\n" ); +ADDRGP4 $98 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 77 +;77: break; +ADDRGP4 $95 +JUMPV +LABELV $96 +line 79 +;78: } +;79: if ( !strcmp( token, "}" ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $101 +ARGP4 +ADDRLP4 2068 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 2068 +INDIRI4 +CNSTI4 0 +NEI4 $99 +line 80 +;80: break; +ADDRGP4 $95 +JUMPV +LABELV $99 +line 82 +;81: } +;82: Q_strncpyz( key, token, sizeof( key ) ); +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 84 +;83: +;84: token = COM_ParseExt( (const char **)(&buf), qfalse ); +ADDRFP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 2072 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2072 +INDIRP4 +ASGNP4 +line 85 +;85: if ( !token[0] ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $102 +line 86 +;86: strcpy( token, "" ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $104 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 87 +;87: } +LABELV $102 +line 88 +;88: Info_SetValueForKey( info, key, token ); +ADDRLP4 1028 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 89 +;89: } +LABELV $94 +line 73 +ADDRGP4 $93 +JUMPV +LABELV $95 +line 91 +;90: //NOTE: extra space for arena number +;91: infos[count] = G_Alloc(strlen(info) + strlen("\\num\\") + strlen(va("%d", MAX_ARENAS)) + 1); +ADDRLP4 1028 +ARGP4 +ADDRLP4 2064 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRGP4 $105 +ARGP4 +ADDRLP4 2068 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRGP4 $106 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 2072 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 2072 +INDIRP4 +ARGP4 +ADDRLP4 2076 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 2064 +INDIRI4 +ADDRLP4 2068 +INDIRI4 +ADDI4 +ADDRLP4 2076 +INDIRI4 +ADDI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 2080 +ADDRGP4 G_Alloc +CALLP4 +ASGNP4 +ADDRLP4 2052 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +ADDRLP4 2080 +INDIRP4 +ASGNP4 +line 92 +;92: if (infos[count]) { +ADDRLP4 2052 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $107 +line 93 +;93: strcpy(infos[count], info); +ADDRLP4 2052 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1028 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 94 +;94: count++; +ADDRLP4 2052 +ADDRLP4 2052 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 95 +;95: } +LABELV $107 +line 96 +;96: } +LABELV $82 +line 57 +ADDRGP4 $81 +JUMPV +LABELV $83 +line 97 +;97: return count; +ADDRLP4 2052 +INDIRI4 +RETI4 +LABELV $80 +endproc G_ParseInfos 2084 12 +proc G_LoadArenasFromFile 8216 16 +line 105 +;98:} +;99: +;100:/* +;101:=============== +;102:G_LoadArenasFromFile +;103:=============== +;104:*/ +;105:static void G_LoadArenasFromFile( char *filename ) { +line 110 +;106: int len; +;107: fileHandle_t f; +;108: char buf[MAX_ARENAS_TEXT]; +;109: +;110: len = trap_FS_FOpenFile( filename, &f, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 8200 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8200 +INDIRI4 +ASGNI4 +line 111 +;111: if ( !f ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $110 +line 112 +;112: trap_Printf( va( S_COLOR_RED "file not found: %s\n", filename ) ); +ADDRGP4 $112 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 113 +;113: return; +ADDRGP4 $109 +JUMPV +LABELV $110 +line 115 +;114: } +;115: if ( len >= MAX_ARENAS_TEXT ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 8192 +LTI4 $113 +line 116 +;116: trap_Printf( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, MAX_ARENAS_TEXT ) ); +ADDRGP4 $115 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 8192 +ARGI4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 117 +;117: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 118 +;118: return; +ADDRGP4 $109 +JUMPV +LABELV $113 +line 121 +;119: } +;120: +;121: trap_FS_Read( buf, len, f ); +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 122 +;122: buf[len] = 0; +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 0 +ASGNI1 +line 123 +;123: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 125 +;124: +;125: g_numArenas += G_ParseInfos( buf, MAX_ARENAS - g_numArenas, &g_arenaInfos[g_numArenas] ); +ADDRLP4 8 +ARGP4 +ADDRLP4 8204 +ADDRGP4 g_numArenas +ASGNP4 +ADDRLP4 8208 +ADDRLP4 8204 +INDIRP4 +INDIRI4 +ASGNI4 +CNSTI4 1024 +ADDRLP4 8208 +INDIRI4 +SUBI4 +ARGI4 +ADDRLP4 8208 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +ARGP4 +ADDRLP4 8212 +ADDRGP4 G_ParseInfos +CALLI4 +ASGNI4 +ADDRLP4 8204 +INDIRP4 +ADDRLP4 8208 +INDIRI4 +ADDRLP4 8212 +INDIRI4 +ADDI4 +ASGNI4 +line 126 +;126:} +LABELV $109 +endproc G_LoadArenasFromFile 8216 16 +export G_GetMapTypeBits +proc G_GetMapTypeBits 32 8 +line 129 +;127: +;128:int G_GetMapTypeBits(char *type) +;129:{ +line 130 +;130: int typeBits = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 132 +;131: +;132: if( *type ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $117 +line 133 +;133: if( strstr( type, "ffa" ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $121 +ARGP4 +ADDRLP4 4 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $119 +line 134 +;134: typeBits |= (1 << GT_FFA); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 135 +;135: typeBits |= (1 << GT_TEAM); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 136 +;136: } +LABELV $119 +line 137 +;137: if( strstr( type, "holocron" ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $124 +ARGP4 +ADDRLP4 8 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $122 +line 138 +;138: typeBits |= (1 << GT_HOLOCRON); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 139 +;139: } +LABELV $122 +line 140 +;140: if( strstr( type, "jedimaster" ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $127 +ARGP4 +ADDRLP4 12 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $125 +line 141 +;141: typeBits |= (1 << GT_JEDIMASTER); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 142 +;142: } +LABELV $125 +line 143 +;143: if( strstr( type, "duel" ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $130 +ARGP4 +ADDRLP4 16 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $128 +line 144 +;144: typeBits |= (1 << GT_TOURNAMENT); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 8 +BORI4 +ASGNI4 +line 145 +;145: } +LABELV $128 +line 146 +;146: if( strstr( type, "saga" ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $133 +ARGP4 +ADDRLP4 20 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $131 +line 147 +;147: typeBits |= (1 << GT_SAGA); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 64 +BORI4 +ASGNI4 +line 148 +;148: } +LABELV $131 +line 149 +;149: if( strstr( type, "ctf" ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $136 +ARGP4 +ADDRLP4 24 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $134 +line 150 +;150: typeBits |= (1 << GT_CTF); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 128 +BORI4 +ASGNI4 +line 151 +;151: } +LABELV $134 +line 152 +;152: if( strstr( type, "cty" ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $139 +ARGP4 +ADDRLP4 28 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $118 +line 153 +;153: typeBits |= (1 << GT_CTY); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 256 +BORI4 +ASGNI4 +line 154 +;154: } +line 155 +;155: } else { +ADDRGP4 $118 +JUMPV +LABELV $117 +line 156 +;156: typeBits |= (1 << GT_FFA); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 157 +;157: } +LABELV $118 +line 159 +;158: +;159: return typeBits; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $116 +endproc G_GetMapTypeBits 32 8 +export G_DoesMapSupportGametype +proc G_DoesMapSupportGametype 28 8 +line 163 +;160:} +;161: +;162:qboolean G_DoesMapSupportGametype(const char *mapname, int gametype) +;163:{ +line 164 +;164: int typeBits = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 165 +;165: int thisLevel = -1; +ADDRLP4 8 +CNSTI4 -1 +ASGNI4 +line 166 +;166: int n = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 167 +;167: char *type = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 169 +;168: +;169: if (!g_arenaInfos[0]) +ADDRGP4 g_arenaInfos +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $141 +line 170 +;170: { +line 171 +;171: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $140 +JUMPV +LABELV $141 +line 174 +;172: } +;173: +;174: if (!mapname || !mapname[0]) +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $145 +ADDRLP4 16 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $143 +LABELV $145 +line 175 +;175: { +line 176 +;176: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $140 +JUMPV +LABELV $143 +line 179 +;177: } +;178: +;179: for( n = 0; n < g_numArenas; n++ ) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $149 +JUMPV +LABELV $146 +line 180 +;180: { +line 181 +;181: type = Info_ValueForKey( g_arenaInfos[n], "map" ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $150 +ARGP4 +ADDRLP4 20 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 183 +;182: +;183: if (Q_stricmp(mapname, type) == 0) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $151 +line 184 +;184: { +line 185 +;185: thisLevel = n; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 186 +;186: break; +ADDRGP4 $148 +JUMPV +LABELV $151 +line 188 +;187: } +;188: } +LABELV $147 +line 179 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $149 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numArenas +INDIRI4 +LTI4 $146 +LABELV $148 +line 190 +;189: +;190: if (thisLevel == -1) +ADDRLP4 8 +INDIRI4 +CNSTI4 -1 +NEI4 $153 +line 191 +;191: { +line 192 +;192: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $140 +JUMPV +LABELV $153 +line 195 +;193: } +;194: +;195: type = Info_ValueForKey(g_arenaInfos[thisLevel], "type"); +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $155 +ARGP4 +ADDRLP4 20 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 197 +;196: +;197: typeBits = G_GetMapTypeBits(type); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 G_GetMapTypeBits +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 198 +;198: if (typeBits & (1 << gametype)) +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDRFP4 4 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $156 +line 199 +;199: { //the map in question supports the gametype in question, so.. +line 200 +;200: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $140 +JUMPV +LABELV $156 +line 203 +;201: } +;202: +;203: return qfalse; +CNSTI4 0 +RETI4 +LABELV $140 +endproc G_DoesMapSupportGametype 28 8 +export G_RefreshNextMap +proc G_RefreshNextMap 312 16 +line 208 +;204:} +;205: +;206://rww - auto-obtain nextmap. I could've sworn Q3 had something like this, but I guess not. +;207:const char *G_RefreshNextMap(int gametype, qboolean forced) +;208:{ +line 209 +;209: int typeBits = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 210 +;210: int thisLevel = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 211 +;211: int desiredMap = 0; +ADDRLP4 292 +CNSTI4 0 +ASGNI4 +line 212 +;212: int n = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 213 +;213: char *type = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 214 +;214: qboolean loopingUp = qfalse; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 217 +;215: vmCvar_t mapname; +;216: +;217: if (!g_autoMapCycle.integer && !forced) +ADDRLP4 296 +CNSTI4 0 +ASGNI4 +ADDRGP4 g_autoMapCycle+12 +INDIRI4 +ADDRLP4 296 +INDIRI4 +NEI4 $159 +ADDRFP4 4 +INDIRI4 +ADDRLP4 296 +INDIRI4 +NEI4 $159 +line 218 +;218: { +line 219 +;219: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $158 +JUMPV +LABELV $159 +line 222 +;220: } +;221: +;222: if (!g_arenaInfos[0]) +ADDRGP4 g_arenaInfos +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $162 +line 223 +;223: { +line 224 +;224: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $158 +JUMPV +LABELV $162 +line 227 +;225: } +;226: +;227: trap_Cvar_Register( &mapname, "mapname", "", CVAR_SERVERINFO | CVAR_ROM ); +ADDRLP4 20 +ARGP4 +ADDRGP4 $164 +ARGP4 +ADDRGP4 $165 +ARGP4 +CNSTI4 68 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 228 +;228: for( n = 0; n < g_numArenas; n++ ) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $169 +JUMPV +LABELV $166 +line 229 +;229: { +line 230 +;230: type = Info_ValueForKey( g_arenaInfos[n], "map" ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $150 +ARGP4 +ADDRLP4 300 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 300 +INDIRP4 +ASGNP4 +line 232 +;231: +;232: if (Q_stricmp(mapname.string, type) == 0) +ADDRLP4 20+16 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 304 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 304 +INDIRI4 +CNSTI4 0 +NEI4 $170 +line 233 +;233: { +line 234 +;234: thisLevel = n; +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 235 +;235: break; +ADDRGP4 $168 +JUMPV +LABELV $170 +line 237 +;236: } +;237: } +LABELV $167 +line 228 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $169 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numArenas +INDIRI4 +LTI4 $166 +LABELV $168 +line 239 +;238: +;239: desiredMap = thisLevel; +ADDRLP4 292 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 241 +;240: +;241: n = thisLevel+1; +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $174 +JUMPV +LABELV $173 +line 243 +;242: while (n != thisLevel) +;243: { //now cycle through the arena list and find the next map that matches the gametype we're in +line 244 +;244: if (!g_arenaInfos[n] || n >= g_numArenas) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $178 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numArenas +INDIRI4 +LTI4 $176 +LABELV $178 +line 245 +;245: { +line 246 +;246: if (loopingUp) +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $179 +line 247 +;247: { //this shouldn't happen, but if it does we have a null entry break in the arena file +line 249 +;248: //if this is the case just break out of the loop instead of sticking in an infinite loop +;249: break; +ADDRGP4 $175 +JUMPV +LABELV $179 +line 251 +;250: } +;251: n = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 252 +;252: loopingUp = qtrue; +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +line 253 +;253: } +LABELV $176 +line 255 +;254: +;255: type = Info_ValueForKey(g_arenaInfos[n], "type"); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $155 +ARGP4 +ADDRLP4 304 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 304 +INDIRP4 +ASGNP4 +line 257 +;256: +;257: typeBits = G_GetMapTypeBits(type); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 308 +ADDRGP4 G_GetMapTypeBits +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 308 +INDIRI4 +ASGNI4 +line 258 +;258: if (typeBits & (1 << gametype)) +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDRFP4 0 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $181 +line 259 +;259: { +line 260 +;260: desiredMap = n; +ADDRLP4 292 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 261 +;261: break; +ADDRGP4 $175 +JUMPV +LABELV $181 +line 264 +;262: } +;263: +;264: n++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 265 +;265: } +LABELV $174 +line 242 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +NEI4 $173 +LABELV $175 +line 267 +;266: +;267: if (desiredMap == thisLevel) +ADDRLP4 292 +INDIRI4 +ADDRLP4 12 +INDIRI4 +NEI4 $183 +line 268 +;268: { //If this is the only level for this game mode or we just can't find a map for this game mode, then nextmap +line 270 +;269: //will always restart. +;270: trap_Cvar_Set( "nextmap", "map_restart 0"); +ADDRGP4 $185 +ARGP4 +ADDRGP4 $186 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 271 +;271: } +ADDRGP4 $184 +JUMPV +LABELV $183 +line 273 +;272: else +;273: { //otherwise we have a valid nextmap to cycle to, so use it. +line 274 +;274: type = Info_ValueForKey( g_arenaInfos[desiredMap], "map" ); +ADDRLP4 292 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $150 +ARGP4 +ADDRLP4 300 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 300 +INDIRP4 +ASGNP4 +line 275 +;275: trap_Cvar_Set( "nextmap", va("map %s", type)); +ADDRGP4 $187 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 304 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $185 +ARGP4 +ADDRLP4 304 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 276 +;276: } +LABELV $184 +line 278 +;277: +;278: return Info_ValueForKey( g_arenaInfos[desiredMap], "map" ); +ADDRLP4 292 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $150 +ARGP4 +ADDRLP4 300 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 300 +INDIRP4 +RETP4 +LABELV $158 +endproc G_RefreshNextMap 312 16 +proc G_LoadArenas 1460 16 +line 286 +;279:} +;280: +;281:/* +;282:=============== +;283:G_LoadArenas +;284:=============== +;285:*/ +;286:static void G_LoadArenas( void ) { +line 295 +;287: int numdirs; +;288: vmCvar_t arenasFile; +;289: char filename[128]; +;290: char dirlist[1024]; +;291: char* dirptr; +;292: int i, n; +;293: int dirlen; +;294: +;295: g_numArenas = 0; +ADDRGP4 g_numArenas +CNSTI4 0 +ASGNI4 +line 297 +;296: +;297: trap_Cvar_Register( &arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM ); +ADDRLP4 148 +ARGP4 +ADDRGP4 $189 +ARGP4 +ADDRGP4 $165 +ARGP4 +CNSTI4 80 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 298 +;298: if( *arenasFile.string ) { +ADDRLP4 148+16 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $190 +line 299 +;299: G_LoadArenasFromFile(arenasFile.string); +ADDRLP4 148+16 +ARGP4 +ADDRGP4 G_LoadArenasFromFile +CALLV +pop +line 300 +;300: } +ADDRGP4 $191 +JUMPV +LABELV $190 +line 301 +;301: else { +line 302 +;302: G_LoadArenasFromFile("scripts/arenas.txt"); +ADDRGP4 $194 +ARGP4 +ADDRGP4 G_LoadArenasFromFile +CALLV +pop +line 303 +;303: } +LABELV $191 +line 306 +;304: +;305: // get all arenas from .arena files +;306: numdirs = trap_FS_GetFileList("scripts", ".arena", dirlist, 1024 ); +ADDRGP4 $195 +ARGP4 +ADDRGP4 $196 +ARGP4 +ADDRLP4 420 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1444 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 144 +ADDRLP4 1444 +INDIRI4 +ASGNI4 +line 307 +;307: dirptr = dirlist; +ADDRLP4 4 +ADDRLP4 420 +ASGNP4 +line 308 +;308: for (i = 0; i < numdirs; i++, dirptr += dirlen+1) { +ADDRLP4 136 +CNSTI4 0 +ASGNI4 +ADDRGP4 $200 +JUMPV +LABELV $197 +line 309 +;309: dirlen = strlen(dirptr); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 1448 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 140 +ADDRLP4 1448 +INDIRI4 +ASGNI4 +line 310 +;310: strcpy(filename, "scripts/"); +ADDRLP4 8 +ARGP4 +ADDRGP4 $201 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 311 +;311: strcat(filename, dirptr); +ADDRLP4 8 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 312 +;312: G_LoadArenasFromFile(filename); +ADDRLP4 8 +ARGP4 +ADDRGP4 G_LoadArenasFromFile +CALLV +pop +line 313 +;313: } +LABELV $198 +line 308 +ADDRLP4 1448 +CNSTI4 1 +ASGNI4 +ADDRLP4 136 +ADDRLP4 136 +INDIRI4 +ADDRLP4 1448 +INDIRI4 +ADDI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 140 +INDIRI4 +ADDRLP4 1448 +INDIRI4 +ADDI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $200 +ADDRLP4 136 +INDIRI4 +ADDRLP4 144 +INDIRI4 +LTI4 $197 +line 314 +;314: trap_Printf( va( "%i arenas parsed\n", g_numArenas ) ); +ADDRGP4 $202 +ARGP4 +ADDRGP4 g_numArenas +INDIRI4 +ARGI4 +ADDRLP4 1452 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1452 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 316 +;315: +;316: for( n = 0; n < g_numArenas; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $206 +JUMPV +LABELV $203 +line 317 +;317: Info_SetValueForKey( g_arenaInfos[n], "num", va( "%i", n ) ); +ADDRGP4 $208 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1456 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $207 +ARGP4 +ADDRLP4 1456 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 318 +;318: } +LABELV $204 +line 316 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $206 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numArenas +INDIRI4 +LTI4 $203 +line 320 +;319: +;320: G_RefreshNextMap(g_gametype.integer, qfalse); +ADDRGP4 g_gametype+12 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_RefreshNextMap +CALLP4 +pop +line 321 +;321:} +LABELV $188 +endproc G_LoadArenas 1460 16 +export G_GetArenaInfoByMap +proc G_GetArenaInfoByMap 12 8 +line 329 +;322: +;323: +;324:/* +;325:=============== +;326:G_GetArenaInfoByNumber +;327:=============== +;328:*/ +;329:const char *G_GetArenaInfoByMap( const char *map ) { +line 332 +;330: int n; +;331: +;332: for( n = 0; n < g_numArenas; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $214 +JUMPV +LABELV $211 +line 333 +;333: if( Q_stricmp( Info_ValueForKey( g_arenaInfos[n], "map" ), map ) == 0 ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $150 +ARGP4 +ADDRLP4 4 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $215 +line 334 +;334: return g_arenaInfos[n]; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_arenaInfos +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $210 +JUMPV +LABELV $215 +line 336 +;335: } +;336: } +LABELV $212 +line 332 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $214 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numArenas +INDIRI4 +LTI4 $211 +line 338 +;337: +;338: return NULL; +CNSTP4 0 +RETP4 +LABELV $210 +endproc G_GetArenaInfoByMap 12 8 +proc PlayerIntroSound 80 12 +line 347 +;339:} +;340: +;341: +;342:/* +;343:================= +;344:PlayerIntroSound +;345:================= +;346:*/ +;347:static void PlayerIntroSound( const char *modelAndSkin ) { +line 351 +;348: char model[MAX_QPATH]; +;349: char *skin; +;350: +;351: Q_strncpyz( model, modelAndSkin, sizeof(model) ); +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 352 +;352: skin = Q_strrchr( model, '/' ); +ADDRLP4 4 +ARGP4 +CNSTI4 47 +ARGI4 +ADDRLP4 68 +ADDRGP4 Q_strrchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 353 +;353: if ( skin ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $218 +line 354 +;354: *skin++ = '\0'; +ADDRLP4 72 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 72 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 355 +;355: } +ADDRGP4 $219 +JUMPV +LABELV $218 +line 356 +;356: else { +line 357 +;357: skin = model; +ADDRLP4 0 +ADDRLP4 4 +ASGNP4 +line 358 +;358: } +LABELV $219 +line 360 +;359: +;360: if( Q_stricmp( skin, "default" ) == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $222 +ARGP4 +ADDRLP4 72 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +NEI4 $220 +line 361 +;361: skin = model; +ADDRLP4 0 +ADDRLP4 4 +ASGNP4 +line 362 +;362: } +LABELV $220 +line 364 +;363: +;364: trap_SendConsoleCommand( EXEC_APPEND, va( "play sound/player/announce/%s.wav\n", skin ) ); +ADDRGP4 $223 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 76 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 76 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendConsoleCommand +CALLV +pop +line 365 +;365:} +LABELV $217 +endproc PlayerIntroSound 80 12 +export G_AddRandomBot +proc G_AddRandomBot 80 20 +line 372 +;366: +;367:/* +;368:=============== +;369:G_AddRandomBot +;370:=============== +;371:*/ +;372:void G_AddRandomBot( int team ) { +line 378 +;373: int i, n, num; +;374: float skill; +;375: char *value, netname[36], *teamstr; +;376: gclient_t *cl; +;377: +;378: num = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 379 +;379: for ( n = 0; n < g_numBots ; n++ ) { +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 $228 +JUMPV +LABELV $225 +line 380 +;380: value = Info_ValueForKey( g_botInfos[n], "name" ); +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $229 +ARGP4 +ADDRLP4 64 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 64 +INDIRP4 +ASGNP4 +line 382 +;381: // +;382: for ( i=0 ; i< g_maxclients.integer ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $233 +JUMPV +LABELV $230 +line 383 +;383: cl = level.clients + i; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 384 +;384: if ( cl->pers.connected != CON_CONNECTED ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $235 +line 385 +;385: continue; +ADDRGP4 $231 +JUMPV +LABELV $235 +line 387 +;386: } +;387: if ( !(g_entities[cl->ps.clientNum].r.svFlags & SVF_BOT) ) { +CNSTI4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $237 +line 388 +;388: continue; +ADDRGP4 $231 +JUMPV +LABELV $237 +line 390 +;389: } +;390: if ( team >= 0 && cl->sess.sessionTeam != team ) { +ADDRLP4 68 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +LTI4 $241 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRLP4 68 +INDIRI4 +EQI4 $241 +line 391 +;391: continue; +ADDRGP4 $231 +JUMPV +LABELV $241 +line 393 +;392: } +;393: if ( !Q_stricmp( value, cl->pers.netname ) ) { +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 72 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +NEI4 $243 +line 394 +;394: break; +ADDRGP4 $232 +JUMPV +LABELV $243 +line 396 +;395: } +;396: } +LABELV $231 +line 382 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $233 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $230 +LABELV $232 +line 397 +;397: if (i >= g_maxclients.integer) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $245 +line 398 +;398: num++; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 399 +;399: } +LABELV $245 +line 400 +;400: } +LABELV $226 +line 379 +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $228 +ADDRLP4 12 +INDIRI4 +ADDRGP4 g_numBots +INDIRI4 +LTI4 $225 +line 401 +;401: num = random() * num; +ADDRLP4 64 +ADDRGP4 rand +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 64 +INDIRI4 +CNSTI4 32767 +BANDI4 +CVIF4 4 +CNSTF4 1191181824 +DIVF4 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +MULF4 +CVFI4 4 +ASGNI4 +line 402 +;402: for ( n = 0; n < g_numBots ; n++ ) { +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 $251 +JUMPV +LABELV $248 +line 403 +;403: value = Info_ValueForKey( g_botInfos[n], "name" ); +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $229 +ARGP4 +ADDRLP4 68 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 405 +;404: // +;405: for ( i=0 ; i< g_maxclients.integer ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $255 +JUMPV +LABELV $252 +line 406 +;406: cl = level.clients + i; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 407 +;407: if ( cl->pers.connected != CON_CONNECTED ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $257 +line 408 +;408: continue; +ADDRGP4 $253 +JUMPV +LABELV $257 +line 410 +;409: } +;410: if ( !(g_entities[cl->ps.clientNum].r.svFlags & SVF_BOT) ) { +CNSTI4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $259 +line 411 +;411: continue; +ADDRGP4 $253 +JUMPV +LABELV $259 +line 413 +;412: } +;413: if ( team >= 0 && cl->sess.sessionTeam != team ) { +ADDRLP4 72 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +LTI4 $263 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRLP4 72 +INDIRI4 +EQI4 $263 +line 414 +;414: continue; +ADDRGP4 $253 +JUMPV +LABELV $263 +line 416 +;415: } +;416: if ( !Q_stricmp( value, cl->pers.netname ) ) { +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 76 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 0 +NEI4 $265 +line 417 +;417: break; +ADDRGP4 $254 +JUMPV +LABELV $265 +line 419 +;418: } +;419: } +LABELV $253 +line 405 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $255 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $252 +LABELV $254 +line 420 +;420: if (i >= g_maxclients.integer) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $267 +line 421 +;421: num--; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 422 +;422: if (num <= 0) { +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +GTI4 $270 +line 423 +;423: skill = trap_Cvar_VariableValue( "g_spSkill" ); +ADDRGP4 $272 +ARGP4 +ADDRLP4 72 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 56 +ADDRLP4 72 +INDIRF4 +ASGNF4 +line 424 +;424: if (team == TEAM_RED) teamstr = "red"; +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +NEI4 $273 +ADDRLP4 60 +ADDRGP4 $275 +ASGNP4 +ADDRGP4 $274 +JUMPV +LABELV $273 +line 425 +;425: else if (team == TEAM_BLUE) teamstr = "blue"; +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +NEI4 $276 +ADDRLP4 60 +ADDRGP4 $278 +ASGNP4 +ADDRGP4 $277 +JUMPV +LABELV $276 +line 426 +;426: else teamstr = ""; +ADDRLP4 60 +ADDRGP4 $165 +ASGNP4 +LABELV $277 +LABELV $274 +line 427 +;427: strncpy(netname, value, sizeof(netname)-1); +ADDRLP4 20 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 35 +ARGI4 +ADDRGP4 strncpy +CALLP4 +pop +line 428 +;428: netname[sizeof(netname)-1] = '\0'; +ADDRLP4 20+35 +CNSTI1 0 +ASGNI1 +line 429 +;429: Q_CleanStr(netname); +ADDRLP4 20 +ARGP4 +ADDRGP4 Q_CleanStr +CALLP4 +pop +line 430 +;430: trap_SendConsoleCommand( EXEC_INSERT, va("addbot %s %f %s %i\n", netname, skill, teamstr, 0) ); +ADDRGP4 $280 +ARGP4 +ADDRLP4 20 +ARGP4 +ADDRLP4 56 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 76 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 1 +ARGI4 +ADDRLP4 76 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendConsoleCommand +CALLV +pop +line 431 +;431: return; +ADDRGP4 $224 +JUMPV +LABELV $270 +line 433 +;432: } +;433: } +LABELV $267 +line 434 +;434: } +LABELV $249 +line 402 +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $251 +ADDRLP4 12 +INDIRI4 +ADDRGP4 g_numBots +INDIRI4 +LTI4 $248 +line 435 +;435:} +LABELV $224 +endproc G_AddRandomBot 80 20 +export G_RemoveRandomBot +proc G_RemoveRandomBot 52 8 +line 442 +;436: +;437:/* +;438:=============== +;439:G_RemoveRandomBot +;440:=============== +;441:*/ +;442:int G_RemoveRandomBot( int team ) { +line 447 +;443: int i; +;444: char netname[36]; +;445: gclient_t *cl; +;446: +;447: for ( i=0 ; i< g_maxclients.integer ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $285 +JUMPV +LABELV $282 +line 448 +;448: cl = level.clients + i; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 449 +;449: if ( cl->pers.connected != CON_CONNECTED ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $287 +line 450 +;450: continue; +ADDRGP4 $283 +JUMPV +LABELV $287 +line 452 +;451: } +;452: if ( !(g_entities[cl->ps.clientNum].r.svFlags & SVF_BOT) ) { +CNSTI4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $289 +line 453 +;453: continue; +ADDRGP4 $283 +JUMPV +LABELV $289 +line 455 +;454: } +;455: if ( team >= 0 && cl->sess.sessionTeam != team ) { +ADDRLP4 44 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +LTI4 $293 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRLP4 44 +INDIRI4 +EQI4 $293 +line 456 +;456: continue; +ADDRGP4 $283 +JUMPV +LABELV $293 +line 458 +;457: } +;458: strcpy(netname, cl->pers.netname); +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 459 +;459: Q_CleanStr(netname); +ADDRLP4 8 +ARGP4 +ADDRGP4 Q_CleanStr +CALLP4 +pop +line 460 +;460: trap_SendConsoleCommand( EXEC_INSERT, va("kick %s\n", netname) ); +ADDRGP4 $295 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 48 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 1 +ARGI4 +ADDRLP4 48 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendConsoleCommand +CALLV +pop +line 461 +;461: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $281 +JUMPV +LABELV $283 +line 447 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $285 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $282 +line 463 +;462: } +;463: return qfalse; +CNSTI4 0 +RETI4 +LABELV $281 +endproc G_RemoveRandomBot 52 8 +export G_CountHumanPlayers +proc G_CountHumanPlayers 16 0 +line 471 +;464:} +;465: +;466:/* +;467:=============== +;468:G_CountHumanPlayers +;469:=============== +;470:*/ +;471:int G_CountHumanPlayers( int team ) { +line 475 +;472: int i, num; +;473: gclient_t *cl; +;474: +;475: num = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 476 +;476: for ( i=0 ; i< g_maxclients.integer ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $300 +JUMPV +LABELV $297 +line 477 +;477: cl = level.clients + i; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 478 +;478: if ( cl->pers.connected != CON_CONNECTED ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $302 +line 479 +;479: continue; +ADDRGP4 $298 +JUMPV +LABELV $302 +line 481 +;480: } +;481: if ( g_entities[cl->ps.clientNum].r.svFlags & SVF_BOT ) { +CNSTI4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $304 +line 482 +;482: continue; +ADDRGP4 $298 +JUMPV +LABELV $304 +line 484 +;483: } +;484: if ( team >= 0 && cl->sess.sessionTeam != team ) { +ADDRLP4 12 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +LTI4 $308 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $308 +line 485 +;485: continue; +ADDRGP4 $298 +JUMPV +LABELV $308 +line 487 +;486: } +;487: num++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 488 +;488: } +LABELV $298 +line 476 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $300 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $297 +line 489 +;489: return num; +ADDRLP4 8 +INDIRI4 +RETI4 +LABELV $296 +endproc G_CountHumanPlayers 16 0 +export G_CountBotPlayers +proc G_CountBotPlayers 20 0 +line 497 +;490:} +;491: +;492:/* +;493:=============== +;494:G_CountBotPlayers +;495:=============== +;496:*/ +;497:int G_CountBotPlayers( int team ) { +line 501 +;498: int i, n, num; +;499: gclient_t *cl; +;500: +;501: num = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 502 +;502: for ( i=0 ; i< g_maxclients.integer ; i++ ) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $314 +JUMPV +LABELV $311 +line 503 +;503: cl = level.clients + i; +ADDRLP4 4 +CNSTI4 1756 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 504 +;504: if ( cl->pers.connected != CON_CONNECTED ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $316 +line 505 +;505: continue; +ADDRGP4 $312 +JUMPV +LABELV $316 +line 507 +;506: } +;507: if ( !(g_entities[cl->ps.clientNum].r.svFlags & SVF_BOT) ) { +CNSTI4 828 +ADDRLP4 4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $318 +line 508 +;508: continue; +ADDRGP4 $312 +JUMPV +LABELV $318 +line 510 +;509: } +;510: if ( team >= 0 && cl->sess.sessionTeam != team ) { +ADDRLP4 16 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +LTI4 $322 +ADDRLP4 4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $322 +line 511 +;511: continue; +ADDRGP4 $312 +JUMPV +LABELV $322 +line 513 +;512: } +;513: num++; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 514 +;514: } +LABELV $312 +line 502 +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $314 +ADDRLP4 8 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $311 +line 515 +;515: for( n = 0; n < BOT_SPAWN_QUEUE_DEPTH; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $324 +line 516 +;516: if( !botSpawnQueue[n].spawnTime ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $328 +line 517 +;517: continue; +ADDRGP4 $325 +JUMPV +LABELV $328 +line 519 +;518: } +;519: if ( botSpawnQueue[n].spawnTime > level.time ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $331 +line 520 +;520: continue; +ADDRGP4 $325 +JUMPV +LABELV $331 +line 522 +;521: } +;522: num++; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 523 +;523: } +LABELV $325 +line 515 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $324 +line 524 +;524: return num; +ADDRLP4 12 +INDIRI4 +RETI4 +LABELV $310 +endproc G_CountBotPlayers 20 0 +bss +align 4 +LABELV $336 +skip 4 +export G_CheckMinimumPlayers +code +proc G_CheckMinimumPlayers 36 4 +line 532 +;525:} +;526: +;527:/* +;528:=============== +;529:G_CheckMinimumPlayers +;530:=============== +;531:*/ +;532:void G_CheckMinimumPlayers( void ) { +line 537 +;533: int minplayers; +;534: int humanplayers, botplayers; +;535: static int checkminimumplayers_time; +;536: +;537: if (level.intermissiontime) return; +ADDRGP4 level+9008 +INDIRI4 +CNSTI4 0 +EQI4 $337 +ADDRGP4 $335 +JUMPV +LABELV $337 +line 539 +;538: //only check once each 10 seconds +;539: if (checkminimumplayers_time > level.time - 10000) { +ADDRGP4 $336 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 10000 +SUBI4 +LEI4 $340 +line 540 +;540: return; +ADDRGP4 $335 +JUMPV +LABELV $340 +line 542 +;541: } +;542: checkminimumplayers_time = level.time; +ADDRGP4 $336 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 543 +;543: trap_Cvar_Update(&bot_minplayers); +ADDRGP4 bot_minplayers +ARGP4 +ADDRGP4 trap_Cvar_Update +CALLV +pop +line 544 +;544: minplayers = bot_minplayers.integer; +ADDRLP4 0 +ADDRGP4 bot_minplayers+12 +INDIRI4 +ASGNI4 +line 545 +;545: if (minplayers <= 0) return; +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GTI4 $345 +ADDRGP4 $335 +JUMPV +LABELV $345 +line 547 +;546: +;547: if (g_gametype.integer >= GT_TEAM) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $347 +line 548 +;548: if (minplayers >= g_maxclients.integer / 2) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +CNSTI4 2 +DIVI4 +LTI4 $350 +line 549 +;549: minplayers = (g_maxclients.integer / 2) -1; +ADDRLP4 0 +ADDRGP4 g_maxclients+12 +INDIRI4 +CNSTI4 2 +DIVI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 550 +;550: } +LABELV $350 +line 552 +;551: +;552: humanplayers = G_CountHumanPlayers( TEAM_RED ); +CNSTI4 1 +ARGI4 +ADDRLP4 12 +ADDRGP4 G_CountHumanPlayers +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 553 +;553: botplayers = G_CountBotPlayers( TEAM_RED ); +CNSTI4 1 +ARGI4 +ADDRLP4 16 +ADDRGP4 G_CountBotPlayers +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 555 +;554: // +;555: if (humanplayers + botplayers < minplayers) { +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +GEI4 $354 +line 556 +;556: G_AddRandomBot( TEAM_RED ); +CNSTI4 1 +ARGI4 +ADDRGP4 G_AddRandomBot +CALLV +pop +line 557 +;557: } else if (humanplayers + botplayers > minplayers && botplayers) { +ADDRGP4 $355 +JUMPV +LABELV $354 +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +LEI4 $356 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $356 +line 558 +;558: G_RemoveRandomBot( TEAM_RED ); +CNSTI4 1 +ARGI4 +ADDRGP4 G_RemoveRandomBot +CALLI4 +pop +line 559 +;559: } +LABELV $356 +LABELV $355 +line 561 +;560: // +;561: humanplayers = G_CountHumanPlayers( TEAM_BLUE ); +CNSTI4 2 +ARGI4 +ADDRLP4 24 +ADDRGP4 G_CountHumanPlayers +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 562 +;562: botplayers = G_CountBotPlayers( TEAM_BLUE ); +CNSTI4 2 +ARGI4 +ADDRLP4 28 +ADDRGP4 G_CountBotPlayers +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 564 +;563: // +;564: if (humanplayers + botplayers < minplayers) { +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +GEI4 $358 +line 565 +;565: G_AddRandomBot( TEAM_BLUE ); +CNSTI4 2 +ARGI4 +ADDRGP4 G_AddRandomBot +CALLV +pop +line 566 +;566: } else if (humanplayers + botplayers > minplayers && botplayers) { +ADDRGP4 $348 +JUMPV +LABELV $358 +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +LEI4 $348 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $348 +line 567 +;567: G_RemoveRandomBot( TEAM_BLUE ); +CNSTI4 2 +ARGI4 +ADDRGP4 G_RemoveRandomBot +CALLI4 +pop +line 568 +;568: } +line 569 +;569: } +ADDRGP4 $348 +JUMPV +LABELV $347 +line 570 +;570: else if (g_gametype.integer == GT_TOURNAMENT ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $362 +line 571 +;571: if (minplayers >= g_maxclients.integer) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $365 +line 572 +;572: minplayers = g_maxclients.integer-1; +ADDRLP4 0 +ADDRGP4 g_maxclients+12 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 573 +;573: } +LABELV $365 +line 574 +;574: humanplayers = G_CountHumanPlayers( -1 ); +CNSTI4 -1 +ARGI4 +ADDRLP4 12 +ADDRGP4 G_CountHumanPlayers +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 575 +;575: botplayers = G_CountBotPlayers( -1 ); +CNSTI4 -1 +ARGI4 +ADDRLP4 16 +ADDRGP4 G_CountBotPlayers +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 577 +;576: // +;577: if (humanplayers + botplayers < minplayers) { +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +GEI4 $369 +line 578 +;578: G_AddRandomBot( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddRandomBot +CALLV +pop +line 579 +;579: } else if (humanplayers + botplayers > minplayers && botplayers) { +ADDRGP4 $363 +JUMPV +LABELV $369 +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +LEI4 $363 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $363 +line 581 +;580: // try to remove spectators first +;581: if (!G_RemoveRandomBot( TEAM_SPECTATOR )) { +CNSTI4 3 +ARGI4 +ADDRLP4 24 +ADDRGP4 G_RemoveRandomBot +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $363 +line 583 +;582: // just remove the bot that is playing +;583: G_RemoveRandomBot( -1 ); +CNSTI4 -1 +ARGI4 +ADDRGP4 G_RemoveRandomBot +CALLI4 +pop +line 584 +;584: } +line 585 +;585: } +line 586 +;586: } +ADDRGP4 $363 +JUMPV +LABELV $362 +line 587 +;587: else if (g_gametype.integer == GT_FFA) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 0 +NEI4 $375 +line 588 +;588: if (minplayers >= g_maxclients.integer) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $378 +line 589 +;589: minplayers = g_maxclients.integer-1; +ADDRLP4 0 +ADDRGP4 g_maxclients+12 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 590 +;590: } +LABELV $378 +line 591 +;591: humanplayers = G_CountHumanPlayers( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRLP4 12 +ADDRGP4 G_CountHumanPlayers +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 592 +;592: botplayers = G_CountBotPlayers( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRLP4 16 +ADDRGP4 G_CountBotPlayers +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 594 +;593: // +;594: if (humanplayers + botplayers < minplayers) { +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +GEI4 $382 +line 595 +;595: G_AddRandomBot( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddRandomBot +CALLV +pop +line 596 +;596: } else if (humanplayers + botplayers > minplayers && botplayers) { +ADDRGP4 $376 +JUMPV +LABELV $382 +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +LEI4 $376 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $376 +line 597 +;597: G_RemoveRandomBot( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRGP4 G_RemoveRandomBot +CALLI4 +pop +line 598 +;598: } +line 599 +;599: } +ADDRGP4 $376 +JUMPV +LABELV $375 +line 600 +;600: else if (g_gametype.integer == GT_HOLOCRON || g_gametype.integer == GT_JEDIMASTER) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 1 +EQI4 $390 +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 2 +NEI4 $386 +LABELV $390 +line 601 +;601: if (minplayers >= g_maxclients.integer) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_maxclients+12 +INDIRI4 +LTI4 $391 +line 602 +;602: minplayers = g_maxclients.integer-1; +ADDRLP4 0 +ADDRGP4 g_maxclients+12 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 603 +;603: } +LABELV $391 +line 604 +;604: humanplayers = G_CountHumanPlayers( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRLP4 12 +ADDRGP4 G_CountHumanPlayers +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 605 +;605: botplayers = G_CountBotPlayers( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRLP4 16 +ADDRGP4 G_CountBotPlayers +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 607 +;606: // +;607: if (humanplayers + botplayers < minplayers) { +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +GEI4 $395 +line 608 +;608: G_AddRandomBot( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddRandomBot +CALLV +pop +line 609 +;609: } else if (humanplayers + botplayers > minplayers && botplayers) { +ADDRGP4 $396 +JUMPV +LABELV $395 +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRI4 +LEI4 $397 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $397 +line 610 +;610: G_RemoveRandomBot( TEAM_FREE ); +CNSTI4 0 +ARGI4 +ADDRGP4 G_RemoveRandomBot +CALLI4 +pop +line 611 +;611: } +LABELV $397 +LABELV $396 +line 612 +;612: } +LABELV $386 +LABELV $376 +LABELV $363 +LABELV $348 +line 613 +;613:} +LABELV $335 +endproc G_CheckMinimumPlayers 36 4 +export G_CheckBotSpawn +proc G_CheckBotSpawn 1032 12 +line 620 +;614: +;615:/* +;616:=============== +;617:G_CheckBotSpawn +;618:=============== +;619:*/ +;620:void G_CheckBotSpawn( void ) { +line 624 +;621: int n; +;622: char userinfo[MAX_INFO_VALUE]; +;623: +;624: G_CheckMinimumPlayers(); +ADDRGP4 G_CheckMinimumPlayers +CALLV +pop +line 626 +;625: +;626: for( n = 0; n < BOT_SPAWN_QUEUE_DEPTH; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $400 +line 627 +;627: if( !botSpawnQueue[n].spawnTime ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $404 +line 628 +;628: continue; +ADDRGP4 $401 +JUMPV +LABELV $404 +line 630 +;629: } +;630: if ( botSpawnQueue[n].spawnTime > level.time ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $407 +line 631 +;631: continue; +ADDRGP4 $401 +JUMPV +LABELV $407 +line 633 +;632: } +;633: ClientBegin( botSpawnQueue[n].clientNum, qfalse ); +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 ClientBegin +CALLV +pop +line 634 +;634: botSpawnQueue[n].spawnTime = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 636 +;635: +;636: if( g_gametype.integer == GT_SINGLE_PLAYER ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 4 +NEI4 $412 +line 637 +;637: trap_GetUserinfo( botSpawnQueue[n].clientNum, userinfo, sizeof(userinfo) ); +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 638 +;638: PlayerIntroSound( Info_ValueForKey (userinfo, "model") ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $415 +ARGP4 +ADDRLP4 1028 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 PlayerIntroSound +CALLV +pop +line 639 +;639: } +LABELV $412 +line 640 +;640: } +LABELV $401 +line 626 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $400 +line 641 +;641:} +LABELV $399 +endproc G_CheckBotSpawn 1032 12 +proc AddBotToSpawnQueue 4 8 +line 649 +;642: +;643: +;644:/* +;645:=============== +;646:AddBotToSpawnQueue +;647:=============== +;648:*/ +;649:static void AddBotToSpawnQueue( int clientNum, int delay ) { +line 652 +;650: int n; +;651: +;652: for( n = 0; n < BOT_SPAWN_QUEUE_DEPTH; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $417 +line 653 +;653: if( !botSpawnQueue[n].spawnTime ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $421 +line 654 +;654: botSpawnQueue[n].spawnTime = level.time + delay; +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ADDRFP4 4 +INDIRI4 +ADDI4 +ASGNI4 +line 655 +;655: botSpawnQueue[n].clientNum = clientNum; +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue +ADDP4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 656 +;656: return; +ADDRGP4 $416 +JUMPV +LABELV $421 +line 658 +;657: } +;658: } +LABELV $418 +line 652 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $417 +line 660 +;659: +;660: G_Printf( S_COLOR_YELLOW "Unable to delay spawn\n" ); +ADDRGP4 $426 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 661 +;661: ClientBegin( clientNum, qfalse ); +ADDRFP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 ClientBegin +CALLV +pop +line 662 +;662:} +LABELV $416 +endproc AddBotToSpawnQueue 4 8 +export G_RemoveQueuedBotBegin +proc G_RemoveQueuedBotBegin 4 0 +line 673 +;663: +;664: +;665:/* +;666:=============== +;667:G_RemoveQueuedBotBegin +;668: +;669:Called on client disconnect to make sure the delayed spawn +;670:doesn't happen on a freed index +;671:=============== +;672:*/ +;673:void G_RemoveQueuedBotBegin( int clientNum ) { +line 676 +;674: int n; +;675: +;676: for( n = 0; n < BOT_SPAWN_QUEUE_DEPTH; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $428 +line 677 +;677: if( botSpawnQueue[n].clientNum == clientNum ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $432 +line 678 +;678: botSpawnQueue[n].spawnTime = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 botSpawnQueue+4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 679 +;679: return; +ADDRGP4 $427 +JUMPV +LABELV $432 +line 681 +;680: } +;681: } +LABELV $429 +line 676 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $428 +line 682 +;682:} +LABELV $427 +endproc G_RemoveQueuedBotBegin 4 0 +export G_BotConnect +proc G_BotConnect 1336 12 +line 690 +;683: +;684: +;685:/* +;686:=============== +;687:G_BotConnect +;688:=============== +;689:*/ +;690:qboolean G_BotConnect( int clientNum, qboolean restart ) { +line 694 +;691: bot_settings_t settings; +;692: char userinfo[MAX_INFO_STRING]; +;693: +;694: trap_GetUserinfo( clientNum, userinfo, sizeof(userinfo) ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 292 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 696 +;695: +;696: Q_strncpyz( settings.personalityfile, Info_ValueForKey( userinfo, "personality" ), sizeof(settings.personalityfile) ); +ADDRLP4 292 +ARGP4 +ADDRGP4 $436 +ARGP4 +ADDRLP4 1316 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1316 +INDIRP4 +ARGP4 +CNSTI4 144 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 697 +;697: settings.skill = atof( Info_ValueForKey( userinfo, "skill" ) ); +ADDRLP4 292 +ARGP4 +ADDRGP4 $438 +ARGP4 +ADDRLP4 1320 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1320 +INDIRP4 +ARGP4 +ADDRLP4 1324 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 0+144 +ADDRLP4 1324 +INDIRF4 +ASGNF4 +line 698 +;698: Q_strncpyz( settings.team, Info_ValueForKey( userinfo, "team" ), sizeof(settings.team) ); +ADDRLP4 292 +ARGP4 +ADDRGP4 $440 +ARGP4 +ADDRLP4 1328 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 0+148 +ARGP4 +ADDRLP4 1328 +INDIRP4 +ARGP4 +CNSTI4 144 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 700 +;699: +;700: if (!BotAISetupClient( clientNum, &settings, restart )) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 1332 +ADDRGP4 BotAISetupClient +CALLI4 +ASGNI4 +ADDRLP4 1332 +INDIRI4 +CNSTI4 0 +NEI4 $442 +line 701 +;701: trap_DropClient( clientNum, "BotAISetupClient failed" ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $444 +ARGP4 +ADDRGP4 trap_DropClient +CALLV +pop +line 702 +;702: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $435 +JUMPV +LABELV $442 +line 705 +;703: } +;704: +;705: return qtrue; +CNSTI4 1 +RETI4 +LABELV $435 +endproc G_BotConnect 1336 12 +proc G_AddBot 1140 12 +line 714 +;706:} +;707: +;708: +;709:/* +;710:=============== +;711:G_AddBot +;712:=============== +;713:*/ +;714:static void G_AddBot( const char *name, float skill, const char *team, int delay, char *altname) { +line 724 +;715: int clientNum; +;716: char *botinfo; +;717: gentity_t *bot; +;718: char *key; +;719: char *s; +;720: char *botname; +;721: char *model; +;722:// char *headmodel; +;723: char userinfo[MAX_INFO_STRING]; +;724: int preTeam = 0; +ADDRLP4 1052 +CNSTI4 0 +ASGNI4 +line 727 +;725: +;726: // get the botinfo from bots.txt +;727: botinfo = G_GetBotInfoByName( name ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1056 +ADDRGP4 G_GetBotInfoByName +CALLP4 +ASGNP4 +ADDRLP4 1032 +ADDRLP4 1056 +INDIRP4 +ASGNP4 +line 728 +;728: if ( !botinfo ) { +ADDRLP4 1032 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $446 +line 729 +;729: G_Printf( S_COLOR_RED "Error: Bot '%s' not defined\n", name ); +ADDRGP4 $448 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 730 +;730: return; +ADDRGP4 $445 +JUMPV +LABELV $446 +line 734 +;731: } +;732: +;733: // create the bot's userinfo +;734: userinfo[0] = '\0'; +ADDRLP4 0 +CNSTI1 0 +ASGNI1 +line 736 +;735: +;736: botname = Info_ValueForKey( botinfo, "funname" ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRGP4 $449 +ARGP4 +ADDRLP4 1060 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1048 +ADDRLP4 1060 +INDIRP4 +ASGNP4 +line 737 +;737: if( !botname[0] ) { +ADDRLP4 1048 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $450 +line 738 +;738: botname = Info_ValueForKey( botinfo, "name" ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRGP4 $229 +ARGP4 +ADDRLP4 1064 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1048 +ADDRLP4 1064 +INDIRP4 +ASGNP4 +line 739 +;739: } +LABELV $450 +line 741 +;740: // check for an alternative name +;741: if (altname && altname[0]) { +ADDRLP4 1064 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1064 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $452 +ADDRLP4 1064 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $452 +line 742 +;742: botname = altname; +ADDRLP4 1048 +ADDRFP4 16 +INDIRP4 +ASGNP4 +line 743 +;743: } +LABELV $452 +line 744 +;744: Info_SetValueForKey( userinfo, "name", botname ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $229 +ARGP4 +ADDRLP4 1048 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 745 +;745: Info_SetValueForKey( userinfo, "rate", "25000" ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $454 +ARGP4 +ADDRGP4 $455 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 746 +;746: Info_SetValueForKey( userinfo, "snaps", "20" ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $456 +ARGP4 +ADDRGP4 $457 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 747 +;747: Info_SetValueForKey( userinfo, "skill", va("%1.2f", skill) ); +ADDRGP4 $458 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRLP4 1068 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 $438 +ARGP4 +ADDRLP4 1068 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 749 +;748: +;749: if ( skill >= 1 && skill < 2 ) { +ADDRLP4 1072 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 1072 +INDIRF4 +CNSTF4 1065353216 +LTF4 $459 +ADDRLP4 1072 +INDIRF4 +CNSTF4 1073741824 +GEF4 $459 +line 750 +;750: Info_SetValueForKey( userinfo, "handicap", "50" ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $461 +ARGP4 +ADDRGP4 $462 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 751 +;751: } +ADDRGP4 $460 +JUMPV +LABELV $459 +line 752 +;752: else if ( skill >= 2 && skill < 3 ) { +ADDRLP4 1076 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 1076 +INDIRF4 +CNSTF4 1073741824 +LTF4 $463 +ADDRLP4 1076 +INDIRF4 +CNSTF4 1077936128 +GEF4 $463 +line 753 +;753: Info_SetValueForKey( userinfo, "handicap", "70" ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $461 +ARGP4 +ADDRGP4 $465 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 754 +;754: } +ADDRGP4 $464 +JUMPV +LABELV $463 +line 755 +;755: else if ( skill >= 3 && skill < 4 ) { +ADDRLP4 1080 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 1080 +INDIRF4 +CNSTF4 1077936128 +LTF4 $466 +ADDRLP4 1080 +INDIRF4 +CNSTF4 1082130432 +GEF4 $466 +line 756 +;756: Info_SetValueForKey( userinfo, "handicap", "90" ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $461 +ARGP4 +ADDRGP4 $468 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 757 +;757: } +LABELV $466 +LABELV $464 +LABELV $460 +line 759 +;758: +;759: key = "model"; +ADDRLP4 1024 +ADDRGP4 $415 +ASGNP4 +line 760 +;760: model = Info_ValueForKey( botinfo, key ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1084 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1044 +ADDRLP4 1084 +INDIRP4 +ASGNP4 +line 761 +;761: if ( !*model ) { +ADDRLP4 1044 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $469 +line 762 +;762: model = "visor/default"; +ADDRLP4 1044 +ADDRGP4 $471 +ASGNP4 +line 763 +;763: } +LABELV $469 +line 764 +;764: Info_SetValueForKey( userinfo, key, model ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1044 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 765 +;765: key = "team_model"; +ADDRLP4 1024 +ADDRGP4 $472 +ASGNP4 +line 766 +;766: Info_SetValueForKey( userinfo, key, model ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1044 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 777 +;767: +;768:/* key = "headmodel"; +;769: headmodel = Info_ValueForKey( botinfo, key ); +;770: if ( !*headmodel ) { +;771: headmodel = model; +;772: } +;773: Info_SetValueForKey( userinfo, key, headmodel ); +;774: key = "team_headmodel"; +;775: Info_SetValueForKey( userinfo, key, headmodel ); +;776:*/ +;777: key = "gender"; +ADDRLP4 1024 +ADDRGP4 $473 +ASGNP4 +line 778 +;778: s = Info_ValueForKey( botinfo, key ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1088 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 1088 +INDIRP4 +ASGNP4 +line 779 +;779: if ( !*s ) { +ADDRLP4 1028 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $474 +line 780 +;780: s = "male"; +ADDRLP4 1028 +ADDRGP4 $476 +ASGNP4 +line 781 +;781: } +LABELV $474 +line 782 +;782: Info_SetValueForKey( userinfo, "sex", s ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $477 +ARGP4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 784 +;783: +;784: key = "color1"; +ADDRLP4 1024 +ADDRGP4 $478 +ASGNP4 +line 785 +;785: s = Info_ValueForKey( botinfo, key ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1092 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 1092 +INDIRP4 +ASGNP4 +line 786 +;786: if ( !*s ) { +ADDRLP4 1028 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $479 +line 787 +;787: s = "4"; +ADDRLP4 1028 +ADDRGP4 $481 +ASGNP4 +line 788 +;788: } +LABELV $479 +line 789 +;789: Info_SetValueForKey( userinfo, key, s ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 791 +;790: +;791: key = "color2"; +ADDRLP4 1024 +ADDRGP4 $482 +ASGNP4 +line 792 +;792: s = Info_ValueForKey( botinfo, key ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 1096 +INDIRP4 +ASGNP4 +line 793 +;793: if ( !*s ) { +ADDRLP4 1028 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $483 +line 794 +;794: s = "5"; +ADDRLP4 1028 +ADDRGP4 $485 +ASGNP4 +line 795 +;795: } +LABELV $483 +line 796 +;796: Info_SetValueForKey( userinfo, key, s ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 798 +;797: +;798: s = Info_ValueForKey(botinfo, "personality"); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRGP4 $436 +ARGP4 +ADDRLP4 1100 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 1100 +INDIRP4 +ASGNP4 +line 799 +;799: if (!*s ) +ADDRLP4 1028 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $486 +line 800 +;800: { +line 801 +;801: Info_SetValueForKey( userinfo, "personality", "botfiles/default.jkb" ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $436 +ARGP4 +ADDRGP4 $488 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 802 +;802: } +ADDRGP4 $487 +JUMPV +LABELV $486 +line 804 +;803: else +;804: { +line 805 +;805: Info_SetValueForKey( userinfo, "personality", s ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $436 +ARGP4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 806 +;806: } +LABELV $487 +line 809 +;807: +;808: // have the server allocate a client slot +;809: clientNum = trap_BotAllocateClient(); +ADDRLP4 1104 +ADDRGP4 trap_BotAllocateClient +CALLI4 +ASGNI4 +ADDRLP4 1036 +ADDRLP4 1104 +INDIRI4 +ASGNI4 +line 810 +;810: if ( clientNum == -1 ) { +ADDRLP4 1036 +INDIRI4 +CNSTI4 -1 +NEI4 $489 +line 813 +;811:// G_Printf( S_COLOR_RED "Unable to add bot. All player slots are in use.\n" ); +;812:// G_Printf( S_COLOR_RED "Start server with more 'open' slots.\n" ); +;813: trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "UNABLE_TO_ADD_BOT"))); +ADDRGP4 $492 +ARGP4 +ADDRGP4 $493 +ARGP4 +ADDRLP4 1108 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $491 +ARGP4 +ADDRLP4 1108 +INDIRP4 +ARGP4 +ADDRLP4 1112 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 1112 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 814 +;814: return; +ADDRGP4 $445 +JUMPV +LABELV $489 +line 818 +;815: } +;816: +;817: // initialize the bot settings +;818: if( !team || !*team ) { +ADDRLP4 1108 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 1108 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $496 +ADDRLP4 1108 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $494 +LABELV $496 +line 819 +;819: if( g_gametype.integer >= GT_TEAM ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $497 +line 820 +;820: if( PickTeam(clientNum) == TEAM_RED) { +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1112 +ADDRGP4 PickTeam +CALLI4 +ASGNI4 +ADDRLP4 1112 +INDIRI4 +CNSTI4 1 +NEI4 $500 +line 821 +;821: team = "red"; +ADDRFP4 8 +ADDRGP4 $275 +ASGNP4 +line 822 +;822: } +ADDRGP4 $498 +JUMPV +LABELV $500 +line 823 +;823: else { +line 824 +;824: team = "blue"; +ADDRFP4 8 +ADDRGP4 $278 +ASGNP4 +line 825 +;825: } +line 826 +;826: } +ADDRGP4 $498 +JUMPV +LABELV $497 +line 827 +;827: else { +line 828 +;828: team = "red"; +ADDRFP4 8 +ADDRGP4 $275 +ASGNP4 +line 829 +;829: } +LABELV $498 +line 830 +;830: } +LABELV $494 +line 832 +;831:// Info_SetValueForKey( userinfo, "characterfile", Info_ValueForKey( botinfo, "aifile" ) ); +;832: Info_SetValueForKey( userinfo, "skill", va( "%5.2f", skill ) ); +ADDRGP4 $502 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRLP4 1112 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 $438 +ARGP4 +ADDRLP4 1112 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 833 +;833: Info_SetValueForKey( userinfo, "team", team ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $440 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 835 +;834: +;835: bot = &g_entities[ clientNum ]; +ADDRLP4 1040 +CNSTI4 828 +ADDRLP4 1036 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 836 +;836: bot->r.svFlags |= SVF_BOT; +ADDRLP4 1116 +ADDRLP4 1040 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 1116 +INDIRP4 +ADDRLP4 1116 +INDIRP4 +INDIRI4 +CNSTI4 8 +BORI4 +ASGNI4 +line 837 +;837: bot->inuse = qtrue; +ADDRLP4 1040 +INDIRP4 +CNSTI4 412 +ADDP4 +CNSTI4 1 +ASGNI4 +line 840 +;838: +;839: // register the userinfo +;840: trap_SetUserinfo( clientNum, userinfo ); +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_SetUserinfo +CALLV +pop +line 842 +;841: +;842: if (g_gametype.integer >= GT_TEAM) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $503 +line 843 +;843: { +line 844 +;844: if (team && Q_stricmp(team, "red") == 0) +ADDRLP4 1120 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 1120 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $506 +ADDRLP4 1120 +INDIRP4 +ARGP4 +ADDRGP4 $275 +ARGP4 +ADDRLP4 1124 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1124 +INDIRI4 +CNSTI4 0 +NEI4 $506 +line 845 +;845: { +line 846 +;846: bot->client->sess.sessionTeam = TEAM_RED; +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +CNSTI4 1 +ASGNI4 +line 847 +;847: } +ADDRGP4 $507 +JUMPV +LABELV $506 +line 848 +;848: else if (team && Q_stricmp(team, "blue") == 0) +ADDRLP4 1128 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 1128 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $508 +ADDRLP4 1128 +INDIRP4 +ARGP4 +ADDRGP4 $278 +ARGP4 +ADDRLP4 1132 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1132 +INDIRI4 +CNSTI4 0 +NEI4 $508 +line 849 +;849: { +line 850 +;850: bot->client->sess.sessionTeam = TEAM_BLUE; +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +CNSTI4 2 +ASGNI4 +line 851 +;851: } +ADDRGP4 $509 +JUMPV +LABELV $508 +line 853 +;852: else +;853: { +line 854 +;854: bot->client->sess.sessionTeam = PickTeam( -1 ); +CNSTI4 -1 +ARGI4 +ADDRLP4 1136 +ADDRGP4 PickTeam +CALLI4 +ASGNI4 +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +ADDRLP4 1136 +INDIRI4 +ASGNI4 +line 855 +;855: } +LABELV $509 +LABELV $507 +line 856 +;856: } +LABELV $503 +line 858 +;857: +;858: preTeam = bot->client->sess.sessionTeam; +ADDRLP4 1052 +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 861 +;859: +;860: // have it connect to the game as a normal client +;861: if ( ClientConnect( clientNum, qtrue, qtrue ) ) { +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1120 +CNSTI4 1 +ASGNI4 +ADDRLP4 1120 +INDIRI4 +ARGI4 +ADDRLP4 1120 +INDIRI4 +ARGI4 +ADDRLP4 1124 +ADDRGP4 ClientConnect +CALLP4 +ASGNP4 +ADDRLP4 1124 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $510 +line 862 +;862: return; +ADDRGP4 $445 +JUMPV +LABELV $510 +line 865 +;863: } +;864: +;865: if (bot->client->sess.sessionTeam != preTeam) +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +EQI4 $512 +line 866 +;866: { +line 867 +;867: trap_GetUserinfo(clientNum, userinfo, MAX_INFO_STRING); +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 869 +;868: +;869: if (bot->client->sess.sessionTeam == TEAM_SPECTATOR) +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $514 +line 870 +;870: { +line 871 +;871: bot->client->sess.sessionTeam = preTeam; +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +ADDRLP4 1052 +INDIRI4 +ASGNI4 +line 872 +;872: } +LABELV $514 +line 874 +;873: +;874: if (bot->client->sess.sessionTeam == TEAM_RED) +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $516 +line 875 +;875: { +line 876 +;876: team = "Red"; +ADDRFP4 8 +ADDRGP4 $518 +ASGNP4 +line 877 +;877: } +ADDRGP4 $517 +JUMPV +LABELV $516 +line 879 +;878: else +;879: { +line 880 +;880: team = "Blue"; +ADDRFP4 8 +ADDRGP4 $519 +ASGNP4 +line 881 +;881: } +LABELV $517 +line 883 +;882: +;883: Info_SetValueForKey( userinfo, "team", team ); +ADDRLP4 0 +ARGP4 +ADDRGP4 $440 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 885 +;884: +;885: trap_SetUserinfo( clientNum, userinfo ); +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_SetUserinfo +CALLV +pop +line 887 +;886: +;887: bot->client->ps.persistant[ PERS_TEAM ] = bot->client->sess.sessionTeam; +ADDRLP4 1128 +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1128 +INDIRP4 +CNSTI4 292 +ADDP4 +ADDRLP4 1128 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 889 +;888: +;889: G_ReadSessionData( bot->client ); +ADDRLP4 1040 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 G_ReadSessionData +CALLV +pop +line 890 +;890: ClientUserinfoChanged( clientNum ); +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRGP4 ClientUserinfoChanged +CALLV +pop +line 891 +;891: } +LABELV $512 +line 893 +;892: +;893: if( delay == 0 ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $520 +line 894 +;894: ClientBegin( clientNum, qfalse ); +ADDRLP4 1036 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 ClientBegin +CALLV +pop +line 895 +;895: return; +ADDRGP4 $445 +JUMPV +LABELV $520 +line 898 +;896: } +;897: +;898: AddBotToSpawnQueue( clientNum, delay ); +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 AddBotToSpawnQueue +CALLV +pop +line 899 +;899:} +LABELV $445 +endproc G_AddBot 1140 12 +export Svcmd_AddBot_f +proc Svcmd_AddBot_f 4112 20 +line 907 +;900: +;901: +;902:/* +;903:=============== +;904:Svcmd_AddBot_f +;905:=============== +;906:*/ +;907:void Svcmd_AddBot_f( void ) { +line 916 +;908: float skill; +;909: int delay; +;910: char name[MAX_TOKEN_CHARS]; +;911: char altname[MAX_TOKEN_CHARS]; +;912: char string[MAX_TOKEN_CHARS]; +;913: char team[MAX_TOKEN_CHARS]; +;914: +;915: // are bots enabled? +;916: if ( !trap_Cvar_VariableIntegerValue( "bot_enable" ) ) { +ADDRGP4 $525 +ARGP4 +ADDRLP4 4104 +ADDRGP4 trap_Cvar_VariableIntegerValue +CALLI4 +ASGNI4 +ADDRLP4 4104 +INDIRI4 +CNSTI4 0 +NEI4 $523 +line 917 +;917: return; +ADDRGP4 $522 +JUMPV +LABELV $523 +line 921 +;918: } +;919: +;920: // name +;921: trap_Argv( 1, name, sizeof( name ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 1024 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 922 +;922: if ( !name[0] ) { +ADDRLP4 1024 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $526 +line 923 +;923: trap_Printf( "Usage: Addbot [skill 1-5] [team] [msec delay] [altname]\n" ); +ADDRGP4 $528 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 924 +;924: return; +ADDRGP4 $522 +JUMPV +LABELV $526 +line 928 +;925: } +;926: +;927: // skill +;928: trap_Argv( 2, string, sizeof( string ) ); +CNSTI4 2 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 929 +;929: if ( !string[0] ) { +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $529 +line 930 +;930: skill = 4; +ADDRLP4 4096 +CNSTF4 1082130432 +ASGNF4 +line 931 +;931: } +ADDRGP4 $530 +JUMPV +LABELV $529 +line 932 +;932: else { +line 933 +;933: skill = atof( string ); +ADDRLP4 0 +ARGP4 +ADDRLP4 4108 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 4096 +ADDRLP4 4108 +INDIRF4 +ASGNF4 +line 934 +;934: } +LABELV $530 +line 937 +;935: +;936: // team +;937: trap_Argv( 3, team, sizeof( team ) ); +CNSTI4 3 +ARGI4 +ADDRLP4 3072 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 940 +;938: +;939: // delay +;940: trap_Argv( 4, string, sizeof( string ) ); +CNSTI4 4 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 941 +;941: if ( !string[0] ) { +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $531 +line 942 +;942: delay = 0; +ADDRLP4 4100 +CNSTI4 0 +ASGNI4 +line 943 +;943: } +ADDRGP4 $532 +JUMPV +LABELV $531 +line 944 +;944: else { +line 945 +;945: delay = atoi( string ); +ADDRLP4 0 +ARGP4 +ADDRLP4 4108 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 4100 +ADDRLP4 4108 +INDIRI4 +ASGNI4 +line 946 +;946: } +LABELV $532 +line 949 +;947: +;948: // alternative name +;949: trap_Argv( 5, altname, sizeof( altname ) ); +CNSTI4 5 +ARGI4 +ADDRLP4 2048 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 951 +;950: +;951: G_AddBot( name, skill, team, delay, altname ); +ADDRLP4 1024 +ARGP4 +ADDRLP4 4096 +INDIRF4 +ARGF4 +ADDRLP4 3072 +ARGP4 +ADDRLP4 4100 +INDIRI4 +ARGI4 +ADDRLP4 2048 +ARGP4 +ADDRGP4 G_AddBot +CALLV +pop +line 955 +;952: +;953: // if this was issued during gameplay and we are playing locally, +;954: // go ahead and load the bot's media immediately +;955: if ( level.time - level.startTime > 1000 && +ADDRGP4 level+32 +INDIRI4 +ADDRGP4 level+40 +INDIRI4 +SUBI4 +CNSTI4 1000 +LEI4 $533 +ADDRGP4 $537 +ARGP4 +ADDRLP4 4108 +ADDRGP4 trap_Cvar_VariableIntegerValue +CALLI4 +ASGNI4 +ADDRLP4 4108 +INDIRI4 +CNSTI4 0 +EQI4 $533 +line 956 +;956: trap_Cvar_VariableIntegerValue( "cl_running" ) ) { +line 957 +;957: trap_SendServerCommand( -1, "loaddefered\n" ); // FIXME: spelled wrong, but not changing for demo +CNSTI4 -1 +ARGI4 +ADDRGP4 $538 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 958 +;958: } +LABELV $533 +line 959 +;959:} +LABELV $522 +endproc Svcmd_AddBot_f 4112 20 +export Svcmd_BotList_f +proc Svcmd_BotList_f 4120 20 +line 966 +;960: +;961:/* +;962:=============== +;963:Svcmd_BotList_f +;964:=============== +;965:*/ +;966:void Svcmd_BotList_f( void ) { +line 973 +;967: int i; +;968: char name[MAX_TOKEN_CHARS]; +;969: char funname[MAX_TOKEN_CHARS]; +;970: char model[MAX_TOKEN_CHARS]; +;971: char personality[MAX_TOKEN_CHARS]; +;972: +;973: trap_Printf("^1name model personality funname\n"); +ADDRGP4 $540 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 974 +;974: for (i = 0; i < g_numBots; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $544 +JUMPV +LABELV $541 +line 975 +;975: strcpy(name, Info_ValueForKey( g_botInfos[i], "name" )); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $229 +ARGP4 +ADDRLP4 4100 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 4100 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 976 +;976: if ( !*name ) { +ADDRLP4 4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $545 +line 977 +;977: strcpy(name, "Padawan"); +ADDRLP4 4 +ARGP4 +ADDRGP4 $547 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 978 +;978: } +LABELV $545 +line 979 +;979: strcpy(funname, Info_ValueForKey( g_botInfos[i], "funname" )); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $449 +ARGP4 +ADDRLP4 4104 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ARGP4 +ADDRLP4 4104 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 980 +;980: if ( !*funname ) { +ADDRLP4 1028 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $548 +line 981 +;981: strcpy(funname, ""); +ADDRLP4 1028 +ARGP4 +ADDRGP4 $165 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 982 +;982: } +LABELV $548 +line 983 +;983: strcpy(model, Info_ValueForKey( g_botInfos[i], "model" )); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $415 +ARGP4 +ADDRLP4 4108 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 2052 +ARGP4 +ADDRLP4 4108 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 984 +;984: if ( !*model ) { +ADDRLP4 2052 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $550 +line 985 +;985: strcpy(model, "visor/default"); +ADDRLP4 2052 +ARGP4 +ADDRGP4 $471 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 986 +;986: } +LABELV $550 +line 987 +;987: strcpy(personality, Info_ValueForKey( g_botInfos[i], "personality")); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $436 +ARGP4 +ADDRLP4 4112 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 3076 +ARGP4 +ADDRLP4 4112 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 988 +;988: if (!*personality ) { +ADDRLP4 3076 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $552 +line 989 +;989: strcpy(personality, "botfiles/default.jkb"); +ADDRLP4 3076 +ARGP4 +ADDRGP4 $488 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 990 +;990: } +LABELV $552 +line 991 +;991: trap_Printf(va("%-16s %-16s %-20s %-20s\n", name, model, personality, funname)); +ADDRGP4 $554 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 2052 +ARGP4 +ADDRLP4 3076 +ARGP4 +ADDRLP4 1028 +ARGP4 +ADDRLP4 4116 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4116 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 992 +;992: } +LABELV $542 +line 974 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $544 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numBots +INDIRI4 +LTI4 $541 +line 993 +;993:} +LABELV $539 +endproc Svcmd_BotList_f 4120 20 +proc G_SpawnBots 1056 16 +line 1001 +;994: +;995: +;996:/* +;997:=============== +;998:G_SpawnBots +;999:=============== +;1000:*/ +;1001:static void G_SpawnBots( char *botList, int baseDelay ) { +line 1008 +;1002: char *bot; +;1003: char *p; +;1004: float skill; +;1005: int delay; +;1006: char bots[MAX_INFO_VALUE]; +;1007: +;1008: podium1 = NULL; +ADDRGP4 podium1 +CNSTP4 0 +ASGNP4 +line 1009 +;1009: podium2 = NULL; +ADDRGP4 podium2 +CNSTP4 0 +ASGNP4 +line 1010 +;1010: podium3 = NULL; +ADDRGP4 podium3 +CNSTP4 0 +ASGNP4 +line 1012 +;1011: +;1012: skill = trap_Cvar_VariableValue( "g_spSkill" ); +ADDRGP4 $272 +ARGP4 +ADDRLP4 1040 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 1040 +INDIRF4 +ASGNF4 +line 1013 +;1013: if( skill < 1 ) { +ADDRLP4 12 +INDIRF4 +CNSTF4 1065353216 +GEF4 $556 +line 1014 +;1014: trap_Cvar_Set( "g_spSkill", "1" ); +ADDRGP4 $272 +ARGP4 +ADDRGP4 $558 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1015 +;1015: skill = 1; +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 1016 +;1016: } +ADDRGP4 $557 +JUMPV +LABELV $556 +line 1017 +;1017: else if ( skill > 5 ) { +ADDRLP4 12 +INDIRF4 +CNSTF4 1084227584 +LEF4 $559 +line 1018 +;1018: trap_Cvar_Set( "g_spSkill", "5" ); +ADDRGP4 $272 +ARGP4 +ADDRGP4 $485 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1019 +;1019: skill = 5; +ADDRLP4 12 +CNSTF4 1084227584 +ASGNF4 +line 1020 +;1020: } +LABELV $559 +LABELV $557 +line 1022 +;1021: +;1022: Q_strncpyz( bots, botList, sizeof(bots) ); +ADDRLP4 16 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1023 +;1023: p = &bots[0]; +ADDRLP4 0 +ADDRLP4 16 +ASGNP4 +line 1024 +;1024: delay = baseDelay; +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRGP4 $562 +JUMPV +line 1025 +;1025: while( *p ) { +LABELV $564 +line 1027 +;1026: //skip spaces +;1027: while( *p && *p == ' ' ) { +line 1028 +;1028: p++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1029 +;1029: } +LABELV $565 +line 1027 +ADDRLP4 1044 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +EQI4 $567 +ADDRLP4 1044 +INDIRI4 +CNSTI4 32 +EQI4 $564 +LABELV $567 +line 1030 +;1030: if( !p ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $568 +line 1031 +;1031: break; +ADDRGP4 $563 +JUMPV +LABELV $568 +line 1035 +;1032: } +;1033: +;1034: // mark start of bot name +;1035: bot = p; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $571 +JUMPV +LABELV $570 +line 1038 +;1036: +;1037: // skip until space of null +;1038: while( *p && *p != ' ' ) { +line 1039 +;1039: p++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1040 +;1040: } +LABELV $571 +line 1038 +ADDRLP4 1048 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +EQI4 $573 +ADDRLP4 1048 +INDIRI4 +CNSTI4 32 +NEI4 $570 +LABELV $573 +line 1041 +;1041: if( *p ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $574 +line 1042 +;1042: *p++ = 0; +ADDRLP4 1052 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 1052 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 1052 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1043 +;1043: } +LABELV $574 +line 1047 +;1044: +;1045: // we must add the bot this way, calling G_AddBot directly at this stage +;1046: // does "Bad Things" +;1047: trap_SendConsoleCommand( EXEC_INSERT, va("addbot %s %f free %i\n", bot, skill, delay) ); +ADDRGP4 $576 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 1052 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 1 +ARGI4 +ADDRLP4 1052 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendConsoleCommand +CALLV +pop +line 1049 +;1048: +;1049: delay += BOT_BEGIN_DELAY_INCREMENT; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1500 +ADDI4 +ASGNI4 +line 1050 +;1050: } +LABELV $562 +line 1025 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $565 +LABELV $563 +line 1051 +;1051:} +LABELV $555 +endproc G_SpawnBots 1056 16 +proc G_LoadBotsFromFile 8216 16 +line 1059 +;1052: +;1053: +;1054:/* +;1055:=============== +;1056:G_LoadBotsFromFile +;1057:=============== +;1058:*/ +;1059:static void G_LoadBotsFromFile( char *filename ) { +line 1064 +;1060: int len; +;1061: fileHandle_t f; +;1062: char buf[MAX_BOTS_TEXT]; +;1063: +;1064: len = trap_FS_FOpenFile( filename, &f, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 8200 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8200 +INDIRI4 +ASGNI4 +line 1065 +;1065: if ( !f ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $578 +line 1066 +;1066: trap_Printf( va( S_COLOR_RED "file not found: %s\n", filename ) ); +ADDRGP4 $112 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 1067 +;1067: return; +ADDRGP4 $577 +JUMPV +LABELV $578 +line 1069 +;1068: } +;1069: if ( len >= MAX_BOTS_TEXT ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 8192 +LTI4 $580 +line 1070 +;1070: trap_Printf( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, MAX_BOTS_TEXT ) ); +ADDRGP4 $115 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 8192 +ARGI4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 1071 +;1071: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 1072 +;1072: return; +ADDRGP4 $577 +JUMPV +LABELV $580 +line 1075 +;1073: } +;1074: +;1075: trap_FS_Read( buf, len, f ); +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 1076 +;1076: buf[len] = 0; +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1077 +;1077: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 1079 +;1078: +;1079: g_numBots += G_ParseInfos( buf, MAX_BOTS - g_numBots, &g_botInfos[g_numBots] ); +ADDRLP4 8 +ARGP4 +ADDRLP4 8204 +ADDRGP4 g_numBots +ASGNP4 +ADDRLP4 8208 +ADDRLP4 8204 +INDIRP4 +INDIRI4 +ASGNI4 +CNSTI4 1024 +ADDRLP4 8208 +INDIRI4 +SUBI4 +ARGI4 +ADDRLP4 8208 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +ARGP4 +ADDRLP4 8212 +ADDRGP4 G_ParseInfos +CALLI4 +ASGNI4 +ADDRLP4 8204 +INDIRP4 +ADDRLP4 8208 +INDIRI4 +ADDRLP4 8212 +INDIRI4 +ADDI4 +ASGNI4 +line 1080 +;1080:} +LABELV $577 +endproc G_LoadBotsFromFile 8216 16 +proc G_LoadBots 1456 16 +line 1087 +;1081: +;1082:/* +;1083:=============== +;1084:G_LoadBots +;1085:=============== +;1086:*/ +;1087:static void G_LoadBots( void ) { +line 1096 +;1088: vmCvar_t botsFile; +;1089: int numdirs; +;1090: char filename[128]; +;1091: char dirlist[1024]; +;1092: char* dirptr; +;1093: int i; +;1094: int dirlen; +;1095: +;1096: if ( !trap_Cvar_VariableIntegerValue( "bot_enable" ) ) { +ADDRGP4 $525 +ARGP4 +ADDRLP4 1440 +ADDRGP4 trap_Cvar_VariableIntegerValue +CALLI4 +ASGNI4 +ADDRLP4 1440 +INDIRI4 +CNSTI4 0 +NEI4 $583 +line 1097 +;1097: return; +ADDRGP4 $582 +JUMPV +LABELV $583 +line 1100 +;1098: } +;1099: +;1100: g_numBots = 0; +ADDRGP4 g_numBots +CNSTI4 0 +ASGNI4 +line 1102 +;1101: +;1102: trap_Cvar_Register( &botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM ); +ADDRLP4 144 +ARGP4 +ADDRGP4 $585 +ARGP4 +ADDRGP4 $165 +ARGP4 +CNSTI4 80 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 1103 +;1103: if( *botsFile.string ) { +ADDRLP4 144+16 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $586 +line 1104 +;1104: G_LoadBotsFromFile(botsFile.string); +ADDRLP4 144+16 +ARGP4 +ADDRGP4 G_LoadBotsFromFile +CALLV +pop +line 1105 +;1105: } +ADDRGP4 $587 +JUMPV +LABELV $586 +line 1106 +;1106: else { +line 1108 +;1107: //G_LoadBotsFromFile("scripts/bots.txt"); +;1108: G_LoadBotsFromFile("botfiles/bots.txt"); +ADDRGP4 $590 +ARGP4 +ADDRGP4 G_LoadBotsFromFile +CALLV +pop +line 1109 +;1109: } +LABELV $587 +line 1112 +;1110: +;1111: // get all bots from .bot files +;1112: numdirs = trap_FS_GetFileList("scripts", ".bot", dirlist, 1024 ); +ADDRGP4 $195 +ARGP4 +ADDRGP4 $591 +ARGP4 +ADDRLP4 416 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1444 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 140 +ADDRLP4 1444 +INDIRI4 +ASGNI4 +line 1113 +;1113: dirptr = dirlist; +ADDRLP4 0 +ADDRLP4 416 +ASGNP4 +line 1114 +;1114: for (i = 0; i < numdirs; i++, dirptr += dirlen+1) { +ADDRLP4 132 +CNSTI4 0 +ASGNI4 +ADDRGP4 $595 +JUMPV +LABELV $592 +line 1115 +;1115: dirlen = strlen(dirptr); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1448 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 136 +ADDRLP4 1448 +INDIRI4 +ASGNI4 +line 1116 +;1116: strcpy(filename, "scripts/"); +ADDRLP4 4 +ARGP4 +ADDRGP4 $201 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1117 +;1117: strcat(filename, dirptr); +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 1118 +;1118: G_LoadBotsFromFile(filename); +ADDRLP4 4 +ARGP4 +ADDRGP4 G_LoadBotsFromFile +CALLV +pop +line 1119 +;1119: } +LABELV $593 +line 1114 +ADDRLP4 1448 +CNSTI4 1 +ASGNI4 +ADDRLP4 132 +ADDRLP4 132 +INDIRI4 +ADDRLP4 1448 +INDIRI4 +ADDI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 136 +INDIRI4 +ADDRLP4 1448 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $595 +ADDRLP4 132 +INDIRI4 +ADDRLP4 140 +INDIRI4 +LTI4 $592 +line 1120 +;1120: trap_Printf( va( "%i bots parsed\n", g_numBots ) ); +ADDRGP4 $596 +ARGP4 +ADDRGP4 g_numBots +INDIRI4 +ARGI4 +ADDRLP4 1452 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1452 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 1121 +;1121:} +LABELV $582 +endproc G_LoadBots 1456 16 +export G_GetBotInfoByNumber +proc G_GetBotInfoByNumber 8 8 +line 1130 +;1122: +;1123: +;1124: +;1125:/* +;1126:=============== +;1127:G_GetBotInfoByNumber +;1128:=============== +;1129:*/ +;1130:char *G_GetBotInfoByNumber( int num ) { +line 1131 +;1131: if( num < 0 || num >= g_numBots ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $600 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numBots +INDIRI4 +LTI4 $598 +LABELV $600 +line 1132 +;1132: trap_Printf( va( S_COLOR_RED "Invalid bot number: %i\n", num ) ); +ADDRGP4 $601 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Printf +CALLV +pop +line 1133 +;1133: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $597 +JUMPV +LABELV $598 +line 1135 +;1134: } +;1135: return g_botInfos[num]; +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +RETP4 +LABELV $597 +endproc G_GetBotInfoByNumber 8 8 +export G_GetBotInfoByName +proc G_GetBotInfoByName 16 8 +line 1144 +;1136:} +;1137: +;1138: +;1139:/* +;1140:=============== +;1141:G_GetBotInfoByName +;1142:=============== +;1143:*/ +;1144:char *G_GetBotInfoByName( const char *name ) { +line 1148 +;1145: int n; +;1146: char *value; +;1147: +;1148: for ( n = 0; n < g_numBots ; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $606 +JUMPV +LABELV $603 +line 1149 +;1149: value = Info_ValueForKey( g_botInfos[n], "name" ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $229 +ARGP4 +ADDRLP4 8 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1150 +;1150: if ( !Q_stricmp( value, name ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $607 +line 1151 +;1151: return g_botInfos[n]; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 g_botInfos +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $602 +JUMPV +LABELV $607 +line 1153 +;1152: } +;1153: } +LABELV $604 +line 1148 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $606 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_numBots +INDIRI4 +LTI4 $603 +line 1155 +;1154: +;1155: return NULL; +CNSTP4 0 +RETP4 +LABELV $602 +endproc G_GetBotInfoByName 16 8 +export G_InitBots +proc G_InitBots 1148 16 +line 1167 +;1156:} +;1157: +;1158://rww - pd +;1159:void LoadPath_ThisLevel(void); +;1160://end rww +;1161: +;1162:/* +;1163:=============== +;1164:G_InitBots +;1165:=============== +;1166:*/ +;1167:void G_InitBots( qboolean restart ) { +line 1176 +;1168: int fragLimit; +;1169: int timeLimit; +;1170: const char *arenainfo; +;1171: char *strValue; +;1172: int basedelay; +;1173: char map[MAX_QPATH]; +;1174: char serverinfo[MAX_INFO_STRING]; +;1175: +;1176: G_LoadBots(); +ADDRGP4 G_LoadBots +CALLV +pop +line 1177 +;1177: G_LoadArenas(); +ADDRGP4 G_LoadArenas +CALLV +pop +line 1179 +;1178: +;1179: trap_Cvar_Register( &bot_minplayers, "bot_minplayers", "0", CVAR_SERVERINFO ); +ADDRGP4 bot_minplayers +ARGP4 +ADDRGP4 $610 +ARGP4 +ADDRGP4 $611 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 1182 +;1180: +;1181: //rww - new bot route stuff +;1182: LoadPath_ThisLevel(); +ADDRGP4 LoadPath_ThisLevel +CALLV +pop +line 1185 +;1183: //end rww +;1184: +;1185: if( g_gametype.integer == GT_SINGLE_PLAYER ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 4 +NEI4 $612 +line 1186 +;1186: trap_GetServerinfo( serverinfo, sizeof(serverinfo) ); +ADDRLP4 80 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetServerinfo +CALLV +pop +line 1187 +;1187: Q_strncpyz( map, Info_ValueForKey( serverinfo, "mapname" ), sizeof(map) ); +ADDRLP4 80 +ARGP4 +ADDRGP4 $164 +ARGP4 +ADDRLP4 1108 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 16 +ARGP4 +ADDRLP4 1108 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1188 +;1188: arenainfo = G_GetArenaInfoByMap( map ); +ADDRLP4 16 +ARGP4 +ADDRLP4 1112 +ADDRGP4 G_GetArenaInfoByMap +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 1112 +INDIRP4 +ASGNP4 +line 1189 +;1189: if ( !arenainfo ) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $615 +line 1190 +;1190: return; +ADDRGP4 $609 +JUMPV +LABELV $615 +line 1193 +;1191: } +;1192: +;1193: strValue = Info_ValueForKey( arenainfo, "fraglimit" ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $617 +ARGP4 +ADDRLP4 1116 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 1116 +INDIRP4 +ASGNP4 +line 1194 +;1194: fragLimit = atoi( strValue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1120 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 1120 +INDIRI4 +ASGNI4 +line 1195 +;1195: if ( fragLimit ) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $618 +line 1196 +;1196: trap_Cvar_Set( "fraglimit", strValue ); +ADDRGP4 $617 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1197 +;1197: } +ADDRGP4 $619 +JUMPV +LABELV $618 +line 1198 +;1198: else { +line 1199 +;1199: trap_Cvar_Set( "fraglimit", "0" ); +ADDRGP4 $617 +ARGP4 +ADDRGP4 $611 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1200 +;1200: } +LABELV $619 +line 1202 +;1201: +;1202: strValue = Info_ValueForKey( arenainfo, "timelimit" ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $620 +ARGP4 +ADDRLP4 1124 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 1124 +INDIRP4 +ASGNP4 +line 1203 +;1203: timeLimit = atoi( strValue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1128 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 1128 +INDIRI4 +ASGNI4 +line 1204 +;1204: if ( timeLimit ) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $621 +line 1205 +;1205: trap_Cvar_Set( "timelimit", strValue ); +ADDRGP4 $620 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1206 +;1206: } +ADDRGP4 $622 +JUMPV +LABELV $621 +line 1207 +;1207: else { +line 1208 +;1208: trap_Cvar_Set( "timelimit", "0" ); +ADDRGP4 $620 +ARGP4 +ADDRGP4 $611 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1209 +;1209: } +LABELV $622 +line 1211 +;1210: +;1211: if ( !fragLimit && !timeLimit ) { +ADDRLP4 1132 +CNSTI4 0 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 1132 +INDIRI4 +NEI4 $623 +ADDRLP4 12 +INDIRI4 +ADDRLP4 1132 +INDIRI4 +NEI4 $623 +line 1212 +;1212: trap_Cvar_Set( "fraglimit", "10" ); +ADDRGP4 $617 +ARGP4 +ADDRGP4 $625 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1213 +;1213: trap_Cvar_Set( "timelimit", "0" ); +ADDRGP4 $620 +ARGP4 +ADDRGP4 $611 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1214 +;1214: } +LABELV $623 +line 1216 +;1215: +;1216: basedelay = BOT_BEGIN_DELAY_BASE; +ADDRLP4 1104 +CNSTI4 2000 +ASGNI4 +line 1217 +;1217: strValue = Info_ValueForKey( arenainfo, "special" ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $626 +ARGP4 +ADDRLP4 1136 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 1136 +INDIRP4 +ASGNP4 +line 1218 +;1218: if( Q_stricmp( strValue, "training" ) == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $629 +ARGP4 +ADDRLP4 1140 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1140 +INDIRI4 +CNSTI4 0 +NEI4 $627 +line 1219 +;1219: basedelay += 10000; +ADDRLP4 1104 +ADDRLP4 1104 +INDIRI4 +CNSTI4 10000 +ADDI4 +ASGNI4 +line 1220 +;1220: } +LABELV $627 +line 1222 +;1221: +;1222: if( !restart ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $630 +line 1223 +;1223: G_SpawnBots( Info_ValueForKey( arenainfo, "bots" ), basedelay ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $632 +ARGP4 +ADDRLP4 1144 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1144 +INDIRP4 +ARGP4 +ADDRLP4 1104 +INDIRI4 +ARGI4 +ADDRGP4 G_SpawnBots +CALLV +pop +line 1224 +;1224: } +LABELV $630 +line 1225 +;1225: } +LABELV $612 +line 1226 +;1226:} +LABELV $609 +endproc G_InitBots 1148 16 +import LoadPath_ThisLevel +import podium3 +import podium2 +import podium1 +bss +export bot_minplayers +align 4 +LABELV bot_minplayers +skip 272 +align 4 +LABELV botSpawnQueue +skip 128 +align 4 +LABELV g_arenaInfos +skip 4096 +export g_numArenas +align 4 +LABELV g_numArenas +skip 4 +align 4 +LABELV g_botInfos +skip 4096 +align 4 +LABELV g_numBots +skip 4 +import trap_ROFF_Purge_Ent +import trap_ROFF_Play +import trap_ROFF_Cache +import trap_ROFF_UpdateEntities +import trap_ROFF_Clean +import trap_SP_GetStringTextString +import trap_SP_Register +import trap_SP_RegisterServer +import trap_SnapVector +import trap_GeneticParentsAndChildSelection +import trap_BotResetWeaponState +import trap_BotFreeWeaponState +import trap_BotAllocWeaponState +import trap_BotLoadWeaponWeights +import trap_BotGetWeaponInfo +import trap_BotChooseBestFightWeapon +import trap_BotAddAvoidSpot +import trap_BotInitMoveState +import trap_BotFreeMoveState +import trap_BotAllocMoveState +import trap_BotPredictVisiblePosition +import trap_BotMovementViewTarget +import trap_BotReachabilityArea +import trap_BotResetLastAvoidReach +import trap_BotResetAvoidReach +import trap_BotMoveInDirection +import trap_BotMoveToGoal +import trap_BotResetMoveState +import trap_BotFreeGoalState +import trap_BotAllocGoalState +import trap_BotMutateGoalFuzzyLogic +import trap_BotSaveGoalFuzzyLogic +import trap_BotInterbreedGoalFuzzyLogic +import trap_BotFreeItemWeights +import trap_BotLoadItemWeights +import trap_BotUpdateEntityItems +import trap_BotInitLevelItems +import trap_BotSetAvoidGoalTime +import trap_BotAvoidGoalTime +import trap_BotGetLevelItemGoal +import trap_BotGetMapLocationGoal +import trap_BotGetNextCampSpotGoal +import trap_BotItemGoalInVisButNotVisible +import trap_BotTouchingGoal +import trap_BotChooseNBGItem +import trap_BotChooseLTGItem +import trap_BotGetSecondGoal +import trap_BotGetTopGoal +import trap_BotGoalName +import trap_BotDumpGoalStack +import trap_BotDumpAvoidGoals +import trap_BotEmptyGoalStack +import trap_BotPopGoal +import trap_BotPushGoal +import trap_BotResetAvoidGoals +import trap_BotRemoveFromAvoidGoals +import trap_BotResetGoalState +import trap_BotSetChatName +import trap_BotSetChatGender +import trap_BotLoadChatFile +import trap_BotReplaceSynonyms +import trap_UnifyWhiteSpaces +import trap_BotMatchVariable +import trap_BotFindMatch +import trap_StringContains +import trap_BotGetChatMessage +import trap_BotEnterChat +import trap_BotChatLength +import trap_BotReplyChat +import trap_BotNumInitialChats +import trap_BotInitialChat +import trap_BotNumConsoleMessages +import trap_BotNextConsoleMessage +import trap_BotRemoveConsoleMessage +import trap_BotQueueConsoleMessage +import trap_BotFreeChatState +import trap_BotAllocChatState +import trap_Characteristic_String +import trap_Characteristic_BInteger +import trap_Characteristic_Integer +import trap_Characteristic_BFloat +import trap_Characteristic_Float +import trap_BotFreeCharacter +import trap_BotLoadCharacter +import trap_EA_ResetInput +import trap_EA_GetInput +import trap_EA_EndRegular +import trap_EA_ForcePower +import trap_EA_Alt_Attack +import trap_EA_View +import trap_EA_Move +import trap_EA_DelayedJump +import trap_EA_Jump +import trap_EA_SelectWeapon +import trap_EA_MoveRight +import trap_EA_MoveLeft +import trap_EA_MoveBack +import trap_EA_MoveForward +import trap_EA_MoveDown +import trap_EA_MoveUp +import trap_EA_Crouch +import trap_EA_Respawn +import trap_EA_Use +import trap_EA_Attack +import trap_EA_Talk +import trap_EA_Gesture +import trap_EA_Action +import trap_EA_Command +import trap_EA_SayTeam +import trap_EA_Say +import trap_AAS_PredictClientMovement +import trap_AAS_Swimming +import trap_AAS_AlternativeRouteGoals +import trap_AAS_PredictRoute +import trap_AAS_EnableRoutingArea +import trap_AAS_AreaTravelTimeToGoalArea +import trap_AAS_AreaReachability +import trap_AAS_IntForBSPEpairKey +import trap_AAS_FloatForBSPEpairKey +import trap_AAS_VectorForBSPEpairKey +import trap_AAS_ValueForBSPEpairKey +import trap_AAS_NextBSPEntity +import trap_AAS_PointContents +import trap_AAS_TraceAreas +import trap_AAS_PointReachabilityAreaIndex +import trap_AAS_PointAreaNum +import trap_AAS_Time +import trap_AAS_PresenceTypeBoundingBox +import trap_AAS_Initialized +import trap_AAS_EntityInfo +import trap_AAS_AreaInfo +import trap_AAS_BBoxAreas +import trap_BotUserCommand +import trap_BotGetServerCommand +import trap_BotGetSnapshotEntity +import trap_BotLibTest +import trap_BotLibUpdateEntity +import trap_BotLibLoadMap +import trap_BotLibStartFrame +import trap_BotLibDefine +import trap_BotLibVarGet +import trap_BotLibVarSet +import trap_BotLibShutdown +import trap_BotLibSetup +import trap_DebugPolygonDelete +import trap_DebugPolygonCreate +import trap_GetEntityToken +import trap_GetUsercmd +import trap_BotFreeClient +import trap_BotAllocateClient +import trap_EntityContact +import trap_EntitiesInBox +import trap_UnlinkEntity +import trap_LinkEntity +import trap_AreasConnected +import trap_AdjustAreaPortalState +import trap_InPVSIgnorePortals +import trap_InPVS +import trap_PointContents +import trap_Trace +import trap_SetBrushModel +import trap_GetServerinfo +import trap_SetUserinfo +import trap_GetUserinfo +import trap_GetConfigstring +import trap_SetConfigstring +import trap_SendServerCommand +import trap_DropClient +import trap_LocateGameData +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableIntegerValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_SendConsoleCommand +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Args +import trap_Argv +import trap_Argc +import trap_Milliseconds +import trap_Error +import trap_Printf +import g_timeouttospec +import g_forceDodge +import g_dismember +import g_singlePlayer +import g_enableBreath +import g_enableDust +import g_rankings +import pmove_msec +import pmove_fixed +import g_smoothClients +import g_blueteam +import g_redteam +import g_debugUp +import g_debugRight +import g_debugForward +import g_filterBan +import g_banIPs +import g_teamForceBalance +import g_teamAutoJoin +import g_allowVote +import g_blood +import g_doWarmup +import g_warmup +import g_motd +import g_synchronousClients +import g_adaptRespawn +import g_weaponTeamRespawn +import g_weaponRespawn +import g_debugDamage +import g_debugAlloc +import g_debugMove +import g_inactivity +import g_forcerespawn +import g_quadfactor +import g_knockback +import g_speed +import g_gravity +import g_needpass +import g_password +import g_friendlySaber +import g_friendlyFire +import g_saberInterpolate +import g_capturelimit +import g_timelimit +import g_duel_fraglimit +import g_fraglimit +import g_duelWeaponDisable +import g_weaponDisable +import g_forcePowerDisable +import g_spawnInvulnerability +import g_forceRegenTime +import g_saberLocking +import g_privateDuel +import g_forceBasedTeams +import g_maxForceRank +import g_dmflags +import g_autoMapCycle +import g_restarted +import g_maxGameClients +import g_maxclients +import g_cheats +import g_dedicated +import g_gametype +import g_entities +import level +import Pickup_Team +import CheckTeamStatus +import TeamplayInfoMessage +import Team_GetLocationMsg +import Team_GetLocation +import SelectSagaSpawnPoint +import SelectCTFSpawnPoint +import Team_FreeEntity +import Team_ReturnFlag +import Team_InitGame +import Team_CheckHurtCarrier +import Team_FragBonuses +import Team_DroppedFlagThink +import AddTeamScore +import TeamColorString +import OtherTeamName +import TeamName +import OtherTeam +import BotAIStartFrame +import BotAIShutdownClient +import BotAISetupClient +import BotAILoadMap +import BotAIShutdown +import BotAISetup +import B_CleanupAlloc +import B_InitAlloc +import InFieldOfVision +import BotOrder +import OrgVisible +import InitSagaMode +import G_ClearClientLog +import G_LogExit +import G_LogWeaponOutput +import G_LogWeaponInit +import G_LogWeaponItem +import G_LogWeaponPowerup +import G_LogWeaponFrag +import G_LogWeaponDeath +import G_LogWeaponKill +import G_LogWeaponDamage +import G_LogWeaponFire +import G_LogWeaponPickup +import Jedi_DodgeEvasion +import ForceTelepathy +import ForceThrow +import ForceSeeing +import ForceTeamForceReplenish +import ForceTeamHeal +import ForceAbsorb +import ForceProtect +import ForceGrip +import ForceRage +import ForceSpeed +import ForceHeal +import ForcePowerUsableOn +import WP_ForcePowersUpdate +import WP_SpawnInitForcePowers +import WP_InitForcePowers +import WP_SaberInitBladeData +import WP_SaberCanBlock +import WP_SaberPositionUpdate +import WP_ForcePowerStop +import HasSetSaberOnly +import G_PreDefSound +import BotInterbreedEndMatch +import UpdateTournamentInfo +import G_WriteSessionData +import G_InitWorldSession +import G_InitSessionData +import G_ReadSessionData +import Svcmd_GameMem_f +import G_InitMemory +import G_Alloc +import Team_CheckDroppedItem +import OnSameTeam +import G_RunClient +import ClientEndFrame +import ClientThink +import G_CheckClientTimeouts +import ClientCommand +import ClientBegin +import ClientDisconnect +import ClientUserinfoChanged +import ClientConnect +import G_GetStripEdString +import G_Error +import G_Printf +import SendScoreboardMessageToAllClients +import G_LogPrintf +import G_RunThink +import CheckTeamLeader +import SetLeader +import FindIntermissionPoint +import g_ff_objectives +import DeathmatchScoreboardMessage +import G_SetStats +import MoveClientToIntermission +import BlowDetpacks +import FireWeapon +import G_FilterPacket +import G_ProcessIPBans +import ConsoleCommand +import gJMSaberEnt +import SpotWouldTelefrag +import CalculateRanks +import AddScore +import player_die +import ClientSpawn +import InitBodyQue +import BeginIntermission +import respawn +import CopyToBodyQue +import SelectSpawnPoint +import SetClientViewAngle +import PickTeam +import TeamLeader +import TeamCount +import CheckGauntletAttack +import SnapVectorTowards +import CalcMuzzlePoint +import LogAccuracyHit +import WP_FireGenericBlasterMissile +import WP_FireTurretMissile +import G_PlayerBecomeATST +import ATST_ManageDamageBoxes +import TeleportPlayer +import trigger_teleporter_touch +import Touch_DoorTrigger +import G_RunMover +import WP_FireBlasterMissile +import G_ExplodeMissile +import G_BounceProjectile +import CreateMissile +import G_RunMissile +import G_ReflectMissile +import ExplodeDeath +import TossClientCubes +import TossClientItems +import TossClientWeapon +import body_die +import G_RadiusDamage +import G_Damage +import CanDamage +import trap_G2API_SetBoneAnim +import trap_G2API_GetGLAName +import trap_G2API_SetBoneAngles +import trap_G2API_CleanGhoul2Models +import trap_G2API_RemoveGhoul2Model +import trap_G2API_HasGhoul2ModelOnIndex +import trap_G2API_DuplicateGhoul2Instance +import trap_G2API_CopySpecificGhoul2Model +import trap_G2API_CopyGhoul2Instance +import trap_G2API_SetBoltInfo +import trap_G2API_AddBolt +import trap_G2API_InitGhoul2Model +import trap_G2API_GetBoltMatrix_NoReconstruct +import trap_G2API_GetBoltMatrix +import trap_G2_HaveWeGhoul2Models +import trap_G2_SetGhoul2ModelIndexes +import trap_G2_ListModelBones +import trap_G2_ListModelSurfaces +import G_SkinIndex +import BuildShaderStateConfig +import AddRemap +import G_SetOrigin +import G_AddEvent +import G_AddPredictableEvent +import vtos +import tv +import G_RunObject +import G_TouchSolids +import G_TouchTriggers +import G_EntitiesFree +import G_FreeEntity +import G_KillG2Queue +import G_SendG2KillQueue +import TryUse +import G_EntitySound +import G_SoundAtLoc +import G_Sound +import G_MuteSound +import G_ScreenShake +import G_PlayEffect +import G_TempEntity +import G_Spawn +import G_InitGentity +import G_SetAngles +import G_SetMovedir +import G_UseTargets +import G_PickTarget +import G_RadiusList +import G_Find +import G_KillBox +import G_TeamCommand +import G_EffectIndex +import G_SoundIndex +import G_ModelIndex +import SaveRegisteredItems +import RegisterItem +import ClearRegisteredItems +import Touch_Item +import Add_Ammo +import ArmorIndex +import Think_Weapon +import FinishSpawningItem +import G_SpawnItem +import SetRespawn +import LaunchItem +import Drop_Item +import PrecacheItem +import UseHoldableItem +import RespawnItem +import G_RunItem +import G_CheckTeamItems +import ItemUse_MedPack +import ItemUse_Seeker +import ItemUse_Sentry +import ItemUse_Shield +import ItemUse_Binoculars +import G_GetDuelWinner +import Cmd_EngageDuel_f +import Cmd_ToggleSaber_f +import G_ItemUsable +import Cmd_SaberAttackCycle_f +import Cmd_FollowCycle_f +import SetTeam +import BroadcastTeamChange +import StopFollowing +import Cmd_Score_f +import G_NewString +import G_SpawnEntitiesFromString +import G_SpawnVector +import G_SpawnInt +import G_SpawnFloat +import G_SpawnString +import g2SaberInstance +import precachedKyle +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $632 +char 1 98 +char 1 111 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $629 +char 1 116 +char 1 114 +char 1 97 +char 1 105 +char 1 110 +char 1 105 +char 1 110 +char 1 103 +char 1 0 +align 1 +LABELV $626 +char 1 115 +char 1 112 +char 1 101 +char 1 99 +char 1 105 +char 1 97 +char 1 108 +char 1 0 +align 1 +LABELV $625 +char 1 49 +char 1 48 +char 1 0 +align 1 +LABELV $620 +char 1 116 +char 1 105 +char 1 109 +char 1 101 +char 1 108 +char 1 105 +char 1 109 +char 1 105 +char 1 116 +char 1 0 +align 1 +LABELV $617 +char 1 102 +char 1 114 +char 1 97 +char 1 103 +char 1 108 +char 1 105 +char 1 109 +char 1 105 +char 1 116 +char 1 0 +align 1 +LABELV $611 +char 1 48 +char 1 0 +align 1 +LABELV $610 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 109 +char 1 105 +char 1 110 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 115 +char 1 0 +align 1 +LABELV $601 +char 1 94 +char 1 49 +char 1 73 +char 1 110 +char 1 118 +char 1 97 +char 1 108 +char 1 105 +char 1 100 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 32 +char 1 110 +char 1 117 +char 1 109 +char 1 98 +char 1 101 +char 1 114 +char 1 58 +char 1 32 +char 1 37 +char 1 105 +char 1 10 +char 1 0 +align 1 +LABELV $596 +char 1 37 +char 1 105 +char 1 32 +char 1 98 +char 1 111 +char 1 116 +char 1 115 +char 1 32 +char 1 112 +char 1 97 +char 1 114 +char 1 115 +char 1 101 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $591 +char 1 46 +char 1 98 +char 1 111 +char 1 116 +char 1 0 +align 1 +LABELV $590 +char 1 98 +char 1 111 +char 1 116 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 115 +char 1 47 +char 1 98 +char 1 111 +char 1 116 +char 1 115 +char 1 46 +char 1 116 +char 1 120 +char 1 116 +char 1 0 +align 1 +LABELV $585 +char 1 103 +char 1 95 +char 1 98 +char 1 111 +char 1 116 +char 1 115 +char 1 70 +char 1 105 +char 1 108 +char 1 101 +char 1 0 +align 1 +LABELV $576 +char 1 97 +char 1 100 +char 1 100 +char 1 98 +char 1 111 +char 1 116 +char 1 32 +char 1 37 +char 1 115 +char 1 32 +char 1 37 +char 1 102 +char 1 32 +char 1 102 +char 1 114 +char 1 101 +char 1 101 +char 1 32 +char 1 37 +char 1 105 +char 1 10 +char 1 0 +align 1 +LABELV $558 +char 1 49 +char 1 0 +align 1 +LABELV $554 +char 1 37 +char 1 45 +char 1 49 +char 1 54 +char 1 115 +char 1 32 +char 1 37 +char 1 45 +char 1 49 +char 1 54 +char 1 115 +char 1 32 +char 1 37 +char 1 45 +char 1 50 +char 1 48 +char 1 115 +char 1 32 +char 1 37 +char 1 45 +char 1 50 +char 1 48 +char 1 115 +char 1 10 +char 1 0 +align 1 +LABELV $547 +char 1 80 +char 1 97 +char 1 100 +char 1 97 +char 1 119 +char 1 97 +char 1 110 +char 1 0 +align 1 +LABELV $540 +char 1 94 +char 1 49 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 112 +char 1 101 +char 1 114 +char 1 115 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 32 +char 1 102 +char 1 117 +char 1 110 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 10 +char 1 0 +align 1 +LABELV $538 +char 1 108 +char 1 111 +char 1 97 +char 1 100 +char 1 100 +char 1 101 +char 1 102 +char 1 101 +char 1 114 +char 1 101 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $537 +char 1 99 +char 1 108 +char 1 95 +char 1 114 +char 1 117 +char 1 110 +char 1 110 +char 1 105 +char 1 110 +char 1 103 +char 1 0 +align 1 +LABELV $528 +char 1 85 +char 1 115 +char 1 97 +char 1 103 +char 1 101 +char 1 58 +char 1 32 +char 1 65 +char 1 100 +char 1 100 +char 1 98 +char 1 111 +char 1 116 +char 1 32 +char 1 60 +char 1 98 +char 1 111 +char 1 116 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 62 +char 1 32 +char 1 91 +char 1 115 +char 1 107 +char 1 105 +char 1 108 +char 1 108 +char 1 32 +char 1 49 +char 1 45 +char 1 53 +char 1 93 +char 1 32 +char 1 91 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 93 +char 1 32 +char 1 91 +char 1 109 +char 1 115 +char 1 101 +char 1 99 +char 1 32 +char 1 100 +char 1 101 +char 1 108 +char 1 97 +char 1 121 +char 1 93 +char 1 32 +char 1 91 +char 1 97 +char 1 108 +char 1 116 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 93 +char 1 10 +char 1 0 +align 1 +LABELV $525 +char 1 98 +char 1 111 +char 1 116 +char 1 95 +char 1 101 +char 1 110 +char 1 97 +char 1 98 +char 1 108 +char 1 101 +char 1 0 +align 1 +LABELV $519 +char 1 66 +char 1 108 +char 1 117 +char 1 101 +char 1 0 +align 1 +LABELV $518 +char 1 82 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $502 +char 1 37 +char 1 53 +char 1 46 +char 1 50 +char 1 102 +char 1 0 +align 1 +LABELV $493 +char 1 85 +char 1 78 +char 1 65 +char 1 66 +char 1 76 +char 1 69 +char 1 95 +char 1 84 +char 1 79 +char 1 95 +char 1 65 +char 1 68 +char 1 68 +char 1 95 +char 1 66 +char 1 79 +char 1 84 +char 1 0 +align 1 +LABELV $492 +char 1 83 +char 1 86 +char 1 73 +char 1 78 +char 1 71 +char 1 65 +char 1 77 +char 1 69 +char 1 0 +align 1 +LABELV $491 +char 1 112 +char 1 114 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 34 +char 1 37 +char 1 115 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $488 +char 1 98 +char 1 111 +char 1 116 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 115 +char 1 47 +char 1 100 +char 1 101 +char 1 102 +char 1 97 +char 1 117 +char 1 108 +char 1 116 +char 1 46 +char 1 106 +char 1 107 +char 1 98 +char 1 0 +align 1 +LABELV $485 +char 1 53 +char 1 0 +align 1 +LABELV $482 +char 1 99 +char 1 111 +char 1 108 +char 1 111 +char 1 114 +char 1 50 +char 1 0 +align 1 +LABELV $481 +char 1 52 +char 1 0 +align 1 +LABELV $478 +char 1 99 +char 1 111 +char 1 108 +char 1 111 +char 1 114 +char 1 49 +char 1 0 +align 1 +LABELV $477 +char 1 115 +char 1 101 +char 1 120 +char 1 0 +align 1 +LABELV $476 +char 1 109 +char 1 97 +char 1 108 +char 1 101 +char 1 0 +align 1 +LABELV $473 +char 1 103 +char 1 101 +char 1 110 +char 1 100 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $472 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 95 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 0 +align 1 +LABELV $471 +char 1 118 +char 1 105 +char 1 115 +char 1 111 +char 1 114 +char 1 47 +char 1 100 +char 1 101 +char 1 102 +char 1 97 +char 1 117 +char 1 108 +char 1 116 +char 1 0 +align 1 +LABELV $468 +char 1 57 +char 1 48 +char 1 0 +align 1 +LABELV $465 +char 1 55 +char 1 48 +char 1 0 +align 1 +LABELV $462 +char 1 53 +char 1 48 +char 1 0 +align 1 +LABELV $461 +char 1 104 +char 1 97 +char 1 110 +char 1 100 +char 1 105 +char 1 99 +char 1 97 +char 1 112 +char 1 0 +align 1 +LABELV $458 +char 1 37 +char 1 49 +char 1 46 +char 1 50 +char 1 102 +char 1 0 +align 1 +LABELV $457 +char 1 50 +char 1 48 +char 1 0 +align 1 +LABELV $456 +char 1 115 +char 1 110 +char 1 97 +char 1 112 +char 1 115 +char 1 0 +align 1 +LABELV $455 +char 1 50 +char 1 53 +char 1 48 +char 1 48 +char 1 48 +char 1 0 +align 1 +LABELV $454 +char 1 114 +char 1 97 +char 1 116 +char 1 101 +char 1 0 +align 1 +LABELV $449 +char 1 102 +char 1 117 +char 1 110 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 0 +align 1 +LABELV $448 +char 1 94 +char 1 49 +char 1 69 +char 1 114 +char 1 114 +char 1 111 +char 1 114 +char 1 58 +char 1 32 +char 1 66 +char 1 111 +char 1 116 +char 1 32 +char 1 39 +char 1 37 +char 1 115 +char 1 39 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 100 +char 1 101 +char 1 102 +char 1 105 +char 1 110 +char 1 101 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $444 +char 1 66 +char 1 111 +char 1 116 +char 1 65 +char 1 73 +char 1 83 +char 1 101 +char 1 116 +char 1 117 +char 1 112 +char 1 67 +char 1 108 +char 1 105 +char 1 101 +char 1 110 +char 1 116 +char 1 32 +char 1 102 +char 1 97 +char 1 105 +char 1 108 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $440 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 0 +align 1 +LABELV $438 +char 1 115 +char 1 107 +char 1 105 +char 1 108 +char 1 108 +char 1 0 +align 1 +LABELV $436 +char 1 112 +char 1 101 +char 1 114 +char 1 115 +char 1 111 +char 1 110 +char 1 97 +char 1 108 +char 1 105 +char 1 116 +char 1 121 +char 1 0 +align 1 +LABELV $426 +char 1 94 +char 1 51 +char 1 85 +char 1 110 +char 1 97 +char 1 98 +char 1 108 +char 1 101 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 100 +char 1 101 +char 1 108 +char 1 97 +char 1 121 +char 1 32 +char 1 115 +char 1 112 +char 1 97 +char 1 119 +char 1 110 +char 1 10 +char 1 0 +align 1 +LABELV $415 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 0 +align 1 +LABELV $295 +char 1 107 +char 1 105 +char 1 99 +char 1 107 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 0 +align 1 +LABELV $280 +char 1 97 +char 1 100 +char 1 100 +char 1 98 +char 1 111 +char 1 116 +char 1 32 +char 1 37 +char 1 115 +char 1 32 +char 1 37 +char 1 102 +char 1 32 +char 1 37 +char 1 115 +char 1 32 +char 1 37 +char 1 105 +char 1 10 +char 1 0 +align 1 +LABELV $278 +char 1 98 +char 1 108 +char 1 117 +char 1 101 +char 1 0 +align 1 +LABELV $275 +char 1 114 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $272 +char 1 103 +char 1 95 +char 1 115 +char 1 112 +char 1 83 +char 1 107 +char 1 105 +char 1 108 +char 1 108 +char 1 0 +align 1 +LABELV $229 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 0 +align 1 +LABELV $223 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 32 +char 1 115 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 47 +char 1 97 +char 1 110 +char 1 110 +char 1 111 +char 1 117 +char 1 110 +char 1 99 +char 1 101 +char 1 47 +char 1 37 +char 1 115 +char 1 46 +char 1 119 +char 1 97 +char 1 118 +char 1 10 +char 1 0 +align 1 +LABELV $222 +char 1 100 +char 1 101 +char 1 102 +char 1 97 +char 1 117 +char 1 108 +char 1 116 +char 1 0 +align 1 +LABELV $208 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $207 +char 1 110 +char 1 117 +char 1 109 +char 1 0 +align 1 +LABELV $202 +char 1 37 +char 1 105 +char 1 32 +char 1 97 +char 1 114 +char 1 101 +char 1 110 +char 1 97 +char 1 115 +char 1 32 +char 1 112 +char 1 97 +char 1 114 +char 1 115 +char 1 101 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $201 +char 1 115 +char 1 99 +char 1 114 +char 1 105 +char 1 112 +char 1 116 +char 1 115 +char 1 47 +char 1 0 +align 1 +LABELV $196 +char 1 46 +char 1 97 +char 1 114 +char 1 101 +char 1 110 +char 1 97 +char 1 0 +align 1 +LABELV $195 +char 1 115 +char 1 99 +char 1 114 +char 1 105 +char 1 112 +char 1 116 +char 1 115 +char 1 0 +align 1 +LABELV $194 +char 1 115 +char 1 99 +char 1 114 +char 1 105 +char 1 112 +char 1 116 +char 1 115 +char 1 47 +char 1 97 +char 1 114 +char 1 101 +char 1 110 +char 1 97 +char 1 115 +char 1 46 +char 1 116 +char 1 120 +char 1 116 +char 1 0 +align 1 +LABELV $189 +char 1 103 +char 1 95 +char 1 97 +char 1 114 +char 1 101 +char 1 110 +char 1 97 +char 1 115 +char 1 70 +char 1 105 +char 1 108 +char 1 101 +char 1 0 +align 1 +LABELV $187 +char 1 109 +char 1 97 +char 1 112 +char 1 32 +char 1 37 +char 1 115 +char 1 0 +align 1 +LABELV $186 +char 1 109 +char 1 97 +char 1 112 +char 1 95 +char 1 114 +char 1 101 +char 1 115 +char 1 116 +char 1 97 +char 1 114 +char 1 116 +char 1 32 +char 1 48 +char 1 0 +align 1 +LABELV $185 +char 1 110 +char 1 101 +char 1 120 +char 1 116 +char 1 109 +char 1 97 +char 1 112 +char 1 0 +align 1 +LABELV $165 +char 1 0 +align 1 +LABELV $164 +char 1 109 +char 1 97 +char 1 112 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 0 +align 1 +LABELV $155 +char 1 116 +char 1 121 +char 1 112 +char 1 101 +char 1 0 +align 1 +LABELV $150 +char 1 109 +char 1 97 +char 1 112 +char 1 0 +align 1 +LABELV $139 +char 1 99 +char 1 116 +char 1 121 +char 1 0 +align 1 +LABELV $136 +char 1 99 +char 1 116 +char 1 102 +char 1 0 +align 1 +LABELV $133 +char 1 115 +char 1 97 +char 1 103 +char 1 97 +char 1 0 +align 1 +LABELV $130 +char 1 100 +char 1 117 +char 1 101 +char 1 108 +char 1 0 +align 1 +LABELV $127 +char 1 106 +char 1 101 +char 1 100 +char 1 105 +char 1 109 +char 1 97 +char 1 115 +char 1 116 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $124 +char 1 104 +char 1 111 +char 1 108 +char 1 111 +char 1 99 +char 1 114 +char 1 111 +char 1 110 +char 1 0 +align 1 +LABELV $121 +char 1 102 +char 1 102 +char 1 97 +char 1 0 +align 1 +LABELV $115 +char 1 94 +char 1 49 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 116 +char 1 111 +char 1 111 +char 1 32 +char 1 108 +char 1 97 +char 1 114 +char 1 103 +char 1 101 +char 1 58 +char 1 32 +char 1 37 +char 1 115 +char 1 32 +char 1 105 +char 1 115 +char 1 32 +char 1 37 +char 1 105 +char 1 44 +char 1 32 +char 1 109 +char 1 97 +char 1 120 +char 1 32 +char 1 97 +char 1 108 +char 1 108 +char 1 111 +char 1 119 +char 1 101 +char 1 100 +char 1 32 +char 1 105 +char 1 115 +char 1 32 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $112 +char 1 94 +char 1 49 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 110 +char 1 111 +char 1 116 +char 1 32 +char 1 102 +char 1 111 +char 1 117 +char 1 110 +char 1 100 +char 1 58 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 0 +align 1 +LABELV $106 +char 1 37 +char 1 100 +char 1 0 +align 1 +LABELV $105 +char 1 92 +char 1 110 +char 1 117 +char 1 109 +char 1 92 +char 1 0 +align 1 +LABELV $104 +char 1 60 +char 1 78 +char 1 85 +char 1 76 +char 1 76 +char 1 62 +char 1 0 +align 1 +LABELV $101 +char 1 125 +char 1 0 +align 1 +LABELV $98 +char 1 85 +char 1 110 +char 1 101 +char 1 120 +char 1 112 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 32 +char 1 101 +char 1 110 +char 1 100 +char 1 32 +char 1 111 +char 1 102 +char 1 32 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 10 +char 1 0 +align 1 +LABELV $92 +char 1 77 +char 1 97 +char 1 120 +char 1 32 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 115 +char 1 32 +char 1 101 +char 1 120 +char 1 99 +char 1 101 +char 1 101 +char 1 100 +char 1 101 +char 1 100 +char 1 10 +char 1 0 +align 1 +LABELV $89 +char 1 77 +char 1 105 +char 1 115 +char 1 115 +char 1 105 +char 1 110 +char 1 103 +char 1 32 +char 1 123 +char 1 32 +char 1 105 +char 1 110 +char 1 32 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 10 +char 1 0 +align 1 +LABELV $88 +char 1 123 +char 1 0 diff --git a/CODE-mp/game/vm/g_client.asm b/CODE-mp/game/vm/g_client.asm new file mode 100644 index 0000000..e9c8229 --- /dev/null +++ b/CODE-mp/game/vm/g_client.asm @@ -0,0 +1,12441 @@ +data +align 4 +LABELV playerMins +byte 4 3245342720 +byte 4 3245342720 +byte 4 3250585600 +align 4 +LABELV playerMaxs +byte 4 1097859072 +byte 4 1097859072 +byte 4 1109393408 +export SP_info_player_deathmatch +code +proc SP_info_player_deathmatch 8 12 +file "../g_client.c" +line 20 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:#include "g_local.h" +;4:#include "..\ghoul2\g2.h" +;5: +;6:// g_client.c -- client functions that don't happen every frame +;7: +;8:static vec3_t playerMins = {-15, -15, DEFAULT_MINS_2}; +;9:static vec3_t playerMaxs = {15, 15, DEFAULT_MAXS_2}; +;10: +;11:forcedata_t Client_Force[MAX_CLIENTS]; +;12: +;13:/*QUAKED info_player_deathmatch (1 0 1) (-16 -16 -24) (16 16 32) initial +;14:potential spawning position for deathmatch games. +;15:The first time a player enters the game, they will be at an 'initial' spot. +;16:Targets will be fired when someone spawns in on them. +;17:"nobots" will prevent bots from using this spot. +;18:"nohumans" will prevent non-bots from using this spot. +;19:*/ +;20:void SP_info_player_deathmatch( gentity_t *ent ) { +line 23 +;21: int i; +;22: +;23: G_SpawnInt( "nobots", "0", &i); +ADDRGP4 $79 +ARGP4 +ADDRGP4 $80 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 G_SpawnInt +CALLI4 +pop +line 24 +;24: if ( i ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $81 +line 25 +;25: ent->flags |= FL_NO_BOTS; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 8192 +BORI4 +ASGNI4 +line 26 +;26: } +LABELV $81 +line 27 +;27: G_SpawnInt( "nohumans", "0", &i ); +ADDRGP4 $83 +ARGP4 +ADDRGP4 $80 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 G_SpawnInt +CALLI4 +pop +line 28 +;28: if ( i ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $84 +line 29 +;29: ent->flags |= FL_NO_HUMANS; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 16384 +BORI4 +ASGNI4 +line 30 +;30: } +LABELV $84 +line 31 +;31:} +LABELV $78 +endproc SP_info_player_deathmatch 8 12 +export SP_info_player_start +proc SP_info_player_start 0 4 +line 36 +;32: +;33:/*QUAKED info_player_start (1 0 0) (-16 -16 -24) (16 16 32) +;34:equivelant to info_player_deathmatch +;35:*/ +;36:void SP_info_player_start(gentity_t *ent) { +line 37 +;37: ent->classname = "info_player_deathmatch"; +ADDRFP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +ADDRGP4 $87 +ASGNP4 +line 38 +;38: SP_info_player_deathmatch( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 SP_info_player_deathmatch +CALLV +pop +line 39 +;39:} +LABELV $86 +endproc SP_info_player_start 0 4 +export SP_info_player_imperial +proc SP_info_player_imperial 0 4 +line 44 +;40: +;41:/*QUAKED info_player_imperial (1 0 0) (-16 -16 -24) (16 16 32) +;42:saga start point - imperial +;43:*/ +;44:void SP_info_player_imperial(gentity_t *ent) { +line 45 +;45: if (g_gametype.integer != GT_SAGA) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 6 +EQI4 $89 +line 46 +;46: { //turn into a DM spawn if not in saga game mode +line 47 +;47: ent->classname = "info_player_deathmatch"; +ADDRFP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +ADDRGP4 $87 +ASGNP4 +line 48 +;48: SP_info_player_deathmatch( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 SP_info_player_deathmatch +CALLV +pop +line 49 +;49: } +LABELV $89 +line 50 +;50:} +LABELV $88 +endproc SP_info_player_imperial 0 4 +export SP_info_player_rebel +proc SP_info_player_rebel 0 4 +line 55 +;51: +;52:/*QUAKED info_player_rebel (1 0 0) (-16 -16 -24) (16 16 32) +;53:saga start point - rebel +;54:*/ +;55:void SP_info_player_rebel(gentity_t *ent) { +line 56 +;56: if (g_gametype.integer != GT_SAGA) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 6 +EQI4 $93 +line 57 +;57: { //turn into a DM spawn if not in saga game mode +line 58 +;58: ent->classname = "info_player_deathmatch"; +ADDRFP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +ADDRGP4 $87 +ASGNP4 +line 59 +;59: SP_info_player_deathmatch( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 SP_info_player_deathmatch +CALLV +pop +line 60 +;60: } +LABELV $93 +line 61 +;61:} +LABELV $92 +endproc SP_info_player_rebel 0 4 +export SP_info_player_intermission +proc SP_info_player_intermission 0 0 +line 66 +;62: +;63:/*QUAKED info_player_intermission (1 0 1) (-16 -16 -24) (16 16 32) +;64:The intermission will be viewed from this point. Target an info_notnull for the view direction. +;65:*/ +;66:void SP_info_player_intermission( gentity_t *ent ) { +line 68 +;67: +;68:} +LABELV $96 +endproc SP_info_player_intermission 0 0 +export ThrowSaberToAttacker +proc ThrowSaberToAttacker 68 8 +line 73 +;69: +;70:#define JMSABER_RESPAWN_TIME 20000 //in case it gets stuck somewhere no one can reach +;71: +;72:void ThrowSaberToAttacker(gentity_t *self, gentity_t *attacker) +;73:{ +line 74 +;74: gentity_t *ent = &g_entities[self->client->ps.saberIndex]; +ADDRLP4 0 +CNSTI4 828 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 608 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 76 +;75: vec3_t a; +;76: int altVelocity = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 78 +;77: +;78: if (!ent || ent->enemy != self) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $100 +ADDRLP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +EQU4 $98 +LABELV $100 +line 79 +;79: { //something has gone very wrong (this should never happen) +line 84 +;80: //but in case it does.. find the saber manually +;81:#ifdef _DEBUG +;82: Com_Printf("Lost the saber! Attempting to use global pointer..\n"); +;83:#endif +;84: ent = gJMSaberEnt; +ADDRLP4 0 +ADDRGP4 gJMSaberEnt +INDIRP4 +ASGNP4 +line 86 +;85: +;86: if (!ent) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $101 +line 87 +;87: { +line 91 +;88:#ifdef _DEBUG +;89: Com_Printf("The global pointer was NULL. This is a bad thing.\n"); +;90:#endif +;91: return; +ADDRGP4 $97 +JUMPV +LABELV $101 +line 98 +;92: } +;93: +;94:#ifdef _DEBUG +;95: Com_Printf("Got it (%i). Setting enemy to client %i.\n", ent->s.number, self->s.number); +;96:#endif +;97: +;98: ent->enemy = self; +ADDRLP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 99 +;99: self->client->ps.saberIndex = ent->s.number; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 608 +ADDP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 100 +;100: } +LABELV $98 +line 102 +;101: +;102: trap_SetConfigstring ( CS_CLIENT_JEDIMASTER, "-1" ); +CNSTI4 28 +ARGI4 +ADDRGP4 $103 +ARGP4 +ADDRGP4 trap_SetConfigstring +CALLV +pop +line 104 +;103: +;104: if (attacker && attacker->client && self->client->ps.saberInFlight) +ADDRLP4 24 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 28 +CNSTU4 0 +ASGNU4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 28 +INDIRU4 +EQU4 $104 +ADDRLP4 32 +CNSTI4 408 +ASGNI4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 28 +INDIRU4 +EQU4 $104 +ADDRFP4 0 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRP4 +CNSTI4 504 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $104 +line 105 +;105: { //someone killed us and we had the saber thrown, so actually move this saber to the saber location +line 108 +;106: //if we killed ourselves with saber thrown, however, same suicide rules of respawning at spawn spot still +;107: //apply. +;108: gentity_t *flyingsaber = &g_entities[self->client->ps.saberEntityNum]; +ADDRLP4 36 +CNSTI4 828 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 544 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 110 +;109: +;110: if (flyingsaber && flyingsaber->inuse) +ADDRLP4 36 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $106 +ADDRLP4 36 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $106 +line 111 +;111: { +line 112 +;112: VectorCopy(flyingsaber->s.pos.trBase, ent->s.pos.trBase); +ADDRLP4 44 +CNSTI4 24 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 113 +;113: VectorCopy(flyingsaber->s.pos.trDelta, ent->s.pos.trDelta); +ADDRLP4 48 +CNSTI4 36 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 114 +;114: VectorCopy(flyingsaber->s.apos.trBase, ent->s.apos.trBase); +ADDRLP4 52 +CNSTI4 60 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 115 +;115: VectorCopy(flyingsaber->s.apos.trDelta, ent->s.apos.trDelta); +ADDRLP4 56 +CNSTI4 72 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 117 +;116: +;117: VectorCopy(flyingsaber->r.currentOrigin, ent->r.currentOrigin); +ADDRLP4 60 +CNSTI4 368 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 118 +;118: VectorCopy(flyingsaber->r.currentAngles, ent->r.currentAngles); +ADDRLP4 64 +CNSTI4 380 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 119 +;119: altVelocity = 1; +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +line 120 +;120: } +LABELV $106 +line 121 +;121: } +LABELV $104 +line 123 +;122: +;123: self->client->ps.saberInFlight = qtrue; //say he threw it anyway in order to properly remove from dead body +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 504 +ADDP4 +CNSTI4 1 +ASGNI4 +line 125 +;124: +;125: ent->s.modelindex = G_ModelIndex("models/weapons2/saber/saber_w.glm"); +ADDRGP4 $108 +ARGP4 +ADDRLP4 36 +ADDRGP4 G_ModelIndex +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 126 +;126: ent->s.eFlags &= ~(EF_NODRAW); +ADDRLP4 40 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 127 +;127: ent->s.modelGhoul2 = 1; +ADDRLP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +CNSTI4 1 +ASGNI4 +line 128 +;128: ent->s.eType = ET_MISSILE; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 3 +ASGNI4 +line 129 +;129: ent->enemy = NULL; +ADDRLP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +CNSTP4 0 +ASGNP4 +line 131 +;130: +;131: if (!attacker || !attacker->client) +ADDRLP4 44 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 48 +CNSTU4 0 +ASGNU4 +ADDRLP4 44 +INDIRP4 +CVPU4 4 +ADDRLP4 48 +INDIRU4 +EQU4 $111 +ADDRLP4 44 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 48 +INDIRU4 +NEU4 $109 +LABELV $111 +line 132 +;132: { +line 133 +;133: VectorCopy(ent->s.origin2, ent->s.pos.trBase); +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 134 +;134: VectorCopy(ent->s.origin2, ent->s.origin); +ADDRLP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 135 +;135: VectorCopy(ent->s.origin2, ent->r.currentOrigin); +ADDRLP4 0 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 136 +;136: ent->pos2[0] = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 560 +ADDP4 +CNSTF4 0 +ASGNF4 +line 137 +;137: trap_LinkEntity(ent); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 138 +;138: return; +ADDRGP4 $97 +JUMPV +LABELV $109 +line 141 +;139: } +;140: +;141: if (!altVelocity) +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $112 +line 142 +;142: { +line 143 +;143: VectorCopy(self->s.pos.trBase, ent->s.pos.trBase); +ADDRLP4 52 +CNSTI4 24 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 144 +;144: VectorCopy(self->s.pos.trBase, ent->s.origin); +ADDRLP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 145 +;145: VectorCopy(self->s.pos.trBase, ent->r.currentOrigin); +ADDRLP4 0 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 147 +;146: +;147: VectorSubtract(attacker->client->ps.origin, ent->s.pos.trBase, a); +ADDRLP4 56 +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +ASGNP4 +ADDRLP4 64 +CNSTI4 24 +ASGNI4 +ADDRLP4 4 +ADDRLP4 56 +INDIRP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 4+4 +ADDRLP4 56 +INDIRP4 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 4+8 +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 149 +;148: +;149: VectorNormalize(a); +ADDRLP4 4 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 151 +;150: +;151: ent->s.pos.trDelta[0] = a[0]*256; +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +CNSTF4 1132462080 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 152 +;152: ent->s.pos.trDelta[1] = a[1]*256; +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +CNSTF4 1132462080 +ADDRLP4 4+4 +INDIRF4 +MULF4 +ASGNF4 +line 153 +;153: ent->s.pos.trDelta[2] = 256; +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTF4 1132462080 +ASGNF4 +line 154 +;154: } +LABELV $112 +line 156 +;155: +;156: trap_LinkEntity(ent); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 157 +;157:} +LABELV $97 +endproc ThrowSaberToAttacker 68 8 +export JMSaberThink +proc JMSaberThink 28 4 +line 160 +;158: +;159:void JMSaberThink(gentity_t *ent) +;160:{ +line 161 +;161: gJMSaberEnt = ent; +ADDRGP4 gJMSaberEnt +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 163 +;162: +;163: if (ent->enemy) +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $118 +line 164 +;164: { +line 165 +;165: if (!ent->enemy->client || !ent->enemy->inuse) +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $122 +ADDRLP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $120 +LABELV $122 +line 166 +;166: { //disconnected? +line 167 +;167: VectorCopy(ent->enemy->s.pos.trBase, ent->s.pos.trBase); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTI4 24 +ASGNI4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 168 +;168: VectorCopy(ent->enemy->s.pos.trBase, ent->s.origin); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 169 +;169: VectorCopy(ent->enemy->s.pos.trBase, ent->r.currentOrigin); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 170 +;170: ent->s.modelindex = G_ModelIndex("models/weapons2/saber/saber_w.glm"); +ADDRGP4 $108 +ARGP4 +ADDRLP4 20 +ADDRGP4 G_ModelIndex +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 171 +;171: ent->s.eFlags &= ~(EF_NODRAW); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 172 +;172: ent->s.modelGhoul2 = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +CNSTI4 1 +ASGNI4 +line 173 +;173: ent->s.eType = ET_MISSILE; +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 3 +ASGNI4 +line 174 +;174: ent->enemy = NULL; +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +CNSTP4 0 +ASGNP4 +line 176 +;175: +;176: ent->pos2[0] = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 560 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 177 +;177: ent->pos2[1] = 0; //respawn next think +ADDRFP4 0 +INDIRP4 +CNSTI4 564 +ADDP4 +CNSTF4 0 +ASGNF4 +line 178 +;178: trap_LinkEntity(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 179 +;179: } +ADDRGP4 $119 +JUMPV +LABELV $120 +line 181 +;180: else +;181: { +line 182 +;182: ent->pos2[1] = level.time + JMSABER_RESPAWN_TIME; +ADDRFP4 0 +INDIRP4 +CNSTI4 564 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 20000 +ADDI4 +CVIF4 4 +ASGNF4 +line 183 +;183: } +line 184 +;184: } +ADDRGP4 $119 +JUMPV +LABELV $118 +line 185 +;185: else if (ent->pos2[0] && ent->pos2[1] < level.time) +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 560 +ADDP4 +INDIRF4 +CNSTF4 0 +EQF4 $124 +ADDRLP4 0 +INDIRP4 +CNSTI4 564 +ADDP4 +INDIRF4 +ADDRGP4 level+32 +INDIRI4 +CVIF4 4 +GEF4 $124 +line 186 +;186: { +line 187 +;187: VectorCopy(ent->s.origin2, ent->s.pos.trBase); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 188 +;188: VectorCopy(ent->s.origin2, ent->s.origin); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 189 +;189: VectorCopy(ent->s.origin2, ent->r.currentOrigin); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 190 +;190: ent->pos2[0] = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 560 +ADDP4 +CNSTF4 0 +ASGNF4 +line 191 +;191: trap_LinkEntity(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 192 +;192: } +LABELV $124 +LABELV $119 +line 194 +;193: +;194: ent->nextthink = level.time + 50; +ADDRFP4 0 +INDIRP4 +CNSTI4 632 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 50 +ADDI4 +ASGNI4 +line 195 +;195: G_RunObject(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_RunObject +CALLV +pop +line 196 +;196:} +LABELV $117 +endproc JMSaberThink 28 4 +export JMSaberTouch +proc JMSaberTouch 36 12 +line 199 +;197: +;198:void JMSaberTouch(gentity_t *self, gentity_t *other, trace_t *trace) +;199:{ +line 200 +;200: int i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 203 +;201:// gentity_t *te; +;202: +;203: if (!other || !other->client || other->health < 1) +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTU4 0 +ASGNU4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRU4 +EQU4 $132 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRU4 +EQU4 $132 +ADDRLP4 4 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +CNSTI4 1 +GEI4 $129 +LABELV $132 +line 204 +;204: { +line 205 +;205: return; +ADDRGP4 $128 +JUMPV +LABELV $129 +line 208 +;206: } +;207: +;208: if (self->enemy) +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $133 +line 209 +;209: { +line 210 +;210: return; +ADDRGP4 $128 +JUMPV +LABELV $133 +line 213 +;211: } +;212: +;213: if (!self->s.modelindex) +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $135 +line 214 +;214: { +line 215 +;215: return; +ADDRGP4 $128 +JUMPV +LABELV $135 +line 218 +;216: } +;217: +;218: if (other->client->ps.stats[STAT_WEAPONS] & (1 << WP_SABER)) +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $137 +line 219 +;219: { +line 220 +;220: return; +ADDRGP4 $128 +JUMPV +LABELV $137 +line 223 +;221: } +;222: +;223: if (other->client->ps.isJediMaster) +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 604 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $139 +line 224 +;224: { +line 225 +;225: return; +ADDRGP4 $128 +JUMPV +LABELV $139 +line 228 +;226: } +;227: +;228: self->enemy = other; +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +line 229 +;229: other->client->ps.stats[STAT_WEAPONS] = (1 << WP_SABER); +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 232 +ADDP4 +CNSTI4 4 +ASGNI4 +line 230 +;230: other->client->ps.weapon = WP_SABER; +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 148 +ADDP4 +CNSTI4 2 +ASGNI4 +line 231 +;231: other->s.weapon = WP_SABER; +ADDRFP4 4 +INDIRP4 +CNSTI4 276 +ADDP4 +CNSTI4 2 +ASGNI4 +line 232 +;232: G_AddEvent(other, EV_BECOME_JEDIMASTER, 0); +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 30 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 235 +;233: +;234: // Track the jedi master +;235: trap_SetConfigstring ( CS_CLIENT_JEDIMASTER, va("%i", other->s.number ) ); +ADDRGP4 $141 +ARGP4 +ADDRFP4 4 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 28 +ARGI4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_SetConfigstring +CALLV +pop +line 237 +;236: +;237: if (g_spawnInvulnerability.integer) +ADDRGP4 g_spawnInvulnerability+12 +INDIRI4 +CNSTI4 0 +EQI4 $142 +line 238 +;238: { +line 239 +;239: other->client->ps.eFlags |= EF_INVULNERABLE; +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CNSTI4 67108864 +BORI4 +ASGNI4 +line 240 +;240: other->client->invulnerableTimer = level.time + g_spawnInvulnerability.integer; +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1564 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ADDRGP4 g_spawnInvulnerability+12 +INDIRI4 +ADDI4 +ASGNI4 +line 241 +;241: } +LABELV $142 +line 243 +;242: +;243: trap_SendServerCommand( -1, va("cp \"%s %s\n\"", other->client->pers.netname, G_GetStripEdString("SVINGAME", "BECOMEJM")) ); +ADDRGP4 $148 +ARGP4 +ADDRGP4 $149 +ARGP4 +ADDRLP4 16 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $147 +ARGP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 245 +;244: +;245: other->client->ps.isJediMaster = qtrue; +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 604 +ADDP4 +CNSTI4 1 +ASGNI4 +line 246 +;246: other->client->ps.saberIndex = self->s.number; +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 608 +ADDP4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 248 +;247: +;248: if (other->health < 200 && other->health > 0) +ADDRLP4 24 +ADDRFP4 4 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 200 +GEI4 $150 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +LEI4 $150 +line 249 +;249: { //full health when you become the Jedi Master +line 250 +;250: other->client->ps.stats[STAT_HEALTH] = other->health = 200; +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 32 +CNSTI4 200 +ASGNI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 32 +INDIRI4 +ASGNI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRLP4 32 +INDIRI4 +ASGNI4 +line 251 +;251: } +LABELV $150 +line 253 +;252: +;253: if (other->client->ps.fd.forcePower < 100) +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 920 +ADDP4 +INDIRI4 +CNSTI4 100 +GEI4 $155 +line 254 +;254: { +line 255 +;255: other->client->ps.fd.forcePower = 100; +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 920 +ADDP4 +CNSTI4 100 +ASGNI4 +line 256 +;256: } +ADDRGP4 $155 +JUMPV +LABELV $154 +line 259 +;257: +;258: while (i < NUM_FORCE_POWERS) +;259: { +line 260 +;260: other->client->ps.fd.forcePowersKnown |= (1 << i); +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 832 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BORI4 +ASGNI4 +line 261 +;261: other->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_3; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 932 +ADDP4 +ADDP4 +CNSTI4 3 +ASGNI4 +line 263 +;262: +;263: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 264 +;264: } +LABELV $155 +line 258 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $154 +line 266 +;265: +;266: self->pos2[0] = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 560 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 267 +;267: self->pos2[1] = level.time + JMSABER_RESPAWN_TIME; +ADDRFP4 0 +INDIRP4 +CNSTI4 564 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 20000 +ADDI4 +CVIF4 4 +ASGNF4 +line 269 +;268: +;269: self->s.modelindex = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +CNSTI4 0 +ASGNI4 +line 270 +;270: self->s.eFlags |= EF_NODRAW; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +CNSTI4 128 +BORI4 +ASGNI4 +line 271 +;271: self->s.modelGhoul2 = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +CNSTI4 0 +ASGNI4 +line 272 +;272: self->s.eType = ET_GENERAL; +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 279 +;273: +;274: /* +;275: te = G_TempEntity( vec3_origin, EV_DESTROY_GHOUL2_INSTANCE ); +;276: te->r.svFlags |= SVF_BROADCAST; +;277: te->s.eventParm = self->s.number; +;278: */ +;279: G_KillG2Queue(self->s.number); +ADDRFP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRGP4 G_KillG2Queue +CALLV +pop +line 281 +;280: +;281: return; +LABELV $128 +endproc JMSaberTouch 36 12 +data +export gJMSaberEnt +align 4 +LABELV gJMSaberEnt +byte 4 0 +export SP_info_jedimaster_start +code +proc SP_info_jedimaster_start 8 4 +line 290 +;282:} +;283: +;284:gentity_t *gJMSaberEnt = NULL; +;285: +;286:/*QUAKED info_jedimaster_start (1 0 0) (-16 -16 -24) (16 16 32) +;287:"jedi master" saber spawn point +;288:*/ +;289:void SP_info_jedimaster_start(gentity_t *ent) +;290:{ +line 291 +;291: if (g_gametype.integer != GT_JEDIMASTER) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 2 +EQI4 $159 +line 292 +;292: { +line 293 +;293: gJMSaberEnt = NULL; +ADDRGP4 gJMSaberEnt +CNSTP4 0 +ASGNP4 +line 294 +;294: G_FreeEntity(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_FreeEntity +CALLV +pop +line 295 +;295: return; +ADDRGP4 $158 +JUMPV +LABELV $159 +line 298 +;296: } +;297: +;298: ent->enemy = NULL; +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +CNSTP4 0 +ASGNP4 +line 300 +;299: +;300: ent->s.eFlags = EF_BOUNCE_HALF; +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTI4 32 +ASGNI4 +line 302 +;301: +;302: ent->s.modelindex = G_ModelIndex("models/weapons2/saber/saber_w.glm"); +ADDRGP4 $108 +ARGP4 +ADDRLP4 0 +ADDRGP4 G_ModelIndex +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 303 +;303: ent->s.modelGhoul2 = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +CNSTI4 1 +ASGNI4 +line 304 +;304: ent->s.g2radius = 20; +ADDRFP4 0 +INDIRP4 +CNSTI4 208 +ADDP4 +CNSTI4 20 +ASGNI4 +line 306 +;305: //ent->s.eType = ET_GENERAL; +;306: ent->s.eType = ET_MISSILE; +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 3 +ASGNI4 +line 307 +;307: ent->s.weapon = WP_SABER; +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +CNSTI4 2 +ASGNI4 +line 308 +;308: ent->s.pos.trType = TR_GRAVITY; +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 5 +ASGNI4 +line 309 +;309: ent->s.pos.trTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 310 +;310: VectorSet( ent->r.maxs, 3, 3, 3 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 328 +ADDP4 +CNSTF4 1077936128 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 332 +ADDP4 +CNSTF4 1077936128 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 336 +ADDP4 +CNSTF4 1077936128 +ASGNF4 +line 311 +;311: VectorSet( ent->r.mins, -3, -3, -3 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 316 +ADDP4 +CNSTF4 3225419776 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 320 +ADDP4 +CNSTF4 3225419776 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 324 +ADDP4 +CNSTF4 3225419776 +ASGNF4 +line 312 +;312: ent->r.contents = CONTENTS_TRIGGER; +ADDRFP4 0 +INDIRP4 +CNSTI4 340 +ADDP4 +CNSTI4 1024 +ASGNI4 +line 313 +;313: ent->clipmask = MASK_SOLID; +ADDRFP4 0 +INDIRP4 +CNSTI4 508 +ADDP4 +CNSTI4 1 +ASGNI4 +line 315 +;314: +;315: ent->isSaberEntity = qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 812 +ADDP4 +CNSTI4 1 +ASGNI4 +line 317 +;316: +;317: ent->bounceCount = -5; +ADDRFP4 0 +INDIRP4 +CNSTI4 716 +ADDP4 +CNSTI4 -5 +ASGNI4 +line 319 +;318: +;319: ent->physicsObject = qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 500 +ADDP4 +CNSTI4 1 +ASGNI4 +line 321 +;320: +;321: VectorCopy(ent->s.pos.trBase, ent->s.origin2); //remember the spawn spot +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 104 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 323 +;322: +;323: ent->touch = JMSaberTouch; +ADDRFP4 0 +INDIRP4 +CNSTI4 648 +ADDP4 +ADDRGP4 JMSaberTouch +ASGNP4 +line 325 +;324: +;325: trap_LinkEntity(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 327 +;326: +;327: ent->think = JMSaberThink; +ADDRFP4 0 +INDIRP4 +CNSTI4 636 +ADDP4 +ADDRGP4 JMSaberThink +ASGNP4 +line 328 +;328: ent->nextthink = level.time + 50; +ADDRFP4 0 +INDIRP4 +CNSTI4 632 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 50 +ADDI4 +ASGNI4 +line 329 +;329:} +LABELV $158 +endproc SP_info_jedimaster_start 8 4 +export SpotWouldTelefrag +proc SpotWouldTelefrag 4144 16 +line 345 +;330: +;331:/* +;332:======================================================================= +;333: +;334: SelectSpawnPoint +;335: +;336:======================================================================= +;337:*/ +;338: +;339:/* +;340:================ +;341:SpotWouldTelefrag +;342: +;343:================ +;344:*/ +;345:qboolean SpotWouldTelefrag( gentity_t *spot ) { +line 351 +;346: int i, num; +;347: int touch[MAX_GENTITIES]; +;348: gentity_t *hit; +;349: vec3_t mins, maxs; +;350: +;351: VectorAdd( spot->s.origin, playerMins, mins ); +ADDRLP4 4132 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4108 +ADDRLP4 4132 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRF4 +ADDRGP4 playerMins +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 4108+4 +ADDRLP4 4132 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRF4 +ADDRGP4 playerMins+4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 4108+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +ADDRGP4 playerMins+8 +INDIRF4 +ADDF4 +ASGNF4 +line 352 +;352: VectorAdd( spot->s.origin, playerMaxs, maxs ); +ADDRLP4 4136 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4120 +ADDRLP4 4136 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRF4 +ADDRGP4 playerMaxs +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 4120+4 +ADDRLP4 4136 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRF4 +ADDRGP4 playerMaxs+4 +INDIRF4 +ADDF4 +ASGNF4 +ADDRLP4 4120+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +ADDRGP4 playerMaxs+8 +INDIRF4 +ADDF4 +ASGNF4 +line 353 +;353: num = trap_EntitiesInBox( mins, maxs, touch, MAX_GENTITIES ); +ADDRLP4 4108 +ARGP4 +ADDRLP4 4120 +ARGP4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 4140 +ADDRGP4 trap_EntitiesInBox +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 4140 +INDIRI4 +ASGNI4 +line 355 +;354: +;355: for (i=0 ; iclient && hit->client->ps.stats[STAT_HEALTH] > 0 ) { +;358: if ( hit->client) { +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $177 +line 359 +;359: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $164 +JUMPV +LABELV $177 +line 362 +;360: } +;361: +;362: } +LABELV $174 +line 355 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $176 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $173 +line 364 +;363: +;364: return qfalse; +CNSTI4 0 +RETI4 +LABELV $164 +endproc SpotWouldTelefrag 4144 16 +export SelectNearestDeathmatchSpawnPoint +proc SelectNearestDeathmatchSpawnPoint 40 12 +line 375 +;365:} +;366: +;367:/* +;368:================ +;369:SelectNearestDeathmatchSpawnPoint +;370: +;371:Find the spot that we DON'T want to use +;372:================ +;373:*/ +;374:#define MAX_SPAWN_POINTS 128 +;375:gentity_t *SelectNearestDeathmatchSpawnPoint( vec3_t from ) { +line 381 +;376: gentity_t *spot; +;377: vec3_t delta; +;378: float dist, nearestDist; +;379: gentity_t *nearestSpot; +;380: +;381: nearestDist = 999999; +ADDRLP4 20 +CNSTF4 1232348144 +ASGNF4 +line 382 +;382: nearestSpot = NULL; +ADDRLP4 24 +CNSTP4 0 +ASGNP4 +line 383 +;383: spot = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +ADDRGP4 $181 +JUMPV +LABELV $180 +line 385 +;384: +;385: while ((spot = G_Find (spot, FOFS(classname), "info_player_deathmatch")) != NULL) { +line 387 +;386: +;387: VectorSubtract( spot->s.origin, from, delta ); +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 4+4 +ADDRLP4 0 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 4+8 +ADDRLP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 388 +;388: dist = VectorLength( delta ); +ADDRLP4 4 +ARGP4 +ADDRLP4 36 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 36 +INDIRF4 +ASGNF4 +line 389 +;389: if ( dist < nearestDist ) { +ADDRLP4 16 +INDIRF4 +ADDRLP4 20 +INDIRF4 +GEF4 $185 +line 390 +;390: nearestDist = dist; +ADDRLP4 20 +ADDRLP4 16 +INDIRF4 +ASGNF4 +line 391 +;391: nearestSpot = spot; +ADDRLP4 24 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 392 +;392: } +LABELV $185 +line 393 +;393: } +LABELV $181 +line 385 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 416 +ARGI4 +ADDRGP4 $87 +ARGP4 +ADDRLP4 28 +ADDRGP4 G_Find +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 28 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $180 +line 395 +;394: +;395: return nearestSpot; +ADDRLP4 24 +INDIRP4 +RETP4 +LABELV $179 +endproc SelectNearestDeathmatchSpawnPoint 40 12 +export SelectRandomDeathmatchSpawnPoint +proc SelectRandomDeathmatchSpawnPoint 532 12 +line 407 +;396:} +;397: +;398: +;399:/* +;400:================ +;401:SelectRandomDeathmatchSpawnPoint +;402: +;403:go to a random point that doesn't telefrag +;404:================ +;405:*/ +;406:#define MAX_SPAWN_POINTS 128 +;407:gentity_t *SelectRandomDeathmatchSpawnPoint( void ) { +line 413 +;408: gentity_t *spot; +;409: int count; +;410: int selection; +;411: gentity_t *spots[MAX_SPAWN_POINTS]; +;412: +;413: count = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 414 +;414: spot = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +ADDRGP4 $189 +JUMPV +LABELV $188 +line 416 +;415: +;416: while ((spot = G_Find (spot, FOFS(classname), "info_player_deathmatch")) != NULL) { +line 417 +;417: if ( SpotWouldTelefrag( spot ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 524 +ADDRGP4 SpotWouldTelefrag +CALLI4 +ASGNI4 +ADDRLP4 524 +INDIRI4 +CNSTI4 0 +EQI4 $191 +line 418 +;418: continue; +ADDRGP4 $189 +JUMPV +LABELV $191 +line 420 +;419: } +;420: spots[ count ] = spot; +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 421 +;421: count++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 422 +;422: } +LABELV $189 +line 416 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 416 +ARGI4 +ADDRGP4 $87 +ARGP4 +ADDRLP4 524 +ADDRGP4 G_Find +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 524 +INDIRP4 +ASGNP4 +ADDRLP4 524 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $188 +line 424 +;423: +;424: if ( !count ) { // no spots that won't telefrag +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $193 +line 425 +;425: return G_Find( NULL, FOFS(classname), "info_player_deathmatch"); +CNSTP4 0 +ARGP4 +CNSTI4 416 +ARGI4 +ADDRGP4 $87 +ARGP4 +ADDRLP4 528 +ADDRGP4 G_Find +CALLP4 +ASGNP4 +ADDRLP4 528 +INDIRP4 +RETP4 +ADDRGP4 $187 +JUMPV +LABELV $193 +line 428 +;426: } +;427: +;428: selection = rand() % count; +ADDRLP4 528 +ADDRGP4 rand +CALLI4 +ASGNI4 +ADDRLP4 520 +ADDRLP4 528 +INDIRI4 +ADDRLP4 4 +INDIRI4 +MODI4 +ASGNI4 +line 429 +;429: return spots[ selection ]; +ADDRLP4 520 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +ADDP4 +INDIRP4 +RETP4 +LABELV $187 +endproc SelectRandomDeathmatchSpawnPoint 532 12 +export SelectRandomFurthestSpawnPoint +proc SelectRandomFurthestSpawnPoint 572 12 +line 439 +;430:} +;431: +;432:/* +;433:=========== +;434:SelectRandomFurthestSpawnPoint +;435: +;436:Chooses a player start, deathmatch start, etc +;437:============ +;438:*/ +;439:gentity_t *SelectRandomFurthestSpawnPoint ( vec3_t avoidPoint, vec3_t origin, vec3_t angles ) { +line 447 +;440: gentity_t *spot; +;441: vec3_t delta; +;442: float dist; +;443: float list_dist[64]; +;444: gentity_t *list_spot[64]; +;445: int numSpots, rnd, i, j; +;446: +;447: numSpots = 0; +ADDRLP4 520 +CNSTI4 0 +ASGNI4 +line 448 +;448: spot = NULL; +ADDRLP4 528 +CNSTP4 0 +ASGNP4 +ADDRGP4 $197 +JUMPV +LABELV $196 +line 450 +;449: +;450: while ((spot = G_Find (spot, FOFS(classname), "info_player_deathmatch")) != NULL) { +line 451 +;451: if ( SpotWouldTelefrag( spot ) ) { +ADDRLP4 528 +INDIRP4 +ARGP4 +ADDRLP4 548 +ADDRGP4 SpotWouldTelefrag +CALLI4 +ASGNI4 +ADDRLP4 548 +INDIRI4 +CNSTI4 0 +EQI4 $199 +line 452 +;452: continue; +ADDRGP4 $197 +JUMPV +LABELV $199 +line 454 +;453: } +;454: VectorSubtract( spot->s.origin, avoidPoint, delta ); +ADDRLP4 556 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 532 +ADDRLP4 528 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRF4 +ADDRLP4 556 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 532+4 +ADDRLP4 528 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRF4 +ADDRLP4 556 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 532+8 +ADDRLP4 528 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 455 +;455: dist = VectorLength( delta ); +ADDRLP4 532 +ARGP4 +ADDRLP4 560 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 524 +ADDRLP4 560 +INDIRF4 +ASGNF4 +line 456 +;456: for (i = 0; i < numSpots; i++) { +ADDRLP4 516 +CNSTI4 0 +ASGNI4 +ADDRGP4 $206 +JUMPV +LABELV $203 +line 457 +;457: if ( dist > list_dist[i] ) { +ADDRLP4 524 +INDIRF4 +ADDRLP4 516 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +LEF4 $207 +line 458 +;458: if ( numSpots >= 64 ) +ADDRLP4 520 +INDIRI4 +CNSTI4 64 +LTI4 $209 +line 459 +;459: numSpots = 64-1; +ADDRLP4 520 +CNSTI4 63 +ASGNI4 +LABELV $209 +line 460 +;460: for (j = numSpots; j > i; j--) { +ADDRLP4 0 +ADDRLP4 520 +INDIRI4 +ASGNI4 +ADDRGP4 $214 +JUMPV +LABELV $211 +line 461 +;461: list_dist[j] = list_dist[j-1]; +ADDRLP4 564 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 564 +INDIRI4 +ADDRLP4 4 +ADDP4 +ADDRLP4 564 +INDIRI4 +ADDRLP4 4-4 +ADDP4 +INDIRF4 +ASGNF4 +line 462 +;462: list_spot[j] = list_spot[j-1]; +ADDRLP4 568 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 568 +INDIRI4 +ADDRLP4 260 +ADDP4 +ADDRLP4 568 +INDIRI4 +ADDRLP4 260-4 +ADDP4 +INDIRP4 +ASGNP4 +line 463 +;463: } +LABELV $212 +line 460 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +LABELV $214 +ADDRLP4 0 +INDIRI4 +ADDRLP4 516 +INDIRI4 +GTI4 $211 +line 464 +;464: list_dist[i] = dist; +ADDRLP4 516 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +ADDRLP4 524 +INDIRF4 +ASGNF4 +line 465 +;465: list_spot[i] = spot; +ADDRLP4 516 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 260 +ADDP4 +ADDRLP4 528 +INDIRP4 +ASGNP4 +line 466 +;466: numSpots++; +ADDRLP4 520 +ADDRLP4 520 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 467 +;467: if (numSpots > 64) +ADDRLP4 520 +INDIRI4 +CNSTI4 64 +LEI4 $205 +line 468 +;468: numSpots = 64; +ADDRLP4 520 +CNSTI4 64 +ASGNI4 +line 469 +;469: break; +ADDRGP4 $205 +JUMPV +LABELV $207 +line 471 +;470: } +;471: } +LABELV $204 +line 456 +ADDRLP4 516 +ADDRLP4 516 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $206 +ADDRLP4 516 +INDIRI4 +ADDRLP4 520 +INDIRI4 +LTI4 $203 +LABELV $205 +line 472 +;472: if (i >= numSpots && numSpots < 64) { +ADDRLP4 516 +INDIRI4 +ADDRLP4 520 +INDIRI4 +LTI4 $219 +ADDRLP4 520 +INDIRI4 +CNSTI4 64 +GEI4 $219 +line 473 +;473: list_dist[numSpots] = dist; +ADDRLP4 520 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +ADDRLP4 524 +INDIRF4 +ASGNF4 +line 474 +;474: list_spot[numSpots] = spot; +ADDRLP4 520 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 260 +ADDP4 +ADDRLP4 528 +INDIRP4 +ASGNP4 +line 475 +;475: numSpots++; +ADDRLP4 520 +ADDRLP4 520 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 476 +;476: } +LABELV $219 +line 477 +;477: } +LABELV $197 +line 450 +ADDRLP4 528 +INDIRP4 +ARGP4 +CNSTI4 416 +ARGI4 +ADDRGP4 $87 +ARGP4 +ADDRLP4 548 +ADDRGP4 G_Find +CALLP4 +ASGNP4 +ADDRLP4 528 +ADDRLP4 548 +INDIRP4 +ASGNP4 +ADDRLP4 548 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $196 +line 478 +;478: if (!numSpots) { +ADDRLP4 520 +INDIRI4 +CNSTI4 0 +NEI4 $221 +line 479 +;479: spot = G_Find( NULL, FOFS(classname), "info_player_deathmatch"); +CNSTP4 0 +ARGP4 +CNSTI4 416 +ARGI4 +ADDRGP4 $87 +ARGP4 +ADDRLP4 552 +ADDRGP4 G_Find +CALLP4 +ASGNP4 +ADDRLP4 528 +ADDRLP4 552 +INDIRP4 +ASGNP4 +line 480 +;480: if (!spot) +ADDRLP4 528 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $223 +line 481 +;481: G_Error( "Couldn't find a spawn point" ); +ADDRGP4 $225 +ARGP4 +ADDRGP4 G_Error +CALLV +pop +LABELV $223 +line 482 +;482: VectorCopy (spot->s.origin, origin); +ADDRFP4 4 +INDIRP4 +ADDRLP4 528 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRB +ASGNB 12 +line 483 +;483: origin[2] += 9; +ADDRLP4 556 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 556 +INDIRP4 +ADDRLP4 556 +INDIRP4 +INDIRF4 +CNSTF4 1091567616 +ADDF4 +ASGNF4 +line 484 +;484: VectorCopy (spot->s.angles, angles); +ADDRFP4 8 +INDIRP4 +ADDRLP4 528 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRB +ASGNB 12 +line 485 +;485: return spot; +ADDRLP4 528 +INDIRP4 +RETP4 +ADDRGP4 $195 +JUMPV +LABELV $221 +line 489 +;486: } +;487: +;488: // select a random spot from the spawn points furthest away +;489: rnd = random() * (numSpots / 2); +ADDRLP4 552 +ADDRGP4 rand +CALLI4 +ASGNI4 +ADDRLP4 544 +ADDRLP4 552 +INDIRI4 +CNSTI4 32767 +BANDI4 +CVIF4 4 +CNSTF4 1191181824 +DIVF4 +ADDRLP4 520 +INDIRI4 +CNSTI4 2 +DIVI4 +CVIF4 4 +MULF4 +CVFI4 4 +ASGNI4 +line 491 +;490: +;491: VectorCopy (list_spot[rnd]->s.origin, origin); +ADDRFP4 4 +INDIRP4 +ADDRLP4 544 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 260 +ADDP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRB +ASGNB 12 +line 492 +;492: origin[2] += 9; +ADDRLP4 556 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 556 +INDIRP4 +ADDRLP4 556 +INDIRP4 +INDIRF4 +CNSTF4 1091567616 +ADDF4 +ASGNF4 +line 493 +;493: VectorCopy (list_spot[rnd]->s.angles, angles); +ADDRFP4 8 +INDIRP4 +ADDRLP4 544 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 260 +ADDP4 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRB +ASGNB 12 +line 495 +;494: +;495: return list_spot[rnd]; +ADDRLP4 544 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 260 +ADDP4 +INDIRP4 +RETP4 +LABELV $195 +endproc SelectRandomFurthestSpawnPoint 572 12 +export SelectSpawnPoint +proc SelectSpawnPoint 4 12 +line 505 +;496:} +;497: +;498:/* +;499:=========== +;500:SelectSpawnPoint +;501: +;502:Chooses a player start, deathmatch start, etc +;503:============ +;504:*/ +;505:gentity_t *SelectSpawnPoint ( vec3_t avoidPoint, vec3_t origin, vec3_t angles ) { +line 506 +;506: return SelectRandomFurthestSpawnPoint( avoidPoint, origin, angles ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 SelectRandomFurthestSpawnPoint +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $226 +endproc SelectSpawnPoint 4 12 +export SelectInitialSpawnPoint +proc SelectInitialSpawnPoint 20 12 +line 545 +;507: +;508: /* +;509: gentity_t *spot; +;510: gentity_t *nearestSpot; +;511: +;512: nearestSpot = SelectNearestDeathmatchSpawnPoint( avoidPoint ); +;513: +;514: spot = SelectRandomDeathmatchSpawnPoint ( ); +;515: if ( spot == nearestSpot ) { +;516: // roll again if it would be real close to point of death +;517: spot = SelectRandomDeathmatchSpawnPoint ( ); +;518: if ( spot == nearestSpot ) { +;519: // last try +;520: spot = SelectRandomDeathmatchSpawnPoint ( ); +;521: } +;522: } +;523: +;524: // find a single player start spot +;525: if (!spot) { +;526: G_Error( "Couldn't find a spawn point" ); +;527: } +;528: +;529: VectorCopy (spot->s.origin, origin); +;530: origin[2] += 9; +;531: VectorCopy (spot->s.angles, angles); +;532: +;533: return spot; +;534: */ +;535:} +;536: +;537:/* +;538:=========== +;539:SelectInitialSpawnPoint +;540: +;541:Try to find a spawn point marked 'initial', otherwise +;542:use normal spawn selection. +;543:============ +;544:*/ +;545:gentity_t *SelectInitialSpawnPoint( vec3_t origin, vec3_t angles ) { +line 548 +;546: gentity_t *spot; +;547: +;548: spot = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +ADDRGP4 $229 +JUMPV +LABELV $228 +line 549 +;549: while ((spot = G_Find (spot, FOFS(classname), "info_player_deathmatch")) != NULL) { +line 550 +;550: if ( spot->spawnflags & 1 ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 420 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $231 +line 551 +;551: break; +ADDRGP4 $230 +JUMPV +LABELV $231 +line 553 +;552: } +;553: } +LABELV $229 +line 549 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 416 +ARGI4 +ADDRGP4 $87 +ARGP4 +ADDRLP4 4 +ADDRGP4 G_Find +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $228 +LABELV $230 +line 555 +;554: +;555: if ( !spot || SpotWouldTelefrag( spot ) ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $235 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 SpotWouldTelefrag +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $233 +LABELV $235 +line 556 +;556: return SelectSpawnPoint( vec3_origin, origin, angles ); +ADDRGP4 vec3_origin +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 SelectSpawnPoint +CALLP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +RETP4 +ADDRGP4 $227 +JUMPV +LABELV $233 +line 559 +;557: } +;558: +;559: VectorCopy (spot->s.origin, origin); +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRB +ASGNB 12 +line 560 +;560: origin[2] += 9; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CNSTF4 1091567616 +ADDF4 +ASGNF4 +line 561 +;561: VectorCopy (spot->s.angles, angles); +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRB +ASGNB 12 +line 563 +;562: +;563: return spot; +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $227 +endproc SelectInitialSpawnPoint 20 12 +export SelectSpectatorSpawnPoint +proc SelectSpectatorSpawnPoint 0 0 +line 572 +;564:} +;565: +;566:/* +;567:=========== +;568:SelectSpectatorSpawnPoint +;569: +;570:============ +;571:*/ +;572:gentity_t *SelectSpectatorSpawnPoint( vec3_t origin, vec3_t angles ) { +line 573 +;573: FindIntermissionPoint(); +ADDRGP4 FindIntermissionPoint +CALLV +pop +line 575 +;574: +;575: VectorCopy( level.intermission_origin, origin ); +ADDRFP4 0 +INDIRP4 +ADDRGP4 level+9024 +INDIRB +ASGNB 12 +line 576 +;576: VectorCopy( level.intermission_angle, angles ); +ADDRFP4 4 +INDIRP4 +ADDRGP4 level+9036 +INDIRB +ASGNB 12 +line 578 +;577: +;578: return NULL; +CNSTP4 0 +RETP4 +LABELV $236 +endproc SelectSpectatorSpawnPoint 0 0 +export InitBodyQue +proc InitBodyQue 12 0 +line 604 +;579:} +;580: +;581:/* +;582:======================================================================= +;583: +;584:BODYQUE +;585: +;586:======================================================================= +;587:*/ +;588: +;589:/* +;590:======================================================================= +;591: +;592:BODYQUE +;593: +;594:======================================================================= +;595:*/ +;596: +;597:#define BODY_SINK_TIME 45000 +;598: +;599:/* +;600:=============== +;601:InitBodyQue +;602:=============== +;603:*/ +;604:void InitBodyQue (void) { +line 608 +;605: int i; +;606: gentity_t *ent; +;607: +;608: level.bodyQueIndex = 0; +ADDRGP4 level+9056 +CNSTI4 0 +ASGNI4 +line 609 +;609: for (i=0; iclassname = "bodyque"; +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +ADDRGP4 $245 +ASGNP4 +line 612 +;612: ent->neverFree = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 468 +ADDP4 +CNSTI4 1 +ASGNI4 +line 613 +;613: level.bodyQue[i] = ent; +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 level+9060 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 614 +;614: } +LABELV $242 +line 609 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 8 +LTI4 $241 +line 615 +;615:} +LABELV $239 +endproc InitBodyQue 12 0 +export BodySink +proc BodySink 4 4 +line 624 +;616: +;617:/* +;618:============= +;619:BodySink +;620: +;621:After sitting around for five seconds, fall into the ground and dissapear +;622:============= +;623:*/ +;624:void BodySink( gentity_t *ent ) { +line 625 +;625: if ( level.time - ent->timestamp > BODY_SINK_TIME + 1500 ) { +ADDRGP4 level+32 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 576 +ADDP4 +INDIRI4 +SUBI4 +CNSTI4 46500 +LEI4 $248 +line 627 +;626: // the body ques are never actually freed, they are just unlinked +;627: trap_UnlinkEntity( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_UnlinkEntity +CALLV +pop +line 628 +;628: ent->physicsObject = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 500 +ADDP4 +CNSTI4 0 +ASGNI4 +line 629 +;629: return; +ADDRGP4 $247 +JUMPV +LABELV $248 +line 631 +;630: } +;631: ent->nextthink = level.time + 100; +ADDRFP4 0 +INDIRP4 +CNSTI4 632 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 100 +ADDI4 +ASGNI4 +line 632 +;632: ent->s.pos.trBase[2] -= 1; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 633 +;633:} +LABELV $247 +endproc BodySink 4 4 +export CopyToBodyQue +proc CopyToBodyQue 64 12 +line 643 +;634: +;635:/* +;636:============= +;637:CopyToBodyQue +;638: +;639:A player is respawning, so make an entity that looks +;640:just like the existing corpse to leave behind. +;641:============= +;642:*/ +;643:void CopyToBodyQue( gentity_t *ent ) { +line 647 +;644: gentity_t *body; +;645: int contents; +;646: +;647: if (level.intermissiontime) +ADDRGP4 level+9008 +INDIRI4 +CNSTI4 0 +EQI4 $253 +line 648 +;648: { +line 649 +;649: return; +ADDRGP4 $252 +JUMPV +LABELV $253 +line 652 +;650: } +;651: +;652: trap_UnlinkEntity (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_UnlinkEntity +CALLV +pop +line 655 +;653: +;654: // if client is in a nodrop area, don't leave the body +;655: contents = trap_PointContents( ent->s.origin, -1 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ARGP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 8 +ADDRGP4 trap_PointContents +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 656 +;656: if ( contents & CONTENTS_NODROP ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 2048 +BANDI4 +CNSTI4 0 +EQI4 $256 +line 657 +;657: return; +ADDRGP4 $252 +JUMPV +LABELV $256 +line 660 +;658: } +;659: +;660: if (ent->client && (ent->client->ps.eFlags & EF_DISINTEGRATION)) +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $258 +ADDRLP4 12 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 33554432 +BANDI4 +CNSTI4 0 +EQI4 $258 +line 661 +;661: { //for now, just don't spawn a body if you got disint'd +line 662 +;662: return; +ADDRGP4 $252 +JUMPV +LABELV $258 +line 666 +;663: } +;664: +;665: // grab a body que and cycle to the next one +;666: body = level.bodyQue[ level.bodyQueIndex ]; +ADDRLP4 0 +ADDRGP4 level+9056 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 level+9060 +ADDP4 +INDIRP4 +ASGNP4 +line 667 +;667: level.bodyQueIndex = (level.bodyQueIndex + 1) % BODY_QUEUE_SIZE; +ADDRGP4 level+9056 +ADDRGP4 level+9056 +INDIRI4 +CNSTI4 1 +ADDI4 +CNSTI4 8 +MODI4 +ASGNI4 +line 669 +;668: +;669: trap_UnlinkEntity (body); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_UnlinkEntity +CALLV +pop +line 670 +;670: body->s = ent->s; +ADDRLP4 0 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 296 +line 673 +;671: +;672: //avoid oddly angled corpses floating around +;673: body->s.angles[PITCH] = body->s.angles[ROLL] = body->s.apos.trBase[PITCH] = body->s.apos.trBase[ROLL] = 0; +ADDRLP4 20 +CNSTF4 0 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 124 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 675 +;674: +;675: body->s.g2radius = 100; +ADDRLP4 0 +INDIRP4 +CNSTI4 208 +ADDP4 +CNSTI4 100 +ASGNI4 +line 677 +;676: +;677: body->s.eType = ET_BODY; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 15 +ASGNI4 +line 678 +;678: body->s.eFlags = EF_DEAD; // clear EF_TALK, etc +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTI4 1 +ASGNI4 +line 680 +;679: +;680: if (ent->client && (ent->client->ps.eFlags & EF_DISINTEGRATION)) +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $264 +ADDRLP4 24 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 33554432 +BANDI4 +CNSTI4 0 +EQI4 $264 +line 681 +;681: { +line 682 +;682: body->s.eFlags |= EF_DISINTEGRATION; +ADDRLP4 28 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +CNSTI4 33554432 +BORI4 +ASGNI4 +line 683 +;683: } +LABELV $264 +line 685 +;684: +;685: VectorCopy(ent->client->ps.lastHitLoc, body->s.origin2); +ADDRLP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1356 +ADDP4 +INDIRB +ASGNB 12 +line 687 +;686: +;687: body->s.powerups = 0; // clear powerups +ADDRLP4 0 +INDIRP4 +CNSTI4 272 +ADDP4 +CNSTI4 0 +ASGNI4 +line 688 +;688: body->s.loopSound = 0; // clear lava burning +ADDRLP4 0 +INDIRP4 +CNSTI4 200 +ADDP4 +CNSTI4 0 +ASGNI4 +line 689 +;689: body->s.number = body - g_entities; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ASGNI4 +line 690 +;690: body->timestamp = level.time; +ADDRLP4 0 +INDIRP4 +CNSTI4 576 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 691 +;691: body->physicsObject = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 500 +ADDP4 +CNSTI4 1 +ASGNI4 +line 692 +;692: body->physicsBounce = 0; // don't bounce +ADDRLP4 0 +INDIRP4 +CNSTI4 504 +ADDP4 +CNSTF4 0 +ASGNF4 +line 693 +;693: if ( body->s.groundEntityNum == ENTITYNUM_NONE ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 192 +ADDP4 +INDIRI4 +CNSTI4 1023 +NEI4 $267 +line 694 +;694: body->s.pos.trType = TR_GRAVITY; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 5 +ASGNI4 +line 695 +;695: body->s.pos.trTime = level.time; +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 696 +;696: VectorCopy( ent->client->ps.velocity, body->s.pos.trDelta ); +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 697 +;697: } else { +ADDRGP4 $268 +JUMPV +LABELV $267 +line 698 +;698: body->s.pos.trType = TR_STATIONARY; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 699 +;699: } +LABELV $268 +line 700 +;700: body->s.event = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 252 +ADDP4 +CNSTI4 0 +ASGNI4 +line 702 +;701: +;702: body->s.weapon = ent->s.bolt2; +ADDRLP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 704 +;703: +;704: if (body->s.weapon == WP_SABER && ent->client->ps.saberInFlight) +ADDRLP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $270 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 504 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $270 +line 705 +;705: { +line 706 +;706: body->s.weapon = WP_BLASTER; //lie to keep from putting a saber on the corpse, because it was thrown at death +ADDRLP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +CNSTI4 4 +ASGNI4 +line 707 +;707: } +LABELV $270 +line 709 +;708: +;709: G_AddEvent(body, EV_BODY_QUEUE_COPY, ent->s.clientNum); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 109 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 G_AddEvent +CALLV +pop +line 711 +;710: +;711: body->r.svFlags = ent->r.svFlags | SVF_BROADCAST; +ADDRLP4 32 +CNSTI4 304 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 712 +;712: VectorCopy (ent->r.mins, body->r.mins); +ADDRLP4 36 +CNSTI4 316 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 713 +;713: VectorCopy (ent->r.maxs, body->r.maxs); +ADDRLP4 40 +CNSTI4 328 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 714 +;714: VectorCopy (ent->r.absmin, body->r.absmin); +ADDRLP4 44 +CNSTI4 344 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 715 +;715: VectorCopy (ent->r.absmax, body->r.absmax); +ADDRLP4 48 +CNSTI4 356 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 717 +;716: +;717: body->s.torsoAnim = body->s.legsAnim = ent->client->ps.legsAnim & ~ANIM_TOGGLEBIT; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +ADDRLP4 56 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 284 +ADDP4 +ADDRLP4 56 +INDIRI4 +ASGNI4 +line 719 +;718: +;719: body->clipmask = CONTENTS_SOLID | CONTENTS_PLAYERCLIP; +ADDRLP4 0 +INDIRP4 +CNSTI4 508 +ADDP4 +CNSTI4 17 +ASGNI4 +line 720 +;720: body->r.contents = CONTENTS_CORPSE; +ADDRLP4 0 +INDIRP4 +CNSTI4 340 +ADDP4 +CNSTI4 512 +ASGNI4 +line 721 +;721: body->r.ownerNum = ent->s.number; +ADDRLP4 0 +INDIRP4 +CNSTI4 396 +ADDP4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 723 +;722: +;723: body->nextthink = level.time + BODY_SINK_TIME; +ADDRLP4 0 +INDIRP4 +CNSTI4 632 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 45000 +ADDI4 +ASGNI4 +line 724 +;724: body->think = BodySink; +ADDRLP4 0 +INDIRP4 +CNSTI4 636 +ADDP4 +ADDRGP4 BodySink +ASGNP4 +line 726 +;725: +;726: body->die = body_die; +ADDRLP4 0 +INDIRP4 +CNSTI4 660 +ADDP4 +ADDRGP4 body_die +ASGNP4 +line 729 +;727: +;728: // don't take more damage if already gibbed +;729: if ( ent->health <= GIB_HEALTH ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +CNSTI4 -40 +GTI4 $273 +line 730 +;730: body->takedamage = qfalse; +ADDRLP4 0 +INDIRP4 +CNSTI4 680 +ADDP4 +CNSTI4 0 +ASGNI4 +line 731 +;731: } else { +ADDRGP4 $274 +JUMPV +LABELV $273 +line 732 +;732: body->takedamage = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 680 +ADDP4 +CNSTI4 1 +ASGNI4 +line 733 +;733: } +LABELV $274 +line 735 +;734: +;735: VectorCopy ( body->s.pos.trBase, body->r.currentOrigin ); +ADDRLP4 0 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 736 +;736: trap_LinkEntity (body); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 737 +;737:} +LABELV $252 +endproc CopyToBodyQue 64 12 +export SetClientViewAngle +proc SetClientViewAngle 16 0 +line 748 +;738: +;739://====================================================================== +;740: +;741: +;742:/* +;743:================== +;744:SetClientViewAngle +;745: +;746:================== +;747:*/ +;748:void SetClientViewAngle( gentity_t *ent, vec3_t angle ) { +line 752 +;749: int i; +;750: +;751: // set the delta angle +;752: for (i=0 ; i<3 ; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $276 +line 755 +;753: int cmdAngle; +;754: +;755: cmdAngle = ANGLE2SHORT(angle[i]); +ADDRLP4 4 +CNSTF4 1199570944 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRF4 +MULF4 +CNSTF4 1135869952 +DIVF4 +CVFI4 4 +CNSTI4 65535 +BANDI4 +ASGNI4 +line 756 +;756: ent->client->ps.delta_angles[i] = cmdAngle - ent->client->pers.cmd.angles[i]; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 68 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1376 +ADDP4 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 757 +;757: } +LABELV $277 +line 752 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LTI4 $276 +line 758 +;758: VectorCopy( angle, ent->s.angles ); +ADDRFP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDRFP4 4 +INDIRP4 +INDIRB +ASGNB 12 +line 759 +;759: VectorCopy (ent->s.angles, ent->client->ps.viewangles); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 156 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRB +ASGNB 12 +line 760 +;760:} +LABELV $275 +endproc SetClientViewAngle 16 0 +export respawn +proc respawn 12 8 +line 767 +;761: +;762:/* +;763:================ +;764:respawn +;765:================ +;766:*/ +;767:void respawn( gentity_t *ent ) { +line 770 +;768: gentity_t *tent; +;769: +;770: CopyToBodyQue (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 CopyToBodyQue +CALLV +pop +line 772 +;771: +;772: trap_UnlinkEntity (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_UnlinkEntity +CALLV +pop +line 773 +;773: ClientSpawn(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ClientSpawn +CALLV +pop +line 776 +;774: +;775: // add a teleportation effect +;776: tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_IN ); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 4 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 777 +;777: tent->s.clientNum = ent->s.clientNum; +ADDRLP4 8 +CNSTI4 220 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 778 +;778:} +LABELV $280 +endproc respawn 12 8 +export TeamCount +proc TeamCount 8 0 +line 787 +;779: +;780:/* +;781:================ +;782:TeamCount +;783: +;784:Returns number of players on a team +;785:================ +;786:*/ +;787:team_t TeamCount( int ignoreClientNum, int team ) { +line 789 +;788: int i; +;789: int count = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 791 +;790: +;791: for ( i = 0 ; i < level.maxclients ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $285 +JUMPV +LABELV $282 +line 792 +;792: if ( i == ignoreClientNum ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $287 +line 793 +;793: continue; +ADDRGP4 $283 +JUMPV +LABELV $287 +line 795 +;794: } +;795: if ( level.clients[i].pers.connected == CON_DISCONNECTED ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $289 +line 796 +;796: continue; +ADDRGP4 $283 +JUMPV +LABELV $289 +line 798 +;797: } +;798: if ( level.clients[i].sess.sessionTeam == team ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $291 +line 799 +;799: count++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 800 +;800: } +LABELV $291 +line 801 +;801: } +LABELV $283 +line 791 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $285 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $282 +line 803 +;802: +;803: return count; +ADDRLP4 4 +INDIRI4 +RETI4 +LABELV $281 +endproc TeamCount 8 0 +export TeamLeader +proc TeamLeader 4 0 +line 813 +;804:} +;805: +;806:/* +;807:================ +;808:TeamLeader +;809: +;810:Returns the client number of the team leader +;811:================ +;812:*/ +;813:int TeamLeader( int team ) { +line 816 +;814: int i; +;815: +;816: for ( i = 0 ; i < level.maxclients ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $297 +JUMPV +LABELV $294 +line 817 +;817: if ( level.clients[i].pers.connected == CON_DISCONNECTED ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $299 +line 818 +;818: continue; +ADDRGP4 $295 +JUMPV +LABELV $299 +line 820 +;819: } +;820: if ( level.clients[i].sess.sessionTeam == team ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $301 +line 821 +;821: if ( level.clients[i].sess.teamLeader ) +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1560 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $303 +line 822 +;822: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $293 +JUMPV +LABELV $303 +line 823 +;823: } +LABELV $301 +line 824 +;824: } +LABELV $295 +line 816 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $297 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $294 +line 826 +;825: +;826: return -1; +CNSTI4 -1 +RETI4 +LABELV $293 +endproc TeamLeader 4 0 +export PickTeam +proc PickTeam 24 8 +line 836 +;827:} +;828: +;829: +;830:/* +;831:================ +;832:PickTeam +;833: +;834:================ +;835:*/ +;836:team_t PickTeam( int ignoreClientNum ) { +line 839 +;837: int counts[TEAM_NUM_TEAMS]; +;838: +;839: counts[TEAM_BLUE] = TeamCount( ignoreClientNum, TEAM_BLUE ); +ADDRFP4 0 +INDIRI4 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRLP4 16 +ADDRGP4 TeamCount +CALLI4 +ASGNI4 +ADDRLP4 0+8 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 840 +;840: counts[TEAM_RED] = TeamCount( ignoreClientNum, TEAM_RED ); +ADDRFP4 0 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 20 +ADDRGP4 TeamCount +CALLI4 +ASGNI4 +ADDRLP4 0+4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 842 +;841: +;842: if ( counts[TEAM_BLUE] > counts[TEAM_RED] ) { +ADDRLP4 0+8 +INDIRI4 +ADDRLP4 0+4 +INDIRI4 +LEI4 $308 +line 843 +;843: return TEAM_RED; +CNSTI4 1 +RETI4 +ADDRGP4 $305 +JUMPV +LABELV $308 +line 845 +;844: } +;845: if ( counts[TEAM_RED] > counts[TEAM_BLUE] ) { +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 0+8 +INDIRI4 +LEI4 $312 +line 846 +;846: return TEAM_BLUE; +CNSTI4 2 +RETI4 +ADDRGP4 $305 +JUMPV +LABELV $312 +line 849 +;847: } +;848: // equal team count, so join the team with the lowest score +;849: if ( level.teamScores[TEAM_BLUE] > level.teamScores[TEAM_RED] ) { +ADDRGP4 level+44+8 +INDIRI4 +ADDRGP4 level+44+4 +INDIRI4 +LEI4 $316 +line 850 +;850: return TEAM_RED; +CNSTI4 1 +RETI4 +ADDRGP4 $305 +JUMPV +LABELV $316 +line 852 +;851: } +;852: return TEAM_BLUE; +CNSTI4 2 +RETI4 +LABELV $305 +endproc PickTeam 24 8 +proc ClientCleanName 40 12 +line 880 +;853:} +;854: +;855:/* +;856:=========== +;857:ForceClientSkin +;858: +;859:Forces a client's skin (for teamplay) +;860:=========== +;861:*/ +;862:/* +;863:static void ForceClientSkin( gclient_t *client, char *model, const char *skin ) { +;864: char *p; +;865: +;866: if ((p = Q_strrchr(model, '/')) != 0) { +;867: *p = 0; +;868: } +;869: +;870: Q_strcat(model, MAX_QPATH, "/"); +;871: Q_strcat(model, MAX_QPATH, skin); +;872:} +;873:*/ +;874: +;875:/* +;876:=========== +;877:ClientCheckName +;878:============ +;879:*/ +;880:static void ClientCleanName( const char *in, char *out, int outSize ) { +line 887 +;881: int len, colorlessLen; +;882: char ch; +;883: char *p; +;884: int spaces; +;885: +;886: //save room for trailing null byte +;887: outSize--; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 889 +;888: +;889: len = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 890 +;890: colorlessLen = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 891 +;891: p = out; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +line 892 +;892: *p = 0; +ADDRLP4 12 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 893 +;893: spaces = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $324 +JUMPV +LABELV $323 +line 895 +;894: +;895: while( 1 ) { +line 896 +;896: ch = *in++; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 20 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +INDIRI1 +ASGNI1 +line 897 +;897: if( !ch ) { +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $326 +line 898 +;898: break; +ADDRGP4 $325 +JUMPV +LABELV $326 +line 902 +;899: } +;900: +;901: // don't allow leading spaces +;902: if( !*p && ch == ' ' ) { +ADDRLP4 12 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $328 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $328 +line 903 +;903: continue; +ADDRGP4 $324 +JUMPV +LABELV $328 +line 907 +;904: } +;905: +;906: // check colors +;907: if( ch == Q_COLOR_ESCAPE ) { +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 94 +NEI4 $330 +line 909 +;908: // solo trailing carat is not a color prefix +;909: if( !*in ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $332 +line 910 +;910: break; +ADDRGP4 $325 +JUMPV +LABELV $332 +line 914 +;911: } +;912: +;913: // don't allow black in a name, period +;914: if( ColorIndex(*in) == 0 ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CNSTI4 7 +BANDI4 +CNSTI4 0 +NEI4 $334 +line 915 +;915: in++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 916 +;916: continue; +ADDRGP4 $324 +JUMPV +LABELV $334 +line 920 +;917: } +;918: +;919: // make sure room in dest for both chars +;920: if( len > outSize - 2 ) { +ADDRLP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +CNSTI4 2 +SUBI4 +LEI4 $336 +line 921 +;921: break; +ADDRGP4 $325 +JUMPV +LABELV $336 +line 924 +;922: } +;923: +;924: *out++ = ch; +ADDRLP4 24 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 0 +INDIRI1 +ASGNI1 +line 925 +;925: *out++ = *in++; +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 36 +CNSTI4 1 +ASGNI4 +ADDRFP4 4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 32 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI1 +ASGNI1 +line 926 +;926: len += 2; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +ADDI4 +ASGNI4 +line 927 +;927: continue; +ADDRGP4 $324 +JUMPV +LABELV $330 +line 931 +;928: } +;929: +;930: // don't allow too many consecutive spaces +;931: if( ch == ' ' ) { +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 32 +NEI4 $338 +line 932 +;932: spaces++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 933 +;933: if( spaces > 3 ) { +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +LEI4 $339 +line 934 +;934: continue; +ADDRGP4 $324 +JUMPV +line 936 +;935: } +;936: } +LABELV $338 +line 937 +;937: else { +line 938 +;938: spaces = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 939 +;939: } +LABELV $339 +line 941 +;940: +;941: if( len > outSize - 1 ) { +ADDRLP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +LEI4 $342 +line 942 +;942: break; +ADDRGP4 $325 +JUMPV +LABELV $342 +line 945 +;943: } +;944: +;945: *out++ = ch; +ADDRLP4 24 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 0 +INDIRI1 +ASGNI1 +line 946 +;946: colorlessLen++; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 947 +;947: len++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 948 +;948: } +LABELV $324 +line 895 +ADDRGP4 $323 +JUMPV +LABELV $325 +line 949 +;949: *out = 0; +ADDRFP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 952 +;950: +;951: // don't allow empty names +;952: if( *p == 0 || colorlessLen == 0 ) { +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRLP4 12 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 20 +INDIRI4 +EQI4 $346 +ADDRLP4 16 +INDIRI4 +ADDRLP4 20 +INDIRI4 +NEI4 $344 +LABELV $346 +line 953 +;953: Q_strncpyz( p, "Padawan", outSize ); +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $347 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 954 +;954: } +LABELV $344 +line 955 +;955:} +LABELV $322 +endproc ClientCleanName 40 12 +data +export g2SaberInstance +align 4 +LABELV g2SaberInstance +byte 4 0 +lit +align 4 +LABELV $349 +byte 4 0 +byte 4 0 +byte 4 0 +export SetupGameGhoul2Model +code +proc SetupGameGhoul2Model 188 44 +line 980 +;956: +;957:#ifdef _DEBUG +;958:void G_DebugWrite(const char *path, const char *text) +;959:{ +;960: fileHandle_t f; +;961: +;962: trap_FS_FOpenFile( path, &f, FS_APPEND ); +;963: trap_FS_Write(text, strlen(text), f); +;964: trap_FS_FCloseFile(f); +;965:} +;966:#endif +;967: +;968:/* +;969:=========== +;970:SetupGameGhoul2Model +;971: +;972:There are two ghoul2 model instances per player (actually three). One is on the clientinfo (the base for the client side +;973:player, and copied for player spawns and for corpses). One is attached to the centity itself, which is the model acutally +;974:animated and rendered by the system. The final is the game ghoul2 model. This is animated by pmove on the server, and +;975:is used for determining where the lightsaber should be, and for per-poly collision tests. +;976:=========== +;977:*/ +;978:void *g2SaberInstance = NULL; +;979:void SetupGameGhoul2Model(gclient_t *client, char *modelname) +;980:{ +line 985 +;981: int handle; +;982: char afilename[MAX_QPATH]; +;983: char /**GLAName,*/ *slash; +;984: char GLAName[MAX_QPATH]; +;985: vec3_t tempVec = {0,0,0}; +ADDRLP4 64 +ADDRGP4 $349 +INDIRB +ASGNB 12 +line 988 +;986: +;987: // First things first. If this is a ghoul2 model, then let's make sure we demolish this first. +;988: if (client->ghoul2 && trap_G2_HaveWeGhoul2Models(client->ghoul2)) +ADDRLP4 148 +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 148 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $350 +ADDRLP4 148 +INDIRP4 +ARGP4 +ADDRLP4 152 +ADDRGP4 trap_G2_HaveWeGhoul2Models +CALLI4 +ASGNI4 +ADDRLP4 152 +INDIRI4 +CNSTI4 0 +EQI4 $350 +line 989 +;989: { +line 990 +;990: trap_G2API_CleanGhoul2Models(&(client->ghoul2)); +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +ARGP4 +ADDRGP4 trap_G2API_CleanGhoul2Models +CALLV +pop +line 991 +;991: } +LABELV $350 +line 1009 +;992: +;993: /* +;994: Com_sprintf( afilename, sizeof( afilename ), "models/players/%s/model.glm", modelname ); +;995: handle = trap_G2API_InitGhoul2Model(&client->ghoul2, afilename, 0, 0, -20, 0, 0); +;996: if (handle<0) +;997: { +;998: Com_sprintf( afilename, sizeof( afilename ), "models/players/kyle/model.glm" ); +;999: handle = trap_G2API_InitGhoul2Model(&client->ghoul2, afilename, 0, 0, -20, 0, 0); +;1000: +;1001: if (handle<0) +;1002: { +;1003: return; +;1004: } +;1005: } +;1006: */ +;1007: +;1008: //rww - just load the "standard" model for the server" +;1009: if (!precachedKyle) +ADDRGP4 precachedKyle +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $352 +line 1010 +;1010: { +line 1011 +;1011: Com_sprintf( afilename, sizeof( afilename ), "models/players/kyle/model.glm" ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $354 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1012 +;1012: handle = trap_G2API_InitGhoul2Model(&precachedKyle, afilename, 0, 0, -20, 0, 0); +ADDRGP4 precachedKyle +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 156 +CNSTI4 0 +ASGNI4 +ADDRLP4 156 +INDIRI4 +ARGI4 +ADDRLP4 156 +INDIRI4 +ARGI4 +CNSTI4 -20 +ARGI4 +ADDRLP4 156 +INDIRI4 +ARGI4 +ADDRLP4 156 +INDIRI4 +ARGI4 +ADDRLP4 160 +ADDRGP4 trap_G2API_InitGhoul2Model +CALLI4 +ASGNI4 +ADDRLP4 144 +ADDRLP4 160 +INDIRI4 +ASGNI4 +line 1014 +;1013: +;1014: if (handle<0) +ADDRLP4 144 +INDIRI4 +CNSTI4 0 +GEI4 $355 +line 1015 +;1015: { +line 1016 +;1016: return; +ADDRGP4 $348 +JUMPV +LABELV $355 +line 1018 +;1017: } +;1018: } +LABELV $352 +line 1020 +;1019: +;1020: if (precachedKyle && trap_G2_HaveWeGhoul2Models(precachedKyle)) +ADDRLP4 156 +ADDRGP4 precachedKyle +INDIRP4 +ASGNP4 +ADDRLP4 156 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $348 +ADDRLP4 156 +INDIRP4 +ARGP4 +ADDRLP4 160 +ADDRGP4 trap_G2_HaveWeGhoul2Models +CALLI4 +ASGNI4 +ADDRLP4 160 +INDIRI4 +CNSTI4 0 +EQI4 $348 +line 1021 +;1021: { +line 1022 +;1022: trap_G2API_DuplicateGhoul2Instance(precachedKyle, &client->ghoul2); +ADDRGP4 precachedKyle +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +ARGP4 +ADDRGP4 trap_G2API_DuplicateGhoul2Instance +CALLV +pop +line 1023 +;1023: } +line 1025 +;1024: else +;1025: { +line 1026 +;1026: return; +LABELV $358 +line 1031 +;1027: } +;1028: +;1029: // The model is now loaded. +;1030: +;1031: GLAName[0] = 0; +ADDRLP4 76 +CNSTI1 0 +ASGNI1 +line 1033 +;1032: +;1033: if (!BGPAFtextLoaded) +ADDRGP4 BGPAFtextLoaded +INDIRI4 +CNSTI4 0 +NEI4 $359 +line 1034 +;1034: { +line 1037 +;1035: //get the location of the animation.cfg +;1036: //GLAName = trap_G2API_GetGLAName( client->ghoul2, 0); +;1037: trap_G2API_GetGLAName( client->ghoul2, 0, GLAName); +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 76 +ARGP4 +ADDRGP4 trap_G2API_GetGLAName +CALLV +pop +line 1039 +;1038: +;1039: if (!GLAName[0]) +ADDRLP4 76 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $361 +line 1040 +;1040: { +line 1041 +;1041: if (!BG_ParseAnimationFile("models/players/_humanoid/animation.cfg")) +ADDRGP4 $365 +ARGP4 +ADDRLP4 164 +ADDRGP4 BG_ParseAnimationFile +CALLI4 +ASGNI4 +ADDRLP4 164 +INDIRI4 +CNSTI4 0 +NEI4 $348 +line 1042 +;1042: { +line 1043 +;1043: Com_Printf( "Failed to load animation file %s\n", afilename ); +ADDRGP4 $366 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1044 +;1044: return; +ADDRGP4 $348 +JUMPV +line 1046 +;1045: } +;1046: return; +LABELV $361 +line 1048 +;1047: } +;1048: Q_strncpyz( afilename, GLAName, sizeof( afilename )); +ADDRLP4 0 +ARGP4 +ADDRLP4 76 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1049 +;1049: slash = Q_strrchr( afilename, '/' ); +ADDRLP4 0 +ARGP4 +CNSTI4 47 +ARGI4 +ADDRLP4 164 +ADDRGP4 Q_strrchr +CALLP4 +ASGNP4 +ADDRLP4 140 +ADDRLP4 164 +INDIRP4 +ASGNP4 +line 1050 +;1050: if ( slash ) +ADDRLP4 140 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $348 +line 1051 +;1051: { +line 1052 +;1052: strcpy(slash, "/animation.cfg"); +ADDRLP4 140 +INDIRP4 +ARGP4 +ADDRGP4 $369 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1053 +;1053: } // Now afilename holds just the path to the animation.cfg +line 1055 +;1054: else +;1055: { // Didn't find any slashes, this is a raw filename right in base (whish isn't a good thing) +line 1056 +;1056: return; +LABELV $368 +line 1060 +;1057: } +;1058: +;1059: // Try to load the animation.cfg for this model then. +;1060: if ( !BG_ParseAnimationFile( afilename ) ) +ADDRLP4 0 +ARGP4 +ADDRLP4 168 +ADDRGP4 BG_ParseAnimationFile +CALLI4 +ASGNI4 +ADDRLP4 168 +INDIRI4 +CNSTI4 0 +NEI4 $370 +line 1061 +;1061: { // The GLA's animations failed +line 1062 +;1062: if (!BG_ParseAnimationFile("models/players/_humanoid/animation.cfg")) +ADDRGP4 $365 +ARGP4 +ADDRLP4 172 +ADDRGP4 BG_ParseAnimationFile +CALLI4 +ASGNI4 +ADDRLP4 172 +INDIRI4 +CNSTI4 0 +NEI4 $372 +line 1063 +;1063: { +line 1064 +;1064: Com_Printf( "Failed to load animation file %s\n", afilename ); +ADDRGP4 $366 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1065 +;1065: return; +ADDRGP4 $348 +JUMPV +LABELV $372 +line 1067 +;1066: } +;1067: } +LABELV $370 +line 1068 +;1068: } +LABELV $359 +line 1070 +;1069: +;1070: trap_G2API_AddBolt(client->ghoul2, 0, "*r_hand"); +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $374 +ARGP4 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +pop +line 1071 +;1071: trap_G2API_AddBolt(client->ghoul2, 0, "*l_hand"); +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $375 +ARGP4 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +pop +line 1074 +;1072: +;1073: // NOTE - ensure this sequence of bolt and bone accessing are always the same because the client expects them in a certain order +;1074: trap_G2API_SetBoneAnim(client->ghoul2, 0, "model_root", 0, 12, BONE_ANIM_OVERRIDE_LOOP, 1.0f, level.time, -1, -1); +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 164 +CNSTI4 0 +ASGNI4 +ADDRLP4 164 +INDIRI4 +ARGI4 +ADDRGP4 $376 +ARGP4 +ADDRLP4 164 +INDIRI4 +ARGI4 +CNSTI4 12 +ARGI4 +CNSTI4 16 +ARGI4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 level+32 +INDIRI4 +ARGI4 +CNSTF4 3212836864 +ARGF4 +CNSTI4 -1 +ARGI4 +ADDRGP4 trap_G2API_SetBoneAnim +CALLI4 +pop +line 1075 +;1075: trap_G2API_SetBoneAngles(client->ghoul2, 0, "upper_lumbar", tempVec, BONE_ANGLES_POSTMULT, POSITIVE_X, NEGATIVE_Y, NEGATIVE_Z, NULL, 0, level.time); +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 168 +CNSTI4 0 +ASGNI4 +ADDRLP4 168 +INDIRI4 +ARGI4 +ADDRGP4 $378 +ARGP4 +ADDRLP4 64 +ARGP4 +CNSTI4 2 +ARGI4 +CNSTI4 1 +ARGI4 +CNSTI4 6 +ARGI4 +CNSTI4 5 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRLP4 168 +INDIRI4 +ARGI4 +ADDRGP4 level+32 +INDIRI4 +ARGI4 +ADDRGP4 trap_G2API_SetBoneAngles +CALLI4 +pop +line 1076 +;1076: trap_G2API_SetBoneAngles(client->ghoul2, 0, "cranium", tempVec, BONE_ANGLES_POSTMULT, POSITIVE_Z, NEGATIVE_Y, POSITIVE_X, NULL, 0, level.time); +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 172 +CNSTI4 0 +ASGNI4 +ADDRLP4 172 +INDIRI4 +ARGI4 +ADDRGP4 $380 +ARGP4 +ADDRLP4 64 +ARGP4 +ADDRLP4 176 +CNSTI4 2 +ASGNI4 +ADDRLP4 176 +INDIRI4 +ARGI4 +ADDRLP4 176 +INDIRI4 +ARGI4 +CNSTI4 6 +ARGI4 +CNSTI4 1 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRLP4 172 +INDIRI4 +ARGI4 +ADDRGP4 level+32 +INDIRI4 +ARGI4 +ADDRGP4 trap_G2API_SetBoneAngles +CALLI4 +pop +line 1078 +;1077: +;1078: if (!g2SaberInstance) +ADDRGP4 g2SaberInstance +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $382 +line 1079 +;1079: { +line 1080 +;1080: trap_G2API_InitGhoul2Model(&g2SaberInstance, "models/weapons2/saber/saber_w.glm", 0, 0, -20, 0, 0); +ADDRGP4 g2SaberInstance +ARGP4 +ADDRGP4 $108 +ARGP4 +ADDRLP4 180 +CNSTI4 0 +ASGNI4 +ADDRLP4 180 +INDIRI4 +ARGI4 +ADDRLP4 180 +INDIRI4 +ARGI4 +CNSTI4 -20 +ARGI4 +ADDRLP4 180 +INDIRI4 +ARGI4 +ADDRLP4 180 +INDIRI4 +ARGI4 +ADDRGP4 trap_G2API_InitGhoul2Model +CALLI4 +pop +line 1082 +;1081: +;1082: if (g2SaberInstance) +ADDRGP4 g2SaberInstance +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $384 +line 1083 +;1083: { +line 1085 +;1084: // indicate we will be bolted to model 0 (ie the player) on bolt 0 (always the right hand) when we get copied +;1085: trap_G2API_SetBoltInfo(g2SaberInstance, 0, 0); +ADDRGP4 g2SaberInstance +INDIRP4 +ARGP4 +ADDRLP4 184 +CNSTI4 0 +ASGNI4 +ADDRLP4 184 +INDIRI4 +ARGI4 +ADDRLP4 184 +INDIRI4 +ARGI4 +ADDRGP4 trap_G2API_SetBoltInfo +CALLV +pop +line 1087 +;1086: // now set up the gun bolt on it +;1087: trap_G2API_AddBolt(g2SaberInstance, 0, "*flash"); +ADDRGP4 g2SaberInstance +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $386 +ARGP4 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +pop +line 1088 +;1088: } +LABELV $384 +line 1089 +;1089: } +LABELV $382 +line 1091 +;1090: +;1091: if (g2SaberInstance) +ADDRGP4 g2SaberInstance +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $387 +line 1092 +;1092: { +line 1093 +;1093: trap_G2API_CopySpecificGhoul2Model(g2SaberInstance, 0, client->ghoul2, 1); +ADDRGP4 g2SaberInstance +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_G2API_CopySpecificGhoul2Model +CALLV +pop +line 1094 +;1094: } +LABELV $387 +line 1095 +;1095:} +LABELV $348 +endproc SetupGameGhoul2Model 188 44 +export ClientUserinfoChanged +proc ClientUserinfoChanged 6372 52 +line 1111 +;1096: +;1097: +;1098: +;1099: +;1100:/* +;1101:=========== +;1102:ClientUserInfoChanged +;1103: +;1104:Called from ClientConnect when the player first connects and +;1105:directly by the server system when the player updates a userinfo variable. +;1106: +;1107:The game can override any of the settings and call trap_SetUserinfo +;1108:if desired. +;1109:============ +;1110:*/ +;1111:void ClientUserinfoChanged( int clientNum ) { +line 1126 +;1112: gentity_t *ent; +;1113: int teamTask, teamLeader, team, health; +;1114: char *s; +;1115: char model[MAX_QPATH]; +;1116: //char headModel[MAX_QPATH]; +;1117: char forcePowers[MAX_QPATH]; +;1118: char oldname[MAX_STRING_CHARS]; +;1119: gclient_t *client; +;1120: char c1[MAX_INFO_STRING]; +;1121: char c2[MAX_INFO_STRING]; +;1122: char redTeam[MAX_INFO_STRING]; +;1123: char blueTeam[MAX_INFO_STRING]; +;1124: char userinfo[MAX_INFO_STRING]; +;1125: +;1126: ent = g_entities + clientNum; +ADDRLP4 1032 +CNSTI4 828 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1127 +;1127: client = ent->client; +ADDRLP4 0 +ADDRLP4 1032 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 1129 +;1128: +;1129: trap_GetUserinfo( clientNum, userinfo, sizeof( userinfo ) ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 1132 +;1130: +;1131: // check for malformed or illegal info strings +;1132: if ( !Info_Validate(userinfo) ) { +ADDRLP4 4 +ARGP4 +ADDRLP4 6300 +ADDRGP4 Info_Validate +CALLI4 +ASGNI4 +ADDRLP4 6300 +INDIRI4 +CNSTI4 0 +NEI4 $390 +line 1133 +;1133: strcpy (userinfo, "\\name\\badinfo"); +ADDRLP4 4 +ARGP4 +ADDRGP4 $392 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1134 +;1134: } +LABELV $390 +line 1137 +;1135: +;1136: // check for local client +;1137: s = Info_ValueForKey( userinfo, "ip" ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $393 +ARGP4 +ADDRLP4 6304 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 6304 +INDIRP4 +ASGNP4 +line 1138 +;1138: if ( !strcmp( s, "localhost" ) ) { +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 $396 +ARGP4 +ADDRLP4 6308 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 6308 +INDIRI4 +CNSTI4 0 +NEI4 $394 +line 1139 +;1139: client->pers.localClient = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 1400 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1140 +;1140: } +LABELV $394 +line 1143 +;1141: +;1142: // check the item prediction +;1143: s = Info_ValueForKey( userinfo, "cg_predictItems" ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $397 +ARGP4 +ADDRLP4 6312 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 6312 +INDIRP4 +ASGNP4 +line 1144 +;1144: if ( !atoi( s ) ) { +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRLP4 6316 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 6316 +INDIRI4 +CNSTI4 0 +NEI4 $398 +line 1145 +;1145: client->pers.predictItemPickup = qfalse; +ADDRLP4 0 +INDIRP4 +CNSTI4 1408 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1146 +;1146: } else { +ADDRGP4 $399 +JUMPV +LABELV $398 +line 1147 +;1147: client->pers.predictItemPickup = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 1408 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1148 +;1148: } +LABELV $399 +line 1151 +;1149: +;1150: // set name +;1151: Q_strncpyz ( oldname, client->pers.netname, sizeof( oldname ) ); +ADDRLP4 1100 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1152 +;1152: s = Info_ValueForKey (userinfo, "name"); +ADDRLP4 4 +ARGP4 +ADDRGP4 $400 +ARGP4 +ADDRLP4 6320 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 6320 +INDIRP4 +ASGNP4 +line 1153 +;1153: ClientCleanName( s, client->pers.netname, sizeof(client->pers.netname) ); +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +CNSTI4 36 +ARGI4 +ADDRGP4 ClientCleanName +CALLV +pop +line 1155 +;1154: +;1155: if ( client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $401 +line 1156 +;1156: if ( client->sess.spectatorState == SPECTATOR_SCOREBOARD ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $403 +line 1157 +;1157: Q_strncpyz( client->pers.netname, "scoreboard", sizeof(client->pers.netname) ); +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRGP4 $405 +ARGP4 +CNSTI4 36 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1158 +;1158: } +LABELV $403 +line 1159 +;1159: } +LABELV $401 +line 1161 +;1160: +;1161: if ( client->pers.connected == CON_CONNECTED ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $406 +line 1162 +;1162: if ( strcmp( oldname, client->pers.netname ) ) { +ADDRLP4 1100 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 6324 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 6324 +INDIRI4 +CNSTI4 0 +EQI4 $408 +line 1163 +;1163: trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " %s %s\n\"", oldname, G_GetStripEdString("SVINGAME", "PLRENAME"), +ADDRGP4 $148 +ARGP4 +ADDRGP4 $411 +ARGP4 +ADDRLP4 6328 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $410 +ARGP4 +ADDRLP4 1100 +ARGP4 +ADDRLP4 6328 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 6332 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 6332 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1165 +;1164: client->pers.netname) ); +;1165: } +LABELV $408 +line 1166 +;1166: } +LABELV $406 +line 1169 +;1167: +;1168: // set max health +;1169: health = 100; //atoi( Info_ValueForKey( userinfo, "handicap" ) ); +ADDRLP4 2132 +CNSTI4 100 +ASGNI4 +line 1170 +;1170: client->pers.maxHealth = health; +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +ADDRLP4 2132 +INDIRI4 +ASGNI4 +line 1171 +;1171: if ( client->pers.maxHealth < 1 || client->pers.maxHealth > 100 ) { +ADDRLP4 6324 +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 6324 +INDIRI4 +CNSTI4 1 +LTI4 $414 +ADDRLP4 6324 +INDIRI4 +CNSTI4 100 +LEI4 $412 +LABELV $414 +line 1172 +;1172: client->pers.maxHealth = 100; +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +CNSTI4 100 +ASGNI4 +line 1173 +;1173: } +LABELV $412 +line 1174 +;1174: client->ps.stats[STAT_MAX_HEALTH] = client->pers.maxHealth; +ADDRLP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +INDIRI4 +ASGNI4 +line 1177 +;1175: +;1176: // set model +;1177: if( g_gametype.integer >= GT_TEAM ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $415 +line 1178 +;1178: Q_strncpyz( model, Info_ValueForKey (userinfo, "team_model"), sizeof( model ) ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $418 +ARGP4 +ADDRLP4 6332 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1036 +ARGP4 +ADDRLP4 6332 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1180 +;1179: //Q_strncpyz( headModel, Info_ValueForKey (userinfo, "team_headmodel"), sizeof( headModel ) ); +;1180: } else { +ADDRGP4 $416 +JUMPV +LABELV $415 +line 1181 +;1181: Q_strncpyz( model, Info_ValueForKey (userinfo, "model"), sizeof( model ) ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $419 +ARGP4 +ADDRLP4 6332 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1036 +ARGP4 +ADDRLP4 6332 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1183 +;1182: //Q_strncpyz( headModel, Info_ValueForKey (userinfo, "headmodel"), sizeof( headModel ) ); +;1183: } +LABELV $416 +line 1185 +;1184: +;1185: Q_strncpyz( forcePowers, Info_ValueForKey (userinfo, "forcepowers"), sizeof( forcePowers ) ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $420 +ARGP4 +ADDRLP4 6332 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 2136 +ARGP4 +ADDRLP4 6332 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1188 +;1186: +;1187: // bots set their team a few frames later +;1188: if (g_gametype.integer >= GT_TEAM && g_entities[clientNum].r.svFlags & SVF_BOT) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $421 +CNSTI4 828 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $421 +line 1189 +;1189: s = Info_ValueForKey( userinfo, "team" ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $426 +ARGP4 +ADDRLP4 6336 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 6336 +INDIRP4 +ASGNP4 +line 1190 +;1190: if ( !Q_stricmp( s, "red" ) || !Q_stricmp( s, "r" ) ) { +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 $429 +ARGP4 +ADDRLP4 6340 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 6340 +INDIRI4 +CNSTI4 0 +EQI4 $431 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 $430 +ARGP4 +ADDRLP4 6344 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 6344 +INDIRI4 +CNSTI4 0 +NEI4 $427 +LABELV $431 +line 1191 +;1191: team = TEAM_RED; +ADDRLP4 4248 +CNSTI4 1 +ASGNI4 +line 1192 +;1192: } else if ( !Q_stricmp( s, "blue" ) || !Q_stricmp( s, "b" ) ) { +ADDRGP4 $422 +JUMPV +LABELV $427 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 $434 +ARGP4 +ADDRLP4 6348 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 6348 +INDIRI4 +CNSTI4 0 +EQI4 $436 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 $435 +ARGP4 +ADDRLP4 6352 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 6352 +INDIRI4 +CNSTI4 0 +NEI4 $432 +LABELV $436 +line 1193 +;1193: team = TEAM_BLUE; +ADDRLP4 4248 +CNSTI4 2 +ASGNI4 +line 1194 +;1194: } else { +ADDRGP4 $422 +JUMPV +LABELV $432 +line 1196 +;1195: // pick the team with the least number of players +;1196: team = PickTeam( clientNum ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 6356 +ADDRGP4 PickTeam +CALLI4 +ASGNI4 +ADDRLP4 4248 +ADDRLP4 6356 +INDIRI4 +ASGNI4 +line 1197 +;1197: } +line 1198 +;1198: } +ADDRGP4 $422 +JUMPV +LABELV $421 +line 1199 +;1199: else { +line 1200 +;1200: team = client->sess.sessionTeam; +ADDRLP4 4248 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 1201 +;1201: } +LABELV $422 +line 1224 +;1202: +;1203:/* NOTE: all client side now +;1204: +;1205: // team +;1206: switch( team ) { +;1207: case TEAM_RED: +;1208: ForceClientSkin(client, model, "red"); +;1209:// ForceClientSkin(client, headModel, "red"); +;1210: break; +;1211: case TEAM_BLUE: +;1212: ForceClientSkin(client, model, "blue"); +;1213:// ForceClientSkin(client, headModel, "blue"); +;1214: break; +;1215: } +;1216: // don't ever use a default skin in teamplay, it would just waste memory +;1217: // however bots will always join a team but they spawn in as spectator +;1218: if ( g_gametype.integer >= GT_TEAM && team == TEAM_SPECTATOR) { +;1219: ForceClientSkin(client, model, "red"); +;1220:// ForceClientSkin(client, headModel, "red"); +;1221: } +;1222:*/ +;1223: +;1224: if (g_gametype.integer >= GT_TEAM) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $437 +line 1225 +;1225: client->pers.teamInfo = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 1516 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1226 +;1226: } else { +ADDRGP4 $438 +JUMPV +LABELV $437 +line 1227 +;1227: s = Info_ValueForKey( userinfo, "teamoverlay" ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $440 +ARGP4 +ADDRLP4 6336 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 6336 +INDIRP4 +ASGNP4 +line 1228 +;1228: if ( ! *s || atoi( s ) != 0 ) { +ADDRLP4 1028 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $443 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRLP4 6344 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 6344 +INDIRI4 +CNSTI4 0 +EQI4 $441 +LABELV $443 +line 1229 +;1229: client->pers.teamInfo = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 1516 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1230 +;1230: } else { +ADDRGP4 $442 +JUMPV +LABELV $441 +line 1231 +;1231: client->pers.teamInfo = qfalse; +ADDRLP4 0 +INDIRP4 +CNSTI4 1516 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1232 +;1232: } +LABELV $442 +line 1233 +;1233: } +LABELV $438 +line 1245 +;1234: /* +;1235: s = Info_ValueForKey( userinfo, "cg_pmove_fixed" ); +;1236: if ( !*s || atoi( s ) == 0 ) { +;1237: client->pers.pmoveFixed = qfalse; +;1238: } +;1239: else { +;1240: client->pers.pmoveFixed = qtrue; +;1241: } +;1242: */ +;1243: +;1244: // team task (0 = none, 1 = offence, 2 = defence) +;1245: teamTask = atoi(Info_ValueForKey(userinfo, "teamtask")); +ADDRLP4 4 +ARGP4 +ADDRGP4 $444 +ARGP4 +ADDRLP4 6336 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 6336 +INDIRP4 +ARGP4 +ADDRLP4 6340 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 2124 +ADDRLP4 6340 +INDIRI4 +ASGNI4 +line 1247 +;1246: // team Leader (1 = leader, 0 is normal player) +;1247: teamLeader = client->sess.teamLeader; +ADDRLP4 2128 +ADDRLP4 0 +INDIRP4 +CNSTI4 1560 +ADDP4 +INDIRI4 +ASGNI4 +line 1250 +;1248: +;1249: // colors +;1250: strcpy(c1, Info_ValueForKey( userinfo, "color1" )); +ADDRLP4 4 +ARGP4 +ADDRGP4 $445 +ARGP4 +ADDRLP4 6344 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 2200 +ARGP4 +ADDRLP4 6344 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1251 +;1251: strcpy(c2, Info_ValueForKey( userinfo, "color2" )); +ADDRLP4 4 +ARGP4 +ADDRGP4 $446 +ARGP4 +ADDRLP4 6348 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 3224 +ARGP4 +ADDRLP4 6348 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1253 +;1252: +;1253: strcpy(redTeam, Info_ValueForKey( userinfo, "g_redteam" )); +ADDRLP4 4 +ARGP4 +ADDRGP4 $447 +ARGP4 +ADDRLP4 6352 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4252 +ARGP4 +ADDRLP4 6352 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1254 +;1254: strcpy(blueTeam, Info_ValueForKey( userinfo, "g_blueteam" )); +ADDRLP4 4 +ARGP4 +ADDRGP4 $448 +ARGP4 +ADDRLP4 6356 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 5276 +ARGP4 +ADDRLP4 6356 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1258 +;1255: +;1256: // send over a subset of the userinfo keys so other clients can +;1257: // print scoreboards, display models, and play custom sounds +;1258: if ( ent->r.svFlags & SVF_BOT ) { +ADDRLP4 1032 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $449 +line 1259 +;1259: s = va("n\\%s\\t\\%i\\model\\%s\\c1\\%s\\c2\\%s\\hc\\%i\\w\\%i\\l\\%i\\skill\\%s\\tt\\%d\\tl\\%d", +ADDRLP4 4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 6360 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $451 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 4248 +INDIRI4 +ARGI4 +ADDRLP4 1036 +ARGP4 +ADDRLP4 2200 +ARGP4 +ADDRLP4 3224 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1536 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1540 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 6360 +INDIRP4 +ARGP4 +ADDRLP4 2124 +INDIRI4 +ARGI4 +ADDRLP4 2128 +INDIRI4 +ARGI4 +ADDRLP4 6368 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 6368 +INDIRP4 +ASGNP4 +line 1263 +;1260: client->pers.netname, team, model, c1, c2, +;1261: client->pers.maxHealth, client->sess.wins, client->sess.losses, +;1262: Info_ValueForKey( userinfo, "skill" ), teamTask, teamLeader ); +;1263: } else { +ADDRGP4 $450 +JUMPV +LABELV $449 +line 1264 +;1264: s = va("n\\%s\\t\\%i\\model\\%s\\g_redteam\\%s\\g_blueteam\\%s\\c1\\%s\\c2\\%s\\hc\\%i\\w\\%i\\l\\%i\\tt\\%d\\tl\\%d", +ADDRGP4 $453 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1036 +ARGP4 +ADDRLP4 4252 +ARGP4 +ADDRLP4 5276 +ARGP4 +ADDRLP4 2200 +ARGP4 +ADDRLP4 3224 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1536 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1540 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 2124 +INDIRI4 +ARGI4 +ADDRLP4 2128 +INDIRI4 +ARGI4 +ADDRLP4 6364 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 6364 +INDIRP4 +ASGNP4 +line 1267 +;1265: client->pers.netname, client->sess.sessionTeam, model, redTeam, blueTeam, c1, c2, +;1266: client->pers.maxHealth, client->sess.wins, client->sess.losses, teamTask, teamLeader); +;1267: } +LABELV $450 +line 1269 +;1268: +;1269: trap_SetConfigstring( CS_PLAYERS+clientNum, s ); +ADDRFP4 0 +INDIRI4 +CNSTI4 544 +ADDI4 +ARGI4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 trap_SetConfigstring +CALLV +pop +line 1271 +;1270: +;1271: G_LogPrintf( "ClientUserinfoChanged: %i %s\n", clientNum, s ); +ADDRGP4 $454 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1272 +;1272:} +LABELV $389 +endproc ClientUserinfoChanged 6372 52 +export ClientConnect +proc ClientConnect 1068 12 +line 1295 +;1273: +;1274: +;1275:/* +;1276:=========== +;1277:ClientConnect +;1278: +;1279:Called when a player begins connecting to the server. +;1280:Called again for every map change or tournement restart. +;1281: +;1282:The session information will be valid after exit. +;1283: +;1284:Return NULL if the client should be allowed, otherwise return +;1285:a string with the reason for denial. +;1286: +;1287:Otherwise, the client will be sent the current gamestate +;1288:and will eventually get to ClientBegin. +;1289: +;1290:firstTime will be qtrue the very first time a client connects +;1291:to the server machine, but qfalse on map changes and tournement +;1292:restarts. +;1293:============ +;1294:*/ +;1295:char *ClientConnect( int clientNum, qboolean firstTime, qboolean isBot ) { +line 1303 +;1296: char *value; +;1297:// char *areabits; +;1298: gclient_t *client; +;1299: char userinfo[MAX_INFO_STRING]; +;1300: gentity_t *ent; +;1301: gentity_t *te; +;1302: +;1303: ent = &g_entities[ clientNum ]; +ADDRLP4 4 +CNSTI4 828 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1305 +;1304: +;1305: trap_GetUserinfo( clientNum, userinfo, sizeof( userinfo ) ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 1308 +;1306: +;1307: // check to see if they are on the banned IP list +;1308: value = Info_ValueForKey (userinfo, "ip"); +ADDRLP4 8 +ARGP4 +ADDRGP4 $393 +ARGP4 +ADDRLP4 1040 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1032 +ADDRLP4 1040 +INDIRP4 +ASGNP4 +line 1309 +;1309: if ( G_FilterPacket( value ) ) { +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 1044 +ADDRGP4 G_FilterPacket +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +EQI4 $456 +line 1310 +;1310: return "Banned."; +ADDRGP4 $458 +RETP4 +ADDRGP4 $455 +JUMPV +LABELV $456 +line 1313 +;1311: } +;1312: +;1313: if ( !( ent->r.svFlags & SVF_BOT ) && !isBot && g_needpass.integer ) { +ADDRLP4 1048 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +ADDRLP4 1048 +INDIRI4 +NEI4 $459 +ADDRFP4 8 +INDIRI4 +ADDRLP4 1048 +INDIRI4 +NEI4 $459 +ADDRGP4 g_needpass+12 +INDIRI4 +ADDRLP4 1048 +INDIRI4 +EQI4 $459 +line 1315 +;1314: // check for a password +;1315: value = Info_ValueForKey (userinfo, "password"); +ADDRLP4 8 +ARGP4 +ADDRGP4 $462 +ARGP4 +ADDRLP4 1052 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1032 +ADDRLP4 1052 +INDIRP4 +ASGNP4 +line 1316 +;1316: if ( g_password.string[0] && Q_stricmp( g_password.string, "none" ) && +ADDRGP4 g_password+16 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $463 +ADDRGP4 g_password+16 +ARGP4 +ADDRGP4 $467 +ARGP4 +ADDRLP4 1056 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +EQI4 $463 +ADDRGP4 g_password+16 +ARGP4 +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 1060 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +CNSTI4 0 +EQI4 $463 +line 1317 +;1317: strcmp( g_password.string, value) != 0) { +line 1318 +;1318: return "Invalid password"; +ADDRGP4 $469 +RETP4 +ADDRGP4 $455 +JUMPV +LABELV $463 +line 1320 +;1319: } +;1320: } +LABELV $459 +line 1323 +;1321: +;1322: // they can connect +;1323: ent->client = level.clients + clientNum; +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +CNSTI4 1756 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 1324 +;1324: client = ent->client; +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 1328 +;1325: +;1326:// areabits = client->areabits; +;1327: +;1328: memset( client, 0, sizeof(*client) ); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1756 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1330 +;1329: +;1330: client->pers.connected = CON_CONNECTING; +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1333 +;1331: +;1332: // read or initialize the session data +;1333: if ( firstTime || level.newSession ) { +ADDRLP4 1052 +CNSTI4 0 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +NEI4 $473 +ADDRGP4 level+64 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +EQI4 $470 +LABELV $473 +line 1334 +;1334: G_InitSessionData( client, userinfo, isBot ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 G_InitSessionData +CALLV +pop +line 1335 +;1335: } +LABELV $470 +line 1336 +;1336: G_ReadSessionData( client ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_ReadSessionData +CALLV +pop +line 1338 +;1337: +;1338: if( isBot ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $474 +line 1339 +;1339: ent->r.svFlags |= SVF_BOT; +ADDRLP4 1056 +ADDRLP4 4 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 1056 +INDIRP4 +ADDRLP4 1056 +INDIRP4 +INDIRI4 +CNSTI4 8 +BORI4 +ASGNI4 +line 1340 +;1340: ent->inuse = qtrue; +ADDRLP4 4 +INDIRP4 +CNSTI4 412 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1341 +;1341: if( !G_BotConnect( clientNum, !firstTime ) ) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $479 +ADDRLP4 1060 +CNSTI4 1 +ASGNI4 +ADDRGP4 $480 +JUMPV +LABELV $479 +ADDRLP4 1060 +CNSTI4 0 +ASGNI4 +LABELV $480 +ADDRLP4 1060 +INDIRI4 +ARGI4 +ADDRLP4 1064 +ADDRGP4 G_BotConnect +CALLI4 +ASGNI4 +ADDRLP4 1064 +INDIRI4 +CNSTI4 0 +NEI4 $476 +line 1342 +;1342: return "BotConnectfailed"; +ADDRGP4 $481 +RETP4 +ADDRGP4 $455 +JUMPV +LABELV $476 +line 1344 +;1343: } +;1344: } +LABELV $474 +line 1347 +;1345: +;1346: // get and distribute relevent paramters +;1347: G_LogPrintf( "ClientConnect: %i\n", clientNum ); +ADDRGP4 $482 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1348 +;1348: ClientUserinfoChanged( clientNum ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 ClientUserinfoChanged +CALLV +pop +line 1351 +;1349: +;1350: // don't do the "xxx connected" messages if they were caried over from previous level +;1351: if ( firstTime ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $483 +line 1352 +;1352: trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " %s\n\"", client->pers.netname, G_GetStripEdString("SVINGAME", "PLCONNECT")) ); +ADDRGP4 $148 +ARGP4 +ADDRGP4 $486 +ARGP4 +ADDRLP4 1056 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $485 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 1056 +INDIRP4 +ARGP4 +ADDRLP4 1060 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 1060 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1353 +;1353: } +LABELV $483 +line 1355 +;1354: +;1355: if ( g_gametype.integer >= GT_TEAM && +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $487 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $487 +line 1356 +;1356: client->sess.sessionTeam != TEAM_SPECTATOR ) { +line 1357 +;1357: BroadcastTeamChange( client, -1 ); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 -1 +ARGI4 +ADDRGP4 BroadcastTeamChange +CALLV +pop +line 1358 +;1358: } +LABELV $487 +line 1361 +;1359: +;1360: // count current clients and rank for scoreboard +;1361: CalculateRanks(); +ADDRGP4 CalculateRanks +CALLV +pop +line 1363 +;1362: +;1363: te = G_TempEntity( vec3_origin, EV_CLIENTJOIN ); +ADDRGP4 vec3_origin +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 1056 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 1036 +ADDRLP4 1056 +INDIRP4 +ASGNP4 +line 1364 +;1364: te->r.svFlags |= SVF_BROADCAST; +ADDRLP4 1060 +ADDRLP4 1036 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 1060 +INDIRP4 +ADDRLP4 1060 +INDIRP4 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 1365 +;1365: te->s.eventParm = clientNum; +ADDRLP4 1036 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 1372 +;1366: +;1367: // for statistics +;1368:// client->areabits = areabits; +;1369:// if ( !client->areabits ) +;1370:// client->areabits = G_Alloc( (trap_AAS_PointReachabilityAreaIndex( NULL ) + 7) / 8 ); +;1371: +;1372: return NULL; +CNSTP4 0 +RETP4 +LABELV $455 +endproc ClientConnect 1068 12 +export ClientBegin +proc ClientBegin 1108 12 +line 1386 +;1373:} +;1374: +;1375:void G_WriteClientSessionData( gclient_t *client ); +;1376: +;1377:/* +;1378:=========== +;1379:ClientBegin +;1380: +;1381:called when a client has finished connecting, and is ready +;1382:to be placed into the level. This will happen every level load, +;1383:and on transition between teams, but doesn't happen on respawns +;1384:============ +;1385:*/ +;1386:void ClientBegin( int clientNum, qboolean allowTeamReset ) { +line 1393 +;1387: gentity_t *ent; +;1388: gclient_t *client; +;1389: gentity_t *tent; +;1390: int flags, i; +;1391: char userinfo[MAX_INFO_VALUE], *modelname; +;1392: +;1393: ent = g_entities + clientNum; +ADDRLP4 4 +CNSTI4 828 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1395 +;1394: +;1395: if ((ent->r.svFlags & SVF_BOT) && g_gametype.integer >= GT_TEAM) +ADDRLP4 4 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $491 +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $491 +line 1396 +;1396: { +line 1397 +;1397: if (allowTeamReset) +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $494 +line 1398 +;1398: { +line 1399 +;1399: const char *team = "Red"; +ADDRLP4 1048 +ADDRGP4 $496 +ASGNP4 +line 1403 +;1400: int preSess; +;1401: +;1402: //SetTeam(ent, ""); +;1403: ent->client->sess.sessionTeam = PickTeam(-1); +CNSTI4 -1 +ARGI4 +ADDRLP4 1056 +ADDRGP4 PickTeam +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +ADDRLP4 1056 +INDIRI4 +ASGNI4 +line 1404 +;1404: trap_GetUserinfo(clientNum, userinfo, MAX_INFO_STRING); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 1406 +;1405: +;1406: if (ent->client->sess.sessionTeam == TEAM_SPECTATOR) +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $497 +line 1407 +;1407: { +line 1408 +;1408: ent->client->sess.sessionTeam = TEAM_RED; +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1409 +;1409: } +LABELV $497 +line 1411 +;1410: +;1411: if (ent->client->sess.sessionTeam == TEAM_RED) +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $499 +line 1412 +;1412: { +line 1413 +;1413: team = "Red"; +ADDRLP4 1048 +ADDRGP4 $496 +ASGNP4 +line 1414 +;1414: } +ADDRGP4 $500 +JUMPV +LABELV $499 +line 1416 +;1415: else +;1416: { +line 1417 +;1417: team = "Blue"; +ADDRLP4 1048 +ADDRGP4 $501 +ASGNP4 +line 1418 +;1418: } +LABELV $500 +line 1420 +;1419: +;1420: Info_SetValueForKey( userinfo, "team", team ); +ADDRLP4 12 +ARGP4 +ADDRGP4 $426 +ARGP4 +ADDRLP4 1048 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 1422 +;1421: +;1422: trap_SetUserinfo( clientNum, userinfo ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 12 +ARGP4 +ADDRGP4 trap_SetUserinfo +CALLV +pop +line 1424 +;1423: +;1424: ent->client->ps.persistant[ PERS_TEAM ] = ent->client->sess.sessionTeam; +ADDRLP4 1060 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1060 +INDIRP4 +CNSTI4 292 +ADDP4 +ADDRLP4 1060 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 1426 +;1425: +;1426: preSess = ent->client->sess.sessionTeam; +ADDRLP4 1052 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 1427 +;1427: G_ReadSessionData( ent->client ); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 G_ReadSessionData +CALLV +pop +line 1428 +;1428: ent->client->sess.sessionTeam = preSess; +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +ADDRLP4 1052 +INDIRI4 +ASGNI4 +line 1429 +;1429: G_WriteClientSessionData(ent->client); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 G_WriteClientSessionData +CALLV +pop +line 1430 +;1430: ClientUserinfoChanged( clientNum ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 ClientUserinfoChanged +CALLV +pop +line 1431 +;1431: ClientBegin(clientNum, qfalse); +ADDRFP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 ClientBegin +CALLV +pop +line 1432 +;1432: return; +ADDRGP4 $490 +JUMPV +LABELV $494 +line 1434 +;1433: } +;1434: } +LABELV $491 +line 1436 +;1435: +;1436: client = level.clients + clientNum; +ADDRLP4 8 +CNSTI4 1756 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 1438 +;1437: +;1438: if ( ent->r.linked ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 296 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $502 +line 1439 +;1439: trap_UnlinkEntity( ent ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_UnlinkEntity +CALLV +pop +line 1440 +;1440: } +LABELV $502 +line 1441 +;1441: G_InitGentity( ent ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 G_InitGentity +CALLV +pop +line 1442 +;1442: ent->touch = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 648 +ADDP4 +CNSTP4 0 +ASGNP4 +line 1443 +;1443: ent->pain = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 656 +ADDP4 +CNSTP4 0 +ASGNP4 +line 1444 +;1444: ent->client = client; +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1446 +;1445: +;1446: client->pers.connected = CON_CONNECTED; +ADDRLP4 8 +INDIRP4 +CNSTI4 1368 +ADDP4 +CNSTI4 2 +ASGNI4 +line 1447 +;1447: client->pers.enterTime = level.time; +ADDRLP4 8 +INDIRP4 +CNSTI4 1456 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 1448 +;1448: client->pers.teamState.state = TEAM_BEGIN; +ADDRLP4 8 +INDIRP4 +CNSTI4 1460 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1455 +;1449: +;1450: // save eflags around this, because changing teams will +;1451: // cause this to happen with a valid entity, and we +;1452: // want to make sure the teleport bit is set right +;1453: // so the viewpoint doesn't interpolate through the +;1454: // world to the new position +;1455: flags = client->ps.eFlags; +ADDRLP4 1036 +ADDRLP4 8 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +ASGNI4 +line 1457 +;1456: +;1457: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $506 +JUMPV +LABELV $505 +line 1460 +;1458: +;1459: while (i < NUM_FORCE_POWERS) +;1460: { +line 1461 +;1461: if (ent->client->ps.fd.forcePowersActive & (1 << i)) +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $508 +line 1462 +;1462: { +line 1463 +;1463: WP_ForcePowerStop(ent, i); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 WP_ForcePowerStop +CALLV +pop +line 1464 +;1464: } +LABELV $508 +line 1465 +;1465: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1466 +;1466: } +LABELV $506 +line 1459 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $505 +line 1468 +;1467: +;1468: i = TRACK_CHANNEL_1; +ADDRLP4 0 +CNSTI4 51 +ASGNI4 +ADDRGP4 $511 +JUMPV +LABELV $510 +line 1471 +;1469: +;1470: while (i < NUM_TRACK_CHANNELS) +;1471: { +line 1472 +;1472: if (ent->client->ps.fd.killSoundEntIndex[i-50] && ent->client->ps.fd.killSoundEntIndex[i-50] < MAX_GENTITIES && ent->client->ps.fd.killSoundEntIndex[i-50] > 0) +ADDRLP4 1048 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 200 +SUBI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1188 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1052 +CNSTI4 0 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +EQI4 $513 +ADDRLP4 1048 +INDIRI4 +CNSTI4 1024 +GEI4 $513 +ADDRLP4 1048 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +LEI4 $513 +line 1473 +;1473: { +line 1474 +;1474: G_MuteSound(ent->client->ps.fd.killSoundEntIndex[i-50], CHAN_VOICE); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 200 +SUBI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1188 +ADDP4 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 3 +ARGI4 +ADDRGP4 G_MuteSound +CALLV +pop +line 1475 +;1475: } +LABELV $513 +line 1476 +;1476: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1477 +;1477: } +LABELV $511 +line 1470 +ADDRLP4 0 +INDIRI4 +CNSTI4 56 +LTI4 $510 +line 1478 +;1478: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1480 +;1479: +;1480: memset( &client->ps, 0, sizeof( client->ps ) ); +ADDRLP4 8 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1368 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1481 +;1481: client->ps.eFlags = flags; +ADDRLP4 8 +INDIRP4 +CNSTI4 108 +ADDP4 +ADDRLP4 1036 +INDIRI4 +ASGNI4 +line 1483 +;1482: +;1483: client->ps.hasDetPackPlanted = qfalse; +ADDRLP4 8 +INDIRP4 +CNSTI4 628 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1486 +;1484: +;1485: //first-time force power initialization +;1486: WP_InitForcePowers( ent ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 WP_InitForcePowers +CALLV +pop +line 1489 +;1487: +;1488: //init saber ent +;1489: WP_SaberInitBladeData( ent ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 WP_SaberInitBladeData +CALLV +pop +line 1492 +;1490: +;1491: // First time model setup for that player. +;1492: trap_GetUserinfo( clientNum, userinfo, sizeof(userinfo) ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 1493 +;1493: modelname = Info_ValueForKey (userinfo, "model"); +ADDRLP4 12 +ARGP4 +ADDRGP4 $419 +ARGP4 +ADDRLP4 1048 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1040 +ADDRLP4 1048 +INDIRP4 +ASGNP4 +line 1494 +;1494: SetupGameGhoul2Model(client, modelname); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 1040 +INDIRP4 +ARGP4 +ADDRGP4 SetupGameGhoul2Model +CALLV +pop +line 1496 +;1495: +;1496: if (ent->client->ghoul2) +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $515 +line 1497 +;1497: { +line 1498 +;1498: ent->bolt_Head = trap_G2API_AddBolt(ent->client->ghoul2, 0, "cranium"); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $380 +ARGP4 +ADDRLP4 1056 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 784 +ADDP4 +ADDRLP4 1056 +INDIRI4 +ASGNI4 +line 1499 +;1499: ent->bolt_Waist = trap_G2API_AddBolt(ent->client->ghoul2, 0, "thoracic"); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $517 +ARGP4 +ADDRLP4 1064 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 804 +ADDP4 +ADDRLP4 1064 +INDIRI4 +ASGNI4 +line 1500 +;1500: ent->bolt_LArm = trap_G2API_AddBolt(ent->client->ghoul2, 0, "lradius"); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $518 +ARGP4 +ADDRLP4 1072 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 788 +ADDP4 +ADDRLP4 1072 +INDIRI4 +ASGNI4 +line 1501 +;1501: ent->bolt_RArm = trap_G2API_AddBolt(ent->client->ghoul2, 0, "rradius"); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $519 +ARGP4 +ADDRLP4 1080 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 792 +ADDP4 +ADDRLP4 1080 +INDIRI4 +ASGNI4 +line 1502 +;1502: ent->bolt_LLeg = trap_G2API_AddBolt(ent->client->ghoul2, 0, "ltibia"); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $520 +ARGP4 +ADDRLP4 1088 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 796 +ADDP4 +ADDRLP4 1088 +INDIRI4 +ASGNI4 +line 1503 +;1503: ent->bolt_RLeg = trap_G2API_AddBolt(ent->client->ghoul2, 0, "rtibia"); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $521 +ARGP4 +ADDRLP4 1096 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 800 +ADDP4 +ADDRLP4 1096 +INDIRI4 +ASGNI4 +line 1504 +;1504: ent->bolt_Motion = trap_G2API_AddBolt(ent->client->ghoul2, 0, "Motion"); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 $522 +ARGP4 +ADDRLP4 1104 +ADDRGP4 trap_G2API_AddBolt +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 808 +ADDP4 +ADDRLP4 1104 +INDIRI4 +ASGNI4 +line 1505 +;1505: } +LABELV $515 +line 1508 +;1506: +;1507: // locate ent at a spawn point +;1508: ClientSpawn( ent ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 ClientSpawn +CALLV +pop +line 1510 +;1509: +;1510: if ( client->sess.sessionTeam != TEAM_SPECTATOR ) { +ADDRLP4 8 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $523 +line 1512 +;1511: // send event +;1512: tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_IN ); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 1052 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 1044 +ADDRLP4 1052 +INDIRP4 +ASGNP4 +line 1513 +;1513: tent->s.clientNum = ent->s.clientNum; +ADDRLP4 1056 +CNSTI4 220 +ASGNI4 +ADDRLP4 1044 +INDIRP4 +ADDRLP4 1056 +INDIRI4 +ADDP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 1056 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 1515 +;1514: +;1515: if ( g_gametype.integer != GT_TOURNAMENT ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +EQI4 $525 +line 1516 +;1516: trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " %s\n\"", client->pers.netname, G_GetStripEdString("SVINGAME", "PLENTER")) ); +ADDRGP4 $148 +ARGP4 +ADDRGP4 $528 +ARGP4 +ADDRLP4 1060 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $485 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 1060 +INDIRP4 +ARGP4 +ADDRLP4 1064 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 1064 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1517 +;1517: } +LABELV $525 +line 1518 +;1518: } +LABELV $523 +line 1519 +;1519: G_LogPrintf( "ClientBegin: %i\n", clientNum ); +ADDRGP4 $529 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1522 +;1520: +;1521: // count current clients and rank for scoreboard +;1522: CalculateRanks(); +ADDRGP4 CalculateRanks +CALLV +pop +line 1524 +;1523: +;1524: G_ClearClientLog(clientNum); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_ClearClientLog +CALLV +pop +line 1525 +;1525:} +LABELV $490 +endproc ClientBegin 1108 12 +export ClientSpawn +proc ClientSpawn 860 16 +line 1536 +;1526: +;1527:/* +;1528:=========== +;1529:ClientSpawn +;1530: +;1531:Called every time a client is placed fresh in the world: +;1532:after the first ClientBegin, and after each respawn +;1533:Initializes all non-persistant parts of playerState +;1534:============ +;1535:*/ +;1536:void ClientSpawn(gentity_t *ent) { +line 1553 +;1537: int index; +;1538: vec3_t spawn_origin, spawn_angles; +;1539: gclient_t *client; +;1540: int i; +;1541: clientPersistant_t saved; +;1542: clientSession_t savedSess; +;1543: int persistant[MAX_PERSISTANT]; +;1544: gentity_t *spawnPoint; +;1545: int flags; +;1546: int savedPing; +;1547:// char *savedAreaBits; +;1548: int accuracy_hits, accuracy_shots; +;1549: int eventSequence; +;1550:// char userinfo[MAX_INFO_STRING]; +;1551: forcedata_t savedForce; +;1552: void *ghoul2save; +;1553: int saveSaberNum = ENTITYNUM_NONE; +ADDRLP4 112 +CNSTI4 1023 +ASGNI4 +line 1554 +;1554: int wDisable = 0; +ADDRLP4 88 +CNSTI4 0 +ASGNI4 +line 1556 +;1555: +;1556: index = ent - g_entities; +ADDRLP4 104 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ASGNI4 +line 1557 +;1557: client = ent->client; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 1559 +;1558: +;1559: if (client->ps.fd.forceDoInit) +ADDRLP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $531 +line 1560 +;1560: { //force a reread of force powers +line 1561 +;1561: WP_InitForcePowers( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 WP_InitForcePowers +CALLV +pop +line 1562 +;1562: client->ps.fd.forceDoInit = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1563 +;1563: } +LABELV $531 +line 1567 +;1564: // find a spawn point +;1565: // do it before setting health back up, so farthest +;1566: // ranging doesn't count this client +;1567: if ( client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $533 +line 1568 +;1568: spawnPoint = SelectSpectatorSpawnPoint ( +ADDRLP4 76 +ARGP4 +ADDRLP4 92 +ARGP4 +ADDRLP4 804 +ADDRGP4 SelectSpectatorSpawnPoint +CALLP4 +ASGNP4 +ADDRLP4 72 +ADDRLP4 804 +INDIRP4 +ASGNP4 +line 1570 +;1569: spawn_origin, spawn_angles); +;1570: } else if (g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTY) { +ADDRGP4 $534 +JUMPV +LABELV $533 +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 7 +EQI4 $539 +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 8 +NEI4 $535 +LABELV $539 +line 1572 +;1571: // all base oriented team games use the CTF spawn points +;1572: spawnPoint = SelectCTFSpawnPoint ( +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1460 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +ARGP4 +ADDRLP4 92 +ARGP4 +ADDRLP4 808 +ADDRGP4 SelectCTFSpawnPoint +CALLP4 +ASGNP4 +ADDRLP4 72 +ADDRLP4 808 +INDIRP4 +ASGNP4 +line 1576 +;1573: client->sess.sessionTeam, +;1574: client->pers.teamState.state, +;1575: spawn_origin, spawn_angles); +;1576: } +ADDRGP4 $536 +JUMPV +LABELV $535 +line 1577 +;1577: else if (g_gametype.integer == GT_SAGA) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 6 +NEI4 $540 +line 1578 +;1578: { +line 1579 +;1579: spawnPoint = SelectSagaSpawnPoint ( +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1460 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +ARGP4 +ADDRLP4 92 +ARGP4 +ADDRLP4 808 +ADDRGP4 SelectSagaSpawnPoint +CALLP4 +ASGNP4 +ADDRLP4 72 +ADDRLP4 808 +INDIRP4 +ASGNP4 +line 1583 +;1580: client->sess.sessionTeam, +;1581: client->pers.teamState.state, +;1582: spawn_origin, spawn_angles); +;1583: } +ADDRGP4 $541 +JUMPV +LABELV $540 +line 1584 +;1584: else { +LABELV $543 +line 1585 +;1585: do { +line 1587 +;1586: // the first spawn should be at a good looking spot +;1587: if ( !client->pers.initialSpawn && client->pers.localClient ) { +ADDRLP4 808 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1404 +ADDP4 +INDIRI4 +ADDRLP4 808 +INDIRI4 +NEI4 $546 +ADDRLP4 0 +INDIRP4 +CNSTI4 1400 +ADDP4 +INDIRI4 +ADDRLP4 808 +INDIRI4 +EQI4 $546 +line 1588 +;1588: client->pers.initialSpawn = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 1404 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1589 +;1589: spawnPoint = SelectInitialSpawnPoint( spawn_origin, spawn_angles ); +ADDRLP4 76 +ARGP4 +ADDRLP4 92 +ARGP4 +ADDRLP4 812 +ADDRGP4 SelectInitialSpawnPoint +CALLP4 +ASGNP4 +ADDRLP4 72 +ADDRLP4 812 +INDIRP4 +ASGNP4 +line 1590 +;1590: } else { +ADDRGP4 $547 +JUMPV +LABELV $546 +line 1592 +;1591: // don't spawn near existing origin if possible +;1592: spawnPoint = SelectSpawnPoint ( +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 92 +ARGP4 +ADDRLP4 812 +ADDRGP4 SelectSpawnPoint +CALLP4 +ASGNP4 +ADDRLP4 72 +ADDRLP4 812 +INDIRP4 +ASGNP4 +line 1595 +;1593: client->ps.origin, +;1594: spawn_origin, spawn_angles); +;1595: } +LABELV $547 +line 1599 +;1596: +;1597: // Tim needs to prevent bots from spawning at the initial point +;1598: // on q3dm0... +;1599: if ( ( spawnPoint->flags & FL_NO_BOTS ) && ( ent->r.svFlags & SVF_BOT ) ) { +ADDRLP4 812 +CNSTI4 0 +ASGNI4 +ADDRLP4 72 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +CNSTI4 8192 +BANDI4 +ADDRLP4 812 +INDIRI4 +EQI4 $548 +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +ADDRLP4 812 +INDIRI4 +EQI4 $548 +line 1600 +;1600: continue; // try again +ADDRGP4 $544 +JUMPV +LABELV $548 +line 1603 +;1601: } +;1602: // just to be symetric, we have a nohumans option... +;1603: if ( ( spawnPoint->flags & FL_NO_HUMANS ) && !( ent->r.svFlags & SVF_BOT ) ) { +ADDRLP4 816 +CNSTI4 0 +ASGNI4 +ADDRLP4 72 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +CNSTI4 16384 +BANDI4 +ADDRLP4 816 +INDIRI4 +EQI4 $545 +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +ADDRLP4 816 +INDIRI4 +NEI4 $545 +line 1604 +;1604: continue; // try again +line 1607 +;1605: } +;1606: +;1607: break; +LABELV $544 +line 1609 +;1608: +;1609: } while ( 1 ); +ADDRGP4 $543 +JUMPV +LABELV $545 +line 1610 +;1610: } +LABELV $541 +LABELV $536 +LABELV $534 +line 1611 +;1611: client->pers.teamState.state = TEAM_ACTIVE; +ADDRLP4 0 +INDIRP4 +CNSTI4 1460 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1615 +;1612: +;1613: // toggle the teleport bit so the client knows to not lerp +;1614: // and never clear the voted flag +;1615: flags = ent->client->ps.eFlags & (EF_TELEPORT_BIT | EF_VOTED | EF_TEAMVOTED); +ADDRLP4 108 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 540676 +BANDI4 +ASGNI4 +line 1616 +;1616: flags ^= EF_TELEPORT_BIT; +ADDRLP4 108 +ADDRLP4 108 +INDIRI4 +CNSTI4 4 +BXORI4 +ASGNI4 +line 1620 +;1617: +;1618: // clear everything but the persistant data +;1619: +;1620: saved = client->pers; +ADDRLP4 116 +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRB +ASGNB 152 +line 1621 +;1621: savedSess = client->sess; +ADDRLP4 268 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRB +ASGNB 44 +line 1622 +;1622: savedPing = client->ps.ping; +ADDRLP4 312 +ADDRLP4 0 +INDIRP4 +CNSTI4 484 +ADDP4 +INDIRI4 +ASGNI4 +line 1624 +;1623:// savedAreaBits = client->areabits; +;1624: accuracy_hits = client->accuracy_hits; +ADDRLP4 316 +ADDRLP4 0 +INDIRP4 +CNSTI4 1656 +ADDP4 +INDIRI4 +ASGNI4 +line 1625 +;1625: accuracy_shots = client->accuracy_shots; +ADDRLP4 320 +ADDRLP4 0 +INDIRP4 +CNSTI4 1652 +ADDP4 +INDIRI4 +ASGNI4 +line 1626 +;1626: for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $552 +line 1627 +;1627: persistant[i] = client->ps.persistant[i]; +ADDRLP4 804 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 804 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRLP4 804 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 1628 +;1628: } +LABELV $553 +line 1626 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 16 +LTI4 $552 +line 1629 +;1629: eventSequence = client->ps.eventSequence; +ADDRLP4 324 +ADDRLP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +ASGNI4 +line 1631 +;1630: +;1631: savedForce = client->ps.fd; +ADDRLP4 328 +ADDRLP4 0 +INDIRP4 +CNSTI4 760 +ADDP4 +INDIRB +ASGNB 472 +line 1633 +;1632: +;1633: ghoul2save = client->ghoul2; +ADDRLP4 800 +ADDRLP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +INDIRP4 +ASGNP4 +line 1635 +;1634: +;1635: saveSaberNum = client->ps.saberEntityNum; +ADDRLP4 112 +ADDRLP4 0 +INDIRP4 +CNSTI4 544 +ADDP4 +INDIRI4 +ASGNI4 +line 1637 +;1636: +;1637: memset (client, 0, sizeof(*client)); // bk FIXME: Com_Memset? +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1756 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1640 +;1638: +;1639: //rww - Don't wipe the ghoul2 instance or the animation data +;1640: client->ghoul2 = ghoul2save; +ADDRLP4 0 +INDIRP4 +CNSTI4 1716 +ADDP4 +ADDRLP4 800 +INDIRP4 +ASGNP4 +line 1643 +;1641: +;1642: //or the saber ent num +;1643: client->ps.saberEntityNum = saveSaberNum; +ADDRLP4 0 +INDIRP4 +CNSTI4 544 +ADDP4 +ADDRLP4 112 +INDIRI4 +ASGNI4 +line 1645 +;1644: +;1645: client->ps.fd = savedForce; +ADDRLP4 0 +INDIRP4 +CNSTI4 760 +ADDP4 +ADDRLP4 328 +INDIRB +ASGNB 472 +line 1647 +;1646: +;1647: client->ps.duelIndex = ENTITYNUM_NONE; +ADDRLP4 0 +INDIRP4 +CNSTI4 1284 +ADDP4 +CNSTI4 1023 +ASGNI4 +line 1649 +;1648: +;1649: client->pers = saved; +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +ADDRLP4 116 +INDIRB +ASGNB 152 +line 1650 +;1650: client->sess = savedSess; +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +ADDRLP4 268 +INDIRB +ASGNB 44 +line 1651 +;1651: client->ps.ping = savedPing; +ADDRLP4 0 +INDIRP4 +CNSTI4 484 +ADDP4 +ADDRLP4 312 +INDIRI4 +ASGNI4 +line 1653 +;1652:// client->areabits = savedAreaBits; +;1653: client->accuracy_hits = accuracy_hits; +ADDRLP4 0 +INDIRP4 +CNSTI4 1656 +ADDP4 +ADDRLP4 316 +INDIRI4 +ASGNI4 +line 1654 +;1654: client->accuracy_shots = accuracy_shots; +ADDRLP4 0 +INDIRP4 +CNSTI4 1652 +ADDP4 +ADDRLP4 320 +INDIRI4 +ASGNI4 +line 1655 +;1655: client->lastkilled_client = -1; +ADDRLP4 0 +INDIRP4 +CNSTI4 1660 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 1657 +;1656: +;1657: for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $556 +line 1658 +;1658: client->ps.persistant[i] = persistant[i]; +ADDRLP4 804 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 804 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +ADDP4 +ADDRLP4 804 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRI4 +ASGNI4 +line 1659 +;1659: } +LABELV $557 +line 1657 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 16 +LTI4 $556 +line 1660 +;1660: client->ps.eventSequence = eventSequence; +ADDRLP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDRLP4 324 +INDIRI4 +ASGNI4 +line 1662 +;1661: // increment the spawncount so the client will detect the respawn +;1662: client->ps.persistant[PERS_SPAWN_COUNT]++; +ADDRLP4 804 +ADDRLP4 0 +INDIRP4 +CNSTI4 296 +ADDP4 +ASGNP4 +ADDRLP4 804 +INDIRP4 +ADDRLP4 804 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1663 +;1663: client->ps.persistant[PERS_TEAM] = client->sess.sessionTeam; +ADDRLP4 0 +INDIRP4 +CNSTI4 292 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 1665 +;1664: +;1665: client->airOutTime = level.time + 12000; +ADDRLP4 0 +INDIRP4 +CNSTI4 1688 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 12000 +ADDI4 +ASGNI4 +line 1669 +;1666: +;1667:// trap_GetUserinfo( index, userinfo, sizeof(userinfo) ); +;1668: // set max health +;1669: client->pers.maxHealth = 100;//atoi( Info_ValueForKey( userinfo, "handicap" ) ); +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +CNSTI4 100 +ASGNI4 +line 1670 +;1670: if ( client->pers.maxHealth < 1 || client->pers.maxHealth > 100 ) { +ADDRLP4 812 +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 812 +INDIRI4 +CNSTI4 1 +LTI4 $563 +ADDRLP4 812 +INDIRI4 +CNSTI4 100 +LEI4 $561 +LABELV $563 +line 1671 +;1671: client->pers.maxHealth = 100; +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +CNSTI4 100 +ASGNI4 +line 1672 +;1672: } +LABELV $561 +line 1674 +;1673: // clear entity values +;1674: client->ps.stats[STAT_MAX_HEALTH] = client->pers.maxHealth; +ADDRLP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1452 +ADDP4 +INDIRI4 +ASGNI4 +line 1675 +;1675: client->ps.eFlags = flags; +ADDRLP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +ADDRLP4 108 +INDIRI4 +ASGNI4 +line 1677 +;1676: +;1677: ent->s.groundEntityNum = ENTITYNUM_NONE; +ADDRFP4 0 +INDIRP4 +CNSTI4 192 +ADDP4 +CNSTI4 1023 +ASGNI4 +line 1678 +;1678: ent->client = &level.clients[index]; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +CNSTI4 1756 +ADDRLP4 104 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 1679 +;1679: ent->takedamage = qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 680 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1680 +;1680: ent->inuse = qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1681 +;1681: ent->classname = "player"; +ADDRFP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +ADDRGP4 $564 +ASGNP4 +line 1682 +;1682: ent->r.contents = CONTENTS_BODY; +ADDRFP4 0 +INDIRP4 +CNSTI4 340 +ADDP4 +CNSTI4 256 +ASGNI4 +line 1683 +;1683: ent->clipmask = MASK_PLAYERSOLID; +ADDRFP4 0 +INDIRP4 +CNSTI4 508 +ADDP4 +CNSTI4 273 +ASGNI4 +line 1684 +;1684: ent->die = player_die; +ADDRFP4 0 +INDIRP4 +CNSTI4 660 +ADDP4 +ADDRGP4 player_die +ASGNP4 +line 1685 +;1685: ent->waterlevel = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 748 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1686 +;1686: ent->watertype = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 744 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1687 +;1687: ent->flags = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1689 +;1688: +;1689: VectorCopy (playerMins, ent->r.mins); +ADDRFP4 0 +INDIRP4 +CNSTI4 316 +ADDP4 +ADDRGP4 playerMins +INDIRB +ASGNB 12 +line 1690 +;1690: VectorCopy (playerMaxs, ent->r.maxs); +ADDRFP4 0 +INDIRP4 +CNSTI4 328 +ADDP4 +ADDRGP4 playerMaxs +INDIRB +ASGNB 12 +line 1692 +;1691: +;1692: client->ps.clientNum = index; +ADDRLP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +ADDRLP4 104 +INDIRI4 +ASGNI4 +line 1694 +;1693: //give default weapons +;1694: client->ps.stats[STAT_WEAPONS] = ( 1 << WP_NONE ); +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1696 +;1695: +;1696: if (g_gametype.integer == GT_HOLOCRON) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 1 +NEI4 $565 +line 1697 +;1697: { +line 1699 +;1698: //always get free saber level 1 in holocron +;1699: client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_SABER ); //these are precached in g_items, ClearRegisteredItems() +ADDRLP4 820 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 820 +INDIRP4 +ADDRLP4 820 +INDIRP4 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 1700 +;1700: } +ADDRGP4 $566 +JUMPV +LABELV $565 +line 1702 +;1701: else +;1702: { +line 1703 +;1703: if (client->ps.fd.forcePowerLevel[FP_SABERATTACK]) +ADDRLP4 0 +INDIRP4 +CNSTI4 992 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $568 +line 1704 +;1704: { +line 1705 +;1705: client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_SABER ); //these are precached in g_items, ClearRegisteredItems() +ADDRLP4 820 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 820 +INDIRP4 +ADDRLP4 820 +INDIRP4 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 1706 +;1706: } +ADDRGP4 $569 +JUMPV +LABELV $568 +line 1708 +;1707: else +;1708: { //if you don't have saber attack rank then you don't get a saber +line 1709 +;1709: client->ps.stats[STAT_WEAPONS] |= (1 << WP_STUN_BATON); +ADDRLP4 820 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 820 +INDIRP4 +ADDRLP4 820 +INDIRP4 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 1710 +;1710: } +LABELV $569 +line 1711 +;1711: } +LABELV $566 +line 1713 +;1712: +;1713: if (g_gametype.integer == GT_TOURNAMENT) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $570 +line 1714 +;1714: { +line 1715 +;1715: wDisable = g_duelWeaponDisable.integer; +ADDRLP4 88 +ADDRGP4 g_duelWeaponDisable+12 +INDIRI4 +ASGNI4 +line 1716 +;1716: } +ADDRGP4 $571 +JUMPV +LABELV $570 +line 1718 +;1717: else +;1718: { +line 1719 +;1719: wDisable = g_weaponDisable.integer; +ADDRLP4 88 +ADDRGP4 g_weaponDisable+12 +INDIRI4 +ASGNI4 +line 1720 +;1720: } +LABELV $571 +line 1722 +;1721: +;1722: if (!wDisable || !(wDisable & (1 << WP_BRYAR_PISTOL))) +ADDRLP4 824 +CNSTI4 0 +ASGNI4 +ADDRLP4 88 +INDIRI4 +ADDRLP4 824 +INDIRI4 +EQI4 $577 +ADDRLP4 88 +INDIRI4 +CNSTI4 8 +BANDI4 +ADDRLP4 824 +INDIRI4 +NEI4 $575 +LABELV $577 +line 1723 +;1723: { +line 1724 +;1724: client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_BRYAR_PISTOL ); +ADDRLP4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 828 +INDIRP4 +ADDRLP4 828 +INDIRP4 +INDIRI4 +CNSTI4 8 +BORI4 +ASGNI4 +line 1725 +;1725: } +ADDRGP4 $576 +JUMPV +LABELV $575 +line 1726 +;1726: else if (g_gametype.integer == GT_JEDIMASTER) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 2 +NEI4 $578 +line 1727 +;1727: { +line 1728 +;1728: client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_BRYAR_PISTOL ); +ADDRLP4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 828 +INDIRP4 +ADDRLP4 828 +INDIRP4 +INDIRI4 +CNSTI4 8 +BORI4 +ASGNI4 +line 1729 +;1729: } +LABELV $578 +LABELV $576 +line 1731 +;1730: +;1731: if (g_gametype.integer == GT_JEDIMASTER) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 2 +NEI4 $581 +line 1732 +;1732: { +line 1733 +;1733: client->ps.stats[STAT_WEAPONS] &= ~(1 << WP_SABER); +ADDRLP4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 828 +INDIRP4 +ADDRLP4 828 +INDIRP4 +INDIRI4 +CNSTI4 -5 +BANDI4 +ASGNI4 +line 1734 +;1734: client->ps.stats[STAT_WEAPONS] |= (1 << WP_STUN_BATON); +ADDRLP4 832 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 832 +INDIRP4 +ADDRLP4 832 +INDIRP4 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 1735 +;1735: } +LABELV $581 +line 1737 +;1736: +;1737: if (client->ps.stats[STAT_WEAPONS] & (1 << WP_BRYAR_PISTOL)) +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $584 +line 1738 +;1738: { +line 1739 +;1739: client->ps.weapon = WP_BRYAR_PISTOL; +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +CNSTI4 3 +ASGNI4 +line 1740 +;1740: } +ADDRGP4 $585 +JUMPV +LABELV $584 +line 1741 +;1741: else if (client->ps.stats[STAT_WEAPONS] & (1 << WP_SABER)) +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $586 +line 1742 +;1742: { +line 1743 +;1743: client->ps.weapon = WP_SABER; +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +CNSTI4 2 +ASGNI4 +line 1744 +;1744: } +ADDRGP4 $587 +JUMPV +LABELV $586 +line 1746 +;1745: else +;1746: { +line 1747 +;1747: client->ps.weapon = WP_STUN_BATON; +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1748 +;1748: } +LABELV $587 +LABELV $585 +line 1755 +;1749: +;1750: /* +;1751: client->ps.stats[STAT_HOLDABLE_ITEMS] |= ( 1 << HI_BINOCULARS ); +;1752: client->ps.stats[STAT_HOLDABLE_ITEM] = BG_GetItemIndexByTag(HI_BINOCULARS, IT_HOLDABLE); +;1753: */ +;1754: +;1755: client->ps.stats[STAT_HOLDABLE_ITEMS] = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1756 +;1756: client->ps.stats[STAT_HOLDABLE_ITEM] = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1758 +;1757: +;1758: if ( client->sess.sessionTeam == TEAM_SPECTATOR ) +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $588 +line 1759 +;1759: { +line 1760 +;1760: client->ps.stats[STAT_WEAPONS] = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1761 +;1761: client->ps.stats[STAT_HOLDABLE_ITEMS] = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1762 +;1762: client->ps.stats[STAT_HOLDABLE_ITEM] = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1763 +;1763: } +LABELV $588 +line 1765 +;1764: +;1765: client->ps.ammo[AMMO_BLASTER] = 100; //ammoData[AMMO_BLASTER].max; //100 seems fair. +ADDRLP4 0 +INDIRP4 +CNSTI4 416 +ADDP4 +CNSTI4 100 +ASGNI4 +line 1778 +;1766:// client->ps.ammo[AMMO_POWERCELL] = ammoData[AMMO_POWERCELL].max; +;1767:// client->ps.ammo[AMMO_FORCE] = ammoData[AMMO_FORCE].max; +;1768:// client->ps.ammo[AMMO_METAL_BOLTS] = ammoData[AMMO_METAL_BOLTS].max; +;1769:// client->ps.ammo[AMMO_ROCKETS] = ammoData[AMMO_ROCKETS].max; +;1770:/* +;1771: client->ps.stats[STAT_WEAPONS] = ( 1 << WP_BRYAR_PISTOL); +;1772: if ( g_gametype.integer == GT_TEAM ) { +;1773: client->ps.ammo[WP_BRYAR_PISTOL] = 50; +;1774: } else { +;1775: client->ps.ammo[WP_BRYAR_PISTOL] = 100; +;1776: } +;1777:*/ +;1778: client->ps.rocketLockIndex = MAX_CLIENTS; +ADDRLP4 0 +INDIRP4 +CNSTI4 580 +ADDP4 +CNSTI4 32 +ASGNI4 +line 1779 +;1779: client->ps.rocketLockTime = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 588 +ADDP4 +CNSTF4 0 +ASGNF4 +line 1790 +;1780: +;1781: //rww - Set here to initialize the circling seeker drone to off. +;1782: //A quick note about this so I don't forget how it works again: +;1783: //ps.genericEnemyIndex is kept in sync between the server and client. +;1784: //When it gets set then an entitystate value of the same name gets +;1785: //set along with an entitystate flag in the shared bg code. Which +;1786: //is why a value needs to be both on the player state and entity state. +;1787: //(it doesn't seem to just carry over the entitystate value automatically +;1788: //because entity state value is derived from player state data or some +;1789: //such) +;1790: client->ps.genericEnemyIndex = -1; +ADDRLP4 0 +INDIRP4 +CNSTI4 612 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 1792 +;1791: +;1792: client->ps.isJediMaster = qfalse; +ADDRLP4 0 +INDIRP4 +CNSTI4 604 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1794 +;1793: +;1794: client->ps.fallingToDeath = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 1340 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1797 +;1795: +;1796: //Do per-spawn force power initialization +;1797: WP_SpawnInitForcePowers( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 WP_SpawnInitForcePowers +CALLV +pop +line 1800 +;1798: +;1799: // health will count down towards max_health +;1800: ent->health = client->ps.stats[STAT_HEALTH] = client->ps.stats[STAT_MAX_HEALTH] * 1.25; +ADDRLP4 832 +CNSTF4 1067450368 +ADDRLP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +CVFI4 4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRLP4 832 +INDIRI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 832 +INDIRI4 +ASGNI4 +line 1803 +;1801: +;1802: // Start with a small amount of armor as well. +;1803: client->ps.stats[STAT_ARMOR] = client->ps.stats[STAT_MAX_HEALTH] * 0.25; +ADDRLP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +CNSTF4 1048576000 +ADDRLP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +CVFI4 4 +ASGNI4 +line 1805 +;1804: +;1805: G_SetOrigin( ent, spawn_origin ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRGP4 G_SetOrigin +CALLV +pop +line 1806 +;1806: VectorCopy( spawn_origin, client->ps.origin ); +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 76 +INDIRB +ASGNB 12 +line 1809 +;1807: +;1808: // the respawned flag will be cleared after the attack and jump keys come up +;1809: client->ps.pm_flags |= PMF_RESPAWNED; +ADDRLP4 840 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 840 +INDIRP4 +ADDRLP4 840 +INDIRP4 +INDIRI4 +CNSTI4 512 +BORI4 +ASGNI4 +line 1811 +;1810: +;1811: trap_GetUsercmd( client - level.clients, &ent->client->pers.cmd ); +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 level +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1756 +DIVI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1372 +ADDP4 +ARGP4 +ADDRGP4 trap_GetUsercmd +CALLV +pop +line 1812 +;1812: SetClientViewAngle( ent, spawn_angles ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 92 +ARGP4 +ADDRGP4 SetClientViewAngle +CALLV +pop +line 1814 +;1813: +;1814: if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $590 +line 1816 +;1815: +;1816: } else { +ADDRGP4 $591 +JUMPV +LABELV $590 +line 1817 +;1817: G_KillBox( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_KillBox +CALLV +pop +line 1818 +;1818: trap_LinkEntity (ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 1821 +;1819: +;1820: // force the base weapon up +;1821: client->ps.weapon = WP_BRYAR_PISTOL; +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +CNSTI4 3 +ASGNI4 +line 1822 +;1822: client->ps.weaponstate = FIRST_WEAPON; +ADDRLP4 0 +INDIRP4 +CNSTI4 152 +ADDP4 +CNSTI4 3 +ASGNI4 +line 1824 +;1823: +;1824: } +LABELV $591 +line 1827 +;1825: +;1826: // don't allow full run speed for a bit +;1827: client->ps.pm_flags |= PMF_TIME_KNOCKBACK; +ADDRLP4 844 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 844 +INDIRP4 +ADDRLP4 844 +INDIRP4 +INDIRI4 +CNSTI4 64 +BORI4 +ASGNI4 +line 1828 +;1828: client->ps.pm_time = 100; +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +CNSTI4 100 +ASGNI4 +line 1830 +;1829: +;1830: client->respawnTime = level.time; +ADDRLP4 0 +INDIRP4 +CNSTI4 1672 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 1831 +;1831: client->inactivityTime = level.time + g_inactivity.integer * 1000; +ADDRLP4 0 +INDIRP4 +CNSTI4 1676 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 1000 +ADDRGP4 g_inactivity+12 +INDIRI4 +MULI4 +ADDI4 +ASGNI4 +line 1832 +;1832: client->latched_buttons = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 1592 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1835 +;1833: +;1834: // set default animations +;1835: client->ps.torsoAnim = WeaponReadyAnim[client->ps.weapon]; +ADDRLP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 WeaponReadyAnim +ADDP4 +INDIRI4 +ASGNI4 +line 1836 +;1836: client->ps.legsAnim = WeaponReadyAnim[client->ps.weapon]; +ADDRLP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 WeaponReadyAnim +ADDP4 +INDIRI4 +ASGNI4 +line 1838 +;1837: +;1838: if ( level.intermissiontime ) { +ADDRGP4 level+9008 +INDIRI4 +CNSTI4 0 +EQI4 $595 +line 1839 +;1839: MoveClientToIntermission( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 MoveClientToIntermission +CALLV +pop +line 1840 +;1840: } else { +ADDRGP4 $596 +JUMPV +LABELV $595 +line 1842 +;1841: // fire the targets of the spawn point +;1842: G_UseTargets( spawnPoint, ent ); +ADDRLP4 72 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_UseTargets +CALLV +pop +line 1846 +;1843: +;1844: // select the highest weapon number available, after any +;1845: // spawn given items have fired +;1846: client->ps.weapon = 1; +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1847 +;1847: for ( i = WP_NUM_WEAPONS - 1 ; i > 0 ; i-- ) { +ADDRLP4 4 +CNSTI4 15 +ASGNI4 +LABELV $598 +line 1848 +;1848: if ( client->ps.stats[STAT_WEAPONS] & ( 1 << i ) ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 4 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $602 +line 1849 +;1849: client->ps.weapon = i; +ADDRLP4 0 +INDIRP4 +CNSTI4 148 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1850 +;1850: break; +ADDRGP4 $600 +JUMPV +LABELV $602 +line 1852 +;1851: } +;1852: } +LABELV $599 +line 1847 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GTI4 $598 +LABELV $600 +line 1853 +;1853: } +LABELV $596 +line 1857 +;1854: +;1855: // run a client frame to drop exactly to the floor, +;1856: // initialize animations and other things +;1857: client->ps.commandTime = level.time - 100; +ADDRLP4 0 +INDIRP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 100 +SUBI4 +ASGNI4 +line 1858 +;1858: ent->client->pers.cmd.serverTime = level.time; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1372 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 1859 +;1859: ClientThink( ent-g_entities ); +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRGP4 ClientThink +CALLV +pop +line 1862 +;1860: +;1861: // positively link the client, even if the command times are weird +;1862: if ( ent->client->sess.sessionTeam != TEAM_SPECTATOR ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $606 +line 1863 +;1863: BG_PlayerStateToEntityState( &client->ps, &ent->s, qtrue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 BG_PlayerStateToEntityState +CALLV +pop +line 1864 +;1864: VectorCopy( ent->client->ps.origin, ent->r.currentOrigin ); +ADDRLP4 856 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 856 +INDIRP4 +CNSTI4 368 +ADDP4 +ADDRLP4 856 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 1865 +;1865: trap_LinkEntity( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_LinkEntity +CALLV +pop +line 1866 +;1866: } +LABELV $606 +line 1868 +;1867: +;1868: if (g_spawnInvulnerability.integer) +ADDRGP4 g_spawnInvulnerability+12 +INDIRI4 +CNSTI4 0 +EQI4 $608 +line 1869 +;1869: { +line 1870 +;1870: ent->client->ps.eFlags |= EF_INVULNERABLE; +ADDRLP4 856 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 856 +INDIRP4 +ADDRLP4 856 +INDIRP4 +INDIRI4 +CNSTI4 67108864 +BORI4 +ASGNI4 +line 1871 +;1871: ent->client->invulnerableTimer = level.time + g_spawnInvulnerability.integer; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1564 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ADDRGP4 g_spawnInvulnerability+12 +INDIRI4 +ADDI4 +ASGNI4 +line 1872 +;1872: } +LABELV $608 +line 1875 +;1873: +;1874: // run the presend to set anything else +;1875: ClientEndFrame( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 ClientEndFrame +CALLV +pop +line 1878 +;1876: +;1877: // clear entity state values +;1878: BG_PlayerStateToEntityState( &client->ps, &ent->s, qtrue ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 BG_PlayerStateToEntityState +CALLV +pop +line 1879 +;1879:} +LABELV $530 +endproc ClientSpawn 860 16 +export ClientDisconnect +proc ClientDisconnect 24 8 +line 1894 +;1880: +;1881: +;1882:/* +;1883:=========== +;1884:ClientDisconnect +;1885: +;1886:Called when a player drops from the server. +;1887:Will not be called between levels. +;1888: +;1889:This should NOT be called directly by any game logic, +;1890:call trap_DropClient(), which will call this and do +;1891:server system housekeeping. +;1892:============ +;1893:*/ +;1894:void ClientDisconnect( int clientNum ) { +line 1901 +;1895: gentity_t *ent; +;1896: gentity_t *tent; +;1897: int i; +;1898: +;1899: // cleanup if we are kicking a bot that +;1900: // hasn't spawned yet +;1901: G_RemoveQueuedBotBegin( clientNum ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_RemoveQueuedBotBegin +CALLV +pop +line 1903 +;1902: +;1903: ent = g_entities + clientNum; +ADDRLP4 4 +CNSTI4 828 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1904 +;1904: if ( !ent->client ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $614 +line 1905 +;1905: return; +ADDRGP4 $613 +JUMPV +LABELV $614 +line 1908 +;1906: } +;1907: +;1908: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $617 +JUMPV +LABELV $616 +line 1911 +;1909: +;1910: while (i < NUM_FORCE_POWERS) +;1911: { +line 1912 +;1912: if (ent->client->ps.fd.forcePowersActive & (1 << i)) +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 836 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $619 +line 1913 +;1913: { +line 1914 +;1914: WP_ForcePowerStop(ent, i); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 WP_ForcePowerStop +CALLV +pop +line 1915 +;1915: } +LABELV $619 +line 1916 +;1916: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1917 +;1917: } +LABELV $617 +line 1910 +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +LTI4 $616 +line 1919 +;1918: +;1919: i = TRACK_CHANNEL_1; +ADDRLP4 0 +CNSTI4 51 +ASGNI4 +ADDRGP4 $622 +JUMPV +LABELV $621 +line 1922 +;1920: +;1921: while (i < NUM_TRACK_CHANNELS) +;1922: { +line 1923 +;1923: if (ent->client->ps.fd.killSoundEntIndex[i-50] && ent->client->ps.fd.killSoundEntIndex[i-50] < MAX_GENTITIES && ent->client->ps.fd.killSoundEntIndex[i-50] > 0) +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 200 +SUBI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1188 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $624 +ADDRLP4 12 +INDIRI4 +CNSTI4 1024 +GEI4 $624 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LEI4 $624 +line 1924 +;1924: { +line 1925 +;1925: G_MuteSound(ent->client->ps.fd.killSoundEntIndex[i-50], CHAN_VOICE); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 200 +SUBI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1188 +ADDP4 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 3 +ARGI4 +ADDRGP4 G_MuteSound +CALLV +pop +line 1926 +;1926: } +LABELV $624 +line 1927 +;1927: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1928 +;1928: } +LABELV $622 +line 1921 +ADDRLP4 0 +INDIRI4 +CNSTI4 56 +LTI4 $621 +line 1929 +;1929: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1932 +;1930: +;1931: // stop any following clients +;1932: for ( i = 0 ; i < level.maxclients ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $629 +JUMPV +LABELV $626 +line 1933 +;1933: if ( level.clients[i].sess.sessionTeam == TEAM_SPECTATOR +ADDRLP4 12 +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $631 +ADDRLP4 12 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $631 +ADDRLP4 12 +INDIRP4 +CNSTI4 1532 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $631 +line 1935 +;1934: && level.clients[i].sess.spectatorState == SPECTATOR_FOLLOW +;1935: && level.clients[i].sess.spectatorClient == clientNum ) { +line 1936 +;1936: StopFollowing( &g_entities[i] ); +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ARGP4 +ADDRGP4 StopFollowing +CALLV +pop +line 1937 +;1937: } +LABELV $631 +line 1938 +;1938: } +LABELV $627 +line 1932 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $629 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $626 +line 1941 +;1939: +;1940: // send effect if they were completely connected +;1941: if ( ent->client->pers.connected == CON_CONNECTED +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $633 +ADDRLP4 12 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $633 +line 1942 +;1942: && ent->client->sess.sessionTeam != TEAM_SPECTATOR ) { +line 1943 +;1943: tent = G_TempEntity( ent->client->ps.origin, EV_PLAYER_TELEPORT_OUT ); +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +CNSTI4 60 +ARGI4 +ADDRLP4 16 +ADDRGP4 G_TempEntity +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 1944 +;1944: tent->s.clientNum = ent->s.clientNum; +ADDRLP4 20 +CNSTI4 220 +ASGNI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRI4 +ASGNI4 +line 1948 +;1945: +;1946: // They don't get to take powerups with them! +;1947: // Especially important for stuff like CTF flags +;1948: TossClientItems( ent ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 TossClientItems +CALLV +pop +line 1949 +;1949: } +LABELV $633 +line 1951 +;1950: +;1951: G_LogPrintf( "ClientDisconnect: %i\n", clientNum ); +ADDRGP4 $635 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1954 +;1952: +;1953: // if we are playing in tourney mode and losing, give a win to the other player +;1954: if ( (g_gametype.integer == GT_TOURNAMENT ) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $636 +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +ADDRGP4 level+9008 +INDIRI4 +ADDRLP4 16 +INDIRI4 +NEI4 $636 +ADDRGP4 level+16 +INDIRI4 +ADDRLP4 16 +INDIRI4 +NEI4 $636 +ADDRGP4 level+84+4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $636 +line 1956 +;1955: && !level.intermissiontime +;1956: && !level.warmupTime && level.sortedClients[1] == clientNum ) { +line 1957 +;1957: level.clients[ level.sortedClients[0] ].sess.wins++; +ADDRLP4 20 +CNSTI4 1756 +ADDRGP4 level+84 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1536 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1958 +;1958: ClientUserinfoChanged( level.sortedClients[0] ); +ADDRGP4 level+84 +INDIRI4 +ARGI4 +ADDRGP4 ClientUserinfoChanged +CALLV +pop +line 1959 +;1959: } +LABELV $636 +line 1961 +;1960: +;1961: trap_UnlinkEntity (ent); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_UnlinkEntity +CALLV +pop +line 1962 +;1962: ent->s.modelindex = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 212 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1963 +;1963: ent->inuse = qfalse; +ADDRLP4 4 +INDIRP4 +CNSTI4 412 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1964 +;1964: ent->classname = "disconnected"; +ADDRLP4 4 +INDIRP4 +CNSTI4 416 +ADDP4 +ADDRGP4 $645 +ASGNP4 +line 1965 +;1965: ent->client->pers.connected = CON_DISCONNECTED; +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1368 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1966 +;1966: ent->client->ps.persistant[PERS_TEAM] = TEAM_FREE; +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 292 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1967 +;1967: ent->client->sess.sessionTeam = TEAM_FREE; +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1969 +;1968: +;1969: trap_SetConfigstring( CS_PLAYERS + clientNum, ""); +ADDRFP4 0 +INDIRI4 +CNSTI4 544 +ADDI4 +ARGI4 +ADDRGP4 $646 +ARGP4 +ADDRGP4 trap_SetConfigstring +CALLV +pop +line 1971 +;1970: +;1971: CalculateRanks(); +ADDRGP4 CalculateRanks +CALLV +pop +line 1973 +;1972: +;1973: if ( ent->r.svFlags & SVF_BOT ) { +ADDRLP4 4 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $647 +line 1974 +;1974: BotAIShutdownClient( clientNum, qfalse ); +ADDRFP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 BotAIShutdownClient +CALLI4 +pop +line 1975 +;1975: } +LABELV $647 +line 1977 +;1976: +;1977: G_ClearClientLog(clientNum); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 G_ClearClientLog +CALLV +pop +line 1978 +;1978:} +LABELV $613 +endproc ClientDisconnect 24 8 +import G_WriteClientSessionData +bss +export Client_Force +align 4 +LABELV Client_Force +skip 15104 +import trap_ROFF_Purge_Ent +import trap_ROFF_Play +import trap_ROFF_Cache +import trap_ROFF_UpdateEntities +import trap_ROFF_Clean +import trap_SP_GetStringTextString +import trap_SP_Register +import trap_SP_RegisterServer +import trap_SnapVector +import trap_GeneticParentsAndChildSelection +import trap_BotResetWeaponState +import trap_BotFreeWeaponState +import trap_BotAllocWeaponState +import trap_BotLoadWeaponWeights +import trap_BotGetWeaponInfo +import trap_BotChooseBestFightWeapon +import trap_BotAddAvoidSpot +import trap_BotInitMoveState +import trap_BotFreeMoveState +import trap_BotAllocMoveState +import trap_BotPredictVisiblePosition +import trap_BotMovementViewTarget +import trap_BotReachabilityArea +import trap_BotResetLastAvoidReach +import trap_BotResetAvoidReach +import trap_BotMoveInDirection +import trap_BotMoveToGoal +import trap_BotResetMoveState +import trap_BotFreeGoalState +import trap_BotAllocGoalState +import trap_BotMutateGoalFuzzyLogic +import trap_BotSaveGoalFuzzyLogic +import trap_BotInterbreedGoalFuzzyLogic +import trap_BotFreeItemWeights +import trap_BotLoadItemWeights +import trap_BotUpdateEntityItems +import trap_BotInitLevelItems +import trap_BotSetAvoidGoalTime +import trap_BotAvoidGoalTime +import trap_BotGetLevelItemGoal +import trap_BotGetMapLocationGoal +import trap_BotGetNextCampSpotGoal +import trap_BotItemGoalInVisButNotVisible +import trap_BotTouchingGoal +import trap_BotChooseNBGItem +import trap_BotChooseLTGItem +import trap_BotGetSecondGoal +import trap_BotGetTopGoal +import trap_BotGoalName +import trap_BotDumpGoalStack +import trap_BotDumpAvoidGoals +import trap_BotEmptyGoalStack +import trap_BotPopGoal +import trap_BotPushGoal +import trap_BotResetAvoidGoals +import trap_BotRemoveFromAvoidGoals +import trap_BotResetGoalState +import trap_BotSetChatName +import trap_BotSetChatGender +import trap_BotLoadChatFile +import trap_BotReplaceSynonyms +import trap_UnifyWhiteSpaces +import trap_BotMatchVariable +import trap_BotFindMatch +import trap_StringContains +import trap_BotGetChatMessage +import trap_BotEnterChat +import trap_BotChatLength +import trap_BotReplyChat +import trap_BotNumInitialChats +import trap_BotInitialChat +import trap_BotNumConsoleMessages +import trap_BotNextConsoleMessage +import trap_BotRemoveConsoleMessage +import trap_BotQueueConsoleMessage +import trap_BotFreeChatState +import trap_BotAllocChatState +import trap_Characteristic_String +import trap_Characteristic_BInteger +import trap_Characteristic_Integer +import trap_Characteristic_BFloat +import trap_Characteristic_Float +import trap_BotFreeCharacter +import trap_BotLoadCharacter +import trap_EA_ResetInput +import trap_EA_GetInput +import trap_EA_EndRegular +import trap_EA_ForcePower +import trap_EA_Alt_Attack +import trap_EA_View +import trap_EA_Move +import trap_EA_DelayedJump +import trap_EA_Jump +import trap_EA_SelectWeapon +import trap_EA_MoveRight +import trap_EA_MoveLeft +import trap_EA_MoveBack +import trap_EA_MoveForward +import trap_EA_MoveDown +import trap_EA_MoveUp +import trap_EA_Crouch +import trap_EA_Respawn +import trap_EA_Use +import trap_EA_Attack +import trap_EA_Talk +import trap_EA_Gesture +import trap_EA_Action +import trap_EA_Command +import trap_EA_SayTeam +import trap_EA_Say +import trap_AAS_PredictClientMovement +import trap_AAS_Swimming +import trap_AAS_AlternativeRouteGoals +import trap_AAS_PredictRoute +import trap_AAS_EnableRoutingArea +import trap_AAS_AreaTravelTimeToGoalArea +import trap_AAS_AreaReachability +import trap_AAS_IntForBSPEpairKey +import trap_AAS_FloatForBSPEpairKey +import trap_AAS_VectorForBSPEpairKey +import trap_AAS_ValueForBSPEpairKey +import trap_AAS_NextBSPEntity +import trap_AAS_PointContents +import trap_AAS_TraceAreas +import trap_AAS_PointReachabilityAreaIndex +import trap_AAS_PointAreaNum +import trap_AAS_Time +import trap_AAS_PresenceTypeBoundingBox +import trap_AAS_Initialized +import trap_AAS_EntityInfo +import trap_AAS_AreaInfo +import trap_AAS_BBoxAreas +import trap_BotUserCommand +import trap_BotGetServerCommand +import trap_BotGetSnapshotEntity +import trap_BotLibTest +import trap_BotLibUpdateEntity +import trap_BotLibLoadMap +import trap_BotLibStartFrame +import trap_BotLibDefine +import trap_BotLibVarGet +import trap_BotLibVarSet +import trap_BotLibShutdown +import trap_BotLibSetup +import trap_DebugPolygonDelete +import trap_DebugPolygonCreate +import trap_GetEntityToken +import trap_GetUsercmd +import trap_BotFreeClient +import trap_BotAllocateClient +import trap_EntityContact +import trap_EntitiesInBox +import trap_UnlinkEntity +import trap_LinkEntity +import trap_AreasConnected +import trap_AdjustAreaPortalState +import trap_InPVSIgnorePortals +import trap_InPVS +import trap_PointContents +import trap_Trace +import trap_SetBrushModel +import trap_GetServerinfo +import trap_SetUserinfo +import trap_GetUserinfo +import trap_GetConfigstring +import trap_SetConfigstring +import trap_SendServerCommand +import trap_DropClient +import trap_LocateGameData +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_VariableIntegerValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_SendConsoleCommand +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Args +import trap_Argv +import trap_Argc +import trap_Milliseconds +import trap_Error +import trap_Printf +import g_timeouttospec +import g_forceDodge +import g_dismember +import g_singlePlayer +import g_enableBreath +import g_enableDust +import g_rankings +import pmove_msec +import pmove_fixed +import g_smoothClients +import g_blueteam +import g_redteam +import g_debugUp +import g_debugRight +import g_debugForward +import g_filterBan +import g_banIPs +import g_teamForceBalance +import g_teamAutoJoin +import g_allowVote +import g_blood +import g_doWarmup +import g_warmup +import g_motd +import g_synchronousClients +import g_adaptRespawn +import g_weaponTeamRespawn +import g_weaponRespawn +import g_debugDamage +import g_debugAlloc +import g_debugMove +import g_inactivity +import g_forcerespawn +import g_quadfactor +import g_knockback +import g_speed +import g_gravity +import g_needpass +import g_password +import g_friendlySaber +import g_friendlyFire +import g_saberInterpolate +import g_capturelimit +import g_timelimit +import g_duel_fraglimit +import g_fraglimit +import g_duelWeaponDisable +import g_weaponDisable +import g_forcePowerDisable +import g_spawnInvulnerability +import g_forceRegenTime +import g_saberLocking +import g_privateDuel +import g_forceBasedTeams +import g_maxForceRank +import g_dmflags +import g_autoMapCycle +import g_restarted +import g_maxGameClients +import g_maxclients +import g_cheats +import g_dedicated +import g_gametype +import g_entities +import level +import Pickup_Team +import CheckTeamStatus +import TeamplayInfoMessage +import Team_GetLocationMsg +import Team_GetLocation +import SelectSagaSpawnPoint +import SelectCTFSpawnPoint +import Team_FreeEntity +import Team_ReturnFlag +import Team_InitGame +import Team_CheckHurtCarrier +import Team_FragBonuses +import Team_DroppedFlagThink +import AddTeamScore +import TeamColorString +import OtherTeamName +import TeamName +import OtherTeam +import BotAIStartFrame +import BotAIShutdownClient +import BotAISetupClient +import BotAILoadMap +import BotAIShutdown +import BotAISetup +import B_CleanupAlloc +import B_InitAlloc +import InFieldOfVision +import BotOrder +import OrgVisible +import InitSagaMode +import G_ClearClientLog +import G_LogExit +import G_LogWeaponOutput +import G_LogWeaponInit +import G_LogWeaponItem +import G_LogWeaponPowerup +import G_LogWeaponFrag +import G_LogWeaponDeath +import G_LogWeaponKill +import G_LogWeaponDamage +import G_LogWeaponFire +import G_LogWeaponPickup +import Jedi_DodgeEvasion +import ForceTelepathy +import ForceThrow +import ForceSeeing +import ForceTeamForceReplenish +import ForceTeamHeal +import ForceAbsorb +import ForceProtect +import ForceGrip +import ForceRage +import ForceSpeed +import ForceHeal +import ForcePowerUsableOn +import WP_ForcePowersUpdate +import WP_SpawnInitForcePowers +import WP_InitForcePowers +import WP_SaberInitBladeData +import WP_SaberCanBlock +import WP_SaberPositionUpdate +import WP_ForcePowerStop +import HasSetSaberOnly +import G_PreDefSound +import G_RefreshNextMap +import G_DoesMapSupportGametype +import BotInterbreedEndMatch +import Svcmd_BotList_f +import Svcmd_AddBot_f +import G_BotConnect +import G_RemoveQueuedBotBegin +import G_CheckBotSpawn +import G_GetBotInfoByName +import G_GetBotInfoByNumber +import G_InitBots +import UpdateTournamentInfo +import G_WriteSessionData +import G_InitWorldSession +import G_InitSessionData +import G_ReadSessionData +import Svcmd_GameMem_f +import G_InitMemory +import G_Alloc +import Team_CheckDroppedItem +import OnSameTeam +import G_RunClient +import ClientEndFrame +import ClientThink +import G_CheckClientTimeouts +import ClientCommand +import G_GetStripEdString +import G_Error +import G_Printf +import SendScoreboardMessageToAllClients +import G_LogPrintf +import G_RunThink +import CheckTeamLeader +import SetLeader +import FindIntermissionPoint +import g_ff_objectives +import DeathmatchScoreboardMessage +import G_SetStats +import MoveClientToIntermission +import BlowDetpacks +import FireWeapon +import G_FilterPacket +import G_ProcessIPBans +import ConsoleCommand +import CalculateRanks +import AddScore +import player_die +import BeginIntermission +import CheckGauntletAttack +import SnapVectorTowards +import CalcMuzzlePoint +import LogAccuracyHit +import WP_FireGenericBlasterMissile +import WP_FireTurretMissile +import G_PlayerBecomeATST +import ATST_ManageDamageBoxes +import TeleportPlayer +import trigger_teleporter_touch +import Touch_DoorTrigger +import G_RunMover +import WP_FireBlasterMissile +import G_ExplodeMissile +import G_BounceProjectile +import CreateMissile +import G_RunMissile +import G_ReflectMissile +import ExplodeDeath +import TossClientCubes +import TossClientItems +import TossClientWeapon +import body_die +import G_RadiusDamage +import G_Damage +import CanDamage +import trap_G2API_SetBoneAnim +import trap_G2API_GetGLAName +import trap_G2API_SetBoneAngles +import trap_G2API_CleanGhoul2Models +import trap_G2API_RemoveGhoul2Model +import trap_G2API_HasGhoul2ModelOnIndex +import trap_G2API_DuplicateGhoul2Instance +import trap_G2API_CopySpecificGhoul2Model +import trap_G2API_CopyGhoul2Instance +import trap_G2API_SetBoltInfo +import trap_G2API_AddBolt +import trap_G2API_InitGhoul2Model +import trap_G2API_GetBoltMatrix_NoReconstruct +import trap_G2API_GetBoltMatrix +import trap_G2_HaveWeGhoul2Models +import trap_G2_SetGhoul2ModelIndexes +import trap_G2_ListModelBones +import trap_G2_ListModelSurfaces +import G_SkinIndex +import BuildShaderStateConfig +import AddRemap +import G_SetOrigin +import G_AddEvent +import G_AddPredictableEvent +import vtos +import tv +import G_RunObject +import G_TouchSolids +import G_TouchTriggers +import G_EntitiesFree +import G_FreeEntity +import G_KillG2Queue +import G_SendG2KillQueue +import TryUse +import G_EntitySound +import G_SoundAtLoc +import G_Sound +import G_MuteSound +import G_ScreenShake +import G_PlayEffect +import G_TempEntity +import G_Spawn +import G_InitGentity +import G_SetAngles +import G_SetMovedir +import G_UseTargets +import G_PickTarget +import G_RadiusList +import G_Find +import G_KillBox +import G_TeamCommand +import G_EffectIndex +import G_SoundIndex +import G_ModelIndex +import SaveRegisteredItems +import RegisterItem +import ClearRegisteredItems +import Touch_Item +import Add_Ammo +import ArmorIndex +import Think_Weapon +import FinishSpawningItem +import G_SpawnItem +import SetRespawn +import LaunchItem +import Drop_Item +import PrecacheItem +import UseHoldableItem +import RespawnItem +import G_RunItem +import G_CheckTeamItems +import ItemUse_MedPack +import ItemUse_Seeker +import ItemUse_Sentry +import ItemUse_Shield +import ItemUse_Binoculars +import G_GetDuelWinner +import Cmd_EngageDuel_f +import Cmd_ToggleSaber_f +import G_ItemUsable +import Cmd_SaberAttackCycle_f +import Cmd_FollowCycle_f +import SetTeam +import BroadcastTeamChange +import StopFollowing +import Cmd_Score_f +import G_NewString +import G_SpawnEntitiesFromString +import G_SpawnVector +import G_SpawnInt +import G_SpawnFloat +import G_SpawnString +import precachedKyle +import forcePowerDarkLight +import WeaponAttackAnim +import WeaponReadyAnim +import BG_OutOfMemory +import BG_StringAlloc +import BG_TempFree +import BG_TempAlloc +import BG_AllocUnaligned +import BG_Alloc +import BG_CanUseFPNow +import BG_HasYsalamiri +import BG_GetItemIndexByTag +import BG_ParseAnimationFile +import BG_PlayerTouchesItem +import BG_G2PlayerAngles +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_ForcePowerDrain +import BG_SaberStartTransAnim +import BG_InDeathAnim +import BG_InRoll +import BG_SaberInSpecialAttack +import BG_SpinningSaberAnim +import BG_FlippingAnim +import BG_SaberInIdle +import BG_SaberInSpecial +import BG_SaberInAttack +import BG_DirectFlippingAnim +import BG_InSaberStandAnim +import BG_InSpecialJump +import BG_LegalizedForcePowers +import saberMoveData +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import vectoyaw +import bg_numItems +import bg_itemlist +import Pmove +import PM_UpdateViewAngles +import pm +import bgForcePowerCost +import forceMasteryPoints +import forceMasteryLevels +import bgGlobalAnimations +import BGPAFtextLoaded +import forcePowerSorted +import WP_MuzzlePoint +import ammoData +import weaponData +import GetStringForID +import GetIDForString +import Q_irand +import irand +import flrand +import Rand_Init +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import SkipWhitespace +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import powf +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkBlue +import colorLtBlue +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import colorTable +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import forceSpeedLevels +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $646 +char 1 0 +align 1 +LABELV $645 +char 1 100 +char 1 105 +char 1 115 +char 1 99 +char 1 111 +char 1 110 +char 1 110 +char 1 101 +char 1 99 +char 1 116 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $635 +char 1 67 +char 1 108 +char 1 105 +char 1 101 +char 1 110 +char 1 116 +char 1 68 +char 1 105 +char 1 115 +char 1 99 +char 1 111 +char 1 110 +char 1 110 +char 1 101 +char 1 99 +char 1 116 +char 1 58 +char 1 32 +char 1 37 +char 1 105 +char 1 10 +char 1 0 +align 1 +LABELV $564 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 0 +align 1 +LABELV $529 +char 1 67 +char 1 108 +char 1 105 +char 1 101 +char 1 110 +char 1 116 +char 1 66 +char 1 101 +char 1 103 +char 1 105 +char 1 110 +char 1 58 +char 1 32 +char 1 37 +char 1 105 +char 1 10 +char 1 0 +align 1 +LABELV $528 +char 1 80 +char 1 76 +char 1 69 +char 1 78 +char 1 84 +char 1 69 +char 1 82 +char 1 0 +align 1 +LABELV $522 +char 1 77 +char 1 111 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 0 +align 1 +LABELV $521 +char 1 114 +char 1 116 +char 1 105 +char 1 98 +char 1 105 +char 1 97 +char 1 0 +align 1 +LABELV $520 +char 1 108 +char 1 116 +char 1 105 +char 1 98 +char 1 105 +char 1 97 +char 1 0 +align 1 +LABELV $519 +char 1 114 +char 1 114 +char 1 97 +char 1 100 +char 1 105 +char 1 117 +char 1 115 +char 1 0 +align 1 +LABELV $518 +char 1 108 +char 1 114 +char 1 97 +char 1 100 +char 1 105 +char 1 117 +char 1 115 +char 1 0 +align 1 +LABELV $517 +char 1 116 +char 1 104 +char 1 111 +char 1 114 +char 1 97 +char 1 99 +char 1 105 +char 1 99 +char 1 0 +align 1 +LABELV $501 +char 1 66 +char 1 108 +char 1 117 +char 1 101 +char 1 0 +align 1 +LABELV $496 +char 1 82 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $486 +char 1 80 +char 1 76 +char 1 67 +char 1 79 +char 1 78 +char 1 78 +char 1 69 +char 1 67 +char 1 84 +char 1 0 +align 1 +LABELV $485 +char 1 112 +char 1 114 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 34 +char 1 37 +char 1 115 +char 1 94 +char 1 55 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $482 +char 1 67 +char 1 108 +char 1 105 +char 1 101 +char 1 110 +char 1 116 +char 1 67 +char 1 111 +char 1 110 +char 1 110 +char 1 101 +char 1 99 +char 1 116 +char 1 58 +char 1 32 +char 1 37 +char 1 105 +char 1 10 +char 1 0 +align 1 +LABELV $481 +char 1 66 +char 1 111 +char 1 116 +char 1 67 +char 1 111 +char 1 110 +char 1 110 +char 1 101 +char 1 99 +char 1 116 +char 1 102 +char 1 97 +char 1 105 +char 1 108 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $469 +char 1 73 +char 1 110 +char 1 118 +char 1 97 +char 1 108 +char 1 105 +char 1 100 +char 1 32 +char 1 112 +char 1 97 +char 1 115 +char 1 115 +char 1 119 +char 1 111 +char 1 114 +char 1 100 +char 1 0 +align 1 +LABELV $467 +char 1 110 +char 1 111 +char 1 110 +char 1 101 +char 1 0 +align 1 +LABELV $462 +char 1 112 +char 1 97 +char 1 115 +char 1 115 +char 1 119 +char 1 111 +char 1 114 +char 1 100 +char 1 0 +align 1 +LABELV $458 +char 1 66 +char 1 97 +char 1 110 +char 1 110 +char 1 101 +char 1 100 +char 1 46 +char 1 0 +align 1 +LABELV $454 +char 1 67 +char 1 108 +char 1 105 +char 1 101 +char 1 110 +char 1 116 +char 1 85 +char 1 115 +char 1 101 +char 1 114 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 67 +char 1 104 +char 1 97 +char 1 110 +char 1 103 +char 1 101 +char 1 100 +char 1 58 +char 1 32 +char 1 37 +char 1 105 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 0 +align 1 +LABELV $453 +char 1 110 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 116 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 103 +char 1 95 +char 1 114 +char 1 101 +char 1 100 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 103 +char 1 95 +char 1 98 +char 1 108 +char 1 117 +char 1 101 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 99 +char 1 49 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 99 +char 1 50 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 104 +char 1 99 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 119 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 108 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 116 +char 1 116 +char 1 92 +char 1 37 +char 1 100 +char 1 92 +char 1 116 +char 1 108 +char 1 92 +char 1 37 +char 1 100 +char 1 0 +align 1 +LABELV $452 +char 1 115 +char 1 107 +char 1 105 +char 1 108 +char 1 108 +char 1 0 +align 1 +LABELV $451 +char 1 110 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 116 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 99 +char 1 49 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 99 +char 1 50 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 104 +char 1 99 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 119 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 108 +char 1 92 +char 1 37 +char 1 105 +char 1 92 +char 1 115 +char 1 107 +char 1 105 +char 1 108 +char 1 108 +char 1 92 +char 1 37 +char 1 115 +char 1 92 +char 1 116 +char 1 116 +char 1 92 +char 1 37 +char 1 100 +char 1 92 +char 1 116 +char 1 108 +char 1 92 +char 1 37 +char 1 100 +char 1 0 +align 1 +LABELV $448 +char 1 103 +char 1 95 +char 1 98 +char 1 108 +char 1 117 +char 1 101 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 0 +align 1 +LABELV $447 +char 1 103 +char 1 95 +char 1 114 +char 1 101 +char 1 100 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 0 +align 1 +LABELV $446 +char 1 99 +char 1 111 +char 1 108 +char 1 111 +char 1 114 +char 1 50 +char 1 0 +align 1 +LABELV $445 +char 1 99 +char 1 111 +char 1 108 +char 1 111 +char 1 114 +char 1 49 +char 1 0 +align 1 +LABELV $444 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 116 +char 1 97 +char 1 115 +char 1 107 +char 1 0 +align 1 +LABELV $440 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 111 +char 1 118 +char 1 101 +char 1 114 +char 1 108 +char 1 97 +char 1 121 +char 1 0 +align 1 +LABELV $435 +char 1 98 +char 1 0 +align 1 +LABELV $434 +char 1 98 +char 1 108 +char 1 117 +char 1 101 +char 1 0 +align 1 +LABELV $430 +char 1 114 +char 1 0 +align 1 +LABELV $429 +char 1 114 +char 1 101 +char 1 100 +char 1 0 +align 1 +LABELV $426 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 0 +align 1 +LABELV $420 +char 1 102 +char 1 111 +char 1 114 +char 1 99 +char 1 101 +char 1 112 +char 1 111 +char 1 119 +char 1 101 +char 1 114 +char 1 115 +char 1 0 +align 1 +LABELV $419 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 0 +align 1 +LABELV $418 +char 1 116 +char 1 101 +char 1 97 +char 1 109 +char 1 95 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 0 +align 1 +LABELV $411 +char 1 80 +char 1 76 +char 1 82 +char 1 69 +char 1 78 +char 1 65 +char 1 77 +char 1 69 +char 1 0 +align 1 +LABELV $410 +char 1 112 +char 1 114 +char 1 105 +char 1 110 +char 1 116 +char 1 32 +char 1 34 +char 1 37 +char 1 115 +char 1 94 +char 1 55 +char 1 32 +char 1 37 +char 1 115 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $405 +char 1 115 +char 1 99 +char 1 111 +char 1 114 +char 1 101 +char 1 98 +char 1 111 +char 1 97 +char 1 114 +char 1 100 +char 1 0 +align 1 +LABELV $400 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 0 +align 1 +LABELV $397 +char 1 99 +char 1 103 +char 1 95 +char 1 112 +char 1 114 +char 1 101 +char 1 100 +char 1 105 +char 1 99 +char 1 116 +char 1 73 +char 1 116 +char 1 101 +char 1 109 +char 1 115 +char 1 0 +align 1 +LABELV $396 +char 1 108 +char 1 111 +char 1 99 +char 1 97 +char 1 108 +char 1 104 +char 1 111 +char 1 115 +char 1 116 +char 1 0 +align 1 +LABELV $393 +char 1 105 +char 1 112 +char 1 0 +align 1 +LABELV $392 +char 1 92 +char 1 110 +char 1 97 +char 1 109 +char 1 101 +char 1 92 +char 1 98 +char 1 97 +char 1 100 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 0 +align 1 +LABELV $386 +char 1 42 +char 1 102 +char 1 108 +char 1 97 +char 1 115 +char 1 104 +char 1 0 +align 1 +LABELV $380 +char 1 99 +char 1 114 +char 1 97 +char 1 110 +char 1 105 +char 1 117 +char 1 109 +char 1 0 +align 1 +LABELV $378 +char 1 117 +char 1 112 +char 1 112 +char 1 101 +char 1 114 +char 1 95 +char 1 108 +char 1 117 +char 1 109 +char 1 98 +char 1 97 +char 1 114 +char 1 0 +align 1 +LABELV $376 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 95 +char 1 114 +char 1 111 +char 1 111 +char 1 116 +char 1 0 +align 1 +LABELV $375 +char 1 42 +char 1 108 +char 1 95 +char 1 104 +char 1 97 +char 1 110 +char 1 100 +char 1 0 +align 1 +LABELV $374 +char 1 42 +char 1 114 +char 1 95 +char 1 104 +char 1 97 +char 1 110 +char 1 100 +char 1 0 +align 1 +LABELV $369 +char 1 47 +char 1 97 +char 1 110 +char 1 105 +char 1 109 +char 1 97 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 46 +char 1 99 +char 1 102 +char 1 103 +char 1 0 +align 1 +LABELV $366 +char 1 70 +char 1 97 +char 1 105 +char 1 108 +char 1 101 +char 1 100 +char 1 32 +char 1 116 +char 1 111 +char 1 32 +char 1 108 +char 1 111 +char 1 97 +char 1 100 +char 1 32 +char 1 97 +char 1 110 +char 1 105 +char 1 109 +char 1 97 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 32 +char 1 102 +char 1 105 +char 1 108 +char 1 101 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 0 +align 1 +LABELV $365 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 115 +char 1 47 +char 1 95 +char 1 104 +char 1 117 +char 1 109 +char 1 97 +char 1 110 +char 1 111 +char 1 105 +char 1 100 +char 1 47 +char 1 97 +char 1 110 +char 1 105 +char 1 109 +char 1 97 +char 1 116 +char 1 105 +char 1 111 +char 1 110 +char 1 46 +char 1 99 +char 1 102 +char 1 103 +char 1 0 +align 1 +LABELV $354 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 115 +char 1 47 +char 1 107 +char 1 121 +char 1 108 +char 1 101 +char 1 47 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $347 +char 1 80 +char 1 97 +char 1 100 +char 1 97 +char 1 119 +char 1 97 +char 1 110 +char 1 0 +align 1 +LABELV $245 +char 1 98 +char 1 111 +char 1 100 +char 1 121 +char 1 113 +char 1 117 +char 1 101 +char 1 0 +align 1 +LABELV $225 +char 1 67 +char 1 111 +char 1 117 +char 1 108 +char 1 100 +char 1 110 +char 1 39 +char 1 116 +char 1 32 +char 1 102 +char 1 105 +char 1 110 +char 1 100 +char 1 32 +char 1 97 +char 1 32 +char 1 115 +char 1 112 +char 1 97 +char 1 119 +char 1 110 +char 1 32 +char 1 112 +char 1 111 +char 1 105 +char 1 110 +char 1 116 +char 1 0 +align 1 +LABELV $149 +char 1 66 +char 1 69 +char 1 67 +char 1 79 +char 1 77 +char 1 69 +char 1 74 +char 1 77 +char 1 0 +align 1 +LABELV $148 +char 1 83 +char 1 86 +char 1 73 +char 1 78 +char 1 71 +char 1 65 +char 1 77 +char 1 69 +char 1 0 +align 1 +LABELV $147 +char 1 99 +char 1 112 +char 1 32 +char 1 34 +char 1 37 +char 1 115 +char 1 32 +char 1 37 +char 1 115 +char 1 10 +char 1 34 +char 1 0 +align 1 +LABELV $141 +char 1 37 +char 1 105 +char 1 0 +align 1 +LABELV $108 +char 1 109 +char 1 111 +char 1 100 +char 1 101 +char 1 108 +char 1 115 +char 1 47 +char 1 119 +char 1 101 +char 1 97 +char 1 112 +char 1 111 +char 1 110 +char 1 115 +char 1 50 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 47 +char 1 115 +char 1 97 +char 1 98 +char 1 101 +char 1 114 +char 1 95 +char 1 119 +char 1 46 +char 1 103 +char 1 108 +char 1 109 +char 1 0 +align 1 +LABELV $103 +char 1 45 +char 1 49 +char 1 0 +align 1 +LABELV $87 +char 1 105 +char 1 110 +char 1 102 +char 1 111 +char 1 95 +char 1 112 +char 1 108 +char 1 97 +char 1 121 +char 1 101 +char 1 114 +char 1 95 +char 1 100 +char 1 101 +char 1 97 +char 1 116 +char 1 104 +char 1 109 +char 1 97 +char 1 116 +char 1 99 +char 1 104 +char 1 0 +align 1 +LABELV $83 +char 1 110 +char 1 111 +char 1 104 +char 1 117 +char 1 109 +char 1 97 +char 1 110 +char 1 115 +char 1 0 +align 1 +LABELV $80 +char 1 48 +char 1 0 +align 1 +LABELV $79 +char 1 110 +char 1 111 +char 1 98 +char 1 111 +char 1 116 +char 1 115 +char 1 0 diff --git a/CODE-mp/game/vm/g_cmds.asm b/CODE-mp/game/vm/g_cmds.asm new file mode 100644 index 0000000..7232049 --- /dev/null +++ b/CODE-mp/game/vm/g_cmds.asm @@ -0,0 +1,19339 @@ +export DeathmatchScoreboardMessage +code +proc DeathmatchScoreboardMessage 2484 68 +file "../g_cmds.c" +line 20 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:#include "g_local.h" +;4: +;5:#include "../../ui/menudef.h" // for the voice chats +;6: +;7://rww - for getting bot commands... +;8:int AcceptBotCommand(char *cmd, gentity_t *pl); +;9://end rww +;10: +;11:void BG_CycleInven(playerState_t *ps, int direction); +;12:void BG_CycleForce(playerState_t *ps, int direction); +;13: +;14:/* +;15:================== +;16:DeathmatchScoreboardMessage +;17: +;18:================== +;19:*/ +;20:void DeathmatchScoreboardMessage( gentity_t *ent ) { +line 29 +;21: char entry[1024]; +;22: char string[1400]; +;23: int stringlength; +;24: int i, j; +;25: gclient_t *cl; +;26: int numSorted, scoreFlags, accuracy, perfect; +;27: +;28: // send the latest information on all clients +;29: string[0] = 0; +ADDRLP4 1052 +CNSTI1 0 +ASGNI1 +line 30 +;30: stringlength = 0; +ADDRLP4 1032 +CNSTI4 0 +ASGNI4 +line 31 +;31: scoreFlags = 0; +ADDRLP4 2452 +CNSTI4 0 +ASGNI4 +line 33 +;32: +;33: numSorted = level.numConnectedClients; +ADDRLP4 1048 +ADDRGP4 level+72 +INDIRI4 +ASGNI4 +line 35 +;34: +;35: if (numSorted > MAX_CLIENT_SCORE_SEND) +ADDRLP4 1048 +INDIRI4 +CNSTI4 20 +LEI4 $80 +line 36 +;36: { +line 37 +;37: numSorted = MAX_CLIENT_SCORE_SEND; +ADDRLP4 1048 +CNSTI4 20 +ASGNI4 +line 38 +;38: } +LABELV $80 +line 40 +;39: +;40: for (i=0 ; i < numSorted ; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $85 +JUMPV +LABELV $82 +line 43 +;41: int ping; +;42: +;43: cl = &level.clients[level.sortedClients[i]]; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 level+84 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 45 +;44: +;45: if ( cl->pers.connected == CON_CONNECTING ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $87 +line 46 +;46: ping = -1; +ADDRLP4 2456 +CNSTI4 -1 +ASGNI4 +line 47 +;47: } else { +ADDRGP4 $88 +JUMPV +LABELV $87 +line 48 +;48: ping = cl->ps.ping < 999 ? cl->ps.ping : 999; +ADDRLP4 0 +INDIRP4 +CNSTI4 484 +ADDP4 +INDIRI4 +CNSTI4 999 +GEI4 $90 +ADDRLP4 2460 +ADDRLP4 0 +INDIRP4 +CNSTI4 484 +ADDP4 +INDIRI4 +ASGNI4 +ADDRGP4 $91 +JUMPV +LABELV $90 +ADDRLP4 2460 +CNSTI4 999 +ASGNI4 +LABELV $91 +ADDRLP4 2456 +ADDRLP4 2460 +INDIRI4 +ASGNI4 +line 49 +;49: } +LABELV $88 +line 51 +;50: +;51: if( cl->accuracy_shots ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1652 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $92 +line 52 +;52: accuracy = cl->accuracy_hits * 100 / cl->accuracy_shots; +ADDRLP4 1040 +CNSTI4 100 +ADDRLP4 0 +INDIRP4 +CNSTI4 1656 +ADDP4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1652 +ADDP4 +INDIRI4 +DIVI4 +ASGNI4 +line 53 +;53: } +ADDRGP4 $93 +JUMPV +LABELV $92 +line 54 +;54: else { +line 55 +;55: accuracy = 0; +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +line 56 +;56: } +LABELV $93 +line 57 +;57: perfect = ( cl->ps.persistant[PERS_RANK] == 0 && cl->ps.persistant[PERS_KILLED] == 0 ) ? 1 : 0; +ADDRLP4 2468 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 288 +ADDP4 +INDIRI4 +ADDRLP4 2468 +INDIRI4 +NEI4 $95 +ADDRLP4 0 +INDIRP4 +CNSTI4 312 +ADDP4 +INDIRI4 +ADDRLP4 2468 +INDIRI4 +NEI4 $95 +ADDRLP4 2460 +CNSTI4 1 +ASGNI4 +ADDRGP4 $96 +JUMPV +LABELV $95 +ADDRLP4 2460 +CNSTI4 0 +ASGNI4 +LABELV $96 +ADDRLP4 1044 +ADDRLP4 2460 +INDIRI4 +ASGNI4 +line 59 +;58: +;59: Com_sprintf (entry, sizeof(entry), +ADDRLP4 8 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $97 +ARGP4 +ADDRLP4 2472 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 2472 +INDIRI4 +ADDRGP4 level+84 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 2456 +INDIRI4 +ARGI4 +ADDRGP4 level+32 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1456 +ADDP4 +INDIRI4 +SUBI4 +CNSTI4 60000 +DIVI4 +ARGI4 +ADDRLP4 2452 +INDIRI4 +ARGI4 +CNSTI4 828 +ADDRLP4 2472 +INDIRI4 +ADDRGP4 level+84 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities+272 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 316 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 320 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 332 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 324 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 328 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1044 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 336 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 70 +;60: " %i %i %i %i %i %i %i %i %i %i %i %i %i %i", level.sortedClients[i], +;61: cl->ps.persistant[PERS_SCORE], ping, (level.time - cl->pers.enterTime)/60000, +;62: scoreFlags, g_entities[level.sortedClients[i]].s.powerups, accuracy, +;63: cl->ps.persistant[PERS_IMPRESSIVE_COUNT], +;64: cl->ps.persistant[PERS_EXCELLENT_COUNT], +;65: cl->ps.persistant[PERS_GAUNTLET_FRAG_COUNT], +;66: cl->ps.persistant[PERS_DEFEND_COUNT], +;67: cl->ps.persistant[PERS_ASSIST_COUNT], +;68: perfect, +;69: cl->ps.persistant[PERS_CAPTURES]); +;70: j = strlen(entry); +ADDRLP4 8 +ARGP4 +ADDRLP4 2480 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1036 +ADDRLP4 2480 +INDIRI4 +ASGNI4 +line 71 +;71: if (stringlength + j > 1022) +ADDRLP4 1032 +INDIRI4 +ADDRLP4 1036 +INDIRI4 +ADDI4 +CNSTI4 1022 +LEI4 $102 +line 72 +;72: break; +ADDRGP4 $84 +JUMPV +LABELV $102 +line 73 +;73: strcpy (string + stringlength, entry); +ADDRLP4 1032 +INDIRI4 +ADDRLP4 1052 +ADDP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 74 +;74: stringlength += j; +ADDRLP4 1032 +ADDRLP4 1032 +INDIRI4 +ADDRLP4 1036 +INDIRI4 +ADDI4 +ASGNI4 +line 75 +;75: } +LABELV $83 +line 40 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $85 +ADDRLP4 4 +INDIRI4 +ADDRLP4 1048 +INDIRI4 +LTI4 $82 +LABELV $84 +line 78 +;76: +;77: //still want to know the total # of clients +;78: i = level.numConnectedClients; +ADDRLP4 4 +ADDRGP4 level+72 +INDIRI4 +ASGNI4 +line 80 +;79: +;80: trap_SendServerCommand( ent-g_entities, va("scores %i %i %i%s", i, +ADDRGP4 $105 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 level+44+4 +INDIRI4 +ARGI4 +ADDRGP4 level+44+8 +INDIRI4 +ARGI4 +ADDRLP4 1052 +ARGP4 +ADDRLP4 2456 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2456 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 83 +;81: level.teamScores[TEAM_RED], level.teamScores[TEAM_BLUE], +;82: string ) ); +;83:} +LABELV $78 +endproc DeathmatchScoreboardMessage 2484 68 +export Cmd_Score_f +proc Cmd_Score_f 0 4 +line 93 +;84: +;85: +;86:/* +;87:================== +;88:Cmd_Score_f +;89: +;90:Request current scoreboard information +;91:================== +;92:*/ +;93:void Cmd_Score_f( gentity_t *ent ) { +line 94 +;94: DeathmatchScoreboardMessage( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 DeathmatchScoreboardMessage +CALLV +pop +line 95 +;95:} +LABELV $110 +endproc Cmd_Score_f 0 4 +export CheatsOk +proc CheatsOk 8 8 +line 104 +;96: +;97: +;98: +;99:/* +;100:================== +;101:CheatsOk +;102:================== +;103:*/ +;104:qboolean CheatsOk( gentity_t *ent ) { +line 105 +;105: if ( !g_cheats.integer ) { +ADDRGP4 g_cheats+12 +INDIRI4 +CNSTI4 0 +NEI4 $112 +line 106 +;106: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "NOCHEATS"))); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $117 +ARGP4 +ADDRLP4 0 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 107 +;107: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $111 +JUMPV +LABELV $112 +line 109 +;108: } +;109: if ( ent->health <= 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $118 +line 110 +;110: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "MUSTBEALIVE"))); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $120 +ARGP4 +ADDRLP4 0 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 111 +;111: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $111 +JUMPV +LABELV $118 +line 113 +;112: } +;113: return qtrue; +CNSTI4 1 +RETI4 +LABELV $111 +endproc CheatsOk 8 8 +bss +align 1 +LABELV $122 +skip 1024 +export ConcatArgs +code +proc ConcatArgs 1048 12 +line 122 +;114:} +;115: +;116: +;117:/* +;118:================== +;119:ConcatArgs +;120:================== +;121:*/ +;122:char *ConcatArgs( int start ) { +line 128 +;123: int i, c, tlen; +;124: static char line[MAX_STRING_CHARS]; +;125: int len; +;126: char arg[MAX_STRING_CHARS]; +;127: +;128: len = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 129 +;129: c = trap_Argc(); +ADDRLP4 1040 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 1036 +ADDRLP4 1040 +INDIRI4 +ASGNI4 +line 130 +;130: for ( i = start ; i < c ; i++ ) { +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRGP4 $126 +JUMPV +LABELV $123 +line 131 +;131: trap_Argv( i, arg, sizeof( arg ) ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 132 +;132: tlen = strlen( arg ); +ADDRLP4 12 +ARGP4 +ADDRLP4 1044 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 1044 +INDIRI4 +ASGNI4 +line 133 +;133: if ( len + tlen >= MAX_STRING_CHARS - 1 ) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +ADDI4 +CNSTI4 1023 +LTI4 $127 +line 134 +;134: break; +ADDRGP4 $125 +JUMPV +LABELV $127 +line 136 +;135: } +;136: memcpy( line + len, arg, tlen ); +ADDRLP4 0 +INDIRI4 +ADDRGP4 $122 +ADDP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 137 +;137: len += tlen; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +ADDI4 +ASGNI4 +line 138 +;138: if ( i != c - 1 ) { +ADDRLP4 4 +INDIRI4 +ADDRLP4 1036 +INDIRI4 +CNSTI4 1 +SUBI4 +EQI4 $129 +line 139 +;139: line[len] = ' '; +ADDRLP4 0 +INDIRI4 +ADDRGP4 $122 +ADDP4 +CNSTI1 32 +ASGNI1 +line 140 +;140: len++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 141 +;141: } +LABELV $129 +line 142 +;142: } +LABELV $124 +line 130 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $126 +ADDRLP4 4 +INDIRI4 +ADDRLP4 1036 +INDIRI4 +LTI4 $123 +LABELV $125 +line 144 +;143: +;144: line[len] = 0; +ADDRLP4 0 +INDIRI4 +ADDRGP4 $122 +ADDP4 +CNSTI1 0 +ASGNI1 +line 146 +;145: +;146: return line; +ADDRGP4 $122 +RETP4 +LABELV $121 +endproc ConcatArgs 1048 12 +export SanitizeString +proc SanitizeString 16 4 +line 156 +;147:} +;148: +;149:/* +;150:================== +;151:SanitizeString +;152: +;153:Remove case and control characters +;154:================== +;155:*/ +;156:void SanitizeString( char *in, char *out ) { +ADDRGP4 $133 +JUMPV +LABELV $132 +line 157 +;157: while ( *in ) { +line 158 +;158: if ( *in == 27 ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 27 +NEI4 $135 +line 159 +;159: in += 2; // skip color code +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 160 +;160: continue; +ADDRGP4 $133 +JUMPV +LABELV $135 +line 162 +;161: } +;162: if ( *in < 32 ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +GEI4 $137 +line 163 +;163: in++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 164 +;164: continue; +ADDRGP4 $133 +JUMPV +LABELV $137 +line 166 +;165: } +;166: *out++ = tolower( *in++ ); +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +ADDRFP4 4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ARGI4 +ADDRLP4 12 +ADDRGP4 tolower +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +CVII1 4 +ASGNI1 +line 167 +;167: } +LABELV $133 +line 157 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $132 +line 169 +;168: +;169: *out = 0; +ADDRFP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 170 +;170:} +LABELV $131 +endproc SanitizeString 16 4 +export ClientNumberFromString +proc ClientNumberFromString 2072 8 +line 180 +;171: +;172:/* +;173:================== +;174:ClientNumberFromString +;175: +;176:Returns a player number for either a number or name string +;177:Returns -1 if invalid +;178:================== +;179:*/ +;180:int ClientNumberFromString( gentity_t *to, char *s ) { +line 187 +;181: gclient_t *cl; +;182: int idnum; +;183: char s2[MAX_STRING_CHARS]; +;184: char n2[MAX_STRING_CHARS]; +;185: +;186: // numeric values are just slot numbers +;187: if (s[0] >= '0' && s[0] <= '9') { +ADDRLP4 2056 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 2056 +INDIRI4 +CNSTI4 48 +LTI4 $140 +ADDRLP4 2056 +INDIRI4 +CNSTI4 57 +GTI4 $140 +line 188 +;188: idnum = atoi( s ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 2060 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 2060 +INDIRI4 +ASGNI4 +line 189 +;189: if ( idnum < 0 || idnum >= level.maxclients ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $145 +ADDRLP4 4 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $142 +LABELV $145 +line 190 +;190: trap_SendServerCommand( to-g_entities, va("print \"Bad client slot: %i\n\"", idnum)); +ADDRGP4 $146 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 2068 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2068 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 191 +;191: return -1; +CNSTI4 -1 +RETI4 +ADDRGP4 $139 +JUMPV +LABELV $142 +line 194 +;192: } +;193: +;194: cl = &level.clients[idnum]; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 195 +;195: if ( cl->pers.connected != CON_CONNECTED ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $147 +line 196 +;196: trap_SendServerCommand( to-g_entities, va("print \"Client %i is not active\n\"", idnum)); +ADDRGP4 $149 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 2068 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2068 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 197 +;197: return -1; +CNSTI4 -1 +RETI4 +ADDRGP4 $139 +JUMPV +LABELV $147 +line 199 +;198: } +;199: return idnum; +ADDRLP4 4 +INDIRI4 +RETI4 +ADDRGP4 $139 +JUMPV +LABELV $140 +line 203 +;200: } +;201: +;202: // check for a name match +;203: SanitizeString( s, s2 ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 1032 +ARGP4 +ADDRGP4 SanitizeString +CALLV +pop +line 204 +;204: for ( idnum=0,cl=level.clients ; idnum < level.maxclients ; idnum++,cl++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +ADDRGP4 level +INDIRP4 +ASGNP4 +ADDRGP4 $153 +JUMPV +LABELV $150 +line 205 +;205: if ( cl->pers.connected != CON_CONNECTED ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $155 +line 206 +;206: continue; +ADDRGP4 $151 +JUMPV +LABELV $155 +line 208 +;207: } +;208: SanitizeString( cl->pers.netname, n2 ); +ADDRLP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 SanitizeString +CALLV +pop +line 209 +;209: if ( !strcmp( n2, s2 ) ) { +ADDRLP4 8 +ARGP4 +ADDRLP4 1032 +ARGP4 +ADDRLP4 2060 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 2060 +INDIRI4 +CNSTI4 0 +NEI4 $157 +line 210 +;210: return idnum; +ADDRLP4 4 +INDIRI4 +RETI4 +ADDRGP4 $139 +JUMPV +LABELV $157 +line 212 +;211: } +;212: } +LABELV $151 +line 204 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1756 +ADDP4 +ASGNP4 +LABELV $153 +ADDRLP4 4 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $150 +line 214 +;213: +;214: trap_SendServerCommand( to-g_entities, va("print \"User %s is not on the server\n\"", s)); +ADDRGP4 $159 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 2060 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2060 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 215 +;215: return -1; +CNSTI4 -1 +RETI4 +LABELV $139 +endproc ClientNumberFromString 2072 8 +export Cmd_Give_f +proc Cmd_Give_f 3200 12 +line 226 +;216:} +;217: +;218:/* +;219:================== +;220:Cmd_Give_f +;221: +;222:Give items to a client +;223:================== +;224:*/ +;225:void Cmd_Give_f (gentity_t *ent) +;226:{ +line 235 +;227: char name[MAX_TOKEN_CHARS]; +;228: gitem_t *it; +;229: int i; +;230: qboolean give_all; +;231: gentity_t *it_ent; +;232: trace_t trace; +;233: char arg[MAX_TOKEN_CHARS]; +;234: +;235: if ( !CheatsOk( ent ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 3144 +ADDRGP4 CheatsOk +CALLI4 +ASGNI4 +ADDRLP4 3144 +INDIRI4 +CNSTI4 0 +NEI4 $161 +line 236 +;236: return; +ADDRGP4 $160 +JUMPV +LABELV $161 +line 239 +;237: } +;238: +;239: trap_Argv( 1, name, sizeof( name ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 241 +;240: +;241: if (Q_stricmp(name, "all") == 0) +ADDRLP4 4 +ARGP4 +ADDRGP4 $165 +ARGP4 +ADDRLP4 3148 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3148 +INDIRI4 +CNSTI4 0 +NEI4 $163 +line 242 +;242: give_all = qtrue; +ADDRLP4 1028 +CNSTI4 1 +ASGNI4 +ADDRGP4 $164 +JUMPV +LABELV $163 +line 244 +;243: else +;244: give_all = qfalse; +ADDRLP4 1028 +CNSTI4 0 +ASGNI4 +LABELV $164 +line 246 +;245: +;246: if (give_all) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +EQI4 $166 +line 247 +;247: { +line 248 +;248: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $169 +JUMPV +LABELV $168 +line 250 +;249: while (i < HI_NUM_HOLDABLE) +;250: { +line 251 +;251: ent->client->ps.stats[STAT_HOLDABLE_ITEMS] |= (1 << i); +ADDRLP4 3152 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 224 +ADDP4 +ASGNP4 +ADDRLP4 3152 +INDIRP4 +ADDRLP4 3152 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BORI4 +ASGNI4 +line 252 +;252: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 253 +;253: } +LABELV $169 +line 249 +ADDRLP4 0 +INDIRI4 +CNSTI4 7 +LTI4 $168 +line 254 +;254: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 255 +;255: } +LABELV $166 +line 257 +;256: +;257: if (give_all || Q_stricmp( name, "health") == 0) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $174 +ADDRLP4 4 +ARGP4 +ADDRGP4 $173 +ARGP4 +ADDRLP4 3152 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3152 +INDIRI4 +CNSTI4 0 +NEI4 $171 +LABELV $174 +line 258 +;258: { +line 259 +;259: if (trap_Argc() == 3) { +ADDRLP4 3156 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 3156 +INDIRI4 +CNSTI4 3 +NEI4 $175 +line 260 +;260: trap_Argv( 2, arg, sizeof( arg ) ); +CNSTI4 2 +ARGI4 +ADDRLP4 1036 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 261 +;261: ent->health = atoi(arg); +ADDRLP4 1036 +ARGP4 +ADDRLP4 3160 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 3160 +INDIRI4 +ASGNI4 +line 262 +;262: if (ent->health > ent->client->ps.stats[STAT_MAX_HEALTH]) { +ADDRLP4 3164 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 3164 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +ADDRLP4 3164 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +LEI4 $176 +line 263 +;263: ent->health = ent->client->ps.stats[STAT_MAX_HEALTH]; +ADDRLP4 3168 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 3168 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 3168 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +ASGNI4 +line 264 +;264: } +line 265 +;265: } +ADDRGP4 $176 +JUMPV +LABELV $175 +line 266 +;266: else { +line 267 +;267: ent->health = ent->client->ps.stats[STAT_MAX_HEALTH]; +ADDRLP4 3160 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 3160 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 3160 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +ASGNI4 +line 268 +;268: } +LABELV $176 +line 269 +;269: if (!give_all) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $179 +line 270 +;270: return; +ADDRGP4 $160 +JUMPV +LABELV $179 +line 271 +;271: } +LABELV $171 +line 273 +;272: +;273: if (give_all || Q_stricmp(name, "weapons") == 0) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $184 +ADDRLP4 4 +ARGP4 +ADDRGP4 $183 +ARGP4 +ADDRLP4 3156 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3156 +INDIRI4 +CNSTI4 0 +NEI4 $181 +LABELV $184 +line 274 +;274: { +line 275 +;275: ent->client->ps.stats[STAT_WEAPONS] = (1 << (WP_DET_PACK+1)) - ( 1 << WP_NONE ); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 232 +ADDP4 +CNSTI4 16383 +ASGNI4 +line 276 +;276: if (!give_all) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $185 +line 277 +;277: return; +ADDRGP4 $160 +JUMPV +LABELV $185 +line 278 +;278: } +LABELV $181 +line 280 +;279: +;280: if ( !give_all && Q_stricmp(name, "weaponnum") == 0 ) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $187 +ADDRLP4 4 +ARGP4 +ADDRGP4 $189 +ARGP4 +ADDRLP4 3160 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3160 +INDIRI4 +CNSTI4 0 +NEI4 $187 +line 281 +;281: { +line 282 +;282: trap_Argv( 2, arg, sizeof( arg ) ); +CNSTI4 2 +ARGI4 +ADDRLP4 1036 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 283 +;283: ent->client->ps.stats[STAT_WEAPONS] |= (1 << atoi(arg)); +ADDRLP4 1036 +ARGP4 +ADDRLP4 3164 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 3168 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 232 +ADDP4 +ASGNP4 +ADDRLP4 3168 +INDIRP4 +ADDRLP4 3168 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 3164 +INDIRI4 +LSHI4 +BORI4 +ASGNI4 +line 284 +;284: return; +ADDRGP4 $160 +JUMPV +LABELV $187 +line 287 +;285: } +;286: +;287: if (give_all || Q_stricmp(name, "ammo") == 0) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $193 +ADDRLP4 4 +ARGP4 +ADDRGP4 $192 +ARGP4 +ADDRLP4 3164 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3164 +INDIRI4 +CNSTI4 0 +NEI4 $190 +LABELV $193 +line 288 +;288: { +line 289 +;289: int num = 999; +ADDRLP4 3168 +CNSTI4 999 +ASGNI4 +line 290 +;290: if (trap_Argc() == 3) { +ADDRLP4 3172 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 3172 +INDIRI4 +CNSTI4 3 +NEI4 $194 +line 291 +;291: trap_Argv( 2, arg, sizeof( arg ) ); +CNSTI4 2 +ARGI4 +ADDRLP4 1036 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 292 +;292: num = atoi(arg); +ADDRLP4 1036 +ARGP4 +ADDRLP4 3176 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 3168 +ADDRLP4 3176 +INDIRI4 +ASGNI4 +line 293 +;293: } +LABELV $194 +line 294 +;294: for ( i = 0 ; i < MAX_WEAPONS ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $196 +line 295 +;295: ent->client->ps.ammo[i] = num; +ADDRLP4 3176 +CNSTI4 408 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 3176 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 3176 +INDIRI4 +ADDP4 +ADDP4 +ADDRLP4 3168 +INDIRI4 +ASGNI4 +line 296 +;296: } +LABELV $197 +line 294 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $196 +line 297 +;297: if (!give_all) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $200 +line 298 +;298: return; +ADDRGP4 $160 +JUMPV +LABELV $200 +line 299 +;299: } +LABELV $190 +line 301 +;300: +;301: if (give_all || Q_stricmp(name, "armor") == 0) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $205 +ADDRLP4 4 +ARGP4 +ADDRGP4 $204 +ARGP4 +ADDRLP4 3168 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3168 +INDIRI4 +CNSTI4 0 +NEI4 $202 +LABELV $205 +line 302 +;302: { +line 303 +;303: if (trap_Argc() == 3) { +ADDRLP4 3172 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 3172 +INDIRI4 +CNSTI4 3 +NEI4 $206 +line 304 +;304: trap_Argv( 2, arg, sizeof( arg ) ); +CNSTI4 2 +ARGI4 +ADDRLP4 1036 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 305 +;305: ent->client->ps.stats[STAT_ARMOR] = atoi(arg); +ADDRLP4 1036 +ARGP4 +ADDRLP4 3176 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 236 +ADDP4 +ADDRLP4 3176 +INDIRI4 +ASGNI4 +line 306 +;306: } else { +ADDRGP4 $207 +JUMPV +LABELV $206 +line 307 +;307: ent->client->ps.stats[STAT_ARMOR] = ent->client->ps.stats[STAT_MAX_HEALTH]; +ADDRLP4 3176 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 3176 +INDIRP4 +CNSTI4 236 +ADDP4 +ADDRLP4 3176 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRI4 +ASGNI4 +line 308 +;308: } +LABELV $207 +line 310 +;309: +;310: if (!give_all) +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $208 +line 311 +;311: return; +ADDRGP4 $160 +JUMPV +LABELV $208 +line 312 +;312: } +LABELV $202 +line 314 +;313: +;314: if (Q_stricmp(name, "excellent") == 0) { +ADDRLP4 4 +ARGP4 +ADDRGP4 $212 +ARGP4 +ADDRLP4 3172 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3172 +INDIRI4 +CNSTI4 0 +NEI4 $210 +line 315 +;315: ent->client->ps.persistant[PERS_EXCELLENT_COUNT]++; +ADDRLP4 3176 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 320 +ADDP4 +ASGNP4 +ADDRLP4 3176 +INDIRP4 +ADDRLP4 3176 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 316 +;316: return; +ADDRGP4 $160 +JUMPV +LABELV $210 +line 318 +;317: } +;318: if (Q_stricmp(name, "impressive") == 0) { +ADDRLP4 4 +ARGP4 +ADDRGP4 $215 +ARGP4 +ADDRLP4 3176 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3176 +INDIRI4 +CNSTI4 0 +NEI4 $213 +line 319 +;319: ent->client->ps.persistant[PERS_IMPRESSIVE_COUNT]++; +ADDRLP4 3180 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 316 +ADDP4 +ASGNP4 +ADDRLP4 3180 +INDIRP4 +ADDRLP4 3180 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 320 +;320: return; +ADDRGP4 $160 +JUMPV +LABELV $213 +line 322 +;321: } +;322: if (Q_stricmp(name, "gauntletaward") == 0) { +ADDRLP4 4 +ARGP4 +ADDRGP4 $218 +ARGP4 +ADDRLP4 3180 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3180 +INDIRI4 +CNSTI4 0 +NEI4 $216 +line 323 +;323: ent->client->ps.persistant[PERS_GAUNTLET_FRAG_COUNT]++; +ADDRLP4 3184 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 332 +ADDP4 +ASGNP4 +ADDRLP4 3184 +INDIRP4 +ADDRLP4 3184 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 324 +;324: return; +ADDRGP4 $160 +JUMPV +LABELV $216 +line 326 +;325: } +;326: if (Q_stricmp(name, "defend") == 0) { +ADDRLP4 4 +ARGP4 +ADDRGP4 $221 +ARGP4 +ADDRLP4 3184 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3184 +INDIRI4 +CNSTI4 0 +NEI4 $219 +line 327 +;327: ent->client->ps.persistant[PERS_DEFEND_COUNT]++; +ADDRLP4 3188 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 324 +ADDP4 +ASGNP4 +ADDRLP4 3188 +INDIRP4 +ADDRLP4 3188 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 328 +;328: return; +ADDRGP4 $160 +JUMPV +LABELV $219 +line 330 +;329: } +;330: if (Q_stricmp(name, "assist") == 0) { +ADDRLP4 4 +ARGP4 +ADDRGP4 $224 +ARGP4 +ADDRLP4 3188 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 3188 +INDIRI4 +CNSTI4 0 +NEI4 $222 +line 331 +;331: ent->client->ps.persistant[PERS_ASSIST_COUNT]++; +ADDRLP4 3192 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 328 +ADDP4 +ASGNP4 +ADDRLP4 3192 +INDIRP4 +ADDRLP4 3192 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 332 +;332: return; +ADDRGP4 $160 +JUMPV +LABELV $222 +line 336 +;333: } +;334: +;335: // spawn a specific item right on the player +;336: if ( !give_all ) { +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +NEI4 $225 +line 337 +;337: it = BG_FindItem (name); +ADDRLP4 4 +ARGP4 +ADDRLP4 3192 +ADDRGP4 BG_FindItem +CALLP4 +ASGNP4 +ADDRLP4 2060 +ADDRLP4 3192 +INDIRP4 +ASGNP4 +line 338 +;338: if (!it) { +ADDRLP4 2060 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $227 +line 339 +;339: return; +ADDRGP4 $160 +JUMPV +LABELV $227 +line 342 +;340: } +;341: +;342: it_ent = G_Spawn(); +ADDRLP4 3196 +ADDRGP4 G_Spawn +CALLP4 +ASGNP4 +ADDRLP4 1032 +ADDRLP4 3196 +INDIRP4 +ASGNP4 +line 343 +;343: VectorCopy( ent->r.currentOrigin, it_ent->s.origin ); +ADDRLP4 1032 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 368 +ADDP4 +INDIRB +ASGNB 12 +line 344 +;344: it_ent->classname = it->classname; +ADDRLP4 1032 +INDIRP4 +CNSTI4 416 +ADDP4 +ADDRLP4 2060 +INDIRP4 +INDIRP4 +ASGNP4 +line 345 +;345: G_SpawnItem (it_ent, it); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 2060 +INDIRP4 +ARGP4 +ADDRGP4 G_SpawnItem +CALLV +pop +line 346 +;346: FinishSpawningItem(it_ent ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRGP4 FinishSpawningItem +CALLV +pop +line 347 +;347: memset( &trace, 0, sizeof( trace ) ); +ADDRLP4 2064 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1080 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 348 +;348: Touch_Item (it_ent, ent, &trace); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 2064 +ARGP4 +ADDRGP4 Touch_Item +CALLV +pop +line 349 +;349: if (it_ent->inuse) { +ADDRLP4 1032 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $229 +line 350 +;350: G_FreeEntity( it_ent ); +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRGP4 G_FreeEntity +CALLV +pop +line 351 +;351: } +LABELV $229 +line 352 +;352: } +LABELV $225 +line 353 +;353:} +LABELV $160 +endproc Cmd_Give_f 3200 12 +export Cmd_God_f +proc Cmd_God_f 16 8 +line 366 +;354: +;355: +;356:/* +;357:================== +;358:Cmd_God_f +;359: +;360:Sets client to godmode +;361: +;362:argv(0) god +;363:================== +;364:*/ +;365:void Cmd_God_f (gentity_t *ent) +;366:{ +line 369 +;367: char *msg; +;368: +;369: if ( !CheatsOk( ent ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 CheatsOk +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $232 +line 370 +;370: return; +ADDRGP4 $231 +JUMPV +LABELV $232 +line 373 +;371: } +;372: +;373: ent->flags ^= FL_GODMODE; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 16 +BXORI4 +ASGNI4 +line 374 +;374: if (!(ent->flags & FL_GODMODE) ) +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +CNSTI4 16 +BANDI4 +CNSTI4 0 +NEI4 $234 +line 375 +;375: msg = "godmode OFF\n"; +ADDRLP4 0 +ADDRGP4 $236 +ASGNP4 +ADDRGP4 $235 +JUMPV +LABELV $234 +line 377 +;376: else +;377: msg = "godmode ON\n"; +ADDRLP4 0 +ADDRGP4 $237 +ASGNP4 +LABELV $235 +line 379 +;378: +;379: trap_SendServerCommand( ent-g_entities, va("print \"%s\"", msg)); +ADDRGP4 $238 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 380 +;380:} +LABELV $231 +endproc Cmd_God_f 16 8 +export Cmd_Notarget_f +proc Cmd_Notarget_f 16 8 +line 392 +;381: +;382: +;383:/* +;384:================== +;385:Cmd_Notarget_f +;386: +;387:Sets client to notarget +;388: +;389:argv(0) notarget +;390:================== +;391:*/ +;392:void Cmd_Notarget_f( gentity_t *ent ) { +line 395 +;393: char *msg; +;394: +;395: if ( !CheatsOk( ent ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 CheatsOk +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $240 +line 396 +;396: return; +ADDRGP4 $239 +JUMPV +LABELV $240 +line 399 +;397: } +;398: +;399: ent->flags ^= FL_NOTARGET; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 32 +BXORI4 +ASGNI4 +line 400 +;400: if (!(ent->flags & FL_NOTARGET) ) +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +NEI4 $242 +line 401 +;401: msg = "notarget OFF\n"; +ADDRLP4 0 +ADDRGP4 $244 +ASGNP4 +ADDRGP4 $243 +JUMPV +LABELV $242 +line 403 +;402: else +;403: msg = "notarget ON\n"; +ADDRLP4 0 +ADDRGP4 $245 +ASGNP4 +LABELV $243 +line 405 +;404: +;405: trap_SendServerCommand( ent-g_entities, va("print \"%s\"", msg)); +ADDRGP4 $238 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 406 +;406:} +LABELV $239 +endproc Cmd_Notarget_f 16 8 +export Cmd_Noclip_f +proc Cmd_Noclip_f 20 8 +line 416 +;407: +;408: +;409:/* +;410:================== +;411:Cmd_Noclip_f +;412: +;413:argv(0) noclip +;414:================== +;415:*/ +;416:void Cmd_Noclip_f( gentity_t *ent ) { +line 419 +;417: char *msg; +;418: +;419: if ( !CheatsOk( ent ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 CheatsOk +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $247 +line 420 +;420: return; +ADDRGP4 $246 +JUMPV +LABELV $247 +line 423 +;421: } +;422: +;423: if ( ent->client->noclip ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1576 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $249 +line 424 +;424: msg = "noclip OFF\n"; +ADDRLP4 0 +ADDRGP4 $251 +ASGNP4 +line 425 +;425: } else { +ADDRGP4 $250 +JUMPV +LABELV $249 +line 426 +;426: msg = "noclip ON\n"; +ADDRLP4 0 +ADDRGP4 $252 +ASGNP4 +line 427 +;427: } +LABELV $250 +line 428 +;428: ent->client->noclip = !ent->client->noclip; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1576 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $254 +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +ADDRGP4 $255 +JUMPV +LABELV $254 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +LABELV $255 +ADDRLP4 12 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 430 +;429: +;430: trap_SendServerCommand( ent-g_entities, va("print \"%s\"", msg)); +ADDRGP4 $238 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 431 +;431:} +LABELV $246 +endproc Cmd_Noclip_f 20 8 +export Cmd_LevelShot_f +proc Cmd_LevelShot_f 4 8 +line 444 +;432: +;433: +;434:/* +;435:================== +;436:Cmd_LevelShot_f +;437: +;438:This is just to help generate the level pictures +;439:for the menus. It goes to the intermission immediately +;440:and sends over a command to the client to resize the view, +;441:hide the scoreboard, and take a special screenshot +;442:================== +;443:*/ +;444:void Cmd_LevelShot_f( gentity_t *ent ) { +line 445 +;445: if ( !CheatsOk( ent ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 CheatsOk +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $257 +line 446 +;446: return; +ADDRGP4 $256 +JUMPV +LABELV $257 +line 450 +;447: } +;448: +;449: // doesn't work in single player +;450: if ( g_gametype.integer != 0 ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 0 +EQI4 $259 +line 451 +;451: trap_SendServerCommand( ent-g_entities, +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRGP4 $262 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 453 +;452: "print \"Must be in g_gametype 0 for levelshot\n\"" ); +;453: return; +ADDRGP4 $256 +JUMPV +LABELV $259 +line 456 +;454: } +;455: +;456: BeginIntermission(); +ADDRGP4 BeginIntermission +CALLV +pop +line 457 +;457: trap_SendServerCommand( ent-g_entities, "clientLevelShot" ); +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRGP4 $263 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 458 +;458:} +LABELV $256 +endproc Cmd_LevelShot_f 4 8 +export Cmd_TeamTask_f +proc Cmd_TeamTask_f 2068 12 +line 471 +;459: +;460: +;461:/* +;462:================== +;463:Cmd_LevelShot_f +;464: +;465:This is just to help generate the level pictures +;466:for the menus. It goes to the intermission immediately +;467:and sends over a command to the client to resize the view, +;468:hide the scoreboard, and take a special screenshot +;469:================== +;470:*/ +;471:void Cmd_TeamTask_f( gentity_t *ent ) { +line 475 +;472: char userinfo[MAX_INFO_STRING]; +;473: char arg[MAX_TOKEN_CHARS]; +;474: int task; +;475: int client = ent->client - level.clients; +ADDRLP4 1024 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRGP4 level +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1756 +DIVI4 +ASGNI4 +line 477 +;476: +;477: if ( trap_Argc() != 2 ) { +ADDRLP4 2056 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 2056 +INDIRI4 +CNSTI4 2 +EQI4 $265 +line 478 +;478: return; +ADDRGP4 $264 +JUMPV +LABELV $265 +line 480 +;479: } +;480: trap_Argv( 1, arg, sizeof( arg ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 1028 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 481 +;481: task = atoi( arg ); +ADDRLP4 1028 +ARGP4 +ADDRLP4 2060 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 2052 +ADDRLP4 2060 +INDIRI4 +ASGNI4 +line 483 +;482: +;483: trap_GetUserinfo(client, userinfo, sizeof(userinfo)); +ADDRLP4 1024 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetUserinfo +CALLV +pop +line 484 +;484: Info_SetValueForKey(userinfo, "teamtask", va("%d", task)); +ADDRGP4 $268 +ARGP4 +ADDRLP4 2052 +INDIRI4 +ARGI4 +ADDRLP4 2064 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 $267 +ARGP4 +ADDRLP4 2064 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 485 +;485: trap_SetUserinfo(client, userinfo); +ADDRLP4 1024 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_SetUserinfo +CALLV +pop +line 486 +;486: ClientUserinfoChanged(client); +ADDRLP4 1024 +INDIRI4 +ARGI4 +ADDRGP4 ClientUserinfoChanged +CALLV +pop +line 487 +;487:} +LABELV $264 +endproc Cmd_TeamTask_f 2068 12 +export Cmd_Kill_f +proc Cmd_Kill_f 16 20 +line 496 +;488: +;489: +;490: +;491:/* +;492:================= +;493:Cmd_Kill_f +;494:================= +;495:*/ +;496:void Cmd_Kill_f( gentity_t *ent ) { +line 497 +;497: if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $270 +line 498 +;498: return; +ADDRGP4 $269 +JUMPV +LABELV $270 +line 500 +;499: } +;500: if (ent->health <= 0) { +ADDRFP4 0 +INDIRP4 +CNSTI4 676 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $272 +line 501 +;501: return; +ADDRGP4 $269 +JUMPV +LABELV $272 +line 504 +;502: } +;503: +;504: if (g_gametype.integer == GT_TOURNAMENT && level.numPlayingClients > 1 && !level.warmupTime) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $274 +ADDRGP4 level+80 +INDIRI4 +CNSTI4 1 +LEI4 $274 +ADDRGP4 level+16 +INDIRI4 +CNSTI4 0 +NEI4 $274 +line 505 +;505: { +line 506 +;506: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "ATTEMPTDUELKILL")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $279 +ARGP4 +ADDRLP4 0 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 507 +;507: return; +ADDRGP4 $269 +JUMPV +LABELV $274 +line 510 +;508: } +;509: +;510: ent->flags &= ~FL_GODMODE; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 -17 +BANDI4 +ASGNI4 +line 511 +;511: ent->client->ps.stats[STAT_HEALTH] = ent->health = -999; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTI4 -999 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 512 +;512: player_die (ent, ent, ent, 100000, MOD_SUICIDE); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +CNSTI4 100000 +ARGI4 +CNSTI4 35 +ARGI4 +ADDRGP4 player_die +CALLV +pop +line 513 +;513:} +LABELV $269 +endproc Cmd_Kill_f 16 20 +export G_GetDuelWinner +proc G_GetDuelWinner 16 0 +line 516 +;514: +;515:gentity_t *G_GetDuelWinner(gclient_t *client) +;516:{ +line 520 +;517: gclient_t *wCl; +;518: int i; +;519: +;520: for ( i = 0 ; i < level.maxclients ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $284 +JUMPV +LABELV $281 +line 521 +;521: wCl = &level.clients[i]; +ADDRLP4 0 +CNSTI4 1756 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +ASGNP4 +line 523 +;522: +;523: if (wCl && wCl != client && /*wCl->ps.clientNum != client->ps.clientNum &&*/ +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ASGNU4 +ADDRLP4 12 +INDIRU4 +CNSTU4 0 +EQU4 $286 +ADDRLP4 12 +INDIRU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +EQU4 $286 +ADDRLP4 0 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $286 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $286 +line 525 +;524: wCl->pers.connected == CON_CONNECTED && wCl->sess.sessionTeam != TEAM_SPECTATOR) +;525: { +line 526 +;526: return &g_entities[wCl->ps.clientNum]; +CNSTI4 828 +ADDRLP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +RETP4 +ADDRGP4 $280 +JUMPV +LABELV $286 +line 528 +;527: } +;528: } +LABELV $282 +line 520 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $284 +ADDRLP4 4 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $281 +line 530 +;529: +;530: return NULL; +CNSTP4 0 +RETP4 +LABELV $280 +endproc G_GetDuelWinner 16 0 +export BroadcastTeamChange +proc BroadcastTeamChange 12 16 +line 541 +;531:} +;532: +;533:/* +;534:================= +;535:BroadCastTeamChange +;536: +;537:Let everyone know about a team change +;538:================= +;539:*/ +;540:void BroadcastTeamChange( gclient_t *client, int oldTeam ) +;541:{ +line 542 +;542: client->ps.fd.forceDoInit = 1; //every time we change teams make sure our force powers are set right +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTI4 1 +ASGNI4 +line 544 +;543: +;544: if ( client->sess.sessionTeam == TEAM_RED ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $289 +line 545 +;545: trap_SendServerCommand( -1, va("cp \"%s" S_COLOR_WHITE " %s\n\"", +ADDRGP4 $116 +ARGP4 +ADDRGP4 $292 +ARGP4 +ADDRLP4 0 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $291 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 547 +;546: client->pers.netname, G_GetStripEdString("SVINGAME", "JOINEDTHEREDTEAM")) ); +;547: } else if ( client->sess.sessionTeam == TEAM_BLUE ) { +ADDRGP4 $290 +JUMPV +LABELV $289 +ADDRFP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $293 +line 548 +;548: trap_SendServerCommand( -1, va("cp \"%s" S_COLOR_WHITE " %s\n\"", +ADDRGP4 $116 +ARGP4 +ADDRGP4 $295 +ARGP4 +ADDRLP4 0 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $291 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 550 +;549: client->pers.netname, G_GetStripEdString("SVINGAME", "JOINEDTHEBLUETEAM"))); +;550: } else if ( client->sess.sessionTeam == TEAM_SPECTATOR && oldTeam != TEAM_SPECTATOR ) { +ADDRGP4 $294 +JUMPV +LABELV $293 +ADDRLP4 0 +CNSTI4 3 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +NEI4 $296 +ADDRFP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +EQI4 $296 +line 551 +;551: trap_SendServerCommand( -1, va("cp \"%s" S_COLOR_WHITE " %s\n\"", +ADDRGP4 $116 +ARGP4 +ADDRGP4 $298 +ARGP4 +ADDRLP4 4 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $291 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 553 +;552: client->pers.netname, G_GetStripEdString("SVINGAME", "JOINEDTHESPECTATORS"))); +;553: } else if ( client->sess.sessionTeam == TEAM_FREE ) { +ADDRGP4 $297 +JUMPV +LABELV $296 +ADDRFP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $299 +line 554 +;554: if (g_gametype.integer == GT_TOURNAMENT) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $301 +line 555 +;555: { +line 571 +;556: /* +;557: gentity_t *currentWinner = G_GetDuelWinner(client); +;558: +;559: if (currentWinner && currentWinner->client) +;560: { +;561: trap_SendServerCommand( -1, va("cp \"%s" S_COLOR_WHITE " %s %s\n\"", +;562: currentWinner->client->pers.netname, G_GetStripEdString("SVINGAME", "VERSUS"), client->pers.netname)); +;563: } +;564: else +;565: { +;566: trap_SendServerCommand( -1, va("cp \"%s" S_COLOR_WHITE " %s\n\"", +;567: client->pers.netname, G_GetStripEdString("SVINGAME", "JOINEDTHEBATTLE"))); +;568: } +;569: */ +;570: //NOTE: Just doing a vs. once it counts two players up +;571: } +ADDRGP4 $302 +JUMPV +LABELV $301 +line 573 +;572: else +;573: { +line 574 +;574: trap_SendServerCommand( -1, va("cp \"%s" S_COLOR_WHITE " %s\n\"", +ADDRGP4 $116 +ARGP4 +ADDRGP4 $304 +ARGP4 +ADDRLP4 4 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $291 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 -1 +ARGI4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 576 +;575: client->pers.netname, G_GetStripEdString("SVINGAME", "JOINEDTHEBATTLE"))); +;576: } +LABELV $302 +line 577 +;577: } +LABELV $299 +LABELV $297 +LABELV $294 +LABELV $290 +line 579 +;578: +;579: G_LogPrintf ( "setteam: %i %s %s\n", +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 TeamName +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 TeamName +CALLP4 +ASGNP4 +ADDRGP4 $305 +ARGP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 level +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1756 +DIVI4 +ARGI4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 583 +;580: client - &level.clients[0], +;581: TeamName ( oldTeam ), +;582: TeamName ( client->sess.sessionTeam ) ); +;583:} +LABELV $288 +endproc BroadcastTeamChange 12 16 +export SetTeam +proc SetTeam 104 20 +line 590 +;584: +;585:/* +;586:================= +;587:SetTeam +;588:================= +;589:*/ +;590:void SetTeam( gentity_t *ent, char *s ) { +line 601 +;591: int team, oldTeam; +;592: gclient_t *client; +;593: int clientNum; +;594: spectatorState_t specState; +;595: int specClient; +;596: int teamLeader; +;597: +;598: // +;599: // see what change is requested +;600: // +;601: client = ent->client; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +line 603 +;602: +;603: clientNum = client - level.clients; +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 level +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1756 +DIVI4 +ASGNI4 +line 604 +;604: specClient = 0; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +line 605 +;605: specState = SPECTATOR_NOT; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 606 +;606: if ( !Q_stricmp( s, "scoreboard" ) || !Q_stricmp( s, "score" ) ) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $309 +ARGP4 +ADDRLP4 28 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $311 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $310 +ARGP4 +ADDRLP4 32 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $307 +LABELV $311 +line 607 +;607: team = TEAM_SPECTATOR; +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +line 608 +;608: specState = SPECTATOR_SCOREBOARD; +ADDRLP4 16 +CNSTI4 3 +ASGNI4 +line 609 +;609: } else if ( !Q_stricmp( s, "follow1" ) ) { +ADDRGP4 $308 +JUMPV +LABELV $307 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $314 +ARGP4 +ADDRLP4 36 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +NEI4 $312 +line 610 +;610: team = TEAM_SPECTATOR; +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +line 611 +;611: specState = SPECTATOR_FOLLOW; +ADDRLP4 16 +CNSTI4 2 +ASGNI4 +line 612 +;612: specClient = -1; +ADDRLP4 20 +CNSTI4 -1 +ASGNI4 +line 613 +;613: } else if ( !Q_stricmp( s, "follow2" ) ) { +ADDRGP4 $313 +JUMPV +LABELV $312 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $317 +ARGP4 +ADDRLP4 40 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +NEI4 $315 +line 614 +;614: team = TEAM_SPECTATOR; +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +line 615 +;615: specState = SPECTATOR_FOLLOW; +ADDRLP4 16 +CNSTI4 2 +ASGNI4 +line 616 +;616: specClient = -2; +ADDRLP4 20 +CNSTI4 -2 +ASGNI4 +line 617 +;617: } else if ( !Q_stricmp( s, "spectator" ) || !Q_stricmp( s, "s" ) ) { +ADDRGP4 $316 +JUMPV +LABELV $315 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $320 +ARGP4 +ADDRLP4 44 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $322 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $321 +ARGP4 +ADDRLP4 48 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $318 +LABELV $322 +line 618 +;618: team = TEAM_SPECTATOR; +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +line 619 +;619: specState = SPECTATOR_FREE; +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +line 620 +;620: } else if ( g_gametype.integer >= GT_TEAM ) { +ADDRGP4 $319 +JUMPV +LABELV $318 +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $323 +line 622 +;621: // if running a team game, assign player to one of the teams +;622: specState = SPECTATOR_NOT; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 623 +;623: if ( !Q_stricmp( s, "red" ) || !Q_stricmp( s, "r" ) ) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $328 +ARGP4 +ADDRLP4 52 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +EQI4 $330 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $329 +ARGP4 +ADDRLP4 56 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +NEI4 $326 +LABELV $330 +line 624 +;624: team = TEAM_RED; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 625 +;625: } else if ( !Q_stricmp( s, "blue" ) || !Q_stricmp( s, "b" ) ) { +ADDRGP4 $327 +JUMPV +LABELV $326 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $333 +ARGP4 +ADDRLP4 60 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 0 +EQI4 $335 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $334 +ARGP4 +ADDRLP4 64 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 0 +NEI4 $331 +LABELV $335 +line 626 +;626: team = TEAM_BLUE; +ADDRLP4 4 +CNSTI4 2 +ASGNI4 +line 627 +;627: } else { +ADDRGP4 $332 +JUMPV +LABELV $331 +line 645 +;628: // pick the team with the least number of players +;629: //For now, don't do this. The legalize function will set powers properly now. +;630: /* +;631: if (g_forceBasedTeams.integer) +;632: { +;633: if (ent->client->ps.fd.forceSide == FORCE_LIGHTSIDE) +;634: { +;635: team = TEAM_BLUE; +;636: } +;637: else +;638: { +;639: team = TEAM_RED; +;640: } +;641: } +;642: else +;643: { +;644: */ +;645: team = PickTeam( clientNum ); +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 68 +ADDRGP4 PickTeam +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 68 +INDIRI4 +ASGNI4 +line 647 +;646: //} +;647: } +LABELV $332 +LABELV $327 +line 649 +;648: +;649: if ( g_teamForceBalance.integer ) { +ADDRGP4 g_teamForceBalance+12 +INDIRI4 +CNSTI4 0 +EQI4 $324 +line 652 +;650: int counts[TEAM_NUM_TEAMS]; +;651: +;652: counts[TEAM_BLUE] = TeamCount( ent->client->ps.clientNum, TEAM_BLUE ); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 2 +ARGI4 +ADDRLP4 84 +ADDRGP4 TeamCount +CALLI4 +ASGNI4 +ADDRLP4 68+8 +ADDRLP4 84 +INDIRI4 +ASGNI4 +line 653 +;653: counts[TEAM_RED] = TeamCount( ent->client->ps.clientNum, TEAM_RED ); +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 88 +ADDRGP4 TeamCount +CALLI4 +ASGNI4 +ADDRLP4 68+4 +ADDRLP4 88 +INDIRI4 +ASGNI4 +line 656 +;654: +;655: // We allow a spread of two +;656: if ( team == TEAM_RED && counts[TEAM_RED] - counts[TEAM_BLUE] > 1 ) { +ADDRLP4 92 +CNSTI4 1 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 92 +INDIRI4 +NEI4 $341 +ADDRLP4 68+4 +INDIRI4 +ADDRLP4 68+8 +INDIRI4 +SUBI4 +ADDRLP4 92 +INDIRI4 +LEI4 $341 +line 666 +;657: //For now, don't do this. The legalize function will set powers properly now. +;658: /* +;659: if (g_forceBasedTeams.integer && ent->client->ps.fd.forceSide == FORCE_DARKSIDE) +;660: { +;661: trap_SendServerCommand( ent->client->ps.clientNum, +;662: va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "TOOMANYRED_SWITCH")) ); +;663: } +;664: else +;665: */ +;666: { +line 667 +;667: trap_SendServerCommand( ent->client->ps.clientNum, +ADDRGP4 $116 +ARGP4 +ADDRGP4 $345 +ARGP4 +ADDRLP4 96 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 96 +INDIRP4 +ARGP4 +ADDRLP4 100 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 100 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 669 +;668: va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "TOOMANYRED")) ); +;669: } +line 670 +;670: return; // ignore the request +ADDRGP4 $306 +JUMPV +LABELV $341 +line 672 +;671: } +;672: if ( team == TEAM_BLUE && counts[TEAM_BLUE] - counts[TEAM_RED] > 1 ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +NEI4 $324 +ADDRLP4 68+8 +INDIRI4 +ADDRLP4 68+4 +INDIRI4 +SUBI4 +CNSTI4 1 +LEI4 $324 +line 682 +;673: //For now, don't do this. The legalize function will set powers properly now. +;674: /* +;675: if (g_forceBasedTeams.integer && ent->client->ps.fd.forceSide == FORCE_LIGHTSIDE) +;676: { +;677: trap_SendServerCommand( ent->client->ps.clientNum, +;678: va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "TOOMANYBLUE_SWITCH")) ); +;679: } +;680: else +;681: */ +;682: { +line 683 +;683: trap_SendServerCommand( ent->client->ps.clientNum, +ADDRGP4 $116 +ARGP4 +ADDRGP4 $350 +ARGP4 +ADDRLP4 96 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 96 +INDIRP4 +ARGP4 +ADDRLP4 100 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 100 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 685 +;684: va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "TOOMANYBLUE")) ); +;685: } +line 686 +;686: return; // ignore the request +ADDRGP4 $306 +JUMPV +line 690 +;687: } +;688: +;689: // It's ok, the team we are switching to has less or same number of players +;690: } +line 709 +;691: +;692: //For now, don't do this. The legalize function will set powers properly now. +;693: /* +;694: if (g_forceBasedTeams.integer) +;695: { +;696: if (team == TEAM_BLUE && ent->client->ps.fd.forceSide != FORCE_LIGHTSIDE) +;697: { +;698: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "MUSTBELIGHT")) ); +;699: return; +;700: } +;701: if (team == TEAM_RED && ent->client->ps.fd.forceSide != FORCE_DARKSIDE) +;702: { +;703: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "MUSTBEDARK")) ); +;704: return; +;705: } +;706: } +;707: */ +;708: +;709: } else { +LABELV $323 +line 711 +;710: // force them to spectators if there aren't any spots free +;711: team = TEAM_FREE; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 712 +;712: } +LABELV $324 +LABELV $319 +LABELV $316 +LABELV $313 +LABELV $308 +line 715 +;713: +;714: // override decision if limiting the players +;715: if ( (g_gametype.integer == GT_TOURNAMENT) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $351 +ADDRGP4 level+76 +INDIRI4 +CNSTI4 2 +LTI4 $351 +line 716 +;716: && level.numNonSpectatorClients >= 2 ) { +line 717 +;717: team = TEAM_SPECTATOR; +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +line 718 +;718: } else if ( g_maxGameClients.integer > 0 && +ADDRGP4 $352 +JUMPV +LABELV $351 +ADDRGP4 g_maxGameClients+12 +INDIRI4 +CNSTI4 0 +LEI4 $355 +ADDRGP4 level+76 +INDIRI4 +ADDRGP4 g_maxGameClients+12 +INDIRI4 +LTI4 $355 +line 719 +;719: level.numNonSpectatorClients >= g_maxGameClients.integer ) { +line 720 +;720: team = TEAM_SPECTATOR; +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +line 721 +;721: } +LABELV $355 +LABELV $352 +line 726 +;722: +;723: // +;724: // decide if we will allow the change +;725: // +;726: oldTeam = client->sess.sessionTeam; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 727 +;727: if ( team == oldTeam && team != TEAM_SPECTATOR ) { +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +NEI4 $360 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +EQI4 $360 +line 728 +;728: return; +ADDRGP4 $306 +JUMPV +LABELV $360 +line 736 +;729: } +;730: +;731: // +;732: // execute the team change +;733: // +;734: +;735: // if the player was dead leave the body +;736: if ( client->ps.stats[STAT_HEALTH] <= 0 ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $362 +line 737 +;737: CopyToBodyQue(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 CopyToBodyQue +CALLV +pop +line 738 +;738: } +LABELV $362 +line 741 +;739: +;740: // he starts at 'base' +;741: client->pers.teamState.state = TEAM_BEGIN; +ADDRLP4 0 +INDIRP4 +CNSTI4 1460 +ADDP4 +CNSTI4 0 +ASGNI4 +line 742 +;742: if ( oldTeam != TEAM_SPECTATOR ) { +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +EQI4 $364 +line 744 +;743: // Kill him (makes sure he loses flags, etc) +;744: ent->flags &= ~FL_GODMODE; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +CNSTI4 472 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRLP4 56 +INDIRP4 +INDIRI4 +CNSTI4 -17 +BANDI4 +ASGNI4 +line 745 +;745: ent->client->ps.stats[STAT_HEALTH] = ent->health = 0; +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +CNSTI4 0 +ASGNI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 676 +ADDP4 +ADDRLP4 64 +INDIRI4 +ASGNI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 216 +ADDP4 +ADDRLP4 64 +INDIRI4 +ASGNI4 +line 746 +;746: player_die (ent, ent, ent, 100000, MOD_SUICIDE); +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ARGP4 +ADDRLP4 68 +INDIRP4 +ARGP4 +ADDRLP4 68 +INDIRP4 +ARGP4 +CNSTI4 100000 +ARGI4 +CNSTI4 35 +ARGI4 +ADDRGP4 player_die +CALLV +pop +line 748 +;747: +;748: } +LABELV $364 +line 750 +;749: // they go to the end of the line for tournements +;750: if ( team == TEAM_SPECTATOR ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +NEI4 $366 +line 751 +;751: client->sess.spectatorTime = level.time; +ADDRLP4 0 +INDIRP4 +CNSTI4 1524 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +ASGNI4 +line 752 +;752: } +LABELV $366 +line 754 +;753: +;754: client->sess.sessionTeam = team; +ADDRLP4 0 +INDIRP4 +CNSTI4 1520 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 755 +;755: client->sess.spectatorState = specState; +ADDRLP4 0 +INDIRP4 +CNSTI4 1528 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 756 +;756: client->sess.spectatorClient = specClient; +ADDRLP4 0 +INDIRP4 +CNSTI4 1532 +ADDP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 758 +;757: +;758: client->sess.teamLeader = qfalse; +ADDRLP4 0 +INDIRP4 +CNSTI4 1560 +ADDP4 +CNSTI4 0 +ASGNI4 +line 759 +;759: if ( team == TEAM_RED || team == TEAM_BLUE ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +EQI4 $371 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +NEI4 $369 +LABELV $371 +line 760 +;760: teamLeader = TeamLeader( team ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 60 +ADDRGP4 TeamLeader +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 60 +INDIRI4 +ASGNI4 +line 762 +;761: // if there is no team leader or the team leader is a bot and this client is not a bot +;762: if ( teamLeader == -1 || ( !(g_entities[clientNum].r.svFlags & SVF_BOT) && (g_entities[teamLeader].r.svFlags & SVF_BOT) ) ) { +ADDRLP4 64 +ADDRLP4 24 +INDIRI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 -1 +EQI4 $378 +ADDRLP4 68 +CNSTI4 828 +ASGNI4 +ADDRLP4 72 +CNSTI4 8 +ASGNI4 +ADDRLP4 76 +CNSTI4 0 +ASGNI4 +ADDRLP4 68 +INDIRI4 +ADDRLP4 12 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +ADDRLP4 72 +INDIRI4 +BANDI4 +ADDRLP4 76 +INDIRI4 +NEI4 $372 +ADDRLP4 68 +INDIRI4 +ADDRLP4 64 +INDIRI4 +MULI4 +ADDRGP4 g_entities+296+8 +ADDP4 +INDIRI4 +ADDRLP4 72 +INDIRI4 +BANDI4 +ADDRLP4 76 +INDIRI4 +EQI4 $372 +LABELV $378 +line 763 +;763: SetLeader( team, clientNum ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRGP4 SetLeader +CALLV +pop +line 764 +;764: } +LABELV $372 +line 765 +;765: } +LABELV $369 +line 767 +;766: // make sure there is a team leader on the team the player came from +;767: if ( oldTeam == TEAM_RED || oldTeam == TEAM_BLUE ) { +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +EQI4 $381 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +NEI4 $379 +LABELV $381 +line 768 +;768: CheckTeamLeader( oldTeam ); +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 CheckTeamLeader +CALLV +pop +line 769 +;769: } +LABELV $379 +line 771 +;770: +;771: BroadcastTeamChange( client, oldTeam ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 BroadcastTeamChange +CALLV +pop +line 774 +;772: +;773: // get and distribute relevent paramters +;774: ClientUserinfoChanged( clientNum ); +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRGP4 ClientUserinfoChanged +CALLV +pop +line 776 +;775: +;776: ClientBegin( clientNum, qfalse ); +ADDRLP4 12 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 ClientBegin +CALLV +pop +line 777 +;777:} +LABELV $306 +endproc SetTeam 104 20 +export StopFollowing +proc StopFollowing 12 0 +line 787 +;778: +;779:/* +;780:================= +;781:StopFollowing +;782: +;783:If the client being followed leaves the game, or you just want to drop +;784:to free floating spectator mode +;785:================= +;786:*/ +;787:void StopFollowing( gentity_t *ent ) { +line 788 +;788: ent->client->ps.persistant[ PERS_TEAM ] = TEAM_SPECTATOR; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 292 +ADDP4 +CNSTI4 3 +ASGNI4 +line 789 +;789: ent->client->sess.sessionTeam = TEAM_SPECTATOR; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +CNSTI4 3 +ASGNI4 +line 790 +;790: ent->client->sess.spectatorState = SPECTATOR_FREE; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +CNSTI4 1 +ASGNI4 +line 791 +;791: ent->client->ps.pm_flags &= ~PMF_FOLLOW; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 -4097 +BANDI4 +ASGNI4 +line 792 +;792: ent->r.svFlags &= ~SVF_BOT; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -9 +BANDI4 +ASGNI4 +line 793 +;793: ent->client->ps.clientNum = ent - g_entities; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 144 +ADDP4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ASGNI4 +line 794 +;794: ent->client->ps.weapon = WP_NONE; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 148 +ADDP4 +CNSTI4 0 +ASGNI4 +line 795 +;795:} +LABELV $382 +endproc StopFollowing 12 0 +export Cmd_Team_f +proc Cmd_Team_f 1068 12 +line 802 +;796: +;797:/* +;798:================= +;799:Cmd_Team_f +;800:================= +;801:*/ +;802:void Cmd_Team_f( gentity_t *ent ) { +line 806 +;803: int oldTeam; +;804: char s[MAX_TOKEN_CHARS]; +;805: +;806: if ( trap_Argc() != 2 ) { +ADDRLP4 1028 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 1028 +INDIRI4 +CNSTI4 2 +EQI4 $384 +line 807 +;807: oldTeam = ent->client->sess.sessionTeam; +ADDRLP4 1024 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +ASGNI4 +line 808 +;808: switch ( oldTeam ) { +ADDRLP4 1032 +ADDRLP4 1024 +INDIRI4 +ASGNI4 +ADDRLP4 1032 +INDIRI4 +CNSTI4 0 +LTI4 $383 +ADDRLP4 1032 +INDIRI4 +CNSTI4 3 +GTI4 $383 +ADDRLP4 1032 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $399 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $399 +address $393 +address $390 +address $388 +address $396 +code +LABELV $388 +line 810 +;809: case TEAM_BLUE: +;810: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "PRINTBLUETEAM")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $389 +ARGP4 +ADDRLP4 1036 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 1036 +INDIRP4 +ARGP4 +ADDRLP4 1040 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 1040 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 811 +;811: break; +ADDRGP4 $383 +JUMPV +LABELV $390 +line 813 +;812: case TEAM_RED: +;813: trap_SendServerCommand( ent-g_entities, va("print \"Red team\n\"", G_GetStripEdString("SVINGAME", "PRINTREDTEAM")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $392 +ARGP4 +ADDRLP4 1044 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $391 +ARGP4 +ADDRLP4 1044 +INDIRP4 +ARGP4 +ADDRLP4 1048 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 1048 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 814 +;814: break; +ADDRGP4 $383 +JUMPV +LABELV $393 +line 816 +;815: case TEAM_FREE: +;816: trap_SendServerCommand( ent-g_entities, va("print \"Free team\n\"", G_GetStripEdString("SVINGAME", "PRINTFREETEAM")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRLP4 1052 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $394 +ARGP4 +ADDRLP4 1052 +INDIRP4 +ARGP4 +ADDRLP4 1056 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 1056 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 817 +;817: break; +ADDRGP4 $383 +JUMPV +LABELV $396 +line 819 +;818: case TEAM_SPECTATOR: +;819: trap_SendServerCommand( ent-g_entities, va("print \"Spectator team\n\"", G_GetStripEdString("SVINGAME", "PRINTSPECTEAM")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRLP4 1060 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $397 +ARGP4 +ADDRLP4 1060 +INDIRP4 +ARGP4 +ADDRLP4 1064 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 1064 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 820 +;820: break; +line 822 +;821: } +;822: return; +ADDRGP4 $383 +JUMPV +LABELV $384 +line 825 +;823: } +;824: +;825: if ( ent->client->switchTeamTime > level.time ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1704 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $400 +line 826 +;826: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "NOSWITCH")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $403 +ARGP4 +ADDRLP4 1032 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRLP4 1036 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 1036 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 827 +;827: return; +ADDRGP4 $383 +JUMPV +LABELV $400 +line 831 +;828: } +;829: +;830: // if they are playing a tournement game, count as a loss +;831: if ( (g_gametype.integer == GT_TOURNAMENT ) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $404 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $404 +line 832 +;832: && ent->client->sess.sessionTeam == TEAM_FREE ) { +line 833 +;833: ent->client->sess.losses++; +ADDRLP4 1032 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1540 +ADDP4 +ASGNP4 +ADDRLP4 1032 +INDIRP4 +ADDRLP4 1032 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 834 +;834: } +LABELV $404 +line 836 +;835: +;836: trap_Argv( 1, s, sizeof( s ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 838 +;837: +;838: SetTeam( ent, s ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 SetTeam +CALLV +pop +line 840 +;839: +;840: ent->client->switchTeamTime = level.time + 5000; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1704 +ADDP4 +ADDRGP4 level+32 +INDIRI4 +CNSTI4 5000 +ADDI4 +ASGNI4 +line 841 +;841:} +LABELV $383 +endproc Cmd_Team_f 1068 12 +export Cmd_ForceChanged_f +proc Cmd_ForceChanged_f 2064 12 +line 849 +;842: +;843:/* +;844:================= +;845:Cmd_Team_f +;846:================= +;847:*/ +;848:void Cmd_ForceChanged_f( gentity_t *ent ) +;849:{ +line 853 +;850: char fpChStr[1024]; +;851: const char *buf; +;852:// Cmd_Kill_f(ent); +;853: if (ent->client->sess.sessionTeam == TEAM_SPECTATOR) +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $409 +line 854 +;854: { //if it's a spec, just make the changes now +line 857 +;855: //trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "FORCEAPPLIED")) ); +;856: //No longer print it, as the UI calls this a lot. +;857: WP_InitForcePowers( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 WP_InitForcePowers +CALLV +pop +line 858 +;858: goto argCheck; +ADDRGP4 $411 +JUMPV +LABELV $409 +line 861 +;859: } +;860: +;861: buf = G_GetStripEdString("SVINGAME", "FORCEPOWERCHANGED"); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $412 +ARGP4 +ADDRLP4 1028 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRLP4 1024 +ADDRLP4 1028 +INDIRP4 +ASGNP4 +line 863 +;862: +;863: strcpy(fpChStr, buf); +ADDRLP4 0 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 865 +;864: +;865: trap_SendServerCommand( ent-g_entities, va("print \"%s%s\n\"", S_COLOR_GREEN, fpChStr) ); +ADDRGP4 $413 +ARGP4 +ADDRGP4 $414 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1032 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 1032 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 867 +;866: +;867: ent->client->ps.fd.forceDoInit = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTI4 1 +ASGNI4 +LABELV $411 +line 869 +;868:argCheck: +;869: if (trap_Argc() > 1) +ADDRLP4 1036 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 1036 +INDIRI4 +CNSTI4 1 +LEI4 $415 +line 870 +;870: { +line 873 +;871: char arg[MAX_TOKEN_CHARS]; +;872: +;873: trap_Argv( 1, arg, sizeof( arg ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 1040 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 875 +;874: +;875: if (arg && arg[0]) +ADDRLP4 1040 +CVPU4 4 +CNSTU4 0 +EQU4 $417 +ADDRLP4 1040 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $417 +line 876 +;876: { //if there's an arg, assume it's a combo team command from the UI. +line 877 +;877: Cmd_Team_f(ent); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Cmd_Team_f +CALLV +pop +line 878 +;878: } +LABELV $417 +line 879 +;879: } +LABELV $415 +line 880 +;880:} +LABELV $408 +endproc Cmd_ForceChanged_f 2064 12 +export Cmd_Follow_f +proc Cmd_Follow_f 1040 12 +line 887 +;881: +;882:/* +;883:================= +;884:Cmd_Follow_f +;885:================= +;886:*/ +;887:void Cmd_Follow_f( gentity_t *ent ) { +line 891 +;888: int i; +;889: char arg[MAX_TOKEN_CHARS]; +;890: +;891: if ( trap_Argc() != 2 ) { +ADDRLP4 1028 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 1028 +INDIRI4 +CNSTI4 2 +EQI4 $420 +line 892 +;892: if ( ent->client->sess.spectatorState == SPECTATOR_FOLLOW ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $419 +line 893 +;893: StopFollowing( ent ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 StopFollowing +CALLV +pop +line 894 +;894: } +line 895 +;895: return; +ADDRGP4 $419 +JUMPV +LABELV $420 +line 898 +;896: } +;897: +;898: trap_Argv( 1, arg, sizeof( arg ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 899 +;899: i = ClientNumberFromString( ent, arg ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1032 +ADDRGP4 ClientNumberFromString +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 1032 +INDIRI4 +ASGNI4 +line 900 +;900: if ( i == -1 ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 -1 +NEI4 $424 +line 901 +;901: return; +ADDRGP4 $419 +JUMPV +LABELV $424 +line 905 +;902: } +;903: +;904: // can't follow self +;905: if ( &level.clients[ i ] == ent->client ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +NEU4 $426 +line 906 +;906: return; +ADDRGP4 $419 +JUMPV +LABELV $426 +line 910 +;907: } +;908: +;909: // can't follow another spectator +;910: if ( level.clients[ i ].sess.sessionTeam == TEAM_SPECTATOR ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $428 +line 911 +;911: return; +ADDRGP4 $419 +JUMPV +LABELV $428 +line 915 +;912: } +;913: +;914: // if they are playing a tournement game, count as a loss +;915: if ( (g_gametype.integer == GT_TOURNAMENT ) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $430 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $430 +line 916 +;916: && ent->client->sess.sessionTeam == TEAM_FREE ) { +line 917 +;917: ent->client->sess.losses++; +ADDRLP4 1036 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1540 +ADDP4 +ASGNP4 +ADDRLP4 1036 +INDIRP4 +ADDRLP4 1036 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 918 +;918: } +LABELV $430 +line 921 +;919: +;920: // first set them to spectator +;921: if ( ent->client->sess.sessionTeam != TEAM_SPECTATOR ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +EQI4 $433 +line 922 +;922: SetTeam( ent, "spectator" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $320 +ARGP4 +ADDRGP4 SetTeam +CALLV +pop +line 923 +;923: } +LABELV $433 +line 925 +;924: +;925: ent->client->sess.spectatorState = SPECTATOR_FOLLOW; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +CNSTI4 2 +ASGNI4 +line 926 +;926: ent->client->sess.spectatorClient = i; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1532 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 927 +;927:} +LABELV $419 +endproc Cmd_Follow_f 1040 12 +export Cmd_FollowCycle_f +proc Cmd_FollowCycle_f 12 8 +line 934 +;928: +;929:/* +;930:================= +;931:Cmd_FollowCycle_f +;932:================= +;933:*/ +;934:void Cmd_FollowCycle_f( gentity_t *ent, int dir ) { +line 939 +;935: int clientnum; +;936: int original; +;937: +;938: // if they are playing a tournement game, count as a loss +;939: if ( (g_gametype.integer == GT_TOURNAMENT ) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $436 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $436 +line 940 +;940: && ent->client->sess.sessionTeam == TEAM_FREE ) { +line 941 +;941: ent->client->sess.losses++; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1540 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 942 +;942: } +LABELV $436 +line 944 +;943: // first set them to spectator +;944: if ( ent->client->sess.spectatorState == SPECTATOR_NOT ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $439 +line 945 +;945: SetTeam( ent, "spectator" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $320 +ARGP4 +ADDRGP4 SetTeam +CALLV +pop +line 946 +;946: } +LABELV $439 +line 948 +;947: +;948: if ( dir != 1 && dir != -1 ) { +ADDRLP4 8 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +EQI4 $441 +ADDRLP4 8 +INDIRI4 +CNSTI4 -1 +EQI4 $441 +line 949 +;949: G_Error( "Cmd_FollowCycle_f: bad dir %i", dir ); +ADDRGP4 $443 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Error +CALLV +pop +line 950 +;950: } +LABELV $441 +line 952 +;951: +;952: clientnum = ent->client->sess.spectatorClient; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1532 +ADDP4 +INDIRI4 +ASGNI4 +line 953 +;953: original = clientnum; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +LABELV $444 +line 954 +;954: do { +line 955 +;955: clientnum += dir; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +ADDI4 +ASGNI4 +line 956 +;956: if ( clientnum >= level.maxclients ) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $447 +line 957 +;957: clientnum = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 958 +;958: } +LABELV $447 +line 959 +;959: if ( clientnum < 0 ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $450 +line 960 +;960: clientnum = level.maxclients - 1; +ADDRLP4 0 +ADDRGP4 level+24 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 961 +;961: } +LABELV $450 +line 964 +;962: +;963: // can only follow connected clients +;964: if ( level.clients[ clientnum ].pers.connected != CON_CONNECTED ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $453 +line 965 +;965: continue; +ADDRGP4 $445 +JUMPV +LABELV $453 +line 969 +;966: } +;967: +;968: // can't follow another spectator +;969: if ( level.clients[ clientnum ].sess.sessionTeam == TEAM_SPECTATOR ) { +CNSTI4 1756 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 level +INDIRP4 +ADDP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $455 +line 970 +;970: continue; +ADDRGP4 $445 +JUMPV +LABELV $455 +line 974 +;971: } +;972: +;973: // this is good, we can use it +;974: ent->client->sess.spectatorClient = clientnum; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1532 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 975 +;975: ent->client->sess.spectatorState = SPECTATOR_FOLLOW; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1528 +ADDP4 +CNSTI4 2 +ASGNI4 +line 976 +;976: return; +ADDRGP4 $435 +JUMPV +LABELV $445 +line 977 +;977: } while ( clientnum != original ); +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $444 +line 980 +;978: +;979: // leave it where it was +;980:} +LABELV $435 +endproc Cmd_FollowCycle_f 12 8 +proc G_SayTo 24 24 +line 989 +;981: +;982: +;983:/* +;984:================== +;985:G_Say +;986:================== +;987:*/ +;988: +;989:static void G_SayTo( gentity_t *ent, gentity_t *other, int mode, int color, const char *name, const char *message ) { +line 990 +;990: if (!other) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $458 +line 991 +;991: return; +ADDRGP4 $457 +JUMPV +LABELV $458 +line 993 +;992: } +;993: if (!other->inuse) { +ADDRFP4 4 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $460 +line 994 +;994: return; +ADDRGP4 $457 +JUMPV +LABELV $460 +line 996 +;995: } +;996: if (!other->client) { +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $462 +line 997 +;997: return; +ADDRGP4 $457 +JUMPV +LABELV $462 +line 999 +;998: } +;999: if ( other->client->pers.connected != CON_CONNECTED ) { +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1368 +ADDP4 +INDIRI4 +CNSTI4 2 +EQI4 $464 +line 1000 +;1000: return; +ADDRGP4 $457 +JUMPV +LABELV $464 +line 1002 +;1001: } +;1002: if ( mode == SAY_TEAM && !OnSameTeam(ent, other) ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $466 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 OnSameTeam +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $466 +line 1003 +;1003: return; +ADDRGP4 $457 +JUMPV +LABELV $466 +line 1006 +;1004: } +;1005: // no chatting to players in tournements +;1006: if ( (g_gametype.integer == GT_TOURNAMENT ) +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $468 +ADDRLP4 4 +CNSTI4 408 +ASGNI4 +ADDRLP4 8 +CNSTI4 1520 +ASGNI4 +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +NEI4 $468 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $468 +line 1008 +;1007: && other->client->sess.sessionTeam == TEAM_FREE +;1008: && ent->client->sess.sessionTeam != TEAM_FREE ) { +line 1009 +;1009: return; +ADDRGP4 $457 +JUMPV +LABELV $468 +line 1012 +;1010: } +;1011: +;1012: trap_SendServerCommand( other-g_entities, va("%s \"%s%c%c%s\"", +ADDRGP4 $471 +ARGP4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $475 +ADDRLP4 16 +ADDRGP4 $472 +ASGNP4 +ADDRGP4 $476 +JUMPV +LABELV $475 +ADDRLP4 16 +ADDRGP4 $473 +ASGNP4 +LABELV $476 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRP4 +ARGP4 +CNSTI4 94 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1015 +;1013: mode == SAY_TEAM ? "tchat" : "chat", +;1014: name, Q_COLOR_ESCAPE, color, message)); +;1015:} +LABELV $457 +endproc G_SayTo 24 24 +export G_Say +proc G_Say 320 28 +line 1019 +;1016: +;1017:#define EC "\x19" +;1018: +;1019:void G_Say( gentity_t *ent, gentity_t *target, int mode, const char *chatText ) { +line 1028 +;1020: int j; +;1021: gentity_t *other; +;1022: int color; +;1023: char name[64]; +;1024: // don't let text be too long for malicious reasons +;1025: char text[MAX_SAY_TEXT]; +;1026: char location[64]; +;1027: +;1028: if ( g_gametype.integer < GT_TEAM && mode == SAY_TEAM ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +GEI4 $478 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $478 +line 1029 +;1029: mode = SAY_ALL; +ADDRFP4 8 +CNSTI4 0 +ASGNI4 +line 1030 +;1030: } +LABELV $478 +line 1032 +;1031: +;1032: switch ( mode ) { +ADDRLP4 292 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 292 +INDIRI4 +CNSTI4 0 +EQI4 $483 +ADDRLP4 292 +INDIRI4 +CNSTI4 1 +EQI4 $486 +ADDRLP4 292 +INDIRI4 +CNSTI4 2 +EQI4 $492 +ADDRGP4 $481 +JUMPV +LABELV $481 +LABELV $483 +line 1035 +;1033: default: +;1034: case SAY_ALL: +;1035: G_LogPrintf( "say: %s: %s\n", ent->client->pers.netname, chatText ); +ADDRGP4 $484 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1036 +;1036: Com_sprintf (name, sizeof(name), "%s%c%c"EC": ", ent->client->pers.netname, Q_COLOR_ESCAPE, COLOR_WHITE ); +ADDRLP4 158 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $485 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +CNSTI4 94 +ARGI4 +CNSTI4 55 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1037 +;1037: color = COLOR_GREEN; +ADDRLP4 224 +CNSTI4 50 +ASGNI4 +line 1038 +;1038: break; +ADDRGP4 $482 +JUMPV +LABELV $486 +line 1040 +;1039: case SAY_TEAM: +;1040: G_LogPrintf( "sayteam: %s: %s\n", ent->client->pers.netname, chatText ); +ADDRGP4 $487 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1041 +;1041: if (Team_GetLocationMsg(ent, location, sizeof(location))) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 228 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 296 +ADDRGP4 Team_GetLocationMsg +CALLI4 +ASGNI4 +ADDRLP4 296 +INDIRI4 +CNSTI4 0 +EQI4 $488 +line 1042 +;1042: Com_sprintf (name, sizeof(name), EC"(%s%c%c"EC") (%s)"EC": ", +ADDRLP4 158 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $490 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +CNSTI4 94 +ARGI4 +CNSTI4 55 +ARGI4 +ADDRLP4 228 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +ADDRGP4 $489 +JUMPV +LABELV $488 +line 1045 +;1043: ent->client->pers.netname, Q_COLOR_ESCAPE, COLOR_WHITE, location); +;1044: else +;1045: Com_sprintf (name, sizeof(name), EC"(%s%c%c"EC")"EC": ", +ADDRLP4 158 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $491 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +CNSTI4 94 +ARGI4 +CNSTI4 55 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +LABELV $489 +line 1047 +;1046: ent->client->pers.netname, Q_COLOR_ESCAPE, COLOR_WHITE ); +;1047: color = COLOR_CYAN; +ADDRLP4 224 +CNSTI4 53 +ASGNI4 +line 1048 +;1048: break; +ADDRGP4 $482 +JUMPV +LABELV $492 +line 1050 +;1049: case SAY_TELL: +;1050: if (target && g_gametype.integer >= GT_TEAM && +ADDRLP4 300 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 300 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $493 +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $493 +ADDRLP4 304 +CNSTI4 408 +ASGNI4 +ADDRLP4 308 +CNSTI4 1520 +ASGNI4 +ADDRLP4 312 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 300 +INDIRP4 +ADDRLP4 304 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 308 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 312 +INDIRP4 +ADDRLP4 304 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 308 +INDIRI4 +ADDP4 +INDIRI4 +NEI4 $493 +ADDRLP4 312 +INDIRP4 +ARGP4 +ADDRLP4 228 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 316 +ADDRGP4 Team_GetLocationMsg +CALLI4 +ASGNI4 +ADDRLP4 316 +INDIRI4 +CNSTI4 0 +EQI4 $493 +line 1053 +;1051: target->client->sess.sessionTeam == ent->client->sess.sessionTeam && +;1052: Team_GetLocationMsg(ent, location, sizeof(location))) +;1053: Com_sprintf (name, sizeof(name), EC"[%s%c%c"EC"] (%s)"EC": ", ent->client->pers.netname, Q_COLOR_ESCAPE, COLOR_WHITE, location ); +ADDRLP4 158 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $496 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +CNSTI4 94 +ARGI4 +CNSTI4 55 +ARGI4 +ADDRLP4 228 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +ADDRGP4 $494 +JUMPV +LABELV $493 +line 1055 +;1054: else +;1055: Com_sprintf (name, sizeof(name), EC"[%s%c%c"EC"]"EC": ", ent->client->pers.netname, Q_COLOR_ESCAPE, COLOR_WHITE ); +ADDRLP4 158 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $497 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +CNSTI4 94 +ARGI4 +CNSTI4 55 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +LABELV $494 +line 1056 +;1056: color = COLOR_MAGENTA; +ADDRLP4 224 +CNSTI4 54 +ASGNI4 +line 1057 +;1057: break; +LABELV $482 +line 1060 +;1058: } +;1059: +;1060: Q_strncpyz( text, chatText, sizeof(text) ); +ADDRLP4 8 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +CNSTI4 150 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1062 +;1061: +;1062: if ( target ) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $498 +line 1063 +;1063: G_SayTo( ent, target, mode, color, name, text ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 224 +INDIRI4 +ARGI4 +ADDRLP4 158 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 G_SayTo +CALLV +pop +line 1064 +;1064: return; +ADDRGP4 $477 +JUMPV +LABELV $498 +line 1068 +;1065: } +;1066: +;1067: // echo the text to the console +;1068: if ( g_dedicated.integer ) { +ADDRGP4 g_dedicated+12 +INDIRI4 +CNSTI4 0 +EQI4 $500 +line 1069 +;1069: G_Printf( "%s%s\n", name, text); +ADDRGP4 $503 +ARGP4 +ADDRLP4 158 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 1070 +;1070: } +LABELV $500 +line 1073 +;1071: +;1072: // send it to all the apropriate clients +;1073: for (j = 0; j < level.maxclients; j++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $507 +JUMPV +LABELV $504 +line 1074 +;1074: other = &g_entities[j]; +ADDRLP4 4 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1075 +;1075: G_SayTo( ent, other, mode, color, name, text ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 224 +INDIRI4 +ARGI4 +ADDRLP4 158 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRGP4 G_SayTo +CALLV +pop +line 1076 +;1076: } +LABELV $505 +line 1073 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $507 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $504 +line 1077 +;1077:} +LABELV $477 +endproc G_Say 320 28 +proc Cmd_Say_f 12 16 +line 1085 +;1078: +;1079: +;1080:/* +;1081:================== +;1082:Cmd_Say_f +;1083:================== +;1084:*/ +;1085:static void Cmd_Say_f( gentity_t *ent, int mode, qboolean arg0 ) { +line 1088 +;1086: char *p; +;1087: +;1088: if ( trap_Argc () < 2 && !arg0 ) { +ADDRLP4 4 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +GEI4 $510 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $510 +line 1089 +;1089: return; +ADDRGP4 $509 +JUMPV +LABELV $510 +line 1092 +;1090: } +;1091: +;1092: if (arg0) +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $512 +line 1093 +;1093: { +line 1094 +;1094: p = ConcatArgs( 0 ); +CNSTI4 0 +ARGI4 +ADDRLP4 8 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1095 +;1095: } +ADDRGP4 $513 +JUMPV +LABELV $512 +line 1097 +;1096: else +;1097: { +line 1098 +;1098: p = ConcatArgs( 1 ); +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1099 +;1099: } +LABELV $513 +line 1101 +;1100: +;1101: G_Say( ent, NULL, mode, p ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTP4 0 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 G_Say +CALLV +pop +line 1102 +;1102:} +LABELV $509 +endproc Cmd_Say_f 12 16 +proc Cmd_Tell_f 1076 16 +line 1109 +;1103: +;1104:/* +;1105:================== +;1106:Cmd_Tell_f +;1107:================== +;1108:*/ +;1109:static void Cmd_Tell_f( gentity_t *ent ) { +line 1115 +;1110: int targetNum; +;1111: gentity_t *target; +;1112: char *p; +;1113: char arg[MAX_TOKEN_CHARS]; +;1114: +;1115: if ( trap_Argc () < 2 ) { +ADDRLP4 1036 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 1036 +INDIRI4 +CNSTI4 2 +GEI4 $515 +line 1116 +;1116: return; +ADDRGP4 $514 +JUMPV +LABELV $515 +line 1119 +;1117: } +;1118: +;1119: trap_Argv( 1, arg, sizeof( arg ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 1120 +;1120: targetNum = atoi( arg ); +ADDRLP4 12 +ARGP4 +ADDRLP4 1040 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 1040 +INDIRI4 +ASGNI4 +line 1121 +;1121: if ( targetNum < 0 || targetNum >= level.maxclients ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $520 +ADDRLP4 4 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $517 +LABELV $520 +line 1122 +;1122: return; +ADDRGP4 $514 +JUMPV +LABELV $517 +line 1125 +;1123: } +;1124: +;1125: target = &g_entities[targetNum]; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1126 +;1126: if ( !target || !target->inuse || !target->client ) { +ADDRLP4 1052 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 1052 +INDIRU4 +EQU4 $524 +ADDRLP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $524 +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 1052 +INDIRU4 +NEU4 $521 +LABELV $524 +line 1127 +;1127: return; +ADDRGP4 $514 +JUMPV +LABELV $521 +line 1130 +;1128: } +;1129: +;1130: p = ConcatArgs( 2 ); +CNSTI4 2 +ARGI4 +ADDRLP4 1056 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 1056 +INDIRP4 +ASGNP4 +line 1132 +;1131: +;1132: G_LogPrintf( "tell: %s to %s: %s\n", ent->client->pers.netname, target->client->pers.netname, p ); +ADDRGP4 $525 +ARGP4 +ADDRLP4 1060 +CNSTI4 408 +ASGNI4 +ADDRLP4 1064 +CNSTI4 1416 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 1060 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 1064 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 1060 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 1064 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1133 +;1133: G_Say( ent, target, SAY_TELL, p ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 G_Say +CALLV +pop +line 1136 +;1134: // don't tell to the player self if it was already directed to this player +;1135: // also don't send the chat back to a bot +;1136: if ( ent != target && !(ent->r.svFlags & SVF_BOT)) { +ADDRLP4 1068 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1068 +INDIRP4 +CVPU4 4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +EQU4 $526 +ADDRLP4 1068 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $526 +line 1137 +;1137: G_Say( ent, ent, SAY_TELL, p ); +ADDRLP4 1072 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1072 +INDIRP4 +ARGP4 +ADDRLP4 1072 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 G_Say +CALLV +pop +line 1138 +;1138: } +LABELV $526 +line 1139 +;1139:} +LABELV $514 +endproc Cmd_Tell_f 1076 16 +proc G_VoiceTo 16 24 +line 1142 +;1140: +;1141: +;1142:static void G_VoiceTo( gentity_t *ent, gentity_t *other, int mode, const char *id, qboolean voiceonly ) { +line 1146 +;1143: int color; +;1144: char *cmd; +;1145: +;1146: if (!other) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $529 +line 1147 +;1147: return; +ADDRGP4 $528 +JUMPV +LABELV $529 +line 1149 +;1148: } +;1149: if (!other->inuse) { +ADDRFP4 4 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $531 +line 1150 +;1150: return; +ADDRGP4 $528 +JUMPV +LABELV $531 +line 1152 +;1151: } +;1152: if (!other->client) { +ADDRFP4 4 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $533 +line 1153 +;1153: return; +ADDRGP4 $528 +JUMPV +LABELV $533 +line 1155 +;1154: } +;1155: if ( mode == SAY_TEAM && !OnSameTeam(ent, other) ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $535 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 OnSameTeam +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $535 +line 1156 +;1156: return; +ADDRGP4 $528 +JUMPV +LABELV $535 +line 1159 +;1157: } +;1158: // no chatting to players in tournements +;1159: if ( (g_gametype.integer == GT_TOURNAMENT )) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 3 +NEI4 $537 +line 1160 +;1160: return; +ADDRGP4 $528 +JUMPV +LABELV $537 +line 1163 +;1161: } +;1162: +;1163: if (mode == SAY_TEAM) { +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $540 +line 1164 +;1164: color = COLOR_CYAN; +ADDRLP4 0 +CNSTI4 53 +ASGNI4 +line 1165 +;1165: cmd = "vtchat"; +ADDRLP4 4 +ADDRGP4 $542 +ASGNP4 +line 1166 +;1166: } +ADDRGP4 $541 +JUMPV +LABELV $540 +line 1167 +;1167: else if (mode == SAY_TELL) { +ADDRFP4 8 +INDIRI4 +CNSTI4 2 +NEI4 $543 +line 1168 +;1168: color = COLOR_MAGENTA; +ADDRLP4 0 +CNSTI4 54 +ASGNI4 +line 1169 +;1169: cmd = "vtell"; +ADDRLP4 4 +ADDRGP4 $545 +ASGNP4 +line 1170 +;1170: } +ADDRGP4 $544 +JUMPV +LABELV $543 +line 1171 +;1171: else { +line 1172 +;1172: color = COLOR_GREEN; +ADDRLP4 0 +CNSTI4 50 +ASGNI4 +line 1173 +;1173: cmd = "vchat"; +ADDRLP4 4 +ADDRGP4 $546 +ASGNP4 +line 1174 +;1174: } +LABELV $544 +LABELV $541 +line 1176 +;1175: +;1176: trap_SendServerCommand( other-g_entities, va("%s %d %d %d %s", cmd, voiceonly, ent->s.number, color, id)); +ADDRGP4 $547 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1177 +;1177:} +LABELV $528 +endproc G_VoiceTo 16 24 +export G_Voice +proc G_Voice 8 20 +line 1179 +;1178: +;1179:void G_Voice( gentity_t *ent, gentity_t *target, int mode, const char *id, qboolean voiceonly ) { +line 1183 +;1180: int j; +;1181: gentity_t *other; +;1182: +;1183: if ( g_gametype.integer < GT_TEAM && mode == SAY_TEAM ) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +GEI4 $549 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $549 +line 1184 +;1184: mode = SAY_ALL; +ADDRFP4 8 +CNSTI4 0 +ASGNI4 +line 1185 +;1185: } +LABELV $549 +line 1187 +;1186: +;1187: if ( target ) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $552 +line 1188 +;1188: G_VoiceTo( ent, target, mode, id, voiceonly ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRGP4 G_VoiceTo +CALLV +pop +line 1189 +;1189: return; +ADDRGP4 $548 +JUMPV +LABELV $552 +line 1193 +;1190: } +;1191: +;1192: // echo the text to the console +;1193: if ( g_dedicated.integer ) { +ADDRGP4 g_dedicated+12 +INDIRI4 +CNSTI4 0 +EQI4 $554 +line 1194 +;1194: G_Printf( "voice: %s %s\n", ent->client->pers.netname, id); +ADDRGP4 $557 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1416 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 G_Printf +CALLV +pop +line 1195 +;1195: } +LABELV $554 +line 1198 +;1196: +;1197: // send it to all the apropriate clients +;1198: for (j = 0; j < level.maxclients; j++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $561 +JUMPV +LABELV $558 +line 1199 +;1199: other = &g_entities[j]; +ADDRLP4 4 +CNSTI4 828 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1200 +;1200: G_VoiceTo( ent, other, mode, id, voiceonly ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRGP4 G_VoiceTo +CALLV +pop +line 1201 +;1201: } +LABELV $559 +line 1198 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $561 +ADDRLP4 0 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $558 +line 1202 +;1202:} +LABELV $548 +endproc G_Voice 8 20 +proc Cmd_Voice_f 12 20 +line 1209 +;1203: +;1204:/* +;1205:================== +;1206:Cmd_Voice_f +;1207:================== +;1208:*/ +;1209:static void Cmd_Voice_f( gentity_t *ent, int mode, qboolean arg0, qboolean voiceonly ) { +line 1212 +;1210: char *p; +;1211: +;1212: if ( trap_Argc () < 2 && !arg0 ) { +ADDRLP4 4 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +GEI4 $564 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $564 +line 1213 +;1213: return; +ADDRGP4 $563 +JUMPV +LABELV $564 +line 1216 +;1214: } +;1215: +;1216: if (arg0) +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $566 +line 1217 +;1217: { +line 1218 +;1218: p = ConcatArgs( 0 ); +CNSTI4 0 +ARGI4 +ADDRLP4 8 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1219 +;1219: } +ADDRGP4 $567 +JUMPV +LABELV $566 +line 1221 +;1220: else +;1221: { +line 1222 +;1222: p = ConcatArgs( 1 ); +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1223 +;1223: } +LABELV $567 +line 1225 +;1224: +;1225: G_Voice( ent, NULL, mode, p, voiceonly ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTP4 0 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1226 +;1226:} +LABELV $563 +endproc Cmd_Voice_f 12 20 +proc Cmd_VoiceTell_f 1076 20 +line 1233 +;1227: +;1228:/* +;1229:================== +;1230:Cmd_VoiceTell_f +;1231:================== +;1232:*/ +;1233:static void Cmd_VoiceTell_f( gentity_t *ent, qboolean voiceonly ) { +line 1239 +;1234: int targetNum; +;1235: gentity_t *target; +;1236: char *id; +;1237: char arg[MAX_TOKEN_CHARS]; +;1238: +;1239: if ( trap_Argc () < 2 ) { +ADDRLP4 1036 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 1036 +INDIRI4 +CNSTI4 2 +GEI4 $569 +line 1240 +;1240: return; +ADDRGP4 $568 +JUMPV +LABELV $569 +line 1243 +;1241: } +;1242: +;1243: trap_Argv( 1, arg, sizeof( arg ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 1244 +;1244: targetNum = atoi( arg ); +ADDRLP4 12 +ARGP4 +ADDRLP4 1040 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 1040 +INDIRI4 +ASGNI4 +line 1245 +;1245: if ( targetNum < 0 || targetNum >= level.maxclients ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $574 +ADDRLP4 4 +INDIRI4 +ADDRGP4 level+24 +INDIRI4 +LTI4 $571 +LABELV $574 +line 1246 +;1246: return; +ADDRGP4 $568 +JUMPV +LABELV $571 +line 1249 +;1247: } +;1248: +;1249: target = &g_entities[targetNum]; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1250 +;1250: if ( !target || !target->inuse || !target->client ) { +ADDRLP4 1052 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 1052 +INDIRU4 +EQU4 $578 +ADDRLP4 0 +INDIRP4 +CNSTI4 412 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $578 +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 1052 +INDIRU4 +NEU4 $575 +LABELV $578 +line 1251 +;1251: return; +ADDRGP4 $568 +JUMPV +LABELV $575 +line 1254 +;1252: } +;1253: +;1254: id = ConcatArgs( 2 ); +CNSTI4 2 +ARGI4 +ADDRLP4 1056 +ADDRGP4 ConcatArgs +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 1056 +INDIRP4 +ASGNP4 +line 1256 +;1255: +;1256: G_LogPrintf( "vtell: %s to %s: %s\n", ent->client->pers.netname, target->client->pers.netname, id ); +ADDRGP4 $579 +ARGP4 +ADDRLP4 1060 +CNSTI4 408 +ASGNI4 +ADDRLP4 1064 +CNSTI4 1416 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 1060 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 1064 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 1060 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 1064 +INDIRI4 +ADDP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 G_LogPrintf +CALLV +pop +line 1257 +;1257: G_Voice( ent, target, SAY_TELL, id, voiceonly ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1260 +;1258: // don't tell to the player self if it was already directed to this player +;1259: // also don't send the chat back to a bot +;1260: if ( ent != target && !(ent->r.svFlags & SVF_BOT)) { +ADDRLP4 1068 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1068 +INDIRP4 +CVPU4 4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +EQU4 $580 +ADDRLP4 1068 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $580 +line 1261 +;1261: G_Voice( ent, ent, SAY_TELL, id, voiceonly ); +ADDRLP4 1072 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1072 +INDIRP4 +ARGP4 +ADDRLP4 1072 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1262 +;1262: } +LABELV $580 +line 1263 +;1263:} +LABELV $568 +endproc Cmd_VoiceTell_f 1076 20 +proc Cmd_VoiceTaunt_f 56 20 +line 1271 +;1264: +;1265: +;1266:/* +;1267:================== +;1268:Cmd_VoiceTaunt_f +;1269:================== +;1270:*/ +;1271:static void Cmd_VoiceTaunt_f( gentity_t *ent ) { +line 1275 +;1272: gentity_t *who; +;1273: int i; +;1274: +;1275: if (!ent->client) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $583 +line 1276 +;1276: return; +ADDRGP4 $582 +JUMPV +LABELV $583 +line 1280 +;1277: } +;1278: +;1279: // insult someone who just killed you +;1280: if (ent->enemy && ent->enemy->client && ent->enemy->client->lastkilled_client == ent->s.number) { +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 8 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTU4 0 +ASGNU4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +EQU4 $585 +ADDRLP4 20 +ADDRLP4 12 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +EQU4 $585 +ADDRLP4 20 +INDIRP4 +CNSTI4 1660 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +NEI4 $585 +line 1282 +;1281: // i am a dead corpse +;1282: if (!(ent->enemy->r.svFlags & SVF_BOT)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $587 +line 1283 +;1283: G_Voice( ent, ent->enemy, SAY_TELL, VOICECHAT_DEATHINSULT, qfalse ); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 728 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $589 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1284 +;1284: } +LABELV $587 +line 1285 +;1285: if (!(ent->r.svFlags & SVF_BOT)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $590 +line 1286 +;1286: G_Voice( ent, ent, SAY_TELL, VOICECHAT_DEATHINSULT, qfalse ); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $589 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1287 +;1287: } +LABELV $590 +line 1288 +;1288: ent->enemy = NULL; +ADDRFP4 0 +INDIRP4 +CNSTI4 728 +ADDP4 +CNSTP4 0 +ASGNP4 +line 1289 +;1289: return; +ADDRGP4 $582 +JUMPV +LABELV $585 +line 1292 +;1290: } +;1291: // insult someone you just killed +;1292: if (ent->client->lastkilled_client >= 0 && ent->client->lastkilled_client != ent->s.number) { +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +ADDRLP4 24 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1660 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +LTI4 $592 +ADDRLP4 28 +INDIRI4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +EQI4 $592 +line 1293 +;1293: who = g_entities + ent->client->lastkilled_client; +ADDRLP4 0 +CNSTI4 828 +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1660 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1294 +;1294: if (who->client) { +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $594 +line 1296 +;1295: // who is the person I just killed +;1296: if (who->client->lasthurt_mod == MOD_STUN_BATON) { +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1668 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $596 +line 1297 +;1297: if (!(who->r.svFlags & SVF_BOT)) { +ADDRLP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $598 +line 1298 +;1298: G_Voice( ent, who, SAY_TELL, VOICECHAT_KILLGAUNTLET, qfalse ); // and I killed them with a gauntlet +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $600 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1299 +;1299: } +LABELV $598 +line 1300 +;1300: if (!(ent->r.svFlags & SVF_BOT)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $597 +line 1301 +;1301: G_Voice( ent, ent, SAY_TELL, VOICECHAT_KILLGAUNTLET, qfalse ); +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $600 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1302 +;1302: } +line 1303 +;1303: } else { +ADDRGP4 $597 +JUMPV +LABELV $596 +line 1304 +;1304: if (!(who->r.svFlags & SVF_BOT)) { +ADDRLP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $603 +line 1305 +;1305: G_Voice( ent, who, SAY_TELL, VOICECHAT_KILLINSULT, qfalse ); // and I killed them with something else +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $605 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1306 +;1306: } +LABELV $603 +line 1307 +;1307: if (!(ent->r.svFlags & SVF_BOT)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $606 +line 1308 +;1308: G_Voice( ent, ent, SAY_TELL, VOICECHAT_KILLINSULT, qfalse ); +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $605 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1309 +;1309: } +LABELV $606 +line 1310 +;1310: } +LABELV $597 +line 1311 +;1311: ent->client->lastkilled_client = -1; +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1660 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 1312 +;1312: return; +ADDRGP4 $582 +JUMPV +LABELV $594 +line 1314 +;1313: } +;1314: } +LABELV $592 +line 1316 +;1315: +;1316: if (g_gametype.integer >= GT_TEAM) { +ADDRGP4 g_gametype+12 +INDIRI4 +CNSTI4 5 +LTI4 $608 +line 1318 +;1317: // praise a team mate who just got a reward +;1318: for(i = 0; i < MAX_CLIENTS; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $611 +line 1319 +;1319: who = g_entities + i; +ADDRLP4 0 +CNSTI4 828 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ASGNP4 +line 1320 +;1320: if (who->client && who != ent && who->client->sess.sessionTeam == ent->client->sess.sessionTeam) { +ADDRLP4 36 +CNSTI4 408 +ASGNI4 +ADDRLP4 40 +ADDRLP4 0 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $615 +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 44 +INDIRP4 +CVPU4 4 +EQU4 $615 +ADDRLP4 48 +CNSTI4 1520 +ASGNI4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRI4 +NEI4 $615 +line 1321 +;1321: if (who->client->rewardTime > level.time) { +ADDRLP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1684 +ADDP4 +INDIRI4 +ADDRGP4 level+32 +INDIRI4 +LEI4 $617 +line 1322 +;1322: if (!(who->r.svFlags & SVF_BOT)) { +ADDRLP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $620 +line 1323 +;1323: G_Voice( ent, who, SAY_TELL, VOICECHAT_PRAISE, qfalse ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $622 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1324 +;1324: } +LABELV $620 +line 1325 +;1325: if (!(ent->r.svFlags & SVF_BOT)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 304 +ADDP4 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +NEI4 $582 +line 1326 +;1326: G_Voice( ent, ent, SAY_TELL, VOICECHAT_PRAISE, qfalse ); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ARGP4 +ADDRLP4 52 +INDIRP4 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 $622 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1327 +;1327: } +line 1328 +;1328: return; +ADDRGP4 $582 +JUMPV +LABELV $617 +line 1330 +;1329: } +;1330: } +LABELV $615 +line 1331 +;1331: } +LABELV $612 +line 1318 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 32 +LTI4 $611 +line 1332 +;1332: } +LABELV $608 +line 1335 +;1333: +;1334: // just say something +;1335: G_Voice( ent, NULL, SAY_ALL, VOICECHAT_TAUNT, qfalse ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTP4 0 +ARGP4 +ADDRLP4 32 +CNSTI4 0 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRGP4 $625 +ARGP4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRGP4 G_Voice +CALLV +pop +line 1336 +;1336:} +LABELV $582 +endproc Cmd_VoiceTaunt_f 56 20 +data +align 4 +LABELV gc_orders +address $626 +address $627 +address $628 +address $629 +address $630 +address $631 +address $632 +export Cmd_GameCommand_f +code +proc Cmd_GameCommand_f 1060 16 +line 1350 +;1337: +;1338: +;1339: +;1340:static char *gc_orders[] = { +;1341: "hold your position", +;1342: "hold this position", +;1343: "come here", +;1344: "cover me", +;1345: "guard location", +;1346: "search and destroy", +;1347: "report" +;1348:}; +;1349: +;1350:void Cmd_GameCommand_f( gentity_t *ent ) { +line 1355 +;1351: int player; +;1352: int order; +;1353: char str[MAX_TOKEN_CHARS]; +;1354: +;1355: trap_Argv( 1, str, sizeof( str ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 1356 +;1356: player = atoi( str ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1032 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1028 +ADDRLP4 1032 +INDIRI4 +ASGNI4 +line 1357 +;1357: trap_Argv( 2, str, sizeof( str ) ); +CNSTI4 2 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 1358 +;1358: order = atoi( str ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1036 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1024 +ADDRLP4 1036 +INDIRI4 +ASGNI4 +line 1360 +;1359: +;1360: if ( player < 0 || player >= MAX_CLIENTS ) { +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +LTI4 $636 +ADDRLP4 1028 +INDIRI4 +CNSTI4 32 +LTI4 $634 +LABELV $636 +line 1361 +;1361: return; +ADDRGP4 $633 +JUMPV +LABELV $634 +line 1363 +;1362: } +;1363: if ( order < 0 || order > sizeof(gc_orders)/sizeof(char *) ) { +ADDRLP4 1024 +INDIRI4 +CNSTI4 0 +LTI4 $639 +ADDRLP4 1024 +INDIRI4 +CVIU4 4 +CNSTU4 7 +LEU4 $637 +LABELV $639 +line 1364 +;1364: return; +ADDRGP4 $633 +JUMPV +LABELV $637 +line 1366 +;1365: } +;1366: G_Say( ent, &g_entities[player], SAY_TELL, gc_orders[order] ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 828 +ADDRLP4 1028 +INDIRI4 +MULI4 +ADDRGP4 g_entities +ADDP4 +ARGP4 +ADDRLP4 1048 +CNSTI4 2 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +ARGI4 +ADDRLP4 1024 +INDIRI4 +ADDRLP4 1048 +INDIRI4 +LSHI4 +ADDRGP4 gc_orders +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 G_Say +CALLV +pop +line 1367 +;1367: G_Say( ent, ent, SAY_TELL, gc_orders[order] ); +ADDRLP4 1052 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1052 +INDIRP4 +ARGP4 +ADDRLP4 1052 +INDIRP4 +ARGP4 +ADDRLP4 1056 +CNSTI4 2 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +ARGI4 +ADDRLP4 1024 +INDIRI4 +ADDRLP4 1056 +INDIRI4 +LSHI4 +ADDRGP4 gc_orders +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 G_Say +CALLV +pop +line 1368 +;1368:} +LABELV $633 +endproc Cmd_GameCommand_f 1060 16 +export Cmd_Where_f +proc Cmd_Where_f 8 8 +line 1375 +;1369: +;1370:/* +;1371:================== +;1372:Cmd_Where_f +;1373:================== +;1374:*/ +;1375:void Cmd_Where_f( gentity_t *ent ) { +line 1376 +;1376: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", vtos( ent->s.origin ) ) ); +ADDRFP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 vtos +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1377 +;1377:} +LABELV $640 +endproc Cmd_Where_f 8 8 +data +align 4 +LABELV gameNames +address $641 +address $642 +address $643 +address $644 +address $645 +address $646 +address $647 +address $648 +address $649 +export Cmd_CallVote_f +code +proc Cmd_CallVote_f 3144 24 +line 1396 +;1378: +;1379:static const char *gameNames[] = { +;1380: "Free For All", +;1381: "Holocron FFA", +;1382: "Jedi Master", +;1383: "Duel", +;1384: "Single Player", +;1385: "Team FFA", +;1386: "N/A", +;1387: "Capture the Flag", +;1388: "Capture the Ysalamiri" +;1389:}; +;1390: +;1391:/* +;1392:================== +;1393:Cmd_CallVote_f +;1394:================== +;1395:*/ +;1396:void Cmd_CallVote_f( gentity_t *ent ) { +line 1401 +;1397: int i; +;1398: char arg1[MAX_STRING_TOKENS]; +;1399: char arg2[MAX_STRING_TOKENS]; +;1400: +;1401: if ( !g_allowVote.integer ) { +ADDRGP4 g_allowVote+12 +INDIRI4 +CNSTI4 0 +NEI4 $651 +line 1402 +;1402: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "NOVOTE")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $654 +ARGP4 +ADDRLP4 2052 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 2052 +INDIRP4 +ARGP4 +ADDRLP4 2056 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2056 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1403 +;1403: return; +ADDRGP4 $650 +JUMPV +LABELV $651 +line 1406 +;1404: } +;1405: +;1406: if ( level.voteTime ) { +ADDRGP4 level+2276 +INDIRI4 +CNSTI4 0 +EQI4 $655 +line 1407 +;1407: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "VOTEINPROGRESS")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $658 +ARGP4 +ADDRLP4 2052 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 2052 +INDIRP4 +ARGP4 +ADDRLP4 2056 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2056 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1408 +;1408: return; +ADDRGP4 $650 +JUMPV +LABELV $655 +line 1410 +;1409: } +;1410: if ( ent->client->pers.voteCount >= MAX_VOTE_COUNT ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1508 +ADDP4 +INDIRI4 +CNSTI4 3 +LTI4 $659 +line 1411 +;1411: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "MAXVOTES")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $661 +ARGP4 +ADDRLP4 2052 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 2052 +INDIRP4 +ARGP4 +ADDRLP4 2056 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2056 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1412 +;1412: return; +ADDRGP4 $650 +JUMPV +LABELV $659 +line 1414 +;1413: } +;1414: if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 408 +ADDP4 +INDIRP4 +CNSTI4 1520 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $662 +line 1415 +;1415: trap_SendServerCommand( ent-g_entities, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "NOSPECVOTE")) ); +ADDRGP4 $116 +ARGP4 +ADDRGP4 $664 +ARGP4 +ADDRLP4 2052 +ADDRGP4 G_GetStripEdString +CALLP4 +ASGNP4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 2052 +INDIRP4 +ARGP4 +ADDRLP4 2056 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRLP4 2056 +INDIRP4 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1416 +;1416: return; +ADDRGP4 $650 +JUMPV +LABELV $662 +line 1420 +;1417: } +;1418: +;1419: // make sure it is a valid command to vote on +;1420: trap_Argv( 1, arg1, sizeof( arg1 ) ); +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 1421 +;1421: trap_Argv( 2, arg2, sizeof( arg2 ) ); +CNSTI4 2 +ARGI4 +ADDRLP4 1028 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 1423 +;1422: +;1423: if( strchr( arg1, ';' ) || strchr( arg2, ';' ) ) { +ADDRLP4 4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 2052 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 2052 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $667 +ADDRLP4 1028 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 2056 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 2056 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $665 +LABELV $667 +line 1424 +;1424: trap_SendServerCommand( ent-g_entities, "print \"Invalid vote string.\n\"" ); +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRGP4 $668 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1425 +;1425: return; +ADDRGP4 $650 +JUMPV +LABELV $665 +line 1428 +;1426: } +;1427: +;1428: if ( !Q_stricmp( arg1, "map_restart" ) ) { +ADDRLP4 4 +ARGP4 +ADDRGP4 $671 +ARGP4 +ADDRLP4 2060 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2060 +INDIRI4 +CNSTI4 0 +NEI4 $669 +line 1429 +;1429: } else if ( !Q_stricmp( arg1, "nextmap" ) ) { +ADDRGP4 $670 +JUMPV +LABELV $669 +ADDRLP4 4 +ARGP4 +ADDRGP4 $674 +ARGP4 +ADDRLP4 2064 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2064 +INDIRI4 +CNSTI4 0 +NEI4 $672 +line 1430 +;1430: } else if ( !Q_stricmp( arg1, "map" ) ) { +ADDRGP4 $673 +JUMPV +LABELV $672 +ADDRLP4 4 +ARGP4 +ADDRGP4 $677 +ARGP4 +ADDRLP4 2068 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2068 +INDIRI4 +CNSTI4 0 +NEI4 $675 +line 1431 +;1431: } else if ( !Q_stricmp( arg1, "g_gametype" ) ) { +ADDRGP4 $676 +JUMPV +LABELV $675 +ADDRLP4 4 +ARGP4 +ADDRGP4 $680 +ARGP4 +ADDRLP4 2072 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2072 +INDIRI4 +CNSTI4 0 +NEI4 $678 +line 1432 +;1432: } else if ( !Q_stricmp( arg1, "kick" ) ) { +ADDRGP4 $679 +JUMPV +LABELV $678 +ADDRLP4 4 +ARGP4 +ADDRGP4 $683 +ARGP4 +ADDRLP4 2076 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2076 +INDIRI4 +CNSTI4 0 +NEI4 $681 +line 1433 +;1433: } else if ( !Q_stricmp( arg1, "clientkick" ) ) { +ADDRGP4 $682 +JUMPV +LABELV $681 +ADDRLP4 4 +ARGP4 +ADDRGP4 $686 +ARGP4 +ADDRLP4 2080 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2080 +INDIRI4 +CNSTI4 0 +NEI4 $684 +line 1434 +;1434: } else if ( !Q_stricmp( arg1, "g_doWarmup" ) ) { +ADDRGP4 $685 +JUMPV +LABELV $684 +ADDRLP4 4 +ARGP4 +ADDRGP4 $689 +ARGP4 +ADDRLP4 2084 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2084 +INDIRI4 +CNSTI4 0 +NEI4 $687 +line 1435 +;1435: } else if ( !Q_stricmp( arg1, "timelimit" ) ) { +ADDRGP4 $688 +JUMPV +LABELV $687 +ADDRLP4 4 +ARGP4 +ADDRGP4 $692 +ARGP4 +ADDRLP4 2088 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2088 +INDIRI4 +CNSTI4 0 +NEI4 $690 +line 1436 +;1436: } else if ( !Q_stricmp( arg1, "fraglimit" ) ) { +ADDRGP4 $691 +JUMPV +LABELV $690 +ADDRLP4 4 +ARGP4 +ADDRGP4 $695 +ARGP4 +ADDRLP4 2092 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2092 +INDIRI4 +CNSTI4 0 +NEI4 $693 +line 1437 +;1437: } else { +ADDRGP4 $694 +JUMPV +LABELV $693 +line 1438 +;1438: trap_SendServerCommand( ent-g_entities, "print \"Invalid vote string.\n\"" ); +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRGP4 g_entities +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 828 +DIVI4 +ARGI4 +ADDRGP4 $668 +ARGP4 +ADDRGP4 trap_SendServerCommand +CALLV +pop +line 1439 +;1439: trap_SendServerCommand( ent-g_entities, "print \"Vote commands are: map_restart, nextmap, map , g_gametype , kick , clientkick , g_doWarmup, timelimit