7813 lines
115 KiB
NASM
7813 lines
115 KiB
NASM
export Team_InitGame
|
|
code
|
|
proc Team_InitGame 8 12
|
|
file "../g_team.c"
|
|
line 22
|
|
;1:// Copyright (C) 1999-2000 Id Software, Inc.
|
|
;2://
|
|
;3:
|
|
;4:#include "g_local.h"
|
|
;5:#include "bg_saga.h"
|
|
;6:
|
|
;7:
|
|
;8:typedef struct teamgame_s {
|
|
;9: float last_flag_capture;
|
|
;10: int last_capture_team;
|
|
;11: flagStatus_t redStatus; // CTF
|
|
;12: flagStatus_t blueStatus; // CTF
|
|
;13: flagStatus_t flagStatus; // One Flag CTF
|
|
;14: int redTakenTime;
|
|
;15: int blueTakenTime;
|
|
;16:} teamgame_t;
|
|
;17:
|
|
;18:teamgame_t teamgame;
|
|
;19:
|
|
;20:void Team_SetFlagStatus( int team, flagStatus_t status );
|
|
;21:
|
|
;22:void Team_InitGame( void ) {
|
|
line 23
|
|
;23: memset(&teamgame, 0, sizeof teamgame);
|
|
ADDRGP4 teamgame
|
|
ARGP4
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 28
|
|
ARGI4
|
|
ADDRGP4 memset
|
|
CALLP4
|
|
pop
|
|
line 25
|
|
;24:
|
|
;25: switch( g_gametype.integer ) {
|
|
ADDRLP4 0
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 7
|
|
EQI4 $82
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 8
|
|
EQI4 $82
|
|
ADDRGP4 $80
|
|
JUMPV
|
|
LABELV $82
|
|
line 28
|
|
;26: case GT_CTF:
|
|
;27: case GT_CTY:
|
|
;28: teamgame.redStatus = teamgame.blueStatus = -1; // Invalid to force update
|
|
ADDRLP4 4
|
|
CNSTI4 -1
|
|
ASGNI4
|
|
ADDRGP4 teamgame+12
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRGP4 teamgame+8
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 29
|
|
;29: Team_SetFlagStatus( TEAM_RED, FLAG_ATBASE );
|
|
CNSTI4 1
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 Team_SetFlagStatus
|
|
CALLV
|
|
pop
|
|
line 30
|
|
;30: Team_SetFlagStatus( TEAM_BLUE, FLAG_ATBASE );
|
|
CNSTI4 2
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 Team_SetFlagStatus
|
|
CALLV
|
|
pop
|
|
line 31
|
|
;31: break;
|
|
line 33
|
|
;32: default:
|
|
;33: break;
|
|
LABELV $80
|
|
line 35
|
|
;34: }
|
|
;35:}
|
|
LABELV $78
|
|
endproc Team_InitGame 8 12
|
|
export OtherTeam
|
|
proc OtherTeam 0 0
|
|
line 37
|
|
;36:
|
|
;37:int OtherTeam(int team) {
|
|
line 38
|
|
;38: if (team==TEAM_RED)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $86
|
|
line 39
|
|
;39: return TEAM_BLUE;
|
|
CNSTI4 2
|
|
RETI4
|
|
ADDRGP4 $85
|
|
JUMPV
|
|
LABELV $86
|
|
line 40
|
|
;40: else if (team==TEAM_BLUE)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $88
|
|
line 41
|
|
;41: return TEAM_RED;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $85
|
|
JUMPV
|
|
LABELV $88
|
|
line 42
|
|
;42: return team;
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
RETI4
|
|
LABELV $85
|
|
endproc OtherTeam 0 0
|
|
export TeamName
|
|
proc TeamName 0 0
|
|
line 45
|
|
;43:}
|
|
;44:
|
|
;45:const char *TeamName(int team) {
|
|
line 46
|
|
;46: if (team==TEAM_RED)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $91
|
|
line 47
|
|
;47: return "RED";
|
|
ADDRGP4 $93
|
|
RETP4
|
|
ADDRGP4 $90
|
|
JUMPV
|
|
LABELV $91
|
|
line 48
|
|
;48: else if (team==TEAM_BLUE)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $94
|
|
line 49
|
|
;49: return "BLUE";
|
|
ADDRGP4 $96
|
|
RETP4
|
|
ADDRGP4 $90
|
|
JUMPV
|
|
LABELV $94
|
|
line 50
|
|
;50: else if (team==TEAM_SPECTATOR)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $97
|
|
line 51
|
|
;51: return "SPECTATOR";
|
|
ADDRGP4 $99
|
|
RETP4
|
|
ADDRGP4 $90
|
|
JUMPV
|
|
LABELV $97
|
|
line 52
|
|
;52: return "FREE";
|
|
ADDRGP4 $100
|
|
RETP4
|
|
LABELV $90
|
|
endproc TeamName 0 0
|
|
export OtherTeamName
|
|
proc OtherTeamName 0 0
|
|
line 55
|
|
;53:}
|
|
;54:
|
|
;55:const char *OtherTeamName(int team) {
|
|
line 56
|
|
;56: if (team==TEAM_RED)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $102
|
|
line 57
|
|
;57: return "BLUE";
|
|
ADDRGP4 $96
|
|
RETP4
|
|
ADDRGP4 $101
|
|
JUMPV
|
|
LABELV $102
|
|
line 58
|
|
;58: else if (team==TEAM_BLUE)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $104
|
|
line 59
|
|
;59: return "RED";
|
|
ADDRGP4 $93
|
|
RETP4
|
|
ADDRGP4 $101
|
|
JUMPV
|
|
LABELV $104
|
|
line 60
|
|
;60: else if (team==TEAM_SPECTATOR)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $106
|
|
line 61
|
|
;61: return "SPECTATOR";
|
|
ADDRGP4 $99
|
|
RETP4
|
|
ADDRGP4 $101
|
|
JUMPV
|
|
LABELV $106
|
|
line 62
|
|
;62: return "FREE";
|
|
ADDRGP4 $100
|
|
RETP4
|
|
LABELV $101
|
|
endproc OtherTeamName 0 0
|
|
export TeamColorString
|
|
proc TeamColorString 0 0
|
|
line 65
|
|
;63:}
|
|
;64:
|
|
;65:const char *TeamColorString(int team) {
|
|
line 66
|
|
;66: if (team==TEAM_RED)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $109
|
|
line 67
|
|
;67: return S_COLOR_RED;
|
|
ADDRGP4 $111
|
|
RETP4
|
|
ADDRGP4 $108
|
|
JUMPV
|
|
LABELV $109
|
|
line 68
|
|
;68: else if (team==TEAM_BLUE)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $112
|
|
line 69
|
|
;69: return S_COLOR_BLUE;
|
|
ADDRGP4 $114
|
|
RETP4
|
|
ADDRGP4 $108
|
|
JUMPV
|
|
LABELV $112
|
|
line 70
|
|
;70: else if (team==TEAM_SPECTATOR)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $115
|
|
line 71
|
|
;71: return S_COLOR_YELLOW;
|
|
ADDRGP4 $117
|
|
RETP4
|
|
ADDRGP4 $108
|
|
JUMPV
|
|
LABELV $115
|
|
line 72
|
|
;72: return S_COLOR_WHITE;
|
|
ADDRGP4 $118
|
|
RETP4
|
|
LABELV $108
|
|
endproc TeamColorString 0 0
|
|
export PrintCTFMessage
|
|
proc PrintCTFMessage 12 8
|
|
line 101
|
|
;73:}
|
|
;74:
|
|
;75:// NULL for everyone
|
|
;76:/*
|
|
;77:void QDECL PrintMsg( gentity_t *ent, const char *fmt, ... ) {
|
|
;78: char msg[1024];
|
|
;79: va_list argptr;
|
|
;80: char *p;
|
|
;81:
|
|
;82: va_start (argptr,fmt);
|
|
;83: if (vsprintf (msg, fmt, argptr) > sizeof(msg)) {
|
|
;84: G_Error ( "PrintMsg overrun" );
|
|
;85: }
|
|
;86: va_end (argptr);
|
|
;87:
|
|
;88: // double quotes are bad
|
|
;89: while ((p = strchr(msg, '"')) != NULL)
|
|
;90: *p = '\'';
|
|
;91:
|
|
;92: trap_SendServerCommand ( ( (ent == NULL) ? -1 : ent-g_entities ), va("print \"%s\"", msg ));
|
|
;93:}
|
|
;94:*/
|
|
;95://Printing messages to players via this method is no longer done, StripEd stuff is client only.
|
|
;96:
|
|
;97:
|
|
;98://plIndex used to print pl->client->pers.netname
|
|
;99://teamIndex used to print team name
|
|
;100:void PrintCTFMessage(int plIndex, int teamIndex, int ctfMessage)
|
|
;101:{
|
|
line 104
|
|
;102: gentity_t *te;
|
|
;103:
|
|
;104: if (plIndex == -1)
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 -1
|
|
NEI4 $120
|
|
line 105
|
|
;105: {
|
|
line 106
|
|
;106: plIndex = MAX_CLIENTS+1;
|
|
ADDRFP4 0
|
|
CNSTI4 33
|
|
ASGNI4
|
|
line 107
|
|
;107: }
|
|
LABELV $120
|
|
line 108
|
|
;108: if (teamIndex == -1)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 -1
|
|
NEI4 $122
|
|
line 109
|
|
;109: {
|
|
line 110
|
|
;110: teamIndex = 50;
|
|
ADDRFP4 4
|
|
CNSTI4 50
|
|
ASGNI4
|
|
line 111
|
|
;111: }
|
|
LABELV $122
|
|
line 113
|
|
;112:
|
|
;113: te = G_TempEntity(vec3_origin, EV_CTFMESSAGE);
|
|
ADDRGP4 vec3_origin
|
|
ARGP4
|
|
CNSTI4 87
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 114
|
|
;114: 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 115
|
|
;115: te->s.eventParm = ctfMessage;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
line 116
|
|
;116: te->s.trickedentindex = plIndex;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 148
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ASGNI4
|
|
line 117
|
|
;117: if (ctfMessage == CTFMESSAGE_PLAYER_CAPTURED_FLAG)
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $124
|
|
line 118
|
|
;118: {
|
|
line 119
|
|
;119: if (teamIndex == TEAM_RED)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $126
|
|
line 120
|
|
;120: {
|
|
line 121
|
|
;121: te->s.trickedentindex2 = TEAM_BLUE;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 152
|
|
ADDP4
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 122
|
|
;122: }
|
|
ADDRGP4 $125
|
|
JUMPV
|
|
LABELV $126
|
|
line 124
|
|
;123: else
|
|
;124: {
|
|
line 125
|
|
;125: te->s.trickedentindex2 = TEAM_RED;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 152
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 126
|
|
;126: }
|
|
line 127
|
|
;127: }
|
|
ADDRGP4 $125
|
|
JUMPV
|
|
LABELV $124
|
|
line 129
|
|
;128: else
|
|
;129: {
|
|
line 130
|
|
;130: te->s.trickedentindex2 = teamIndex;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 152
|
|
ADDP4
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 131
|
|
;131: }
|
|
LABELV $125
|
|
line 132
|
|
;132:}
|
|
LABELV $119
|
|
endproc PrintCTFMessage 12 8
|
|
export AddTeamScore
|
|
proc AddTeamScore 16 8
|
|
line 142
|
|
;133:
|
|
;134:/*
|
|
;135:==============
|
|
;136:AddTeamScore
|
|
;137:
|
|
;138: used for gametype > GT_TEAM
|
|
;139: for gametype GT_TEAM the level.teamScores is updated in AddScore in g_combat.c
|
|
;140:==============
|
|
;141:*/
|
|
;142:void AddTeamScore(vec3_t origin, int team, int score) {
|
|
line 145
|
|
;143: gentity_t *te;
|
|
;144:
|
|
;145: te = G_TempEntity(origin, EV_GLOBAL_TEAM_SOUND );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 68
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 146
|
|
;146: 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 148
|
|
;147:
|
|
;148: if ( team == TEAM_RED ) {
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $129
|
|
line 149
|
|
;149: if ( level.teamScores[ TEAM_RED ] + score == level.teamScores[ TEAM_BLUE ] ) {
|
|
ADDRGP4 level+44+4
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ADDRGP4 level+44+8
|
|
INDIRI4
|
|
NEI4 $131
|
|
line 151
|
|
;150: //teams are tied sound
|
|
;151: te->s.eventParm = GTS_TEAMS_ARE_TIED;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 10
|
|
ASGNI4
|
|
line 152
|
|
;152: }
|
|
ADDRGP4 $130
|
|
JUMPV
|
|
LABELV $131
|
|
line 153
|
|
;153: else if ( level.teamScores[ TEAM_RED ] <= level.teamScores[ TEAM_BLUE ] &&
|
|
ADDRGP4 level+44+4
|
|
INDIRI4
|
|
ADDRGP4 level+44+8
|
|
INDIRI4
|
|
GTI4 $137
|
|
ADDRGP4 level+44+4
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ADDRGP4 level+44+8
|
|
INDIRI4
|
|
LEI4 $137
|
|
line 154
|
|
;154: level.teamScores[ TEAM_RED ] + score > level.teamScores[ TEAM_BLUE ]) {
|
|
line 156
|
|
;155: // red took the lead sound
|
|
;156: te->s.eventParm = GTS_REDTEAM_TOOK_LEAD;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 8
|
|
ASGNI4
|
|
line 157
|
|
;157: }
|
|
ADDRGP4 $130
|
|
JUMPV
|
|
LABELV $137
|
|
line 158
|
|
;158: else {
|
|
line 160
|
|
;159: // red scored sound
|
|
;160: te->s.eventParm = GTS_REDTEAM_SCORED;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 6
|
|
ASGNI4
|
|
line 161
|
|
;161: }
|
|
line 162
|
|
;162: }
|
|
ADDRGP4 $130
|
|
JUMPV
|
|
LABELV $129
|
|
line 163
|
|
;163: else {
|
|
line 164
|
|
;164: if ( level.teamScores[ TEAM_BLUE ] + score == level.teamScores[ TEAM_RED ] ) {
|
|
ADDRGP4 level+44+8
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ADDRGP4 level+44+4
|
|
INDIRI4
|
|
NEI4 $147
|
|
line 166
|
|
;165: //teams are tied sound
|
|
;166: te->s.eventParm = GTS_TEAMS_ARE_TIED;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 10
|
|
ASGNI4
|
|
line 167
|
|
;167: }
|
|
ADDRGP4 $148
|
|
JUMPV
|
|
LABELV $147
|
|
line 168
|
|
;168: else if ( level.teamScores[ TEAM_BLUE ] <= level.teamScores[ TEAM_RED ] &&
|
|
ADDRGP4 level+44+8
|
|
INDIRI4
|
|
ADDRGP4 level+44+4
|
|
INDIRI4
|
|
GTI4 $153
|
|
ADDRGP4 level+44+8
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ADDRGP4 level+44+4
|
|
INDIRI4
|
|
LEI4 $153
|
|
line 169
|
|
;169: level.teamScores[ TEAM_BLUE ] + score > level.teamScores[ TEAM_RED ]) {
|
|
line 171
|
|
;170: // blue took the lead sound
|
|
;171: te->s.eventParm = GTS_BLUETEAM_TOOK_LEAD;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 9
|
|
ASGNI4
|
|
line 172
|
|
;172: }
|
|
ADDRGP4 $154
|
|
JUMPV
|
|
LABELV $153
|
|
line 173
|
|
;173: else {
|
|
line 175
|
|
;174: // blue scored sound
|
|
;175: te->s.eventParm = GTS_BLUETEAM_SCORED;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 7
|
|
ASGNI4
|
|
line 176
|
|
;176: }
|
|
LABELV $154
|
|
LABELV $148
|
|
line 177
|
|
;177: }
|
|
LABELV $130
|
|
line 178
|
|
;178: level.teamScores[ team ] += score;
|
|
ADDRLP4 12
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 level+44
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 179
|
|
;179:}
|
|
LABELV $128
|
|
endproc AddTeamScore 16 8
|
|
export OnSameTeam
|
|
proc OnSameTeam 16 0
|
|
line 186
|
|
;180:
|
|
;181:/*
|
|
;182:==============
|
|
;183:OnSameTeam
|
|
;184:==============
|
|
;185:*/
|
|
;186:qboolean OnSameTeam( gentity_t *ent1, gentity_t *ent2 ) {
|
|
line 187
|
|
;187: if ( !ent1->client || !ent2->client ) {
|
|
ADDRLP4 0
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 4
|
|
INDIRU4
|
|
EQU4 $167
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 4
|
|
INDIRU4
|
|
NEU4 $165
|
|
LABELV $167
|
|
line 188
|
|
;188: return qfalse;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $164
|
|
JUMPV
|
|
LABELV $165
|
|
line 191
|
|
;189: }
|
|
;190:
|
|
;191: if ( g_gametype.integer < GT_TEAM ) {
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 5
|
|
GEI4 $168
|
|
line 192
|
|
;192: return qfalse;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $164
|
|
JUMPV
|
|
LABELV $168
|
|
line 195
|
|
;193: }
|
|
;194:
|
|
;195: if ( ent1->client->sess.sessionTeam == ent2->client->sess.sessionTeam ) {
|
|
ADDRLP4 8
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 12
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
NEI4 $171
|
|
line 196
|
|
;196: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $164
|
|
JUMPV
|
|
LABELV $171
|
|
line 199
|
|
;197: }
|
|
;198:
|
|
;199: return qfalse;
|
|
CNSTI4 0
|
|
RETI4
|
|
LABELV $164
|
|
endproc OnSameTeam 16 0
|
|
data
|
|
align 1
|
|
LABELV ctfFlagStatusRemap
|
|
char 1 48
|
|
char 1 49
|
|
char 1 42
|
|
char 1 42
|
|
char 1 50
|
|
export Team_SetFlagStatus
|
|
code
|
|
proc Team_SetFlagStatus 12 8
|
|
line 205
|
|
;200:}
|
|
;201:
|
|
;202:
|
|
;203:static char ctfFlagStatusRemap[] = { '0', '1', '*', '*', '2' };
|
|
;204:
|
|
;205:void Team_SetFlagStatus( int team, flagStatus_t status ) {
|
|
line 206
|
|
;206: qboolean modified = qfalse;
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 208
|
|
;207:
|
|
;208: switch( team ) {
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $186
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $176
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $181
|
|
ADDRGP4 $174
|
|
JUMPV
|
|
LABELV $176
|
|
line 210
|
|
;209: case TEAM_RED: // CTF
|
|
;210: if( teamgame.redStatus != status ) {
|
|
ADDRGP4 teamgame+8
|
|
INDIRI4
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
EQI4 $175
|
|
line 211
|
|
;211: teamgame.redStatus = status;
|
|
ADDRGP4 teamgame+8
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 212
|
|
;212: modified = qtrue;
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 213
|
|
;213: }
|
|
line 214
|
|
;214: break;
|
|
ADDRGP4 $175
|
|
JUMPV
|
|
LABELV $181
|
|
line 217
|
|
;215:
|
|
;216: case TEAM_BLUE: // CTF
|
|
;217: if( teamgame.blueStatus != status ) {
|
|
ADDRGP4 teamgame+12
|
|
INDIRI4
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
EQI4 $175
|
|
line 218
|
|
;218: teamgame.blueStatus = status;
|
|
ADDRGP4 teamgame+12
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 219
|
|
;219: modified = qtrue;
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 220
|
|
;220: }
|
|
line 221
|
|
;221: break;
|
|
ADDRGP4 $175
|
|
JUMPV
|
|
LABELV $186
|
|
line 224
|
|
;222:
|
|
;223: case TEAM_FREE: // One Flag CTF
|
|
;224: if( teamgame.flagStatus != status ) {
|
|
ADDRGP4 teamgame+16
|
|
INDIRI4
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
EQI4 $175
|
|
line 225
|
|
;225: teamgame.flagStatus = status;
|
|
ADDRGP4 teamgame+16
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 226
|
|
;226: modified = qtrue;
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 227
|
|
;227: }
|
|
line 228
|
|
;228: break;
|
|
LABELV $174
|
|
LABELV $175
|
|
line 231
|
|
;229: }
|
|
;230:
|
|
;231: if( modified ) {
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $191
|
|
line 234
|
|
;232: char st[4];
|
|
;233:
|
|
;234: if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTY ) {
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 7
|
|
EQI4 $197
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 8
|
|
NEI4 $193
|
|
LABELV $197
|
|
line 235
|
|
;235: st[0] = ctfFlagStatusRemap[teamgame.redStatus];
|
|
ADDRLP4 8
|
|
ADDRGP4 teamgame+8
|
|
INDIRI4
|
|
ADDRGP4 ctfFlagStatusRemap
|
|
ADDP4
|
|
INDIRI1
|
|
ASGNI1
|
|
line 236
|
|
;236: st[1] = ctfFlagStatusRemap[teamgame.blueStatus];
|
|
ADDRLP4 8+1
|
|
ADDRGP4 teamgame+12
|
|
INDIRI4
|
|
ADDRGP4 ctfFlagStatusRemap
|
|
ADDP4
|
|
INDIRI1
|
|
ASGNI1
|
|
line 237
|
|
;237: st[2] = 0;
|
|
ADDRLP4 8+2
|
|
CNSTI1 0
|
|
ASGNI1
|
|
line 238
|
|
;238: }
|
|
LABELV $193
|
|
line 240
|
|
;239:
|
|
;240: trap_SetConfigstring( CS_FLAGSTATUS, st );
|
|
CNSTI4 23
|
|
ARGI4
|
|
ADDRLP4 8
|
|
ARGP4
|
|
ADDRGP4 trap_SetConfigstring
|
|
CALLV
|
|
pop
|
|
line 241
|
|
;241: }
|
|
LABELV $191
|
|
line 242
|
|
;242:}
|
|
LABELV $173
|
|
endproc Team_SetFlagStatus 12 8
|
|
export Team_CheckDroppedItem
|
|
proc Team_CheckDroppedItem 0 8
|
|
line 244
|
|
;243:
|
|
;244:void Team_CheckDroppedItem( gentity_t *dropped ) {
|
|
line 245
|
|
;245: if( dropped->item->giTag == PW_REDFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 4
|
|
NEI4 $203
|
|
line 246
|
|
;246: Team_SetFlagStatus( TEAM_RED, FLAG_DROPPED );
|
|
CNSTI4 1
|
|
ARGI4
|
|
CNSTI4 4
|
|
ARGI4
|
|
ADDRGP4 Team_SetFlagStatus
|
|
CALLV
|
|
pop
|
|
line 247
|
|
;247: }
|
|
ADDRGP4 $204
|
|
JUMPV
|
|
LABELV $203
|
|
line 248
|
|
;248: else if( dropped->item->giTag == PW_BLUEFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 5
|
|
NEI4 $205
|
|
line 249
|
|
;249: Team_SetFlagStatus( TEAM_BLUE, FLAG_DROPPED );
|
|
CNSTI4 2
|
|
ARGI4
|
|
CNSTI4 4
|
|
ARGI4
|
|
ADDRGP4 Team_SetFlagStatus
|
|
CALLV
|
|
pop
|
|
line 250
|
|
;250: }
|
|
ADDRGP4 $206
|
|
JUMPV
|
|
LABELV $205
|
|
line 251
|
|
;251: else if( dropped->item->giTag == PW_NEUTRALFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 6
|
|
NEI4 $207
|
|
line 252
|
|
;252: Team_SetFlagStatus( TEAM_FREE, FLAG_DROPPED );
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 4
|
|
ARGI4
|
|
ADDRGP4 Team_SetFlagStatus
|
|
CALLV
|
|
pop
|
|
line 253
|
|
;253: }
|
|
LABELV $207
|
|
LABELV $206
|
|
LABELV $204
|
|
line 254
|
|
;254:}
|
|
LABELV $202
|
|
endproc Team_CheckDroppedItem 0 8
|
|
export Team_ForceGesture
|
|
proc Team_ForceGesture 12 0
|
|
line 261
|
|
;255:
|
|
;256:/*
|
|
;257:================
|
|
;258:Team_ForceGesture
|
|
;259:================
|
|
;260:*/
|
|
;261:void Team_ForceGesture(int team) {
|
|
line 265
|
|
;262: int i;
|
|
;263: gentity_t *ent;
|
|
;264:
|
|
;265: for (i = 0; i < MAX_CLIENTS; i++) {
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
LABELV $210
|
|
line 266
|
|
;266: ent = &g_entities[i];
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 267
|
|
;267: if (!ent->inuse)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $214
|
|
line 268
|
|
;268: continue;
|
|
ADDRGP4 $211
|
|
JUMPV
|
|
LABELV $214
|
|
line 269
|
|
;269: if (!ent->client)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $216
|
|
line 270
|
|
;270: continue;
|
|
ADDRGP4 $211
|
|
JUMPV
|
|
LABELV $216
|
|
line 271
|
|
;271: if (ent->client->sess.sessionTeam != team)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
EQI4 $218
|
|
line 272
|
|
;272: continue;
|
|
ADDRGP4 $211
|
|
JUMPV
|
|
LABELV $218
|
|
line 274
|
|
;273: //
|
|
;274: ent->flags |= FL_FORCE_GESTURE;
|
|
ADDRLP4 8
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 32768
|
|
BORI4
|
|
ASGNI4
|
|
line 275
|
|
;275: }
|
|
LABELV $211
|
|
line 265
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 32
|
|
LTI4 $210
|
|
line 276
|
|
;276:}
|
|
LABELV $209
|
|
endproc Team_ForceGesture 12 0
|
|
export Team_FragBonuses
|
|
proc Team_FragBonuses 276 12
|
|
line 288
|
|
;277:
|
|
;278:/*
|
|
;279:================
|
|
;280:Team_FragBonuses
|
|
;281:
|
|
;282:Calculate the bonuses for flag defense, flag carrier defense, etc.
|
|
;283:Note that bonuses are not cumulative. You get one, they are in importance
|
|
;284:order.
|
|
;285:================
|
|
;286:*/
|
|
;287:void Team_FragBonuses(gentity_t *targ, gentity_t *inflictor, gentity_t *attacker)
|
|
;288:{
|
|
line 294
|
|
;289: int i;
|
|
;290: gentity_t *ent;
|
|
;291: int flag_pw, enemy_flag_pw;
|
|
;292: int otherteam;
|
|
;293: int tokens;
|
|
;294: gentity_t *flag, *carrier = NULL;
|
|
ADDRLP4 4
|
|
CNSTP4 0
|
|
ASGNP4
|
|
line 300
|
|
;295: char *c;
|
|
;296: vec3_t v1, v2;
|
|
;297: int team;
|
|
;298:
|
|
;299: // no bonus for fragging yourself or team mates
|
|
;300: if (!targ->client || !attacker->client || targ == attacker || OnSameTeam(targ, attacker))
|
|
ADDRLP4 64
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 68
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 72
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 64
|
|
INDIRP4
|
|
ADDRLP4 68
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $225
|
|
ADDRLP4 76
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
ADDRLP4 68
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $225
|
|
ADDRLP4 64
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $225
|
|
ADDRLP4 64
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 80
|
|
ADDRGP4 OnSameTeam
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $221
|
|
LABELV $225
|
|
line 301
|
|
;301: return;
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $221
|
|
line 303
|
|
;302:
|
|
;303: team = targ->client->sess.sessionTeam;
|
|
ADDRLP4 52
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 304
|
|
;304: otherteam = OtherTeam(targ->client->sess.sessionTeam);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 84
|
|
ADDRGP4 OtherTeam
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 20
|
|
ADDRLP4 84
|
|
INDIRI4
|
|
ASGNI4
|
|
line 305
|
|
;305: if (otherteam < 0)
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $226
|
|
line 306
|
|
;306: return; // whoever died isn't on a team
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $226
|
|
line 309
|
|
;307:
|
|
;308: // same team, if the flag at base, check to he has the enemy flag
|
|
;309: if (team == TEAM_RED) {
|
|
ADDRLP4 52
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $228
|
|
line 310
|
|
;310: flag_pw = PW_REDFLAG;
|
|
ADDRLP4 16
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 311
|
|
;311: enemy_flag_pw = PW_BLUEFLAG;
|
|
ADDRLP4 60
|
|
CNSTI4 5
|
|
ASGNI4
|
|
line 312
|
|
;312: } else {
|
|
ADDRGP4 $229
|
|
JUMPV
|
|
LABELV $228
|
|
line 313
|
|
;313: flag_pw = PW_BLUEFLAG;
|
|
ADDRLP4 16
|
|
CNSTI4 5
|
|
ASGNI4
|
|
line 314
|
|
;314: enemy_flag_pw = PW_REDFLAG;
|
|
ADDRLP4 60
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 315
|
|
;315: }
|
|
LABELV $229
|
|
line 318
|
|
;316:
|
|
;317: // did the attacker frag the flag carrier?
|
|
;318: tokens = 0;
|
|
ADDRLP4 56
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 319
|
|
;319: if (targ->client->ps.powerups[enemy_flag_pw]) {
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $230
|
|
line 320
|
|
;320: attacker->client->pers.teamState.lastfraggedcarrier = level.time;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1504
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 321
|
|
;321: AddScore(attacker, targ->r.currentOrigin, CTF_FRAG_CARRIER_BONUS);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 20
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 322
|
|
;322: attacker->client->pers.teamState.fragcarrier++;
|
|
ADDRLP4 88
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1484
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 325
|
|
;323: //PrintMsg(NULL, "%s" S_COLOR_WHITE " fragged %s's flag carrier!\n",
|
|
;324: // attacker->client->pers.netname, TeamName(team));
|
|
;325: PrintCTFMessage(attacker->s.number, team, CTFMESSAGE_FRAGGED_FLAG_CARRIER);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 52
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 PrintCTFMessage
|
|
CALLV
|
|
pop
|
|
line 329
|
|
;326:
|
|
;327: // the target had the flag, clear the hurt carrier
|
|
;328: // field on the other team
|
|
;329: for (i = 0; i < g_maxclients.integer; i++) {
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $236
|
|
JUMPV
|
|
LABELV $233
|
|
line 330
|
|
;330: ent = g_entities + i;
|
|
ADDRLP4 12
|
|
CNSTI4 828
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 331
|
|
;331: if (ent->inuse && ent->client->sess.sessionTeam == otherteam)
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $238
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
NEI4 $238
|
|
line 332
|
|
;332: ent->client->pers.teamState.lasthurtcarrier = 0;
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
LABELV $238
|
|
line 333
|
|
;333: }
|
|
LABELV $234
|
|
line 329
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $236
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
LTI4 $233
|
|
line 334
|
|
;334: return;
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $230
|
|
line 338
|
|
;335: }
|
|
;336:
|
|
;337: // did the attacker frag a head carrier? other->client->ps.generic1
|
|
;338: if (tokens) {
|
|
ADDRLP4 56
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $240
|
|
line 339
|
|
;339: attacker->client->pers.teamState.lastfraggedcarrier = level.time;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1504
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 340
|
|
;340: AddScore(attacker, targ->r.currentOrigin, CTF_FRAG_CARRIER_BONUS * tokens * tokens);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 20
|
|
ADDRLP4 56
|
|
INDIRI4
|
|
MULI4
|
|
ADDRLP4 56
|
|
INDIRI4
|
|
MULI4
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 341
|
|
;341: attacker->client->pers.teamState.fragcarrier++;
|
|
ADDRLP4 92
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1484
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 92
|
|
INDIRP4
|
|
ADDRLP4 92
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 347
|
|
;342: //PrintMsg(NULL, "%s" S_COLOR_WHITE " fragged %s's skull carrier!\n",
|
|
;343: // attacker->client->pers.netname, TeamName(team));
|
|
;344:
|
|
;345: // the target had the flag, clear the hurt carrier
|
|
;346: // field on the other team
|
|
;347: for (i = 0; i < g_maxclients.integer; i++) {
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $246
|
|
JUMPV
|
|
LABELV $243
|
|
line 348
|
|
;348: ent = g_entities + i;
|
|
ADDRLP4 12
|
|
CNSTI4 828
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 349
|
|
;349: if (ent->inuse && ent->client->sess.sessionTeam == otherteam)
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $248
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
NEI4 $248
|
|
line 350
|
|
;350: ent->client->pers.teamState.lasthurtcarrier = 0;
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
LABELV $248
|
|
line 351
|
|
;351: }
|
|
LABELV $244
|
|
line 347
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $246
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
LTI4 $243
|
|
line 352
|
|
;352: return;
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $240
|
|
line 355
|
|
;353: }
|
|
;354:
|
|
;355: if (targ->client->pers.teamState.lasthurtcarrier &&
|
|
ADDRLP4 88
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 92
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 88
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 92
|
|
INDIRF4
|
|
CNSTF4 0
|
|
EQF4 $250
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDRLP4 92
|
|
INDIRF4
|
|
SUBF4
|
|
CNSTF4 1174011904
|
|
GEF4 $250
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 88
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $250
|
|
line 357
|
|
;356: level.time - targ->client->pers.teamState.lasthurtcarrier < CTF_CARRIER_DANGER_PROTECT_TIMEOUT &&
|
|
;357: !attacker->client->ps.powerups[flag_pw]) {
|
|
line 360
|
|
;358: // attacker is on the same team as the flag carrier and
|
|
;359: // fragged a guy who hurt our flag carrier
|
|
;360: AddScore(attacker, targ->r.currentOrigin, CTF_CARRIER_DANGER_PROTECT_BONUS);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 5
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 362
|
|
;361:
|
|
;362: attacker->client->pers.teamState.carrierdefense++;
|
|
ADDRLP4 96
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1476
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 96
|
|
INDIRP4
|
|
ADDRLP4 96
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 363
|
|
;363: targ->client->pers.teamState.lasthurtcarrier = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 365
|
|
;364:
|
|
;365: attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
|
|
ADDRLP4 100
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 324
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 366
|
|
;366: team = attacker->client->sess.sessionTeam;
|
|
ADDRLP4 52
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 368
|
|
;367: // add the sprite over the player's head
|
|
;368: attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 104
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 104
|
|
INDIRP4
|
|
ADDRLP4 104
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 369
|
|
;369: attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
|
|
ADDRLP4 108
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 65536
|
|
BORI4
|
|
ASGNI4
|
|
line 370
|
|
;370: attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 372
|
|
;371:
|
|
;372: return;
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $250
|
|
line 375
|
|
;373: }
|
|
;374:
|
|
;375: if (targ->client->pers.teamState.lasthurtcarrier &&
|
|
ADDRLP4 96
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 96
|
|
INDIRF4
|
|
CNSTF4 0
|
|
EQF4 $254
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDRLP4 96
|
|
INDIRF4
|
|
SUBF4
|
|
CNSTF4 1174011904
|
|
GEF4 $254
|
|
line 376
|
|
;376: level.time - targ->client->pers.teamState.lasthurtcarrier < CTF_CARRIER_DANGER_PROTECT_TIMEOUT) {
|
|
line 378
|
|
;377: // attacker is on the same team as the skull carrier and
|
|
;378: AddScore(attacker, targ->r.currentOrigin, CTF_CARRIER_DANGER_PROTECT_BONUS);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 5
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 380
|
|
;379:
|
|
;380: attacker->client->pers.teamState.carrierdefense++;
|
|
ADDRLP4 100
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1476
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 381
|
|
;381: targ->client->pers.teamState.lasthurtcarrier = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 383
|
|
;382:
|
|
;383: attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
|
|
ADDRLP4 104
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 324
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 104
|
|
INDIRP4
|
|
ADDRLP4 104
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 384
|
|
;384: team = attacker->client->sess.sessionTeam;
|
|
ADDRLP4 52
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 386
|
|
;385: // add the sprite over the player's head
|
|
;386: attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 108
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 387
|
|
;387: attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
|
|
ADDRLP4 112
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 65536
|
|
BORI4
|
|
ASGNI4
|
|
line 388
|
|
;388: attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 390
|
|
;389:
|
|
;390: return;
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $254
|
|
line 398
|
|
;391: }
|
|
;392:
|
|
;393: // flag and flag carrier area defense bonuses
|
|
;394:
|
|
;395: // we have to find the flag and carrier entities
|
|
;396:
|
|
;397: // find the flag
|
|
;398: switch (attacker->client->sess.sessionTeam) {
|
|
ADDRLP4 100
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 100
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $261
|
|
ADDRLP4 100
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $263
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $261
|
|
line 400
|
|
;399: case TEAM_RED:
|
|
;400: c = "team_CTF_redflag";
|
|
ADDRLP4 24
|
|
ADDRGP4 $262
|
|
ASGNP4
|
|
line 401
|
|
;401: break;
|
|
ADDRGP4 $259
|
|
JUMPV
|
|
LABELV $263
|
|
line 403
|
|
;402: case TEAM_BLUE:
|
|
;403: c = "team_CTF_blueflag";
|
|
ADDRLP4 24
|
|
ADDRGP4 $264
|
|
ASGNP4
|
|
line 404
|
|
;404: break;
|
|
line 406
|
|
;405: default:
|
|
;406: return;
|
|
LABELV $259
|
|
line 409
|
|
;407: }
|
|
;408: // find attacker's team's flag carrier
|
|
;409: for (i = 0; i < g_maxclients.integer; i++) {
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $268
|
|
JUMPV
|
|
LABELV $265
|
|
line 410
|
|
;410: carrier = g_entities + i;
|
|
ADDRLP4 4
|
|
CNSTI4 828
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 411
|
|
;411: if (carrier->inuse && carrier->client->ps.powerups[flag_pw])
|
|
ADDRLP4 112
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
EQI4 $270
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
EQI4 $270
|
|
line 412
|
|
;412: break;
|
|
ADDRGP4 $267
|
|
JUMPV
|
|
LABELV $270
|
|
line 413
|
|
;413: carrier = NULL;
|
|
ADDRLP4 4
|
|
CNSTP4 0
|
|
ASGNP4
|
|
line 414
|
|
;414: }
|
|
LABELV $266
|
|
line 409
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $268
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
LTI4 $265
|
|
LABELV $267
|
|
line 415
|
|
;415: flag = NULL;
|
|
ADDRLP4 8
|
|
CNSTP4 0
|
|
ASGNP4
|
|
ADDRGP4 $273
|
|
JUMPV
|
|
LABELV $272
|
|
line 416
|
|
;416: while ((flag = G_Find (flag, FOFS(classname), c)) != NULL) {
|
|
line 417
|
|
;417: if (!(flag->flags & FL_DROPPED_ITEM))
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 4096
|
|
BANDI4
|
|
CNSTI4 0
|
|
NEI4 $275
|
|
line 418
|
|
;418: break;
|
|
ADDRGP4 $274
|
|
JUMPV
|
|
LABELV $275
|
|
line 419
|
|
;419: }
|
|
LABELV $273
|
|
line 416
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 416
|
|
ARGI4
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 108
|
|
ADDRGP4 G_Find
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $272
|
|
LABELV $274
|
|
line 421
|
|
;420:
|
|
;421: if (!flag)
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $277
|
|
line 422
|
|
;422: return; // can't find attacker's flag
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $277
|
|
line 427
|
|
;423:
|
|
;424: // ok we have the attackers flag and a pointer to the carrier
|
|
;425:
|
|
;426: // check to see if we are defending the base's flag
|
|
;427: VectorSubtract(targ->r.currentOrigin, flag->r.currentOrigin, v1);
|
|
ADDRLP4 112
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 116
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 28
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
ADDRLP4 116
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 116
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 124
|
|
CNSTI4 372
|
|
ASGNI4
|
|
ADDRLP4 28+4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 128
|
|
CNSTI4 376
|
|
ASGNI4
|
|
ADDRLP4 28+8
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 428
|
|
;428: VectorSubtract(attacker->r.currentOrigin, flag->r.currentOrigin, v2);
|
|
ADDRLP4 132
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 136
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 40
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ADDRLP4 136
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 136
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 144
|
|
CNSTI4 372
|
|
ASGNI4
|
|
ADDRLP4 40+4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ADDRLP4 144
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 144
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 148
|
|
CNSTI4 376
|
|
ASGNI4
|
|
ADDRLP4 40+8
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 430
|
|
;429:
|
|
;430: if ( ( ( VectorLength(v1) < CTF_TARGET_PROTECT_RADIUS &&
|
|
ADDRLP4 28
|
|
ARGP4
|
|
ADDRLP4 152
|
|
ADDRGP4 VectorLength
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 152
|
|
INDIRF4
|
|
CNSTF4 1148846080
|
|
GEF4 $286
|
|
ADDRLP4 156
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 156
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 156
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 160
|
|
ADDRGP4 trap_InPVS
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 160
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $285
|
|
LABELV $286
|
|
ADDRLP4 40
|
|
ARGP4
|
|
ADDRLP4 164
|
|
ADDRGP4 VectorLength
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 164
|
|
INDIRF4
|
|
CNSTF4 1148846080
|
|
GEF4 $283
|
|
ADDRLP4 168
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 168
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 168
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 172
|
|
ADDRGP4 trap_InPVS
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 172
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $283
|
|
LABELV $285
|
|
ADDRLP4 176
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 180
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 176
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 180
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 176
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 180
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
EQI4 $283
|
|
line 434
|
|
;431: trap_InPVS(flag->r.currentOrigin, targ->r.currentOrigin ) ) ||
|
|
;432: ( VectorLength(v2) < CTF_TARGET_PROTECT_RADIUS &&
|
|
;433: trap_InPVS(flag->r.currentOrigin, attacker->r.currentOrigin ) ) ) &&
|
|
;434: attacker->client->sess.sessionTeam != targ->client->sess.sessionTeam) {
|
|
line 437
|
|
;435:
|
|
;436: // we defended the base flag
|
|
;437: AddScore(attacker, targ->r.currentOrigin, CTF_FLAG_DEFENSE_BONUS);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 10
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 438
|
|
;438: attacker->client->pers.teamState.basedefense++;
|
|
ADDRLP4 184
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1472
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 184
|
|
INDIRP4
|
|
ADDRLP4 184
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 440
|
|
;439:
|
|
;440: attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
|
|
ADDRLP4 188
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 324
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 188
|
|
INDIRP4
|
|
ADDRLP4 188
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 442
|
|
;441: // add the sprite over the player's head
|
|
;442: attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 192
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 192
|
|
INDIRP4
|
|
ADDRLP4 192
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 443
|
|
;443: attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
|
|
ADDRLP4 196
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 196
|
|
INDIRP4
|
|
ADDRLP4 196
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 65536
|
|
BORI4
|
|
ASGNI4
|
|
line 444
|
|
;444: attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 446
|
|
;445:
|
|
;446: return;
|
|
ADDRGP4 $220
|
|
JUMPV
|
|
LABELV $283
|
|
line 449
|
|
;447: }
|
|
;448:
|
|
;449: if (carrier && carrier != attacker) {
|
|
ADDRLP4 184
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 184
|
|
INDIRU4
|
|
CNSTU4 0
|
|
EQU4 $288
|
|
ADDRLP4 184
|
|
INDIRU4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $288
|
|
line 450
|
|
;450: VectorSubtract(targ->r.currentOrigin, carrier->r.currentOrigin, v1);
|
|
ADDRLP4 188
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 192
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 28
|
|
ADDRLP4 188
|
|
INDIRP4
|
|
ADDRLP4 192
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 192
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 200
|
|
CNSTI4 372
|
|
ASGNI4
|
|
ADDRLP4 28+4
|
|
ADDRLP4 188
|
|
INDIRP4
|
|
ADDRLP4 200
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 200
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 204
|
|
CNSTI4 376
|
|
ASGNI4
|
|
ADDRLP4 28+8
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 204
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 204
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 451
|
|
;451: VectorSubtract(attacker->r.currentOrigin, carrier->r.currentOrigin, v1);
|
|
ADDRLP4 208
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 212
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 28
|
|
ADDRLP4 208
|
|
INDIRP4
|
|
ADDRLP4 212
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 212
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 220
|
|
CNSTI4 372
|
|
ASGNI4
|
|
ADDRLP4 28+4
|
|
ADDRLP4 208
|
|
INDIRP4
|
|
ADDRLP4 220
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 220
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 224
|
|
CNSTI4 376
|
|
ASGNI4
|
|
ADDRLP4 28+8
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 224
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 224
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 453
|
|
;452:
|
|
;453: if ( ( ( VectorLength(v1) < CTF_ATTACKER_PROTECT_RADIUS &&
|
|
ADDRLP4 28
|
|
ARGP4
|
|
ADDRLP4 228
|
|
ADDRGP4 VectorLength
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 228
|
|
INDIRF4
|
|
CNSTF4 1148846080
|
|
GEF4 $297
|
|
ADDRLP4 232
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 232
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 232
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 236
|
|
ADDRGP4 trap_InPVS
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 236
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $296
|
|
LABELV $297
|
|
ADDRLP4 40
|
|
ARGP4
|
|
ADDRLP4 240
|
|
ADDRGP4 VectorLength
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 240
|
|
INDIRF4
|
|
CNSTF4 1148846080
|
|
GEF4 $294
|
|
ADDRLP4 244
|
|
CNSTI4 368
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 244
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 244
|
|
INDIRI4
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 248
|
|
ADDRGP4 trap_InPVS
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 248
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $294
|
|
LABELV $296
|
|
ADDRLP4 252
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 256
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 252
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 256
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 252
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 256
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
EQI4 $294
|
|
line 457
|
|
;454: trap_InPVS(carrier->r.currentOrigin, targ->r.currentOrigin ) ) ||
|
|
;455: ( VectorLength(v2) < CTF_ATTACKER_PROTECT_RADIUS &&
|
|
;456: trap_InPVS(carrier->r.currentOrigin, attacker->r.currentOrigin ) ) ) &&
|
|
;457: attacker->client->sess.sessionTeam != targ->client->sess.sessionTeam) {
|
|
line 458
|
|
;458: AddScore(attacker, targ->r.currentOrigin, CTF_CARRIER_PROTECT_BONUS);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 459
|
|
;459: attacker->client->pers.teamState.carrierdefense++;
|
|
ADDRLP4 260
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1476
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 260
|
|
INDIRP4
|
|
ADDRLP4 260
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 461
|
|
;460:
|
|
;461: attacker->client->ps.persistant[PERS_DEFEND_COUNT]++;
|
|
ADDRLP4 264
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 324
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 264
|
|
INDIRP4
|
|
ADDRLP4 264
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 463
|
|
;462: // add the sprite over the player's head
|
|
;463: attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 268
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 268
|
|
INDIRP4
|
|
ADDRLP4 268
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 464
|
|
;464: attacker->client->ps.eFlags |= EF_AWARD_DEFEND;
|
|
ADDRLP4 272
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 272
|
|
INDIRP4
|
|
ADDRLP4 272
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 65536
|
|
BORI4
|
|
ASGNI4
|
|
line 465
|
|
;465: attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 467
|
|
;466:
|
|
;467: return;
|
|
LABELV $294
|
|
line 469
|
|
;468: }
|
|
;469: }
|
|
LABELV $288
|
|
line 470
|
|
;470:}
|
|
LABELV $220
|
|
endproc Team_FragBonuses 276 12
|
|
export Team_CheckHurtCarrier
|
|
proc Team_CheckHurtCarrier 36 0
|
|
line 481
|
|
;471:
|
|
;472:/*
|
|
;473:================
|
|
;474:Team_CheckHurtCarrier
|
|
;475:
|
|
;476:Check to see if attacker hurt the flag carrier. Needed when handing out bonuses for assistance to flag
|
|
;477:carrier defense.
|
|
;478:================
|
|
;479:*/
|
|
;480:void Team_CheckHurtCarrier(gentity_t *targ, gentity_t *attacker)
|
|
;481:{
|
|
line 484
|
|
;482: int flag_pw;
|
|
;483:
|
|
;484: if (!targ->client || !attacker->client)
|
|
ADDRLP4 4
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 8
|
|
INDIRU4
|
|
EQU4 $302
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 8
|
|
INDIRU4
|
|
NEU4 $300
|
|
LABELV $302
|
|
line 485
|
|
;485: return;
|
|
ADDRGP4 $299
|
|
JUMPV
|
|
LABELV $300
|
|
line 487
|
|
;486:
|
|
;487: if (targ->client->sess.sessionTeam == TEAM_RED)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $303
|
|
line 488
|
|
;488: flag_pw = PW_BLUEFLAG;
|
|
ADDRLP4 0
|
|
CNSTI4 5
|
|
ASGNI4
|
|
ADDRGP4 $304
|
|
JUMPV
|
|
LABELV $303
|
|
line 490
|
|
;489: else
|
|
;490: flag_pw = PW_REDFLAG;
|
|
ADDRLP4 0
|
|
CNSTI4 4
|
|
ASGNI4
|
|
LABELV $304
|
|
line 493
|
|
;491:
|
|
;492: // flags
|
|
;493: if (targ->client->ps.powerups[flag_pw] &&
|
|
ADDRLP4 12
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 16
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $305
|
|
ADDRLP4 20
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
EQI4 $305
|
|
line 495
|
|
;494: targ->client->sess.sessionTeam != attacker->client->sess.sessionTeam)
|
|
;495: attacker->client->pers.teamState.lasthurtcarrier = level.time;
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
LABELV $305
|
|
line 498
|
|
;496:
|
|
;497: // skulls
|
|
;498: if (targ->client->ps.generic1 &&
|
|
ADDRLP4 24
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 28
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $308
|
|
ADDRLP4 32
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
EQI4 $308
|
|
line 500
|
|
;499: targ->client->sess.sessionTeam != attacker->client->sess.sessionTeam)
|
|
;500: attacker->client->pers.teamState.lasthurtcarrier = level.time;
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
LABELV $308
|
|
line 501
|
|
;501:}
|
|
LABELV $299
|
|
endproc Team_CheckHurtCarrier 36 0
|
|
export Team_ResetFlag
|
|
proc Team_ResetFlag 20 12
|
|
line 504
|
|
;502:
|
|
;503:
|
|
;504:gentity_t *Team_ResetFlag( int team ) {
|
|
line 506
|
|
;505: char *c;
|
|
;506: gentity_t *ent, *rent = NULL;
|
|
ADDRLP4 8
|
|
CNSTP4 0
|
|
ASGNP4
|
|
line 508
|
|
;507:
|
|
;508: switch (team) {
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $316
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $314
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $315
|
|
ADDRGP4 $312
|
|
JUMPV
|
|
LABELV $314
|
|
line 510
|
|
;509: case TEAM_RED:
|
|
;510: c = "team_CTF_redflag";
|
|
ADDRLP4 4
|
|
ADDRGP4 $262
|
|
ASGNP4
|
|
line 511
|
|
;511: break;
|
|
ADDRGP4 $313
|
|
JUMPV
|
|
LABELV $315
|
|
line 513
|
|
;512: case TEAM_BLUE:
|
|
;513: c = "team_CTF_blueflag";
|
|
ADDRLP4 4
|
|
ADDRGP4 $264
|
|
ASGNP4
|
|
line 514
|
|
;514: break;
|
|
ADDRGP4 $313
|
|
JUMPV
|
|
LABELV $316
|
|
line 516
|
|
;515: case TEAM_FREE:
|
|
;516: c = "team_CTF_neutralflag";
|
|
ADDRLP4 4
|
|
ADDRGP4 $317
|
|
ASGNP4
|
|
line 517
|
|
;517: break;
|
|
ADDRGP4 $313
|
|
JUMPV
|
|
LABELV $312
|
|
line 519
|
|
;518: default:
|
|
;519: return NULL;
|
|
CNSTP4 0
|
|
RETP4
|
|
ADDRGP4 $311
|
|
JUMPV
|
|
LABELV $313
|
|
line 522
|
|
;520: }
|
|
;521:
|
|
;522: ent = NULL;
|
|
ADDRLP4 0
|
|
CNSTP4 0
|
|
ASGNP4
|
|
ADDRGP4 $319
|
|
JUMPV
|
|
LABELV $318
|
|
line 523
|
|
;523: while ((ent = G_Find (ent, FOFS(classname), c)) != NULL) {
|
|
line 524
|
|
;524: if (ent->flags & FL_DROPPED_ITEM)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 4096
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $321
|
|
line 525
|
|
;525: G_FreeEntity(ent);
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 G_FreeEntity
|
|
CALLV
|
|
pop
|
|
ADDRGP4 $322
|
|
JUMPV
|
|
LABELV $321
|
|
line 526
|
|
;526: else {
|
|
line 527
|
|
;527: rent = ent;
|
|
ADDRLP4 8
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
line 528
|
|
;528: RespawnItem(ent);
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 RespawnItem
|
|
CALLV
|
|
pop
|
|
line 529
|
|
;529: }
|
|
LABELV $322
|
|
line 530
|
|
;530: }
|
|
LABELV $319
|
|
line 523
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 416
|
|
ARGI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 16
|
|
ADDRGP4 G_Find
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $318
|
|
line 532
|
|
;531:
|
|
;532: Team_SetFlagStatus( team, FLAG_ATBASE );
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 Team_SetFlagStatus
|
|
CALLV
|
|
pop
|
|
line 534
|
|
;533:
|
|
;534: return rent;
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
RETP4
|
|
LABELV $311
|
|
endproc Team_ResetFlag 20 12
|
|
export Team_ResetFlags
|
|
proc Team_ResetFlags 0 4
|
|
line 537
|
|
;535:}
|
|
;536:
|
|
;537:void Team_ResetFlags( void ) {
|
|
line 538
|
|
;538: if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTY ) {
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 7
|
|
EQI4 $328
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 8
|
|
NEI4 $324
|
|
LABELV $328
|
|
line 539
|
|
;539: Team_ResetFlag( TEAM_RED );
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 Team_ResetFlag
|
|
CALLP4
|
|
pop
|
|
line 540
|
|
;540: Team_ResetFlag( TEAM_BLUE );
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRGP4 Team_ResetFlag
|
|
CALLP4
|
|
pop
|
|
line 541
|
|
;541: }
|
|
LABELV $324
|
|
line 542
|
|
;542:}
|
|
LABELV $323
|
|
endproc Team_ResetFlags 0 4
|
|
export Team_ReturnFlagSound
|
|
proc Team_ReturnFlagSound 12 8
|
|
line 544
|
|
;543:
|
|
;544:void Team_ReturnFlagSound( gentity_t *ent, int team ) {
|
|
line 547
|
|
;545: gentity_t *te;
|
|
;546:
|
|
;547: if (ent == NULL) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $330
|
|
line 548
|
|
;548: G_Printf ("Warning: NULL passed to Team_ReturnFlagSound\n");
|
|
ADDRGP4 $332
|
|
ARGP4
|
|
ADDRGP4 G_Printf
|
|
CALLV
|
|
pop
|
|
line 549
|
|
;549: return;
|
|
ADDRGP4 $329
|
|
JUMPV
|
|
LABELV $330
|
|
line 552
|
|
;550: }
|
|
;551:
|
|
;552: te = G_TempEntity( ent->s.pos.trBase, EV_GLOBAL_TEAM_SOUND );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 24
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 68
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 553
|
|
;553: if( team == TEAM_BLUE ) {
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $333
|
|
line 554
|
|
;554: te->s.eventParm = GTS_RED_RETURN;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 555
|
|
;555: }
|
|
ADDRGP4 $334
|
|
JUMPV
|
|
LABELV $333
|
|
line 556
|
|
;556: else {
|
|
line 557
|
|
;557: te->s.eventParm = GTS_BLUE_RETURN;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 558
|
|
;558: }
|
|
LABELV $334
|
|
line 559
|
|
;559: 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 560
|
|
;560:}
|
|
LABELV $329
|
|
endproc Team_ReturnFlagSound 12 8
|
|
export Team_TakeFlagSound
|
|
proc Team_TakeFlagSound 16 8
|
|
line 562
|
|
;561:
|
|
;562:void Team_TakeFlagSound( gentity_t *ent, int team ) {
|
|
line 565
|
|
;563: gentity_t *te;
|
|
;564:
|
|
;565: if (ent == NULL) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $336
|
|
line 566
|
|
;566: G_Printf ("Warning: NULL passed to Team_TakeFlagSound\n");
|
|
ADDRGP4 $338
|
|
ARGP4
|
|
ADDRGP4 G_Printf
|
|
CALLV
|
|
pop
|
|
line 567
|
|
;567: return;
|
|
ADDRGP4 $335
|
|
JUMPV
|
|
LABELV $336
|
|
line 572
|
|
;568: }
|
|
;569:
|
|
;570: // only play sound when the flag was at the base
|
|
;571: // or not picked up the last 10 seconds
|
|
;572: switch(team) {
|
|
ADDRLP4 4
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $341
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $351
|
|
ADDRGP4 $339
|
|
JUMPV
|
|
LABELV $341
|
|
line 574
|
|
;573: case TEAM_RED:
|
|
;574: if( teamgame.blueStatus != FLAG_ATBASE ) {
|
|
ADDRGP4 teamgame+12
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $342
|
|
line 575
|
|
;575: if (teamgame.blueTakenTime > level.time - 10000)
|
|
ADDRGP4 teamgame+24
|
|
INDIRI4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 10000
|
|
SUBI4
|
|
LEI4 $345
|
|
line 576
|
|
;576: return;
|
|
ADDRGP4 $335
|
|
JUMPV
|
|
LABELV $345
|
|
line 577
|
|
;577: }
|
|
LABELV $342
|
|
line 578
|
|
;578: teamgame.blueTakenTime = level.time;
|
|
ADDRGP4 teamgame+24
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 579
|
|
;579: break;
|
|
ADDRGP4 $340
|
|
JUMPV
|
|
LABELV $351
|
|
line 582
|
|
;580:
|
|
;581: case TEAM_BLUE: // CTF
|
|
;582: if( teamgame.redStatus != FLAG_ATBASE ) {
|
|
ADDRGP4 teamgame+8
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $352
|
|
line 583
|
|
;583: if (teamgame.redTakenTime > level.time - 10000)
|
|
ADDRGP4 teamgame+20
|
|
INDIRI4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 10000
|
|
SUBI4
|
|
LEI4 $355
|
|
line 584
|
|
;584: return;
|
|
ADDRGP4 $335
|
|
JUMPV
|
|
LABELV $355
|
|
line 585
|
|
;585: }
|
|
LABELV $352
|
|
line 586
|
|
;586: teamgame.redTakenTime = level.time;
|
|
ADDRGP4 teamgame+20
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 587
|
|
;587: break;
|
|
LABELV $339
|
|
LABELV $340
|
|
line 590
|
|
;588: }
|
|
;589:
|
|
;590: te = G_TempEntity( ent->s.pos.trBase, EV_GLOBAL_TEAM_SOUND );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 24
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 68
|
|
ARGI4
|
|
ADDRLP4 8
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
line 591
|
|
;591: if( team == TEAM_BLUE ) {
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $361
|
|
line 592
|
|
;592: te->s.eventParm = GTS_RED_TAKEN;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 593
|
|
;593: }
|
|
ADDRGP4 $362
|
|
JUMPV
|
|
LABELV $361
|
|
line 594
|
|
;594: else {
|
|
line 595
|
|
;595: te->s.eventParm = GTS_BLUE_TAKEN;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 5
|
|
ASGNI4
|
|
line 596
|
|
;596: }
|
|
LABELV $362
|
|
line 597
|
|
;597: te->r.svFlags |= SVF_BROADCAST;
|
|
ADDRLP4 12
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 32
|
|
BORI4
|
|
ASGNI4
|
|
line 598
|
|
;598:}
|
|
LABELV $335
|
|
endproc Team_TakeFlagSound 16 8
|
|
export Team_CaptureFlagSound
|
|
proc Team_CaptureFlagSound 12 8
|
|
line 600
|
|
;599:
|
|
;600:void Team_CaptureFlagSound( gentity_t *ent, int team ) {
|
|
line 603
|
|
;601: gentity_t *te;
|
|
;602:
|
|
;603: if (ent == NULL) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $364
|
|
line 604
|
|
;604: G_Printf ("Warning: NULL passed to Team_CaptureFlagSound\n");
|
|
ADDRGP4 $366
|
|
ARGP4
|
|
ADDRGP4 G_Printf
|
|
CALLV
|
|
pop
|
|
line 605
|
|
;605: return;
|
|
ADDRGP4 $363
|
|
JUMPV
|
|
LABELV $364
|
|
line 608
|
|
;606: }
|
|
;607:
|
|
;608: te = G_TempEntity( ent->s.pos.trBase, EV_GLOBAL_TEAM_SOUND );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 24
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 68
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 609
|
|
;609: if( team == TEAM_BLUE ) {
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $367
|
|
line 610
|
|
;610: te->s.eventParm = GTS_BLUE_CAPTURE;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 611
|
|
;611: }
|
|
ADDRGP4 $368
|
|
JUMPV
|
|
LABELV $367
|
|
line 612
|
|
;612: else {
|
|
line 613
|
|
;613: te->s.eventParm = GTS_RED_CAPTURE;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 614
|
|
;614: }
|
|
LABELV $368
|
|
line 615
|
|
;615: 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 616
|
|
;616:}
|
|
LABELV $363
|
|
endproc Team_CaptureFlagSound 12 8
|
|
export Team_ReturnFlag
|
|
proc Team_ReturnFlag 4 12
|
|
line 618
|
|
;617:
|
|
;618:void Team_ReturnFlag( int team ) {
|
|
line 619
|
|
;619: Team_ReturnFlagSound(Team_ResetFlag(team), team);
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 0
|
|
ADDRGP4 Team_ResetFlag
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlagSound
|
|
CALLV
|
|
pop
|
|
line 620
|
|
;620: if( team == TEAM_FREE ) {
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $370
|
|
line 622
|
|
;621: //PrintMsg(NULL, "The flag has returned!\n" );
|
|
;622: }
|
|
ADDRGP4 $371
|
|
JUMPV
|
|
LABELV $370
|
|
line 623
|
|
;623: else { //flag should always have team in normal CTF
|
|
line 625
|
|
;624: //PrintMsg(NULL, "The %s flag has returned!\n", TeamName(team));
|
|
;625: PrintCTFMessage(-1, team, CTFMESSAGE_FLAG_RETURNED);
|
|
CNSTI4 -1
|
|
ARGI4
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 PrintCTFMessage
|
|
CALLV
|
|
pop
|
|
line 626
|
|
;626: }
|
|
LABELV $371
|
|
line 627
|
|
;627:}
|
|
LABELV $369
|
|
endproc Team_ReturnFlag 4 12
|
|
export Team_FreeEntity
|
|
proc Team_FreeEntity 0 4
|
|
line 629
|
|
;628:
|
|
;629:void Team_FreeEntity( gentity_t *ent ) {
|
|
line 630
|
|
;630: if( ent->item->giTag == PW_REDFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 4
|
|
NEI4 $373
|
|
line 631
|
|
;631: Team_ReturnFlag( TEAM_RED );
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 632
|
|
;632: }
|
|
ADDRGP4 $374
|
|
JUMPV
|
|
LABELV $373
|
|
line 633
|
|
;633: else if( ent->item->giTag == PW_BLUEFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 5
|
|
NEI4 $375
|
|
line 634
|
|
;634: Team_ReturnFlag( TEAM_BLUE );
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 635
|
|
;635: }
|
|
ADDRGP4 $376
|
|
JUMPV
|
|
LABELV $375
|
|
line 636
|
|
;636: else if( ent->item->giTag == PW_NEUTRALFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 6
|
|
NEI4 $377
|
|
line 637
|
|
;637: Team_ReturnFlag( TEAM_FREE );
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 638
|
|
;638: }
|
|
LABELV $377
|
|
LABELV $376
|
|
LABELV $374
|
|
line 639
|
|
;639:}
|
|
LABELV $372
|
|
endproc Team_FreeEntity 0 4
|
|
export Team_DroppedFlagThink
|
|
proc Team_DroppedFlagThink 8 8
|
|
line 650
|
|
;640:
|
|
;641:/*
|
|
;642:==============
|
|
;643:Team_DroppedFlagThink
|
|
;644:
|
|
;645:Automatically set in Launch_Item if the item is one of the flags
|
|
;646:
|
|
;647:Flags are unique in that if they are dropped, the base flag must be respawned when they time out
|
|
;648:==============
|
|
;649:*/
|
|
;650:void Team_DroppedFlagThink(gentity_t *ent) {
|
|
line 651
|
|
;651: int team = TEAM_FREE;
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 653
|
|
;652:
|
|
;653: if( ent->item->giTag == PW_REDFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 4
|
|
NEI4 $380
|
|
line 654
|
|
;654: team = TEAM_RED;
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 655
|
|
;655: }
|
|
ADDRGP4 $381
|
|
JUMPV
|
|
LABELV $380
|
|
line 656
|
|
;656: else if( ent->item->giTag == PW_BLUEFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 5
|
|
NEI4 $382
|
|
line 657
|
|
;657: team = TEAM_BLUE;
|
|
ADDRLP4 0
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 658
|
|
;658: }
|
|
ADDRGP4 $383
|
|
JUMPV
|
|
LABELV $382
|
|
line 659
|
|
;659: else if( ent->item->giTag == PW_NEUTRALFLAG ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 824
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 6
|
|
NEI4 $384
|
|
line 660
|
|
;660: team = TEAM_FREE;
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 661
|
|
;661: }
|
|
LABELV $384
|
|
LABELV $383
|
|
LABELV $381
|
|
line 663
|
|
;662:
|
|
;663: Team_ReturnFlagSound( Team_ResetFlag( team ), team );
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 Team_ResetFlag
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlagSound
|
|
CALLV
|
|
pop
|
|
line 665
|
|
;664: // Reset Flag will delete this entity
|
|
;665:}
|
|
LABELV $379
|
|
endproc Team_DroppedFlagThink 8 8
|
|
export Team_TouchOurFlag
|
|
proc Team_TouchOurFlag 56 12
|
|
line 673
|
|
;666:
|
|
;667:
|
|
;668:/*
|
|
;669:==============
|
|
;670:Team_DroppedFlagThink
|
|
;671:==============
|
|
;672:*/
|
|
;673:int Team_TouchOurFlag( gentity_t *ent, gentity_t *other, int team ) {
|
|
line 676
|
|
;674: int i;
|
|
;675: gentity_t *player;
|
|
;676: gclient_t *cl = other->client;
|
|
ADDRLP4 8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 679
|
|
;677: int enemy_flag;
|
|
;678:
|
|
;679: if (cl->sess.sessionTeam == TEAM_RED) {
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $387
|
|
line 680
|
|
;680: enemy_flag = PW_BLUEFLAG;
|
|
ADDRLP4 12
|
|
CNSTI4 5
|
|
ASGNI4
|
|
line 681
|
|
;681: } else {
|
|
ADDRGP4 $388
|
|
JUMPV
|
|
LABELV $387
|
|
line 682
|
|
;682: enemy_flag = PW_REDFLAG;
|
|
ADDRLP4 12
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 683
|
|
;683: }
|
|
LABELV $388
|
|
line 685
|
|
;684:
|
|
;685: if ( ent->flags & FL_DROPPED_ITEM ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 4096
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $389
|
|
line 689
|
|
;686: // hey, its not home. return it by teleporting it back
|
|
;687: //PrintMsg( NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n",
|
|
;688: // cl->pers.netname, TeamName(team));
|
|
;689: PrintCTFMessage(other->s.number, team, CTFMESSAGE_PLAYER_RETURNED_FLAG);
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRGP4 PrintCTFMessage
|
|
CALLV
|
|
pop
|
|
line 691
|
|
;690:
|
|
;691: AddScore(other, ent->r.currentOrigin, CTF_RECOVERY_BONUS);
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 10
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 692
|
|
;692: other->client->pers.teamState.flagrecovery++;
|
|
ADDRLP4 16
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1480
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 693
|
|
;693: other->client->pers.teamState.lastreturnedflag = level.time;
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1496
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 695
|
|
;694: //ResetFlag will remove this entity! We must return zero
|
|
;695: Team_ReturnFlagSound(Team_ResetFlag(team), team);
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 20
|
|
ADDRGP4 Team_ResetFlag
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlagSound
|
|
CALLV
|
|
pop
|
|
line 696
|
|
;696: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $386
|
|
JUMPV
|
|
LABELV $389
|
|
line 701
|
|
;697: }
|
|
;698:
|
|
;699: // the flag is at home base. if the player has the enemy
|
|
;700: // flag, he's just won!
|
|
;701: if (!cl->ps.powerups[enemy_flag])
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $392
|
|
line 702
|
|
;702: return 0; // We don't have the flag
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $386
|
|
JUMPV
|
|
LABELV $392
|
|
line 704
|
|
;703: //PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the %s flag!\n", cl->pers.netname, TeamName(OtherTeam(team)));
|
|
;704: PrintCTFMessage(other->s.number, team, CTFMESSAGE_PLAYER_CAPTURED_FLAG);
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 3
|
|
ARGI4
|
|
ADDRGP4 PrintCTFMessage
|
|
CALLV
|
|
pop
|
|
line 706
|
|
;705:
|
|
;706: cl->ps.powerups[enemy_flag] = 0;
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 708
|
|
;707:
|
|
;708: teamgame.last_flag_capture = level.time;
|
|
ADDRGP4 teamgame
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 709
|
|
;709: teamgame.last_capture_team = team;
|
|
ADDRGP4 teamgame+4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
line 712
|
|
;710:
|
|
;711: // Increase the team's score
|
|
;712: AddTeamScore(ent->s.pos.trBase, other->client->sess.sessionTeam, 1);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 24
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 AddTeamScore
|
|
CALLV
|
|
pop
|
|
line 716
|
|
;713:// Team_ForceGesture(other->client->sess.sessionTeam);
|
|
;714: //rww - don't really want to do this now. Mainly because performing a gesture disables your upper torso animations until it's done and you can't fire
|
|
;715:
|
|
;716: other->client->pers.teamState.captures++;
|
|
ADDRLP4 16
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1468
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 718
|
|
;717: // add the sprite over the player's head
|
|
;718: other->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 20
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 719
|
|
;719: other->client->ps.eFlags |= EF_AWARD_CAP;
|
|
ADDRLP4 24
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 2048
|
|
BORI4
|
|
ASGNI4
|
|
line 720
|
|
;720: other->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 721
|
|
;721: other->client->ps.persistant[PERS_CAPTURES]++;
|
|
ADDRLP4 28
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 336
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 724
|
|
;722:
|
|
;723: // other gets another 10 frag bonus
|
|
;724: AddScore(other, ent->r.currentOrigin, CTF_CAPTURE_BONUS);
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 100
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 726
|
|
;725:
|
|
;726: Team_CaptureFlagSound( ent, team );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 Team_CaptureFlagSound
|
|
CALLV
|
|
pop
|
|
line 729
|
|
;727:
|
|
;728: // Ok, let's do the player loop, hand out the bonuses
|
|
;729: for (i = 0; i < g_maxclients.integer; i++) {
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $400
|
|
JUMPV
|
|
LABELV $397
|
|
line 730
|
|
;730: player = &g_entities[i];
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 731
|
|
;731: if (!player->inuse)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $402
|
|
line 732
|
|
;732: continue;
|
|
ADDRGP4 $398
|
|
JUMPV
|
|
LABELV $402
|
|
line 734
|
|
;733:
|
|
;734: if (player->client->sess.sessionTeam !=
|
|
ADDRLP4 32
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
EQI4 $404
|
|
line 735
|
|
;735: cl->sess.sessionTeam) {
|
|
line 736
|
|
;736: player->client->pers.teamState.lasthurtcarrier = -5;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1492
|
|
ADDP4
|
|
CNSTF4 3231711232
|
|
ASGNF4
|
|
line 737
|
|
;737: } else if (player->client->sess.sessionTeam ==
|
|
ADDRGP4 $405
|
|
JUMPV
|
|
LABELV $404
|
|
ADDRLP4 36
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
NEI4 $406
|
|
line 738
|
|
;738: cl->sess.sessionTeam) {
|
|
line 739
|
|
;739: if (player != other)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $408
|
|
line 740
|
|
;740: AddScore(player, ent->r.currentOrigin, CTF_TEAM_BONUS);
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 25
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
LABELV $408
|
|
line 742
|
|
;741: // award extra points for capture assists
|
|
;742: if (player->client->pers.teamState.lastreturnedflag +
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1496
|
|
ADDP4
|
|
INDIRF4
|
|
CNSTF4 1176256512
|
|
ADDF4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
LEF4 $410
|
|
line 743
|
|
;743: CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time) {
|
|
line 744
|
|
;744: AddScore (player, ent->r.currentOrigin, CTF_RETURN_FLAG_ASSIST_BONUS);
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 10
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 745
|
|
;745: other->client->pers.teamState.assists++;
|
|
ADDRLP4 40
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1488
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 747
|
|
;746:
|
|
;747: player->client->ps.persistant[PERS_ASSIST_COUNT]++;
|
|
ADDRLP4 44
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 328
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 749
|
|
;748: // add the sprite over the player's head
|
|
;749: player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 48
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 48
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 750
|
|
;750: player->client->ps.eFlags |= EF_AWARD_ASSIST;
|
|
ADDRLP4 52
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 131072
|
|
BORI4
|
|
ASGNI4
|
|
line 751
|
|
;751: player->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 753
|
|
;752:
|
|
;753: } else if (player->client->pers.teamState.lastfraggedcarrier +
|
|
ADDRGP4 $411
|
|
JUMPV
|
|
LABELV $410
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1504
|
|
ADDP4
|
|
INDIRF4
|
|
CNSTF4 1176256512
|
|
ADDF4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
LEF4 $414
|
|
line 754
|
|
;754: CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time) {
|
|
line 755
|
|
;755: AddScore(player, ent->r.currentOrigin, CTF_FRAG_CARRIER_ASSIST_BONUS);
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 10
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 756
|
|
;756: other->client->pers.teamState.assists++;
|
|
ADDRLP4 40
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1488
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 757
|
|
;757: player->client->ps.persistant[PERS_ASSIST_COUNT]++;
|
|
ADDRLP4 44
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 328
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 759
|
|
;758: // add the sprite over the player's head
|
|
;759: player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 48
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 48
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 760
|
|
;760: player->client->ps.eFlags |= EF_AWARD_ASSIST;
|
|
ADDRLP4 52
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 131072
|
|
BORI4
|
|
ASGNI4
|
|
line 761
|
|
;761: player->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 762
|
|
;762: }
|
|
LABELV $414
|
|
LABELV $411
|
|
line 763
|
|
;763: }
|
|
LABELV $406
|
|
LABELV $405
|
|
line 764
|
|
;764: }
|
|
LABELV $398
|
|
line 729
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $400
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
LTI4 $397
|
|
line 765
|
|
;765: Team_ResetFlags();
|
|
ADDRGP4 Team_ResetFlags
|
|
CALLV
|
|
pop
|
|
line 767
|
|
;766:
|
|
;767: CalculateRanks();
|
|
ADDRGP4 CalculateRanks
|
|
CALLV
|
|
pop
|
|
line 769
|
|
;768:
|
|
;769: return 0; // Do not respawn this automatically
|
|
CNSTI4 0
|
|
RETI4
|
|
LABELV $386
|
|
endproc Team_TouchOurFlag 56 12
|
|
export Team_TouchEnemyFlag
|
|
proc Team_TouchEnemyFlag 4 12
|
|
line 772
|
|
;770:}
|
|
;771:
|
|
;772:int Team_TouchEnemyFlag( gentity_t *ent, gentity_t *other, int team ) {
|
|
line 773
|
|
;773: gclient_t *cl = other->client;
|
|
ADDRLP4 0
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 777
|
|
;774:
|
|
;775: //PrintMsg (NULL, "%s" S_COLOR_WHITE " got the %s flag!\n",
|
|
;776: // other->client->pers.netname, TeamName(team));
|
|
;777: PrintCTFMessage(other->s.number, team, CTFMESSAGE_PLAYER_GOT_FLAG);
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 4
|
|
ARGI4
|
|
ADDRGP4 PrintCTFMessage
|
|
CALLV
|
|
pop
|
|
line 779
|
|
;778:
|
|
;779: if (team == TEAM_RED)
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $419
|
|
line 780
|
|
;780: cl->ps.powerups[PW_REDFLAG] = INT_MAX; // flags never expire
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 360
|
|
ADDP4
|
|
CNSTI4 2147483647
|
|
ASGNI4
|
|
ADDRGP4 $420
|
|
JUMPV
|
|
LABELV $419
|
|
line 782
|
|
;781: else
|
|
;782: cl->ps.powerups[PW_BLUEFLAG] = INT_MAX; // flags never expire
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 364
|
|
ADDP4
|
|
CNSTI4 2147483647
|
|
ASGNI4
|
|
LABELV $420
|
|
line 784
|
|
;783:
|
|
;784: Team_SetFlagStatus( team, FLAG_TAKEN );
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 Team_SetFlagStatus
|
|
CALLV
|
|
pop
|
|
line 786
|
|
;785:
|
|
;786: AddScore(other, ent->r.currentOrigin, CTF_FLAG_BONUS);
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 10
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 787
|
|
;787: cl->pers.teamState.flagsince = level.time;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1500
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 788
|
|
;788: Team_TakeFlagSound( ent, team );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 Team_TakeFlagSound
|
|
CALLV
|
|
pop
|
|
line 790
|
|
;789:
|
|
;790: return -1; // Do not respawn this automatically, but do delete it if it was FL_DROPPED
|
|
CNSTI4 -1
|
|
RETI4
|
|
LABELV $418
|
|
endproc Team_TouchEnemyFlag 4 12
|
|
export Pickup_Team
|
|
proc Pickup_Team 24 12
|
|
line 793
|
|
;791:}
|
|
;792:
|
|
;793:int Pickup_Team( gentity_t *ent, gentity_t *other ) {
|
|
line 795
|
|
;794: int team;
|
|
;795: gclient_t *cl = other->client;
|
|
ADDRLP4 4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 798
|
|
;796:
|
|
;797: // figure out what team this flag is
|
|
;798: if( strcmp(ent->classname, "team_CTF_redflag") == 0 ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 416
|
|
ADDP4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 $262
|
|
ARGP4
|
|
ADDRLP4 8
|
|
ADDRGP4 strcmp
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $423
|
|
line 799
|
|
;799: team = TEAM_RED;
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 800
|
|
;800: }
|
|
ADDRGP4 $424
|
|
JUMPV
|
|
LABELV $423
|
|
line 801
|
|
;801: else if( strcmp(ent->classname, "team_CTF_blueflag") == 0 ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 416
|
|
ADDP4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 $264
|
|
ARGP4
|
|
ADDRLP4 12
|
|
ADDRGP4 strcmp
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $425
|
|
line 802
|
|
;802: team = TEAM_BLUE;
|
|
ADDRLP4 0
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 803
|
|
;803: }
|
|
ADDRGP4 $426
|
|
JUMPV
|
|
LABELV $425
|
|
line 804
|
|
;804: else if( strcmp(ent->classname, "team_CTF_neutralflag") == 0 ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 416
|
|
ADDP4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 $317
|
|
ARGP4
|
|
ADDRLP4 16
|
|
ADDRGP4 strcmp
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $427
|
|
line 805
|
|
;805: team = TEAM_FREE;
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 806
|
|
;806: }
|
|
ADDRGP4 $428
|
|
JUMPV
|
|
LABELV $427
|
|
line 807
|
|
;807: else {
|
|
line 809
|
|
;808:// PrintMsg ( other, "Don't know what team the flag is on.\n");
|
|
;809: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $422
|
|
JUMPV
|
|
LABELV $428
|
|
LABELV $426
|
|
LABELV $424
|
|
line 812
|
|
;810: }
|
|
;811: // GT_CTF
|
|
;812: if( team == cl->sess.sessionTeam) {
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
NEI4 $429
|
|
line 813
|
|
;813: return Team_TouchOurFlag( ent, other, team );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 20
|
|
ADDRGP4 Team_TouchOurFlag
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
RETI4
|
|
ADDRGP4 $422
|
|
JUMPV
|
|
LABELV $429
|
|
line 815
|
|
;814: }
|
|
;815: return Team_TouchEnemyFlag( ent, other, team );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 20
|
|
ADDRGP4 Team_TouchEnemyFlag
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
RETI4
|
|
LABELV $422
|
|
endproc Pickup_Team 24 12
|
|
export Team_GetLocation
|
|
proc Team_GetLocation 48 8
|
|
line 826
|
|
;816:}
|
|
;817:
|
|
;818:/*
|
|
;819:===========
|
|
;820:Team_GetLocation
|
|
;821:
|
|
;822:Report a location for the player. Uses placed nearby target_location entities
|
|
;823:============
|
|
;824:*/
|
|
;825:gentity_t *Team_GetLocation(gentity_t *ent)
|
|
;826:{
|
|
line 831
|
|
;827: gentity_t *eloc, *best;
|
|
;828: float bestlen, len;
|
|
;829: vec3_t origin;
|
|
;830:
|
|
;831: best = NULL;
|
|
ADDRLP4 24
|
|
CNSTP4 0
|
|
ASGNP4
|
|
line 832
|
|
;832: bestlen = 3*8192.0*8192.0;
|
|
ADDRLP4 20
|
|
CNSTF4 1296039936
|
|
ASGNF4
|
|
line 834
|
|
;833:
|
|
;834: VectorCopy( ent->r.currentOrigin, origin );
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 836
|
|
;835:
|
|
;836: for (eloc = level.locationHead; eloc; eloc = eloc->nextTrain) {
|
|
ADDRLP4 0
|
|
ADDRGP4 level+9052
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRGP4 $435
|
|
JUMPV
|
|
LABELV $432
|
|
line 837
|
|
;837: len = ( origin[0] - eloc->r.currentOrigin[0] ) * ( origin[0] - eloc->r.currentOrigin[0] )
|
|
ADDRLP4 32
|
|
ADDRLP4 4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 36
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 372
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 40
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 376
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 16
|
|
ADDRLP4 32
|
|
INDIRF4
|
|
ADDRLP4 32
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 4+4
|
|
INDIRF4
|
|
ADDRLP4 36
|
|
INDIRF4
|
|
SUBF4
|
|
ADDRLP4 4+4
|
|
INDIRF4
|
|
ADDRLP4 36
|
|
INDIRF4
|
|
SUBF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 4+8
|
|
INDIRF4
|
|
ADDRLP4 40
|
|
INDIRF4
|
|
SUBF4
|
|
ADDRLP4 4+8
|
|
INDIRF4
|
|
ADDRLP4 40
|
|
INDIRF4
|
|
SUBF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 841
|
|
;838: + ( origin[1] - eloc->r.currentOrigin[1] ) * ( origin[1] - eloc->r.currentOrigin[1] )
|
|
;839: + ( origin[2] - eloc->r.currentOrigin[2] ) * ( origin[2] - eloc->r.currentOrigin[2] );
|
|
;840:
|
|
;841: if ( len > bestlen ) {
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
ADDRLP4 20
|
|
INDIRF4
|
|
LEF4 $441
|
|
line 842
|
|
;842: continue;
|
|
ADDRGP4 $433
|
|
JUMPV
|
|
LABELV $441
|
|
line 845
|
|
;843: }
|
|
;844:
|
|
;845: if ( !trap_InPVS( origin, eloc->r.currentOrigin ) ) {
|
|
ADDRLP4 4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 44
|
|
ADDRGP4 trap_InPVS
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $443
|
|
line 846
|
|
;846: continue;
|
|
ADDRGP4 $433
|
|
JUMPV
|
|
LABELV $443
|
|
line 849
|
|
;847: }
|
|
;848:
|
|
;849: bestlen = len;
|
|
ADDRLP4 20
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
ASGNF4
|
|
line 850
|
|
;850: best = eloc;
|
|
ADDRLP4 24
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
line 851
|
|
;851: }
|
|
LABELV $433
|
|
line 836
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 540
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
LABELV $435
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $432
|
|
line 853
|
|
;852:
|
|
;853: return best;
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
RETP4
|
|
LABELV $431
|
|
endproc Team_GetLocation 48 8
|
|
export Team_GetLocationMsg
|
|
proc Team_GetLocationMsg 12 24
|
|
line 865
|
|
;854:}
|
|
;855:
|
|
;856:
|
|
;857:/*
|
|
;858:===========
|
|
;859:Team_GetLocation
|
|
;860:
|
|
;861:Report a location for the player. Uses placed nearby target_location entities
|
|
;862:============
|
|
;863:*/
|
|
;864:qboolean Team_GetLocationMsg(gentity_t *ent, char *loc, int loclen)
|
|
;865:{
|
|
line 868
|
|
;866: gentity_t *best;
|
|
;867:
|
|
;868: best = Team_GetLocation( ent );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 4
|
|
ADDRGP4 Team_GetLocation
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 870
|
|
;869:
|
|
;870: if (!best)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $446
|
|
line 871
|
|
;871: return qfalse;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $445
|
|
JUMPV
|
|
LABELV $446
|
|
line 873
|
|
;872:
|
|
;873: if (best->count) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $448
|
|
line 874
|
|
;874: if (best->count < 0)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $450
|
|
line 875
|
|
;875: best->count = 0;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
LABELV $450
|
|
line 876
|
|
;876: if (best->count > 7)
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 7
|
|
LEI4 $452
|
|
line 877
|
|
;877: best->count = 7;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
CNSTI4 7
|
|
ASGNI4
|
|
LABELV $452
|
|
line 878
|
|
;878: Com_sprintf(loc, loclen, "%c%c%s" S_COLOR_WHITE, Q_COLOR_ESCAPE, best->count + '0', best->message );
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 $454
|
|
ARGP4
|
|
CNSTI4 94
|
|
ARGI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 48
|
|
ADDI4
|
|
ARGI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 572
|
|
ADDP4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 Com_sprintf
|
|
CALLV
|
|
pop
|
|
line 879
|
|
;879: } else
|
|
ADDRGP4 $449
|
|
JUMPV
|
|
LABELV $448
|
|
line 880
|
|
;880: Com_sprintf(loc, loclen, "%s", best->message);
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 $455
|
|
ARGP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 572
|
|
ADDP4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 Com_sprintf
|
|
CALLV
|
|
pop
|
|
LABELV $449
|
|
line 882
|
|
;881:
|
|
;882: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
LABELV $445
|
|
endproc Team_GetLocationMsg 12 24
|
|
export SelectRandomTeamSpawnPoint
|
|
proc SelectRandomTeamSpawnPoint 152 12
|
|
line 896
|
|
;883:}
|
|
;884:
|
|
;885:
|
|
;886:/*---------------------------------------------------------------------------*/
|
|
;887:
|
|
;888:/*
|
|
;889:================
|
|
;890:SelectRandomDeathmatchSpawnPoint
|
|
;891:
|
|
;892:go to a random point that doesn't telefrag
|
|
;893:================
|
|
;894:*/
|
|
;895:#define MAX_TEAM_SPAWN_POINTS 32
|
|
;896:gentity_t *SelectRandomTeamSpawnPoint( int teamstate, team_t team ) {
|
|
line 903
|
|
;897: gentity_t *spot;
|
|
;898: int count;
|
|
;899: int selection;
|
|
;900: gentity_t *spots[MAX_TEAM_SPAWN_POINTS];
|
|
;901: char *classname;
|
|
;902:
|
|
;903: if (g_gametype.integer == GT_SAGA)
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 6
|
|
NEI4 $457
|
|
line 904
|
|
;904: {
|
|
line 905
|
|
;905: if (team == SAGATEAM_IMPERIAL)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $460
|
|
line 906
|
|
;906: {
|
|
line 907
|
|
;907: classname = "info_player_imperial";
|
|
ADDRLP4 8
|
|
ADDRGP4 $462
|
|
ASGNP4
|
|
line 908
|
|
;908: }
|
|
ADDRGP4 $458
|
|
JUMPV
|
|
LABELV $460
|
|
line 910
|
|
;909: else
|
|
;910: {
|
|
line 911
|
|
;911: classname = "info_player_rebel";
|
|
ADDRLP4 8
|
|
ADDRGP4 $463
|
|
ASGNP4
|
|
line 912
|
|
;912: }
|
|
line 913
|
|
;913: }
|
|
ADDRGP4 $458
|
|
JUMPV
|
|
LABELV $457
|
|
line 915
|
|
;914: else
|
|
;915: {
|
|
line 916
|
|
;916: if (teamstate == TEAM_BEGIN) {
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $464
|
|
line 917
|
|
;917: if (team == TEAM_RED)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $466
|
|
line 918
|
|
;918: classname = "team_CTF_redplayer";
|
|
ADDRLP4 8
|
|
ADDRGP4 $468
|
|
ASGNP4
|
|
ADDRGP4 $465
|
|
JUMPV
|
|
LABELV $466
|
|
line 919
|
|
;919: else if (team == TEAM_BLUE)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $469
|
|
line 920
|
|
;920: classname = "team_CTF_blueplayer";
|
|
ADDRLP4 8
|
|
ADDRGP4 $471
|
|
ASGNP4
|
|
ADDRGP4 $465
|
|
JUMPV
|
|
LABELV $469
|
|
line 922
|
|
;921: else
|
|
;922: return NULL;
|
|
CNSTP4 0
|
|
RETP4
|
|
ADDRGP4 $456
|
|
JUMPV
|
|
line 923
|
|
;923: } else {
|
|
LABELV $464
|
|
line 924
|
|
;924: if (team == TEAM_RED)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $472
|
|
line 925
|
|
;925: classname = "team_CTF_redspawn";
|
|
ADDRLP4 8
|
|
ADDRGP4 $474
|
|
ASGNP4
|
|
ADDRGP4 $473
|
|
JUMPV
|
|
LABELV $472
|
|
line 926
|
|
;926: else if (team == TEAM_BLUE)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $475
|
|
line 927
|
|
;927: classname = "team_CTF_bluespawn";
|
|
ADDRLP4 8
|
|
ADDRGP4 $477
|
|
ASGNP4
|
|
ADDRGP4 $476
|
|
JUMPV
|
|
LABELV $475
|
|
line 929
|
|
;928: else
|
|
;929: return NULL;
|
|
CNSTP4 0
|
|
RETP4
|
|
ADDRGP4 $456
|
|
JUMPV
|
|
LABELV $476
|
|
LABELV $473
|
|
line 930
|
|
;930: }
|
|
LABELV $465
|
|
line 931
|
|
;931: }
|
|
LABELV $458
|
|
line 932
|
|
;932: count = 0;
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 934
|
|
;933:
|
|
;934: spot = NULL;
|
|
ADDRLP4 0
|
|
CNSTP4 0
|
|
ASGNP4
|
|
ADDRGP4 $479
|
|
JUMPV
|
|
LABELV $478
|
|
line 936
|
|
;935:
|
|
;936: while ((spot = G_Find (spot, FOFS(classname), classname)) != NULL) {
|
|
line 937
|
|
;937: if ( SpotWouldTelefrag( spot ) ) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 144
|
|
ADDRGP4 SpotWouldTelefrag
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 144
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $481
|
|
line 938
|
|
;938: continue;
|
|
ADDRGP4 $479
|
|
JUMPV
|
|
LABELV $481
|
|
line 940
|
|
;939: }
|
|
;940: spots[ count ] = spot;
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 12
|
|
ADDP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
line 941
|
|
;941: if (++count == MAX_TEAM_SPAWN_POINTS)
|
|
ADDRLP4 148
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
CNSTI4 32
|
|
NEI4 $483
|
|
line 942
|
|
;942: break;
|
|
ADDRGP4 $480
|
|
JUMPV
|
|
LABELV $483
|
|
line 943
|
|
;943: }
|
|
LABELV $479
|
|
line 936
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 416
|
|
ARGI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 144
|
|
ADDRGP4 G_Find
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $478
|
|
LABELV $480
|
|
line 945
|
|
;944:
|
|
;945: if ( !count ) { // no spots that won't telefrag
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $485
|
|
line 946
|
|
;946: return G_Find( NULL, FOFS(classname), classname);
|
|
CNSTP4 0
|
|
ARGP4
|
|
CNSTI4 416
|
|
ARGI4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 148
|
|
ADDRGP4 G_Find
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
RETP4
|
|
ADDRGP4 $456
|
|
JUMPV
|
|
LABELV $485
|
|
line 949
|
|
;947: }
|
|
;948:
|
|
;949: selection = rand() % count;
|
|
ADDRLP4 148
|
|
ADDRGP4 rand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 140
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MODI4
|
|
ASGNI4
|
|
line 950
|
|
;950: return spots[ selection ];
|
|
ADDRLP4 140
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 12
|
|
ADDP4
|
|
INDIRP4
|
|
RETP4
|
|
LABELV $456
|
|
endproc SelectRandomTeamSpawnPoint 152 12
|
|
export SelectCTFSpawnPoint
|
|
proc SelectCTFSpawnPoint 12 12
|
|
line 960
|
|
;951:}
|
|
;952:
|
|
;953:
|
|
;954:/*
|
|
;955:===========
|
|
;956:SelectCTFSpawnPoint
|
|
;957:
|
|
;958:============
|
|
;959:*/
|
|
;960:gentity_t *SelectCTFSpawnPoint ( team_t team, int teamstate, vec3_t origin, vec3_t angles ) {
|
|
line 963
|
|
;961: gentity_t *spot;
|
|
;962:
|
|
;963: spot = SelectRandomTeamSpawnPoint ( teamstate, team );
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 SelectRandomTeamSpawnPoint
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 965
|
|
;964:
|
|
;965: if (!spot) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $488
|
|
line 966
|
|
;966: return SelectSpawnPoint( vec3_origin, origin, angles );
|
|
ADDRGP4 vec3_origin
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 8
|
|
ADDRGP4 SelectSpawnPoint
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
RETP4
|
|
ADDRGP4 $487
|
|
JUMPV
|
|
LABELV $488
|
|
line 969
|
|
;967: }
|
|
;968:
|
|
;969: VectorCopy (spot->s.origin, origin);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 92
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 970
|
|
;970: origin[2] += 9;
|
|
ADDRLP4 8
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
INDIRF4
|
|
CNSTF4 1091567616
|
|
ADDF4
|
|
ASGNF4
|
|
line 971
|
|
;971: VectorCopy (spot->s.angles, angles);
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 116
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 973
|
|
;972:
|
|
;973: return spot;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
RETP4
|
|
LABELV $487
|
|
endproc SelectCTFSpawnPoint 12 12
|
|
export SelectSagaSpawnPoint
|
|
proc SelectSagaSpawnPoint 12 12
|
|
line 982
|
|
;974:}
|
|
;975:
|
|
;976:/*
|
|
;977:===========
|
|
;978:SelectSagaSpawnPoint
|
|
;979:
|
|
;980:============
|
|
;981:*/
|
|
;982:gentity_t *SelectSagaSpawnPoint ( team_t team, int teamstate, vec3_t origin, vec3_t angles ) {
|
|
line 985
|
|
;983: gentity_t *spot;
|
|
;984:
|
|
;985: spot = SelectRandomTeamSpawnPoint ( teamstate, team );
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 SelectRandomTeamSpawnPoint
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 987
|
|
;986:
|
|
;987: if (!spot) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $491
|
|
line 988
|
|
;988: return SelectSpawnPoint( vec3_origin, origin, angles );
|
|
ADDRGP4 vec3_origin
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 8
|
|
ADDRGP4 SelectSpawnPoint
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
RETP4
|
|
ADDRGP4 $490
|
|
JUMPV
|
|
LABELV $491
|
|
line 991
|
|
;989: }
|
|
;990:
|
|
;991: VectorCopy (spot->s.origin, origin);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 92
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 992
|
|
;992: origin[2] += 9;
|
|
ADDRLP4 8
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
INDIRF4
|
|
CNSTF4 1091567616
|
|
ADDF4
|
|
ASGNF4
|
|
line 993
|
|
;993: VectorCopy (spot->s.angles, angles);
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 116
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 995
|
|
;994:
|
|
;995: return spot;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
RETP4
|
|
LABELV $490
|
|
endproc SelectSagaSpawnPoint 12 12
|
|
proc SortClients 0 0
|
|
line 1000
|
|
;996:}
|
|
;997:
|
|
;998:/*---------------------------------------------------------------------------*/
|
|
;999:
|
|
;1000:static int QDECL SortClients( const void *a, const void *b ) {
|
|
line 1001
|
|
;1001: return *(int *)a - *(int *)b;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
INDIRI4
|
|
SUBI4
|
|
RETI4
|
|
LABELV $493
|
|
endproc SortClients 0 0
|
|
export TeamplayInfoMessage
|
|
proc TeamplayInfoMessage 9404 36
|
|
line 1014
|
|
;1002:}
|
|
;1003:
|
|
;1004:
|
|
;1005:/*
|
|
;1006:==================
|
|
;1007:TeamplayLocationsMessage
|
|
;1008:
|
|
;1009:Format:
|
|
;1010: clientNum location health armor weapon powerups
|
|
;1011:
|
|
;1012:==================
|
|
;1013:*/
|
|
;1014:void TeamplayInfoMessage( gentity_t *ent ) {
|
|
line 1024
|
|
;1015: char entry[1024];
|
|
;1016: char string[8192];
|
|
;1017: int stringlength;
|
|
;1018: int i, j;
|
|
;1019: gentity_t *player;
|
|
;1020: int cnt;
|
|
;1021: int h, a;
|
|
;1022: int clients[TEAM_MAXOVERLAY];
|
|
;1023:
|
|
;1024: if ( ! ent->client->pers.teamInfo )
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1516
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $495
|
|
line 1025
|
|
;1025: return;
|
|
ADDRGP4 $494
|
|
JUMPV
|
|
LABELV $495
|
|
line 1030
|
|
;1026:
|
|
;1027: // figure out what client should be on the display
|
|
;1028: // we are limited to 8, but we want to use the top eight players
|
|
;1029: // but in client order (so they don't keep changing position on the overlay)
|
|
;1030: for (i = 0, cnt = 0; i < g_maxclients.integer && cnt < TEAM_MAXOVERLAY; i++) {
|
|
ADDRLP4 9372
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
ADDRLP4 9372
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
ADDRLP4 9372
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRGP4 $500
|
|
JUMPV
|
|
LABELV $497
|
|
line 1031
|
|
;1031: player = g_entities + level.sortedClients[i];
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 level+84
|
|
ADDP4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 1032
|
|
;1032: if (player->inuse && player->client->sess.sessionTeam ==
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $503
|
|
ADDRLP4 9380
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 9384
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ADDRLP4 9380
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 9384
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 9380
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 9384
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
NEI4 $503
|
|
line 1033
|
|
;1033: ent->client->sess.sessionTeam ) {
|
|
line 1034
|
|
;1034: clients[cnt++] = level.sortedClients[i];
|
|
ADDRLP4 9388
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
ADDRLP4 9388
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
ADDRLP4 9392
|
|
CNSTI4 2
|
|
ASGNI4
|
|
ADDRLP4 9388
|
|
INDIRI4
|
|
ADDRLP4 9392
|
|
INDIRI4
|
|
LSHI4
|
|
ADDRLP4 9244
|
|
ADDP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRLP4 9392
|
|
INDIRI4
|
|
LSHI4
|
|
ADDRGP4 level+84
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1035
|
|
;1035: }
|
|
LABELV $503
|
|
line 1036
|
|
;1036: }
|
|
LABELV $498
|
|
line 1030
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $500
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
GEI4 $506
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CNSTI4 32
|
|
LTI4 $497
|
|
LABELV $506
|
|
line 1039
|
|
;1037:
|
|
;1038: // We have the top eight players, sort them by clientNum
|
|
;1039: qsort( clients, cnt, sizeof( clients[0] ), SortClients );
|
|
ADDRLP4 9244
|
|
ARGP4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 4
|
|
ARGI4
|
|
ADDRGP4 SortClients
|
|
ARGP4
|
|
ADDRGP4 qsort
|
|
CALLV
|
|
pop
|
|
line 1042
|
|
;1040:
|
|
;1041: // send the latest information on all clients
|
|
;1042: string[0] = 0;
|
|
ADDRLP4 1052
|
|
CNSTI1 0
|
|
ASGNI1
|
|
line 1043
|
|
;1043: stringlength = 0;
|
|
ADDRLP4 1044
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1045
|
|
;1044:
|
|
;1045: for (i = 0, cnt = 0; i < g_maxclients.integer && cnt < TEAM_MAXOVERLAY; i++) {
|
|
ADDRLP4 9376
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
ADDRLP4 9376
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
ADDRLP4 9376
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRGP4 $510
|
|
JUMPV
|
|
LABELV $507
|
|
line 1046
|
|
;1046: player = g_entities + i;
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 1047
|
|
;1047: if (player->inuse && player->client->sess.sessionTeam ==
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $512
|
|
ADDRLP4 9384
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 9388
|
|
CNSTI4 1520
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ADDRLP4 9384
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 9388
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 9384
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 9388
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
NEI4 $512
|
|
line 1048
|
|
;1048: ent->client->sess.sessionTeam ) {
|
|
line 1050
|
|
;1049:
|
|
;1050: h = player->client->ps.stats[STAT_HEALTH];
|
|
ADDRLP4 1036
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 216
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1051
|
|
;1051: a = player->client->ps.stats[STAT_ARMOR];
|
|
ADDRLP4 1040
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 236
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1052
|
|
;1052: if (h < 0) h = 0;
|
|
ADDRLP4 1036
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $514
|
|
ADDRLP4 1036
|
|
CNSTI4 0
|
|
ASGNI4
|
|
LABELV $514
|
|
line 1053
|
|
;1053: if (a < 0) a = 0;
|
|
ADDRLP4 1040
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $516
|
|
ADDRLP4 1040
|
|
CNSTI4 0
|
|
ASGNI4
|
|
LABELV $516
|
|
line 1055
|
|
;1054:
|
|
;1055: Com_sprintf (entry, sizeof(entry),
|
|
ADDRLP4 12
|
|
ARGP4
|
|
CNSTI4 1024
|
|
ARGI4
|
|
ADDRGP4 $518
|
|
ARGP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 9396
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 9396
|
|
INDIRP4
|
|
CNSTI4 1464
|
|
ADDP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 1036
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 1040
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 9396
|
|
INDIRP4
|
|
CNSTI4 148
|
|
ADDP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 272
|
|
ADDP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 Com_sprintf
|
|
CALLV
|
|
pop
|
|
line 1060
|
|
;1056: " %i %i %i %i %i %i",
|
|
;1057:// level.sortedClients[i], player->client->pers.teamState.location, h, a,
|
|
;1058: i, player->client->pers.teamState.location, h, a,
|
|
;1059: player->client->ps.weapon, player->s.powerups);
|
|
;1060: j = strlen(entry);
|
|
ADDRLP4 12
|
|
ARGP4
|
|
ADDRLP4 9400
|
|
ADDRGP4 strlen
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 1048
|
|
ADDRLP4 9400
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1061
|
|
;1061: if (stringlength + j > sizeof(string))
|
|
ADDRLP4 1044
|
|
INDIRI4
|
|
ADDRLP4 1048
|
|
INDIRI4
|
|
ADDI4
|
|
CVIU4 4
|
|
CNSTU4 8192
|
|
LEU4 $519
|
|
line 1062
|
|
;1062: break;
|
|
ADDRGP4 $509
|
|
JUMPV
|
|
LABELV $519
|
|
line 1063
|
|
;1063: strcpy (string + stringlength, entry);
|
|
ADDRLP4 1044
|
|
INDIRI4
|
|
ADDRLP4 1052
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 12
|
|
ARGP4
|
|
ADDRGP4 strcpy
|
|
CALLP4
|
|
pop
|
|
line 1064
|
|
;1064: stringlength += j;
|
|
ADDRLP4 1044
|
|
ADDRLP4 1044
|
|
INDIRI4
|
|
ADDRLP4 1048
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 1065
|
|
;1065: cnt++;
|
|
ADDRLP4 8
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 1066
|
|
;1066: }
|
|
LABELV $512
|
|
line 1067
|
|
;1067: }
|
|
LABELV $508
|
|
line 1045
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $510
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
GEI4 $521
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CNSTI4 32
|
|
LTI4 $507
|
|
LABELV $521
|
|
LABELV $509
|
|
line 1069
|
|
;1068:
|
|
;1069: trap_SendServerCommand( ent-g_entities, va("tinfo %i %s", cnt, string) );
|
|
ADDRGP4 $522
|
|
ARGP4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 1052
|
|
ARGP4
|
|
ADDRLP4 9380
|
|
ADDRGP4 va
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRGP4 g_entities
|
|
CVPU4 4
|
|
SUBU4
|
|
CVUI4 4
|
|
CNSTI4 828
|
|
DIVI4
|
|
ARGI4
|
|
ADDRLP4 9380
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 trap_SendServerCommand
|
|
CALLV
|
|
pop
|
|
line 1070
|
|
;1070:}
|
|
LABELV $494
|
|
endproc TeamplayInfoMessage 9404 36
|
|
export CheckTeamStatus
|
|
proc CheckTeamStatus 24 4
|
|
line 1072
|
|
;1071:
|
|
;1072:void CheckTeamStatus(void) {
|
|
line 1076
|
|
;1073: int i;
|
|
;1074: gentity_t *loc, *ent;
|
|
;1075:
|
|
;1076: if (level.time - level.lastTeamLocationTime > TEAM_LOCATION_UPDATE_TIME) {
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ADDRGP4 level+60
|
|
INDIRI4
|
|
SUBI4
|
|
CNSTI4 1000
|
|
LEI4 $524
|
|
line 1078
|
|
;1077:
|
|
;1078: level.lastTeamLocationTime = level.time;
|
|
ADDRGP4 level+60
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1080
|
|
;1079:
|
|
;1080: for (i = 0; i < g_maxclients.integer; i++) {
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $533
|
|
JUMPV
|
|
LABELV $530
|
|
line 1081
|
|
;1081: ent = g_entities + i;
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 1083
|
|
;1082:
|
|
;1083: if ( ent->client->pers.connected != CON_CONNECTED ) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1368
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $535
|
|
line 1084
|
|
;1084: continue;
|
|
ADDRGP4 $531
|
|
JUMPV
|
|
LABELV $535
|
|
line 1087
|
|
;1085: }
|
|
;1086:
|
|
;1087: if (ent->inuse && (ent->client->sess.sessionTeam == TEAM_RED || ent->client->sess.sessionTeam == TEAM_BLUE)) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $537
|
|
ADDRLP4 16
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $539
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $537
|
|
LABELV $539
|
|
line 1088
|
|
;1088: loc = Team_GetLocation( ent );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 20
|
|
ADDRGP4 Team_GetLocation
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1089
|
|
;1089: if (loc)
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $540
|
|
line 1090
|
|
;1090: ent->client->pers.teamState.location = loc->health;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1464
|
|
ADDP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRGP4 $541
|
|
JUMPV
|
|
LABELV $540
|
|
line 1092
|
|
;1091: else
|
|
;1092: ent->client->pers.teamState.location = 0;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1464
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
LABELV $541
|
|
line 1093
|
|
;1093: }
|
|
LABELV $537
|
|
line 1094
|
|
;1094: }
|
|
LABELV $531
|
|
line 1080
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $533
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
LTI4 $530
|
|
line 1096
|
|
;1095:
|
|
;1096: for (i = 0; i < g_maxclients.integer; i++) {
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $545
|
|
JUMPV
|
|
LABELV $542
|
|
line 1097
|
|
;1097: ent = g_entities + i;
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 1099
|
|
;1098:
|
|
;1099: if ( ent->client->pers.connected != CON_CONNECTED ) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1368
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $547
|
|
line 1100
|
|
;1100: continue;
|
|
ADDRGP4 $543
|
|
JUMPV
|
|
LABELV $547
|
|
line 1103
|
|
;1101: }
|
|
;1102:
|
|
;1103: if (ent->inuse && (ent->client->sess.sessionTeam == TEAM_RED || ent->client->sess.sessionTeam == TEAM_BLUE)) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $549
|
|
ADDRLP4 16
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $551
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $549
|
|
LABELV $551
|
|
line 1104
|
|
;1104: TeamplayInfoMessage( ent );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 TeamplayInfoMessage
|
|
CALLV
|
|
pop
|
|
line 1105
|
|
;1105: }
|
|
LABELV $549
|
|
line 1106
|
|
;1106: }
|
|
LABELV $543
|
|
line 1096
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $545
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRGP4 g_maxclients+12
|
|
INDIRI4
|
|
LTI4 $542
|
|
line 1107
|
|
;1107: }
|
|
LABELV $524
|
|
line 1108
|
|
;1108:}
|
|
LABELV $523
|
|
endproc CheckTeamStatus 24 4
|
|
export SP_team_CTF_redplayer
|
|
proc SP_team_CTF_redplayer 0 0
|
|
line 1115
|
|
;1109:
|
|
;1110:/*-----------------------------------------------------------------*/
|
|
;1111:
|
|
;1112:/*QUAKED team_CTF_redplayer (1 0 0) (-16 -16 -16) (16 16 32)
|
|
;1113:Only in CTF games. Red players spawn here at game start.
|
|
;1114:*/
|
|
;1115:void SP_team_CTF_redplayer( gentity_t *ent ) {
|
|
line 1116
|
|
;1116:}
|
|
LABELV $552
|
|
endproc SP_team_CTF_redplayer 0 0
|
|
export SP_team_CTF_blueplayer
|
|
proc SP_team_CTF_blueplayer 0 0
|
|
line 1122
|
|
;1117:
|
|
;1118:
|
|
;1119:/*QUAKED team_CTF_blueplayer (0 0 1) (-16 -16 -16) (16 16 32)
|
|
;1120:Only in CTF games. Blue players spawn here at game start.
|
|
;1121:*/
|
|
;1122:void SP_team_CTF_blueplayer( gentity_t *ent ) {
|
|
line 1123
|
|
;1123:}
|
|
LABELV $553
|
|
endproc SP_team_CTF_blueplayer 0 0
|
|
export SP_team_CTF_redspawn
|
|
proc SP_team_CTF_redspawn 0 0
|
|
line 1130
|
|
;1124:
|
|
;1125:
|
|
;1126:/*QUAKED team_CTF_redspawn (1 0 0) (-16 -16 -24) (16 16 32)
|
|
;1127:potential spawning position for red team in CTF games.
|
|
;1128:Targets will be fired when someone spawns in on them.
|
|
;1129:*/
|
|
;1130:void SP_team_CTF_redspawn(gentity_t *ent) {
|
|
line 1131
|
|
;1131:}
|
|
LABELV $554
|
|
endproc SP_team_CTF_redspawn 0 0
|
|
export SP_team_CTF_bluespawn
|
|
proc SP_team_CTF_bluespawn 0 0
|
|
line 1137
|
|
;1132:
|
|
;1133:/*QUAKED team_CTF_bluespawn (0 0 1) (-16 -16 -24) (16 16 32)
|
|
;1134:potential spawning position for blue team in CTF games.
|
|
;1135:Targets will be fired when someone spawns in on them.
|
|
;1136:*/
|
|
;1137:void SP_team_CTF_bluespawn(gentity_t *ent) {
|
|
line 1138
|
|
;1138:}
|
|
LABELV $555
|
|
endproc SP_team_CTF_bluespawn 0 0
|
|
bss
|
|
export teamgame
|
|
align 4
|
|
LABELV teamgame
|
|
skip 28
|
|
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 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 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 $522
|
|
char 1 116
|
|
char 1 105
|
|
char 1 110
|
|
char 1 102
|
|
char 1 111
|
|
char 1 32
|
|
char 1 37
|
|
char 1 105
|
|
char 1 32
|
|
char 1 37
|
|
char 1 115
|
|
char 1 0
|
|
align 1
|
|
LABELV $518
|
|
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 $477
|
|
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 115
|
|
char 1 112
|
|
char 1 97
|
|
char 1 119
|
|
char 1 110
|
|
char 1 0
|
|
align 1
|
|
LABELV $474
|
|
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 115
|
|
char 1 112
|
|
char 1 97
|
|
char 1 119
|
|
char 1 110
|
|
char 1 0
|
|
align 1
|
|
LABELV $471
|
|
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 112
|
|
char 1 108
|
|
char 1 97
|
|
char 1 121
|
|
char 1 101
|
|
char 1 114
|
|
char 1 0
|
|
align 1
|
|
LABELV $468
|
|
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 112
|
|
char 1 108
|
|
char 1 97
|
|
char 1 121
|
|
char 1 101
|
|
char 1 114
|
|
char 1 0
|
|
align 1
|
|
LABELV $463
|
|
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 114
|
|
char 1 101
|
|
char 1 98
|
|
char 1 101
|
|
char 1 108
|
|
char 1 0
|
|
align 1
|
|
LABELV $462
|
|
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 105
|
|
char 1 109
|
|
char 1 112
|
|
char 1 101
|
|
char 1 114
|
|
char 1 105
|
|
char 1 97
|
|
char 1 108
|
|
char 1 0
|
|
align 1
|
|
LABELV $455
|
|
char 1 37
|
|
char 1 115
|
|
char 1 0
|
|
align 1
|
|
LABELV $454
|
|
char 1 37
|
|
char 1 99
|
|
char 1 37
|
|
char 1 99
|
|
char 1 37
|
|
char 1 115
|
|
char 1 94
|
|
char 1 55
|
|
char 1 0
|
|
align 1
|
|
LABELV $366
|
|
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 32
|
|
char 1 78
|
|
char 1 85
|
|
char 1 76
|
|
char 1 76
|
|
char 1 32
|
|
char 1 112
|
|
char 1 97
|
|
char 1 115
|
|
char 1 115
|
|
char 1 101
|
|
char 1 100
|
|
char 1 32
|
|
char 1 116
|
|
char 1 111
|
|
char 1 32
|
|
char 1 84
|
|
char 1 101
|
|
char 1 97
|
|
char 1 109
|
|
char 1 95
|
|
char 1 67
|
|
char 1 97
|
|
char 1 112
|
|
char 1 116
|
|
char 1 117
|
|
char 1 114
|
|
char 1 101
|
|
char 1 70
|
|
char 1 108
|
|
char 1 97
|
|
char 1 103
|
|
char 1 83
|
|
char 1 111
|
|
char 1 117
|
|
char 1 110
|
|
char 1 100
|
|
char 1 10
|
|
char 1 0
|
|
align 1
|
|
LABELV $338
|
|
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 32
|
|
char 1 78
|
|
char 1 85
|
|
char 1 76
|
|
char 1 76
|
|
char 1 32
|
|
char 1 112
|
|
char 1 97
|
|
char 1 115
|
|
char 1 115
|
|
char 1 101
|
|
char 1 100
|
|
char 1 32
|
|
char 1 116
|
|
char 1 111
|
|
char 1 32
|
|
char 1 84
|
|
char 1 101
|
|
char 1 97
|
|
char 1 109
|
|
char 1 95
|
|
char 1 84
|
|
char 1 97
|
|
char 1 107
|
|
char 1 101
|
|
char 1 70
|
|
char 1 108
|
|
char 1 97
|
|
char 1 103
|
|
char 1 83
|
|
char 1 111
|
|
char 1 117
|
|
char 1 110
|
|
char 1 100
|
|
char 1 10
|
|
char 1 0
|
|
align 1
|
|
LABELV $332
|
|
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 32
|
|
char 1 78
|
|
char 1 85
|
|
char 1 76
|
|
char 1 76
|
|
char 1 32
|
|
char 1 112
|
|
char 1 97
|
|
char 1 115
|
|
char 1 115
|
|
char 1 101
|
|
char 1 100
|
|
char 1 32
|
|
char 1 116
|
|
char 1 111
|
|
char 1 32
|
|
char 1 84
|
|
char 1 101
|
|
char 1 97
|
|
char 1 109
|
|
char 1 95
|
|
char 1 82
|
|
char 1 101
|
|
char 1 116
|
|
char 1 117
|
|
char 1 114
|
|
char 1 110
|
|
char 1 70
|
|
char 1 108
|
|
char 1 97
|
|
char 1 103
|
|
char 1 83
|
|
char 1 111
|
|
char 1 117
|
|
char 1 110
|
|
char 1 100
|
|
char 1 10
|
|
char 1 0
|
|
align 1
|
|
LABELV $317
|
|
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 $264
|
|
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 $262
|
|
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 $118
|
|
char 1 94
|
|
char 1 55
|
|
char 1 0
|
|
align 1
|
|
LABELV $117
|
|
char 1 94
|
|
char 1 51
|
|
char 1 0
|
|
align 1
|
|
LABELV $114
|
|
char 1 94
|
|
char 1 52
|
|
char 1 0
|
|
align 1
|
|
LABELV $111
|
|
char 1 94
|
|
char 1 49
|
|
char 1 0
|
|
align 1
|
|
LABELV $100
|
|
char 1 70
|
|
char 1 82
|
|
char 1 69
|
|
char 1 69
|
|
char 1 0
|
|
align 1
|
|
LABELV $99
|
|
char 1 83
|
|
char 1 80
|
|
char 1 69
|
|
char 1 67
|
|
char 1 84
|
|
char 1 65
|
|
char 1 84
|
|
char 1 79
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $96
|
|
char 1 66
|
|
char 1 76
|
|
char 1 85
|
|
char 1 69
|
|
char 1 0
|
|
align 1
|
|
LABELV $93
|
|
char 1 82
|
|
char 1 69
|
|
char 1 68
|
|
char 1 0
|