data
export speedLoopSound
align 4
LABELV speedLoopSound
byte 4 0
export rageLoopSound
align 4
LABELV rageLoopSound
byte 4 0
export protectLoopSound
align 4
LABELV protectLoopSound
byte 4 0
export absorbLoopSound
align 4
LABELV absorbLoopSound
byte 4 0
export seeLoopSound
align 4
LABELV seeLoopSound
byte 4 0
export ysalamiriLoopSound
align 4
LABELV ysalamiriLoopSound
byte 4 0
export G_PreDefSound
code
proc G_PreDefSound 8 8
file "../w_force.c"
line 27
;1:#include "g_local.h"
;2:#include "w_saber.h"
;3:#include "ai_main.h"
;4:#include "..\ghoul2\g2.h"
;5:
;6:#define METROID_JUMP 1
;7:
;8:extern bot_state_t *botstates[MAX_CLIENTS];
;9:
;10:int speedLoopSound = 0;
;11: 
;12:int rageLoopSound = 0;
;13:
;14:int protectLoopSound = 0;
;15:
;16:int absorbLoopSound = 0;
;17:
;18:int seeLoopSound = 0;
;19:
;20:int	ysalamiriLoopSound = 0;
;21:
;22:#define FORCE_VELOCITY_DAMAGE 0
;23:
;24:int ForceShootDrain( gentity_t *self );
;25:
;26:gentity_t *G_PreDefSound(vec3_t org, int pdSound)
;27:{
line 30
;28:	gentity_t	*te;
;29:
;30:	te = G_TempEntity( org, EV_PREDEFSOUND );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 36
ARGI4
ADDRLP4 4
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 31
;31:	te->s.eventParm = pdSound;
ADDRLP4 0
INDIRP4
CNSTI4 256
ADDP4
ADDRFP4 4
INDIRI4
ASGNI4
line 32
;32:	VectorCopy(org, te->s.origin);
ADDRLP4 0
INDIRP4
CNSTI4 92
ADDP4
ADDRFP4 0
INDIRP4
INDIRB
ASGNB 12
line 34
;33:
;34:	return te;
ADDRLP4 0
INDIRP4
RETP4
LABELV $93
endproc G_PreDefSound 8 8
export InFront
proc InFront 64 16
line 38
;35:}
;36:
;37:qboolean InFront( vec3_t spot, vec3_t from, vec3_t fromAngles, float threshHold )
;38:{
line 42
;39:	vec3_t	dir, forward, angles;
;40:	float	dot;
;41:
;42:	VectorSubtract( spot, from, dir );
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 44
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 40
INDIRP4
INDIRF4
ADDRLP4 44
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 48
CNSTI4 4
ASGNI4
ADDRLP4 0+4
ADDRLP4 40
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRF4
ADDRLP4 44
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 52
CNSTI4 8
ASGNI4
ADDRLP4 0+8
ADDRFP4 0
INDIRP4
ADDRLP4 52
INDIRI4
ADDP4
INDIRF4
ADDRFP4 4
INDIRP4
ADDRLP4 52
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 43
;43:	dir[2] = 0;
ADDRLP4 0+8
CNSTF4 0
ASGNF4
line 44
;44:	VectorNormalize( dir );
ADDRLP4 0
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 46
;45:
;46:	VectorCopy( fromAngles, angles );
ADDRLP4 24
ADDRFP4 8
INDIRP4
INDIRB
ASGNB 12
line 47
;47:	angles[0] = 0;
ADDRLP4 24
CNSTF4 0
ASGNF4
line 48
;48:	AngleVectors( angles, forward, NULL, NULL );
ADDRLP4 24
ARGP4
ADDRLP4 12
ARGP4
ADDRLP4 56
CNSTP4 0
ASGNP4
ADDRLP4 56
INDIRP4
ARGP4
ADDRLP4 56
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 50
;49:
;50:	dot = DotProduct( dir, forward );
ADDRLP4 36
ADDRLP4 0
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
ADDRLP4 0+4
INDIRF4
ADDRLP4 12+4
INDIRF4
MULF4
ADDF4
ADDRLP4 0+8
INDIRF4
ADDRLP4 12+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 52
;51:
;52:	return (dot > threshHold);
ADDRLP4 36
INDIRF4
ADDRFP4 12
INDIRF4
LEF4 $103
ADDRLP4 60
CNSTI4 1
ASGNI4
ADDRGP4 $104
JUMPV
LABELV $103
ADDRLP4 60
CNSTI4 0
ASGNI4
LABELV $104
ADDRLP4 60
INDIRI4
RETI4
LABELV $94
endproc InFront 64 16
data
export forcePowerMinRank
align 4
LABELV forcePowerMinRank
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 999
byte 4 10
byte 4 0
byte 4 0
byte 4 0
byte 4 0
byte 4 10
byte 4 15
byte 4 10
byte 4 15
byte 4 15
byte 4 15
byte 4 10
byte 4 10
byte 4 10
byte 4 5
byte 4 0
byte 4 0
byte 4 0
byte 4 10
byte 4 0
byte 4 0
byte 4 0
byte 4 0
byte 4 10
byte 4 15
byte 4 10
byte 4 15
byte 4 15
byte 4 15
byte 4 10
byte 4 10
byte 4 10
byte 4 5
byte 4 5
byte 4 5
byte 4 5
byte 4 10
byte 4 0
byte 4 0
byte 4 0
byte 4 0
byte 4 10
byte 4 15
byte 4 10
byte 4 15
byte 4 15
byte 4 15
byte 4 10
byte 4 10
byte 4 10
byte 4 5
byte 4 10
byte 4 10
byte 4 10
export WP_InitForcePowers
code
proc WP_InitForcePowers 1632 24
line 144
;53:}
;54:
;55:int forcePowerMinRank[NUM_FORCE_POWER_LEVELS][NUM_FORCE_POWERS] = //0 == neutral
;56:{
;57:	{
;58:		999,//FP_HEAL,//instant
;59:		999,//FP_LEVITATION,//hold/duration
;60:		999,//FP_SPEED,//duration
;61:		999,//FP_PUSH,//hold/duration
;62:		999,//FP_PULL,//hold/duration
;63:		999,//FP_TELEPATHY,//instant
;64:		999,//FP_GRIP,//hold/duration
;65:		999,//FP_LIGHTNING,//hold/duration
;66:		999,//FP_RAGE,//duration
;67:		999,//FP_PROTECT,//duration
;68:		999,//FP_ABSORB,//duration
;69:		999,//FP_TEAM_HEAL,//instant
;70:		999,//FP_TEAM_FORCE,//instant
;71:		999,//FP_DRAIN,//hold/duration
;72:		999,//FP_SEE,//duration
;73:		999,//FP_SABERATTACK,
;74:		999,//FP_SABERDEFEND,
;75:		999//FP_SABERTHROW,
;76:		//NUM_FORCE_POWERS
;77:	},
;78:	{
;79:		10,//FP_HEAL,//instant
;80:		0,//FP_LEVITATION,//hold/duration
;81:		0,//FP_SPEED,//duration
;82:		0,//FP_PUSH,//hold/duration
;83:		0,//FP_PULL,//hold/duration
;84:		10,//FP_TELEPATHY,//instant
;85:		15,//FP_GRIP,//hold/duration
;86:		10,//FP_LIGHTNING,//hold/duration
;87:		15,//FP_RAGE,//duration
;88:		15,//FP_PROTECT,//duration
;89:		15,//FP_ABSORB,//duration
;90:		10,//FP_TEAM_HEAL,//instant
;91:		10,//FP_TEAM_FORCE,//instant
;92:		10,//FP_DRAIN,//hold/duration
;93:		5,//FP_SEE,//duration
;94:		0,//FP_SABERATTACK,
;95:		0,//FP_SABERDEFEND,
;96:		0//FP_SABERTHROW,
;97:		//NUM_FORCE_POWERS
;98:	},
;99:	{
;100:		10,//FP_HEAL,//instant
;101:		0,//FP_LEVITATION,//hold/duration
;102:		0,//FP_SPEED,//duration
;103:		0,//FP_PUSH,//hold/duration
;104:		0,//FP_PULL,//hold/duration
;105:		10,//FP_TELEPATHY,//instant
;106:		15,//FP_GRIP,//hold/duration
;107:		10,//FP_LIGHTNING,//hold/duration
;108:		15,//FP_RAGE,//duration
;109:		15,//FP_PROTECT,//duration
;110:		15,//FP_ABSORB,//duration
;111:		10,//FP_TEAM_HEAL,//instant
;112:		10,//FP_TEAM_FORCE,//instant
;113:		10,//FP_DRAIN,//hold/duration
;114:		5,//FP_SEE,//duration
;115:		5,//FP_SABERATTACK,
;116:		5,//FP_SABERDEFEND,
;117:		5//FP_SABERTHROW,
;118:		//NUM_FORCE_POWERS
;119:	},
;120:	{
;121:		10,//FP_HEAL,//instant
;122:		0,//FP_LEVITATION,//hold/duration
;123:		0,//FP_SPEED,//duration
;124:		0,//FP_PUSH,//hold/duration
;125:		0,//FP_PULL,//hold/duration
;126:		10,//FP_TELEPATHY,//instant
;127:		15,//FP_GRIP,//hold/duration
;128:		10,//FP_LIGHTNING,//hold/duration
;129:		15,//FP_RAGE,//duration
;130:		15,//FP_PROTECT,//duration
;131:		15,//FP_ABSORB,//duration
;132:		10,//FP_TEAM_HEAL,//instant
;133:		10,//FP_TEAM_FORCE,//instant
;134:		10,//FP_DRAIN,//hold/duration
;135:		5,//FP_SEE,//duration
;136:		10,//FP_SABERATTACK,
;137:		10,//FP_SABERDEFEND,
;138:		10//FP_SABERTHROW,
;139:		//NUM_FORCE_POWERS
;140:	}
;141:};
;142:
;143:void WP_InitForcePowers( gentity_t *ent )
;144:{
line 147
;145:	int i;
;146:	int i_r;
;147:	int maxRank = g_maxForceRank.integer;
ADDRLP4 520
ADDRGP4 g_maxForceRank+12
INDIRI4
ASGNI4
line 148
;148:	qboolean warnClient = qfalse;
ADDRLP4 528
CNSTI4 0
ASGNI4
line 149
;149:	qboolean warnClientLimit = qfalse;
ADDRLP4 1560
CNSTI4 0
ASGNI4
line 153
;150:	char userinfo[MAX_INFO_STRING];
;151:	char forcePowers[256];
;152:	char readBuf[256];
;153:	int lastFPKnown = -1;
ADDRLP4 524
CNSTI4 -1
ASGNI4
line 154
;154:	qboolean didEvent = qfalse;
ADDRLP4 1556
CNSTI4 0
ASGNI4
line 156
;155:
;156:	if (!maxRank)
ADDRLP4 520
INDIRI4
CNSTI4 0
NEI4 $107
line 157
;157:	{ //if server has no max rank, default to max (50)
line 158
;158:		maxRank = FORCE_MASTERY_JEDI_MASTER;
ADDRLP4 520
CNSTI4 7
ASGNI4
line 159
;159:	}
LABELV $107
line 169
;160:
;161:	/*
;162:	if (g_forcePowerDisable.integer)
;163:	{
;164:		maxRank = FORCE_MASTERY_UNINITIATED;
;165:	}
;166:	*/
;167:	//rww - don't do this
;168:
;169:	if ( !ent || !ent->client )
ADDRLP4 1564
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1568
CNSTU4 0
ASGNU4
ADDRLP4 1564
INDIRP4
CVPU4 4
ADDRLP4 1568
INDIRU4
EQU4 $111
ADDRLP4 1564
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 1568
INDIRU4
NEU4 $109
LABELV $111
line 170
;170:	{
line 171
;171:		return;
ADDRGP4 $105
JUMPV
LABELV $109
line 174
;172:	}
;173:
;174:	ent->client->ps.fd.saberAnimLevel = ent->client->sess.saberLevel;
ADDRLP4 1572
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1572
INDIRP4
CNSTI4 1228
ADDP4
ADDRLP4 1572
INDIRP4
CNSTI4 1564
ADDP4
INDIRI4
ASGNI4
line 176
;175:
;176:	if (ent->client->ps.fd.saberAnimLevel < FORCE_LEVEL_1 ||
ADDRLP4 1576
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1228
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1576
INDIRI4
CNSTI4 1
LTI4 $114
ADDRLP4 1576
INDIRI4
CNSTI4 3
LEI4 $112
LABELV $114
line 178
;177:		ent->client->ps.fd.saberAnimLevel > FORCE_LEVEL_3)
;178:	{
line 179
;179:		ent->client->ps.fd.saberAnimLevel = FORCE_LEVEL_1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1228
ADDP4
CNSTI4 1
ASGNI4
line 180
;180:	}
LABELV $112
line 182
;181:
;182:	if (!speedLoopSound)
ADDRGP4 speedLoopSound
INDIRI4
CNSTI4 0
NEI4 $115
line 183
;183:	{ //so that the client configstring is already modified with this when we need it
line 184
;184:		speedLoopSound = G_SoundIndex("sound/weapons/force/speedloop.wav");
ADDRGP4 $117
ARGP4
ADDRLP4 1580
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 speedLoopSound
ADDRLP4 1580
INDIRI4
ASGNI4
line 185
;185:	}
LABELV $115
line 187
;186:
;187:	if (!rageLoopSound)
ADDRGP4 rageLoopSound
INDIRI4
CNSTI4 0
NEI4 $118
line 188
;188:	{
line 189
;189:		rageLoopSound = G_SoundIndex("sound/weapons/force/rageloop.wav");
ADDRGP4 $120
ARGP4
ADDRLP4 1580
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 rageLoopSound
ADDRLP4 1580
INDIRI4
ASGNI4
line 190
;190:	}
LABELV $118
line 192
;191:
;192:	if (!absorbLoopSound)
ADDRGP4 absorbLoopSound
INDIRI4
CNSTI4 0
NEI4 $121
line 193
;193:	{
line 194
;194:		absorbLoopSound = G_SoundIndex("sound/weapons/force/absorbloop.wav");
ADDRGP4 $123
ARGP4
ADDRLP4 1580
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 absorbLoopSound
ADDRLP4 1580
INDIRI4
ASGNI4
line 195
;195:	}
LABELV $121
line 197
;196:
;197:	if (!protectLoopSound)
ADDRGP4 protectLoopSound
INDIRI4
CNSTI4 0
NEI4 $124
line 198
;198:	{
line 199
;199:		protectLoopSound = G_SoundIndex("sound/weapons/force/protectloop.wav");
ADDRGP4 $126
ARGP4
ADDRLP4 1580
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 protectLoopSound
ADDRLP4 1580
INDIRI4
ASGNI4
line 200
;200:	}
LABELV $124
line 202
;201:
;202:	if (!seeLoopSound)
ADDRGP4 seeLoopSound
INDIRI4
CNSTI4 0
NEI4 $127
line 203
;203:	{
line 204
;204:		seeLoopSound = G_SoundIndex("sound/weapons/force/seeloop.wav");
ADDRGP4 $129
ARGP4
ADDRLP4 1580
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 seeLoopSound
ADDRLP4 1580
INDIRI4
ASGNI4
line 205
;205:	}
LABELV $127
line 207
;206:
;207:	if (!ysalamiriLoopSound)
ADDRGP4 ysalamiriLoopSound
INDIRI4
CNSTI4 0
NEI4 $130
line 208
;208:	{
line 209
;209:		ysalamiriLoopSound = G_SoundIndex("sound/player/nullifyloop.wav");
ADDRGP4 $132
ARGP4
ADDRLP4 1580
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 ysalamiriLoopSound
ADDRLP4 1580
INDIRI4
ASGNI4
line 210
;210:	}
LABELV $130
line 212
;211:
;212:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $134
JUMPV
LABELV $133
line 214
;213:	while (i < NUM_FORCE_POWERS)
;214:	{
line 215
;215:		ent->client->ps.fd.forcePowerLevel[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 216
;216:		ent->client->ps.fd.forcePowersKnown &= ~(1 << i);
ADDRLP4 1580
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 1580
INDIRP4
ADDRLP4 1580
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 217
;217:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 218
;218:	}
LABELV $134
line 213
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $133
line 220
;219:
;220:	ent->client->ps.fd.forcePowerSelected = -1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
CNSTI4 -1
ASGNI4
line 222
;221:
;222:	ent->client->ps.fd.forceSide = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1188
ADDP4
CNSTI4 0
ASGNI4
line 224
;223:
;224:	trap_GetUserinfo( ent->s.number, userinfo, sizeof( userinfo ) );
ADDRFP4 0
INDIRP4
INDIRI4
ARGI4
ADDRLP4 532
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_GetUserinfo
CALLV
pop
line 226
;225:
;226:	Q_strncpyz( forcePowers, Info_ValueForKey (userinfo, "forcepowers"), sizeof( forcePowers ) );
ADDRLP4 532
ARGP4
ADDRGP4 $136
ARGP4
ADDRLP4 1580
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 8
ARGP4
ADDRLP4 1580
INDIRP4
ARGP4
CNSTI4 256
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 228
;227:
;228:	if ( ent->r.svFlags & SVF_BOT && botstates[ent->s.number] )
ADDRLP4 1584
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1584
INDIRP4
CNSTI4 304
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
EQI4 $137
ADDRLP4 1584
INDIRP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 botstates
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $137
line 229
;229:	{ //if it's a bot just copy the info directly from its personality
line 230
;230:		Com_sprintf(forcePowers, sizeof(forcePowers), "%s\0", botstates[ent->s.number]->forceinfo);
ADDRLP4 8
ARGP4
CNSTI4 256
ARGI4
ADDRGP4 $139
ARGP4
ADDRFP4 0
INDIRP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 botstates
ADDP4
INDIRP4
CNSTI4 2744
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 231
;231:	}
LABELV $137
line 234
;232:
;233:	//rww - parse through the string manually and eat out all the appropriate data
;234:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 236
;235:
;236:	if (g_forceBasedTeams.integer)
ADDRGP4 g_forceBasedTeams+12
INDIRI4
CNSTI4 0
EQI4 $140
line 237
;237:	{
line 238
;238:		if (ent->client->sess.sessionTeam == TEAM_RED)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 1
NEI4 $143
line 239
;239:		{
line 240
;240:			warnClient = !(BG_LegalizedForcePowers(forcePowers, maxRank, HasSetSaberOnly(), FORCE_DARKSIDE, g_gametype.integer, g_forcePowerDisable.integer));
ADDRLP4 1592
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 8
ARGP4
ADDRLP4 520
INDIRI4
ARGI4
ADDRLP4 1592
INDIRI4
ARGI4
CNSTI4 2
ARGI4
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRGP4 g_forcePowerDisable+12
INDIRI4
ARGI4
ADDRLP4 1596
ADDRGP4 BG_LegalizedForcePowers
CALLI4
ASGNI4
ADDRLP4 1596
INDIRI4
CNSTI4 0
NEI4 $148
ADDRLP4 1588
CNSTI4 1
ASGNI4
ADDRGP4 $149
JUMPV
LABELV $148
ADDRLP4 1588
CNSTI4 0
ASGNI4
LABELV $149
ADDRLP4 528
ADDRLP4 1588
INDIRI4
ASGNI4
line 241
;241:		}
ADDRGP4 $141
JUMPV
LABELV $143
line 242
;242:		else if (ent->client->sess.sessionTeam == TEAM_BLUE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 2
NEI4 $150
line 243
;243:		{
line 244
;244:			warnClient = !(BG_LegalizedForcePowers(forcePowers, maxRank, HasSetSaberOnly(), FORCE_LIGHTSIDE, g_gametype.integer, g_forcePowerDisable.integer));
ADDRLP4 1592
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 8
ARGP4
ADDRLP4 520
INDIRI4
ARGI4
ADDRLP4 1592
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRGP4 g_forcePowerDisable+12
INDIRI4
ARGI4
ADDRLP4 1596
ADDRGP4 BG_LegalizedForcePowers
CALLI4
ASGNI4
ADDRLP4 1596
INDIRI4
CNSTI4 0
NEI4 $155
ADDRLP4 1588
CNSTI4 1
ASGNI4
ADDRGP4 $156
JUMPV
LABELV $155
ADDRLP4 1588
CNSTI4 0
ASGNI4
LABELV $156
ADDRLP4 528
ADDRLP4 1588
INDIRI4
ASGNI4
line 245
;245:		}
ADDRGP4 $141
JUMPV
LABELV $150
line 247
;246:		else
;247:		{
line 248
;248:			warnClient = !(BG_LegalizedForcePowers(forcePowers, maxRank, HasSetSaberOnly(), 0, g_gametype.integer, g_forcePowerDisable.integer));
ADDRLP4 1592
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 8
ARGP4
ADDRLP4 520
INDIRI4
ARGI4
ADDRLP4 1592
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRGP4 g_forcePowerDisable+12
INDIRI4
ARGI4
ADDRLP4 1596
ADDRGP4 BG_LegalizedForcePowers
CALLI4
ASGNI4
ADDRLP4 1596
INDIRI4
CNSTI4 0
NEI4 $160
ADDRLP4 1588
CNSTI4 1
ASGNI4
ADDRGP4 $161
JUMPV
LABELV $160
ADDRLP4 1588
CNSTI4 0
ASGNI4
LABELV $161
ADDRLP4 528
ADDRLP4 1588
INDIRI4
ASGNI4
line 249
;249:		}
line 250
;250:	}
ADDRGP4 $141
JUMPV
LABELV $140
line 252
;251:	else
;252:	{
line 253
;253:		warnClient = !(BG_LegalizedForcePowers(forcePowers, maxRank, HasSetSaberOnly(), 0, g_gametype.integer, g_forcePowerDisable.integer));
ADDRLP4 1592
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 8
ARGP4
ADDRLP4 520
INDIRI4
ARGI4
ADDRLP4 1592
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRGP4 g_forcePowerDisable+12
INDIRI4
ARGI4
ADDRLP4 1596
ADDRGP4 BG_LegalizedForcePowers
CALLI4
ASGNI4
ADDRLP4 1596
INDIRI4
CNSTI4 0
NEI4 $165
ADDRLP4 1588
CNSTI4 1
ASGNI4
ADDRGP4 $166
JUMPV
LABELV $165
ADDRLP4 1588
CNSTI4 0
ASGNI4
LABELV $166
ADDRLP4 528
ADDRLP4 1588
INDIRI4
ASGNI4
line 254
;254:	}
LABELV $141
line 256
;255:
;256:	i_r = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $168
JUMPV
LABELV $167
line 258
;257:	while (forcePowers[i] && forcePowers[i] != '-')
;258:	{
line 259
;259:		readBuf[i_r] = forcePowers[i];
ADDRLP4 4
INDIRI4
ADDRLP4 264
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 8
ADDP4
INDIRI1
ASGNI1
line 260
;260:		i_r++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 261
;261:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 262
;262:	}
LABELV $168
line 257
ADDRLP4 1588
ADDRLP4 0
INDIRI4
ADDRLP4 8
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 1588
INDIRI4
CNSTI4 0
EQI4 $170
ADDRLP4 1588
INDIRI4
CNSTI4 45
NEI4 $167
LABELV $170
line 263
;263:	readBuf[i_r] = 0;
ADDRLP4 4
INDIRI4
ADDRLP4 264
ADDP4
CNSTI1 0
ASGNI1
line 265
;264:	//THE RANK
;265:	ent->client->ps.fd.forceRank = atoi(readBuf);
ADDRLP4 264
ARGP4
ADDRLP4 1592
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1192
ADDP4
ADDRLP4 1592
INDIRI4
ASGNI4
line 266
;266:	i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 268
;267:
;268:	i_r = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $172
JUMPV
LABELV $171
line 270
;269:	while (forcePowers[i] && forcePowers[i] != '-')
;270:	{
line 271
;271:		readBuf[i_r] = forcePowers[i];
ADDRLP4 4
INDIRI4
ADDRLP4 264
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 8
ADDP4
INDIRI1
ASGNI1
line 272
;272:		i_r++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 273
;273:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 274
;274:	}
LABELV $172
line 269
ADDRLP4 1596
ADDRLP4 0
INDIRI4
ADDRLP4 8
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 1596
INDIRI4
CNSTI4 0
EQI4 $174
ADDRLP4 1596
INDIRI4
CNSTI4 45
NEI4 $171
LABELV $174
line 275
;275:	readBuf[i_r] = 0;
ADDRLP4 4
INDIRI4
ADDRLP4 264
ADDP4
CNSTI1 0
ASGNI1
line 277
;276:	//THE SIDE
;277:	ent->client->ps.fd.forceSide = atoi(readBuf);
ADDRLP4 264
ARGP4
ADDRLP4 1600
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1188
ADDP4
ADDRLP4 1600
INDIRI4
ASGNI4
line 278
;278:	i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 280
;279:
;280:	i_r = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $176
JUMPV
LABELV $175
line 283
;281:	while (forcePowers[i] && forcePowers[i] != '\n' &&
;282:		i_r < NUM_FORCE_POWERS)
;283:	{
line 284
;284:		readBuf[0] = forcePowers[i];
ADDRLP4 264
ADDRLP4 0
INDIRI4
ADDRLP4 8
ADDP4
INDIRI1
ASGNI1
line 285
;285:		readBuf[1] = 0;
ADDRLP4 264+1
CNSTI1 0
ASGNI1
line 287
;286:
;287:		ent->client->ps.fd.forcePowerLevel[i_r] = atoi(readBuf);
ADDRLP4 264
ARGP4
ADDRLP4 1604
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
ADDRLP4 1604
INDIRI4
ASGNI4
line 288
;288:		if (ent->client->ps.fd.forcePowerLevel[i_r])
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $179
line 289
;289:		{
line 290
;290:			ent->client->ps.fd.forcePowersKnown |= (1 << i_r);
ADDRLP4 1608
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 1608
INDIRP4
ADDRLP4 1608
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 291
;291:		}
ADDRGP4 $180
JUMPV
LABELV $179
line 293
;292:		else
;293:		{
line 294
;294:			ent->client->ps.fd.forcePowersKnown &= ~(1 << i_r);
ADDRLP4 1608
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 1608
INDIRP4
ADDRLP4 1608
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 4
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 295
;295:		}
LABELV $180
line 296
;296:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 297
;297:		i_r++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 298
;298:	}
LABELV $176
line 281
ADDRLP4 1604
ADDRLP4 0
INDIRI4
ADDRLP4 8
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 1604
INDIRI4
CNSTI4 0
EQI4 $182
ADDRLP4 1604
INDIRI4
CNSTI4 10
EQI4 $182
ADDRLP4 4
INDIRI4
CNSTI4 18
LTI4 $175
LABELV $182
line 301
;299:	//THE POWERS
;300:
;301:	if (HasSetSaberOnly())
ADDRLP4 1608
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 1608
INDIRI4
CNSTI4 0
EQI4 $183
line 302
;302:	{
line 303
;303:		gentity_t *te = G_TempEntity( vec3_origin, EV_SET_FREE_SABER );
ADDRGP4 vec3_origin
ARGP4
CNSTI4 93
ARGI4
ADDRLP4 1616
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 1612
ADDRLP4 1616
INDIRP4
ASGNP4
line 304
;304:		te->r.svFlags |= SVF_BROADCAST;
ADDRLP4 1620
ADDRLP4 1612
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 1620
INDIRP4
ADDRLP4 1620
INDIRP4
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 305
;305:		te->s.eventParm = 1;
ADDRLP4 1612
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 1
ASGNI4
line 306
;306:	}
ADDRGP4 $184
JUMPV
LABELV $183
line 308
;307:	else
;308:	{
line 309
;309:		gentity_t *te = G_TempEntity( vec3_origin, EV_SET_FREE_SABER );
ADDRGP4 vec3_origin
ARGP4
CNSTI4 93
ARGI4
ADDRLP4 1616
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 1612
ADDRLP4 1616
INDIRP4
ASGNP4
line 310
;310:		te->r.svFlags |= SVF_BROADCAST;
ADDRLP4 1620
ADDRLP4 1612
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 1620
INDIRP4
ADDRLP4 1620
INDIRP4
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 311
;311:		te->s.eventParm = 0;
ADDRLP4 1612
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 0
ASGNI4
line 312
;312:	}
LABELV $184
line 314
;313:
;314:	if (g_forcePowerDisable.integer)
ADDRGP4 g_forcePowerDisable+12
INDIRI4
CNSTI4 0
EQI4 $185
line 315
;315:	{
line 316
;316:		gentity_t *te = G_TempEntity( vec3_origin, EV_SET_FORCE_DISABLE );
ADDRGP4 vec3_origin
ARGP4
CNSTI4 94
ARGI4
ADDRLP4 1616
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 1612
ADDRLP4 1616
INDIRP4
ASGNP4
line 317
;317:		te->r.svFlags |= SVF_BROADCAST;
ADDRLP4 1620
ADDRLP4 1612
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 1620
INDIRP4
ADDRLP4 1620
INDIRP4
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 318
;318:		te->s.eventParm = 1;
ADDRLP4 1612
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 1
ASGNI4
line 319
;319:	}
ADDRGP4 $186
JUMPV
LABELV $185
line 321
;320:	else
;321:	{
line 322
;322:		gentity_t *te = G_TempEntity( vec3_origin, EV_SET_FORCE_DISABLE );
ADDRGP4 vec3_origin
ARGP4
CNSTI4 94
ARGI4
ADDRLP4 1616
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 1612
ADDRLP4 1616
INDIRP4
ASGNP4
line 323
;323:		te->r.svFlags |= SVF_BROADCAST;
ADDRLP4 1620
ADDRLP4 1612
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 1620
INDIRP4
ADDRLP4 1620
INDIRP4
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 324
;324:		te->s.eventParm = 0;
ADDRLP4 1612
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 0
ASGNI4
line 325
;325:	}
LABELV $186
line 329
;326:
;327:	//rww - It seems we currently want to always do this, even if the player isn't exceeding the max
;328:	//rank, so..
;329:	if (g_gametype.integer == GT_TOURNAMENT)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $188
line 330
;330:	{ //totally messes duel up to force someone into spec mode, and besides, each "round" is
line 332
;331:	  //counted as a full restart
;332:		ent->client->sess.setForce = qtrue;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1568
ADDP4
CNSTI4 1
ASGNI4
line 333
;333:	}
LABELV $188
line 335
;334:
;335:	if (warnClient || !ent->client->sess.setForce)
ADDRLP4 1612
CNSTI4 0
ASGNI4
ADDRLP4 528
INDIRI4
ADDRLP4 1612
INDIRI4
NEI4 $193
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1568
ADDP4
INDIRI4
ADDRLP4 1612
INDIRI4
NEI4 $191
LABELV $193
line 336
;336:	{ //the client's rank is too high for the server and has been autocapped, so tell them
line 337
;337:		if (g_gametype.integer != GT_HOLOCRON && g_gametype.integer != GT_JEDIMASTER)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 1
EQI4 $194
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 2
EQI4 $194
line 338
;338:		{
line 347
;339:#ifdef EVENT_FORCE_RANK
;340:			gentity_t *te = G_TempEntity( vec3_origin, EV_GIVE_NEW_RANK );
;341:
;342:			te->r.svFlags |= SVF_BROADCAST;
;343:			te->s.trickedentindex = ent->s.number;
;344:			te->s.eventParm = maxRank;
;345:			te->s.bolt1 = 0;
;346:#endif
;347:			didEvent = qtrue;
ADDRLP4 1556
CNSTI4 1
ASGNI4
line 349
;348:
;349:			if (!(ent->r.svFlags & SVF_BOT) && g_gametype.integer != GT_TOURNAMENT)
ADDRFP4 0
INDIRP4
CNSTI4 304
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
NEI4 $198
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
EQI4 $198
line 350
;350:			{
line 351
;351:				if (g_gametype.integer < GT_TEAM || !g_teamAutoJoin.integer)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 5
LTI4 $205
ADDRGP4 g_teamAutoJoin+12
INDIRI4
CNSTI4 0
NEI4 $201
LABELV $205
line 352
;352:				{
line 354
;353:					//Make them a spectator so they can set their powerups up without being bothered.
;354:					ent->client->sess.sessionTeam = TEAM_SPECTATOR;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
CNSTI4 3
ASGNI4
line 355
;355:					ent->client->sess.spectatorState = SPECTATOR_FREE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1544
ADDP4
CNSTI4 1
ASGNI4
line 356
;356:					ent->client->sess.spectatorClient = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1548
ADDP4
CNSTI4 0
ASGNI4
line 358
;357:
;358:					ent->client->pers.teamState.state = TEAM_BEGIN;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1472
ADDP4
CNSTI4 0
ASGNI4
line 359
;359:				}
LABELV $201
line 360
;360:			}
LABELV $198
line 367
;361:
;362:#ifdef EVENT_FORCE_RANK
;363:			te->s.bolt2 = ent->client->sess.sessionTeam;
;364:#else
;365:			//Event isn't very reliable, I made it a string. This way I can send it to just one
;366:			//client also, as opposed to making a broadcast event.
;367:			trap_SendServerCommand(ent->s.number, va("nfr %i %i %i", maxRank, 1, ent->client->sess.sessionTeam));
ADDRGP4 $206
ARGP4
ADDRLP4 520
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
ARGI4
ADDRLP4 1616
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1616
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 370
;368:			//Arg1 is new max rank, arg2 is non-0 if force menu should be shown, arg3 is the current team
;369:#endif
;370:		}
LABELV $194
line 371
;371:		ent->client->sess.setForce = qtrue;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1568
ADDP4
CNSTI4 1
ASGNI4
line 372
;372:	}
LABELV $191
line 374
;373:
;374:	if (!didEvent)
ADDRLP4 1556
INDIRI4
CNSTI4 0
NEI4 $207
line 375
;375:	{
line 385
;376:#ifdef EVENT_FORCE_RANK
;377:		gentity_t *te = G_TempEntity( vec3_origin, EV_GIVE_NEW_RANK );
;378:
;379:		te->r.svFlags |= SVF_BROADCAST;
;380:		te->s.trickedentindex = ent->s.number;
;381:		te->s.eventParm = maxRank;
;382:		te->s.bolt1 = 1;
;383:		te->s.bolt2 = ent->client->sess.sessionTeam;
;384:#else
;385:		trap_SendServerCommand(ent->s.number, va("nfr %i %i %i", maxRank, 0, ent->client->sess.sessionTeam));
ADDRGP4 $206
ARGP4
ADDRLP4 520
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
ARGI4
ADDRLP4 1616
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1616
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 387
;386:#endif
;387:	}
LABELV $207
line 389
;388:
;389:	if (warnClientLimit)
ADDRLP4 1560
INDIRI4
CNSTI4 0
EQI4 $209
line 390
;390:	{ //the server has one or more force powers disabled and the client is using them in his config
line 392
;391:		//trap_SendServerCommand(ent-g_entities, va("print \"The server has one or more force powers that you have chosen disabled.\nYou will not be able to use the disable force power(s) while playing on this server.\n\""));
;392:	}
LABELV $209
line 394
;393:
;394:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $212
JUMPV
LABELV $211
line 396
;395:	while (i < NUM_FORCE_POWERS)
;396:	{
line 397
;397:		if ((ent->client->ps.fd.forcePowersKnown & (1 << i)) &&
ADDRLP4 1616
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1624
CNSTI4 0
ASGNI4
ADDRLP4 1616
INDIRP4
CNSTI4 844
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
ADDRLP4 1624
INDIRI4
EQI4 $214
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1616
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
ADDRLP4 1624
INDIRI4
NEI4 $214
line 399
;398:			!ent->client->ps.fd.forcePowerLevel[i])
;399:		{ //err..
line 400
;400:			ent->client->ps.fd.forcePowersKnown &= ~(1 << i);
ADDRLP4 1628
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 1628
INDIRP4
ADDRLP4 1628
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 401
;401:		}
ADDRGP4 $215
JUMPV
LABELV $214
line 403
;402:		else
;403:		{
line 404
;404:			if (i != FP_LEVITATION && i != FP_SABERATTACK && i != FP_SABERDEFEND && i != FP_SABERTHROW)
ADDRLP4 0
INDIRI4
CNSTI4 1
EQI4 $216
ADDRLP4 0
INDIRI4
CNSTI4 15
EQI4 $216
ADDRLP4 0
INDIRI4
CNSTI4 16
EQI4 $216
ADDRLP4 0
INDIRI4
CNSTI4 17
EQI4 $216
line 405
;405:			{
line 406
;406:				lastFPKnown = i;
ADDRLP4 524
ADDRLP4 0
INDIRI4
ASGNI4
line 407
;407:			}
LABELV $216
line 408
;408:		}
LABELV $215
line 410
;409:
;410:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 411
;411:	}
LABELV $212
line 395
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $211
line 413
;412:
;413:	if (ent->client->ps.fd.forcePowersKnown & ent->client->sess.selectedFP)
ADDRLP4 1616
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1616
INDIRP4
CNSTI4 844
ADDP4
INDIRI4
ADDRLP4 1616
INDIRP4
CNSTI4 1560
ADDP4
INDIRI4
BANDI4
CNSTI4 0
EQI4 $218
line 414
;414:	{
line 415
;415:		ent->client->ps.fd.forcePowerSelected = ent->client->sess.selectedFP;
ADDRLP4 1620
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1620
INDIRP4
CNSTI4 852
ADDP4
ADDRLP4 1620
INDIRP4
CNSTI4 1560
ADDP4
INDIRI4
ASGNI4
line 416
;416:	}
LABELV $218
line 418
;417:
;418:	if (!(ent->client->ps.fd.forcePowersKnown & (1 << ent->client->ps.fd.forcePowerSelected)))
ADDRLP4 1620
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1620
INDIRP4
CNSTI4 844
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 1620
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
LSHI4
BANDI4
CNSTI4 0
NEI4 $225
line 419
;419:	{
line 420
;420:		if (lastFPKnown != -1)
ADDRLP4 524
INDIRI4
CNSTI4 -1
EQI4 $222
line 421
;421:		{
line 422
;422:			ent->client->ps.fd.forcePowerSelected = lastFPKnown;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
ADDRLP4 524
INDIRI4
ASGNI4
line 423
;423:		}
ADDRGP4 $225
JUMPV
LABELV $222
line 425
;424:		else
;425:		{
line 426
;426:			ent->client->ps.fd.forcePowerSelected = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
CNSTI4 0
ASGNI4
line 427
;427:		}
line 428
;428:	}
ADDRGP4 $225
JUMPV
LABELV $224
line 431
;429:
;430:	while (i < NUM_FORCE_POWERS)
;431:	{
line 432
;432:		ent->client->ps.fd.forcePowerBaseLevel[i] = ent->client->ps.fd.forcePowerLevel[i];
ADDRLP4 1624
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 1628
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1624
INDIRI4
ADDRLP4 1628
INDIRP4
CNSTI4 1016
ADDP4
ADDP4
ADDRLP4 1624
INDIRI4
ADDRLP4 1628
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
ASGNI4
line 433
;433:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 434
;434:	}
LABELV $225
line 430
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $224
line 435
;435:	ent->client->ps.fd.forceUsingAdded = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1088
ADDP4
CNSTI4 0
ASGNI4
line 436
;436:}
LABELV $105
endproc WP_InitForcePowers 1632 24
export WP_SpawnInitForcePowers
proc WP_SpawnInitForcePowers 28 8
line 439
;437:
;438:void WP_SpawnInitForcePowers( gentity_t *ent )
;439:{
line 440
;440:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 442
;441:
;442:	ent->client->ps.saberAttackChainCount = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1308
ADDP4
CNSTI4 0
ASGNI4
line 444
;443:
;444:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $229
JUMPV
LABELV $228
line 447
;445:
;446:	while (i < NUM_FORCE_POWERS)
;447:	{
line 448
;448:		if (ent->client->ps.fd.forcePowersActive & (1 << i))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $231
line 449
;449:		{
line 450
;450:			WP_ForcePowerStop(ent, i);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 451
;451:		}
LABELV $231
line 453
;452:
;453:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 454
;454:	}
LABELV $229
line 446
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $228
line 456
;455:
;456:	ent->client->ps.fd.forceDeactivateAll = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1196
ADDP4
CNSTI4 0
ASGNI4
line 458
;457:
;458:	ent->client->ps.fd.forcePower = ent->client->ps.fd.forcePowerMax = FORCE_POWER_MAX;
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 8
CNSTI4 100
ASGNI4
ADDRLP4 4
INDIRP4
CNSTI4 936
ADDP4
ADDRLP4 8
INDIRI4
ASGNI4
ADDRLP4 4
INDIRP4
CNSTI4 932
ADDP4
ADDRLP4 8
INDIRI4
ASGNI4
line 459
;459:	ent->client->ps.fd.forcePowerRegenDebounceTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 940
ADDP4
CNSTI4 0
ASGNI4
line 460
;460:	ent->client->ps.fd.forceGripEntityNum = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
CNSTI4 1023
ASGNI4
line 461
;461:	ent->client->ps.fd.forceMindtrickTargetIndex = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1156
ADDP4
CNSTI4 0
ASGNI4
line 462
;462:	ent->client->ps.fd.forceMindtrickTargetIndex2 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1160
ADDP4
CNSTI4 0
ASGNI4
line 463
;463:	ent->client->ps.fd.forceMindtrickTargetIndex3 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1164
ADDP4
CNSTI4 0
ASGNI4
line 464
;464:	ent->client->ps.fd.forceMindtrickTargetIndex4 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1168
ADDP4
CNSTI4 0
ASGNI4
line 466
;465:
;466:	ent->client->ps.holocronBits = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 652
ADDP4
CNSTI4 0
ASGNI4
line 468
;467:
;468:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $234
JUMPV
LABELV $233
line 470
;469:	while (i < NUM_FORCE_POWERS)
;470:	{
line 474
;471:		// adnan
;472:      // killed holocron crap
;473:      //ent->client->ps.holocronsCarried[i] = 0;
;474:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 475
;475:	}
LABELV $234
line 469
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $233
line 477
;476:
;477:	if (g_gametype.integer == GT_HOLOCRON)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 1
NEI4 $236
line 478
;478:	{
line 479
;479:		i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $240
JUMPV
LABELV $239
line 481
;480:		while (i < NUM_FORCE_POWERS)
;481:		{
line 482
;482:			ent->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 483
;483:			i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 484
;484:		}
LABELV $240
line 480
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $239
line 486
;485:
;486:		if (HasSetSaberOnly())
ADDRLP4 12
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
EQI4 $242
line 487
;487:		{
line 488
;488:			if (ent->client->ps.fd.forcePowerLevel[FP_SABERATTACK] < FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1004
ADDP4
INDIRI4
CNSTI4 1
GEI4 $244
line 489
;489:			{
line 490
;490:				ent->client->ps.fd.forcePowerLevel[FP_SABERATTACK] = FORCE_LEVEL_1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1004
ADDP4
CNSTI4 1
ASGNI4
line 491
;491:			}
LABELV $244
line 492
;492:			if (ent->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] < FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1008
ADDP4
INDIRI4
CNSTI4 1
GEI4 $246
line 493
;493:			{
line 494
;494:				ent->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] = FORCE_LEVEL_1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1008
ADDP4
CNSTI4 1
ASGNI4
line 495
;495:			}
LABELV $246
line 496
;496:		}
LABELV $242
line 497
;497:	}
LABELV $236
line 499
;498:
;499:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $249
JUMPV
LABELV $248
line 502
;500:
;501:	while (i < NUM_FORCE_POWERS)
;502:	{
line 503
;503:		ent->client->ps.fd.forcePowerDebounce[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 504
;504:		ent->client->ps.fd.forcePowerDuration[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 860
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 506
;505:
;506:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 507
;507:	}
LABELV $249
line 501
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $248
line 509
;508:
;509:	ent->client->ps.fd.forcePowerRegenDebounceTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 940
ADDP4
CNSTI4 0
ASGNI4
line 510
;510:	ent->client->ps.fd.forceJumpZStart = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1092
ADDP4
CNSTF4 0
ASGNF4
line 511
;511:	ent->client->ps.fd.forceJumpCharge = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
CNSTF4 0
ASGNF4
line 512
;512:	ent->client->ps.fd.forceJumpSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1100
ADDP4
CNSTI4 0
ASGNI4
line 513
;513:	ent->client->ps.fd.forceGripDamageDebounceTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1112
ADDP4
CNSTI4 0
ASGNI4
line 514
;514:	ent->client->ps.fd.forceGripBeingGripped = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
CNSTF4 0
ASGNF4
line 515
;515:	ent->client->ps.fd.forceGripCripple = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1120
ADDP4
CNSTI4 0
ASGNI4
line 516
;516:	ent->client->ps.fd.forceGripUseTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1124
ADDP4
CNSTI4 0
ASGNI4
line 517
;517:	ent->client->ps.fd.forceGripSoundTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1128
ADDP4
CNSTF4 0
ASGNF4
line 518
;518:	ent->client->ps.fd.forceGripStarted = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
CNSTF4 0
ASGNF4
line 519
;519:	ent->client->ps.fd.forceSpeedSmash = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1136
ADDP4
CNSTF4 0
ASGNF4
line 520
;520:	ent->client->ps.fd.forceSpeedDoDamage = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1140
ADDP4
CNSTF4 0
ASGNF4
line 521
;521:	ent->client->ps.fd.forceSpeedHitIndex = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1144
ADDP4
CNSTI4 0
ASGNI4
line 522
;522:	ent->client->ps.fd.forceHealTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1148
ADDP4
CNSTI4 0
ASGNI4
line 523
;523:	ent->client->ps.fd.forceHealAmount = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1152
ADDP4
CNSTI4 0
ASGNI4
line 524
;524:	ent->client->ps.fd.forceRageRecoveryTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1172
ADDP4
CNSTI4 0
ASGNI4
line 525
;525:	ent->client->ps.fd.forceDrainEntNum = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1176
ADDP4
CNSTI4 1023
ASGNI4
line 526
;526:	ent->client->ps.fd.forceDrainTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1180
ADDP4
CNSTF4 0
ASGNF4
line 528
;527:
;528:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $252
JUMPV
LABELV $251
line 530
;529:	while (i < NUM_FORCE_POWERS)
;530:	{
line 531
;531:		if ((ent->client->ps.fd.forcePowersKnown & (1 << i)) &&
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRP4
CNSTI4 844
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
ADDRLP4 20
INDIRI4
EQI4 $254
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 12
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $254
line 533
;532:			!ent->client->ps.fd.forcePowerLevel[i])
;533:		{ //err..
line 534
;534:			ent->client->ps.fd.forcePowersKnown &= ~(1 << i);
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 535
;535:		}
LABELV $254
line 537
;536:
;537:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 538
;538:	}
LABELV $252
line 529
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $251
line 539
;539:}
LABELV $227
endproc WP_SpawnInitForcePowers 28 8
export ForcePowerUsableOn
proc ForcePowerUsableOn 68 16
line 542
;540:
;541:int ForcePowerUsableOn(gentity_t *attacker, gentity_t *other, forcePowers_t forcePower)
;542:{
line 543
;543:	if (other && other->client && other->client->ps.usingATST)
ADDRLP4 0
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 4
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRU4
EQU4 $257
ADDRLP4 8
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRU4
EQU4 $257
ADDRLP4 8
INDIRP4
CNSTI4 1316
ADDP4
INDIRI4
CNSTI4 0
EQI4 $257
line 544
;544:	{
line 545
;545:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $256
JUMPV
LABELV $257
line 548
;546:	}
;547:
;548:	if (other && other->client && BG_HasYsalamiri(g_gametype.integer, &other->client->ps))
ADDRLP4 12
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 16
CNSTU4 0
ASGNU4
ADDRLP4 12
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $259
ADDRLP4 20
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $259
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 BG_HasYsalamiri
CALLI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 0
EQI4 $259
line 549
;549:	{
line 550
;550:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $256
JUMPV
LABELV $259
line 553
;551:	}
;552:
;553:	if (attacker && attacker->client && !BG_CanUseFPNow(g_gametype.integer, &attacker->client->ps, level.time, forcePower))
ADDRLP4 28
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 32
CNSTU4 0
ASGNU4
ADDRLP4 28
INDIRP4
CVPU4 4
ADDRLP4 32
INDIRU4
EQU4 $262
ADDRLP4 36
ADDRLP4 28
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CVPU4 4
ADDRLP4 32
INDIRU4
EQU4 $262
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRLP4 36
INDIRP4
ARGP4
ADDRGP4 level+32
INDIRI4
ARGI4
ADDRFP4 8
INDIRI4
ARGI4
ADDRLP4 40
ADDRGP4 BG_CanUseFPNow
CALLI4
ASGNI4
ADDRLP4 40
INDIRI4
CNSTI4 0
NEI4 $262
line 554
;554:	{
line 555
;555:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $256
JUMPV
LABELV $262
line 559
;556:	}
;557:
;558:	//Dueling fighters cannot use force powers on others, with the exception of force push when locked with each other
;559:	if (attacker && attacker->client && attacker->client->ps.duelInProgress)
ADDRLP4 44
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 48
CNSTU4 0
ASGNU4
ADDRLP4 44
INDIRP4
CVPU4 4
ADDRLP4 48
INDIRU4
EQU4 $266
ADDRLP4 52
ADDRLP4 44
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
CVPU4 4
ADDRLP4 48
INDIRU4
EQU4 $266
ADDRLP4 52
INDIRP4
CNSTI4 1304
ADDP4
INDIRI4
CNSTI4 0
EQI4 $266
line 560
;560:	{
line 561
;561:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $256
JUMPV
LABELV $266
line 564
;562:	}
;563:
;564:	if (other && other->client && other->client->ps.duelInProgress)
ADDRLP4 56
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 60
CNSTU4 0
ASGNU4
ADDRLP4 56
INDIRP4
CVPU4 4
ADDRLP4 60
INDIRU4
EQU4 $268
ADDRLP4 64
ADDRLP4 56
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 64
INDIRP4
CVPU4 4
ADDRLP4 60
INDIRU4
EQU4 $268
ADDRLP4 64
INDIRP4
CNSTI4 1304
ADDP4
INDIRI4
CNSTI4 0
EQI4 $268
line 565
;565:	{
line 566
;566:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $256
JUMPV
LABELV $268
line 569
;567:	}
;568:
;569:	return 1;
CNSTI4 1
RETI4
LABELV $256
endproc ForcePowerUsableOn 68 16
export WP_ForcePowerAvailable
proc WP_ForcePowerAvailable 8 0
line 573
;570:}
;571:
;572:qboolean WP_ForcePowerAvailable( gentity_t *self, forcePowers_t forcePower )
;573:{
line 574
;574:	int	drain = forcePowerNeeded[self->client->ps.fd.forcePowerLevel[forcePower]][forcePower];
ADDRLP4 4
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
CNSTI4 72
ADDRLP4 4
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded
ADDP4
ADDP4
INDIRI4
ASGNI4
line 576
;575:
;576:	if (self->client->ps.fd.forcePowersActive & (1 << forcePower))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $271
line 577
;577:	{ //we're probably going to deactivate it..
line 578
;578:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $270
JUMPV
LABELV $271
line 581
;579:	}
;580:
;581:	if ( forcePower == FP_LEVITATION )
ADDRFP4 4
INDIRI4
CNSTI4 1
NEI4 $273
line 582
;582:	{
line 583
;583:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $270
JUMPV
LABELV $273
line 585
;584:	}
;585:	if ( !drain )
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $275
line 586
;586:	{
line 587
;587:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $270
JUMPV
LABELV $275
line 589
;588:	}
;589:	if ( self->client->ps.fd.forcePower < drain )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
ADDRLP4 0
INDIRI4
GEI4 $277
line 590
;590:	{
line 591
;591:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $270
JUMPV
LABELV $277
line 593
;592:	}
;593:	return qtrue;
CNSTI4 1
RETI4
LABELV $270
endproc WP_ForcePowerAvailable 8 0
export WP_ForcePowerInUse
proc WP_ForcePowerInUse 0 0
line 597
;594:}
;595:
;596:qboolean WP_ForcePowerInUse( gentity_t *self, forcePowers_t forcePower )
;597:{
line 598
;598:	if ( (self->client->ps.fd.forcePowersActive & ( 1 << forcePower )) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $280
line 599
;599:	{//already using this power
line 600
;600:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $279
JUMPV
LABELV $280
line 603
;601:	}
;602:
;603:	return qfalse;
CNSTI4 0
RETI4
LABELV $279
endproc WP_ForcePowerInUse 0 0
export WP_ForcePowerUsable
proc WP_ForcePowerUsable 24 16
line 607
;604:}
;605:
;606:qboolean WP_ForcePowerUsable( gentity_t *self, forcePowers_t forcePower )
;607:{
line 608
;608:	if (BG_HasYsalamiri(g_gametype.integer, &self->client->ps))
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
ADDRGP4 BG_HasYsalamiri
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $283
line 609
;609:	{
line 610
;610:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $283
line 613
;611:	}
;612:
;613:	if (self->health <= 0 || self->client->ps.stats[STAT_HEALTH] <= 0 ||
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRLP4 4
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
LEI4 $289
ADDRLP4 12
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
LEI4 $289
ADDRLP4 12
INDIRP4
CNSTI4 108
ADDP4
INDIRI4
CNSTI4 1
BANDI4
ADDRLP4 8
INDIRI4
EQI4 $286
LABELV $289
line 615
;614:		(self->client->ps.eFlags & EF_DEAD))
;615:	{
line 616
;616:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $286
line 619
;617:	}
;618:
;619:	if (self->client->ps.pm_flags & PMF_FOLLOW)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 4096
BANDI4
CNSTI4 0
EQI4 $290
line 620
;620:	{ //specs can't use powers through people
line 621
;621:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $290
line 623
;622:	}
;623:	if (self->client->sess.sessionTeam == TEAM_SPECTATOR)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
NEI4 $292
line 624
;624:	{
line 625
;625:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $292
line 628
;626:	}
;627:
;628:	if (!BG_CanUseFPNow(g_gametype.integer, &self->client->ps, level.time, forcePower))
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRGP4 level+32
INDIRI4
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 16
ADDRGP4 BG_CanUseFPNow
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $294
line 629
;629:	{
line 630
;630:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $294
line 633
;631:	}
;632:
;633:	if ( !(self->client->ps.fd.forcePowersKnown & ( 1 << forcePower )) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BANDI4
CNSTI4 0
NEI4 $298
line 634
;634:	{//don't know this power
line 635
;635:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $298
line 638
;636:	}
;637:	
;638:	if ( (self->client->ps.fd.forcePowersActive & ( 1 << forcePower )) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $300
line 639
;639:	{//already using this power
line 640
;640:		if (forcePower != FP_LEVITATION)
ADDRFP4 4
INDIRI4
CNSTI4 1
EQI4 $302
line 641
;641:		{
line 642
;642:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $302
line 644
;643:		}
;644:	}
LABELV $300
line 646
;645:
;646:	if (forcePower == FP_LEVITATION && self->client->fjDidJump)
ADDRFP4 4
INDIRI4
CNSTI4 1
NEI4 $304
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1800
ADDP4
INDIRI4
CNSTI4 0
EQI4 $304
line 647
;647:	{
line 648
;648:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $304
line 651
;649:	}
;650:
;651:	if (!self->client->ps.fd.forcePowerLevel[forcePower])
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
CNSTI4 0
NEI4 $306
line 652
;652:	{
line 653
;653:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $282
JUMPV
LABELV $306
line 656
;654:	}
;655:
;656:	return WP_ForcePowerAvailable( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 WP_ForcePowerAvailable
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
RETI4
LABELV $282
endproc WP_ForcePowerUsable 24 16
export WP_AbsorbConversion
proc WP_AbsorbConversion 28 8
line 660
;657:}
;658:
;659:int WP_AbsorbConversion(gentity_t *attacked, int atdAbsLevel, gentity_t *attacker, int atPower, int atPowerLevel, int atForceSpent)
;660:{
line 661
;661:	int getLevel = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 662
;662:	int addTot = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 665
;663:	gentity_t *abSound;
;664:
;665:	if (atPower != FP_LIGHTNING &&
ADDRLP4 12
ADDRFP4 12
INDIRI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 7
EQI4 $309
ADDRLP4 12
INDIRI4
CNSTI4 13
EQI4 $309
ADDRLP4 12
INDIRI4
CNSTI4 6
EQI4 $309
ADDRLP4 12
INDIRI4
CNSTI4 3
EQI4 $309
ADDRLP4 12
INDIRI4
CNSTI4 4
EQI4 $309
line 670
;666:		atPower != FP_DRAIN &&
;667:		atPower != FP_GRIP &&
;668:		atPower != FP_PUSH &&
;669:		atPower != FP_PULL)
;670:	{ //Only these powers can be absorbed
line 671
;671:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $308
JUMPV
LABELV $309
line 674
;672:	}
;673:
;674:	if (!atdAbsLevel)
ADDRFP4 4
INDIRI4
CNSTI4 0
NEI4 $311
line 675
;675:	{ //looks like attacker doesn't have any absorb power
line 676
;676:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $308
JUMPV
LABELV $311
line 679
;677:	}
;678:
;679:	if (!(attacked->client->ps.fd.forcePowersActive & (1 << FP_ABSORB)))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
NEI4 $313
line 680
;680:	{ //absorb is not active
line 681
;681:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $308
JUMPV
LABELV $313
line 685
;682:	}
;683:
;684:	//Subtract absorb power level from the offensive force power
;685:	getLevel = atPowerLevel;
ADDRLP4 0
ADDRFP4 16
INDIRI4
ASGNI4
line 686
;686:	getLevel -= atdAbsLevel;
ADDRLP4 0
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRI4
SUBI4
ASGNI4
line 688
;687:
;688:	if (getLevel < 0)
ADDRLP4 0
INDIRI4
CNSTI4 0
GEI4 $315
line 689
;689:	{
line 690
;690:		getLevel = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 691
;691:	}
LABELV $315
line 694
;692:
;693:	//let the attacker absorb an amount of force used in this attack based on his level of absorb
;694:	addTot = (atForceSpent/3)*attacked->client->ps.fd.forcePowerLevel[FP_ABSORB];
ADDRLP4 4
ADDRFP4 20
INDIRI4
CNSTI4 3
DIVI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 984
ADDP4
INDIRI4
MULI4
ASGNI4
line 696
;695:
;696:	if (addTot < 1 && atForceSpent >= 1)
ADDRLP4 16
CNSTI4 1
ASGNI4
ADDRLP4 4
INDIRI4
ADDRLP4 16
INDIRI4
GEI4 $317
ADDRFP4 20
INDIRI4
ADDRLP4 16
INDIRI4
LTI4 $317
line 697
;697:	{
line 698
;698:		addTot = 1;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 699
;699:	}
LABELV $317
line 700
;700:	attacked->client->ps.fd.forcePower += addTot;
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
ASGNP4
ADDRLP4 20
INDIRP4
ADDRLP4 20
INDIRP4
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 701
;701:	if (attacked->client->ps.fd.forcePower > 100)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 100
LEI4 $319
line 702
;702:	{
line 703
;703:		attacked->client->ps.fd.forcePower = 100;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
CNSTI4 100
ASGNI4
line 704
;704:	}
LABELV $319
line 707
;705:
;706:	//play sound indicating that attack was absorbed
;707:	if (attacked->client->forcePowerSoundDebounce < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1796
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $321
line 708
;708:	{
line 709
;709:		abSound = G_PreDefSound(attacked->client->ps.origin, PDSOUND_ABSORBHIT);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 3
ARGI4
ADDRLP4 24
ADDRGP4 G_PreDefSound
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 24
INDIRP4
ASGNP4
line 710
;710:		abSound->s.trickedentindex = attacked->s.number;
ADDRLP4 8
INDIRP4
CNSTI4 148
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 712
;711:
;712:		attacked->client->forcePowerSoundDebounce = level.time + 400;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1796
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 400
ADDI4
ASGNI4
line 713
;713:	}
LABELV $321
line 715
;714:
;715:	return getLevel;
ADDRLP4 0
INDIRI4
RETI4
LABELV $308
endproc WP_AbsorbConversion 28 8
export WP_ForcePowerRegenerate
proc WP_ForcePowerRegenerate 8 0
line 719
;716:}
;717:
;718:void WP_ForcePowerRegenerate( gentity_t *self, int overrideAmt )
;719:{ //called on a regular interval to regenerate force power.
line 720
;720:	if ( !self->client )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $326
line 721
;721:	{
line 722
;722:		return;
ADDRGP4 $325
JUMPV
LABELV $326
line 725
;723:	}
;724:
;725:	if ( overrideAmt )
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $328
line 726
;726:	{ //custom regen amount
line 727
;727:		self->client->ps.fd.forcePower += overrideAmt;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
ADDRFP4 4
INDIRI4
ADDI4
ASGNI4
line 728
;728:	}
ADDRGP4 $329
JUMPV
LABELV $328
line 730
;729:	else
;730:	{ //otherwise, just 1
line 731
;731:		self->client->ps.fd.forcePower++;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 732
;732:	}
LABELV $329
line 734
;733:
;734:	if ( self->client->ps.fd.forcePower > self->client->ps.fd.forcePowerMax )
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 936
ADDP4
INDIRI4
LEI4 $330
line 735
;735:	{ //cap it off at the max (default 100)
line 736
;736:		self->client->ps.fd.forcePower = self->client->ps.fd.forcePowerMax;
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CNSTI4 932
ADDP4
ADDRLP4 4
INDIRP4
CNSTI4 936
ADDP4
INDIRI4
ASGNI4
line 737
;737:	}
LABELV $330
line 738
;738:}
LABELV $325
endproc WP_ForcePowerRegenerate 8 0
export WP_ForcePowerStart
proc WP_ForcePowerStart 80 12
line 741
;739:
;740:void WP_ForcePowerStart( gentity_t *self, forcePowers_t forcePower, int overrideAmt )
;741:{ //activate the given force power
line 742
;742:	int	duration = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 743
;743:	qboolean hearable = qfalse;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 744
;744:	float hearDist = 0;
ADDRLP4 8
CNSTF4 0
ASGNF4
line 746
;745:
;746:	if (!WP_ForcePowerAvailable( self, forcePower ))
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 12
ADDRGP4 WP_ForcePowerAvailable
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $333
line 747
;747:	{
line 748
;748:		return;
ADDRGP4 $332
JUMPV
LABELV $333
line 753
;749:	}
;750:
;751:	//hearable and hearDist are merely for the benefit of bots, and not related to if a sound is actually played.
;752:	//If duration is set, the force power will assume to be timer-based.
;753:	switch( (int)forcePower )
ADDRLP4 16
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
LTI4 $336
ADDRLP4 16
INDIRI4
CNSTI4 17
GTI4 $336
ADDRLP4 16
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $383
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $383
address $338
address $339
address $340
address $349
address $350
address $351
address $358
address $360
address $361
address $368
address $369
address $370
address $371
address $372
address $373
address $336
address $336
address $336
code
line 754
;754:	{
LABELV $338
line 756
;755:	case FP_HEAL:
;756:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 757
;757:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 758
;758:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 759
;759:		break;
ADDRGP4 $336
JUMPV
LABELV $339
line 761
;760:	case FP_LEVITATION:
;761:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 762
;762:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 763
;763:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 28
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 764
;764:		break;
ADDRGP4 $336
JUMPV
LABELV $340
line 766
;765:	case FP_SPEED:
;766:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 767
;767:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 768
;768:		if (self->client->ps.fd.forcePowerLevel[FP_SPEED] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 952
ADDP4
INDIRI4
CNSTI4 1
NEI4 $341
line 769
;769:		{
line 770
;770:			duration = 10000;
ADDRLP4 4
CNSTI4 10000
ASGNI4
line 771
;771:		}
ADDRGP4 $342
JUMPV
LABELV $341
line 772
;772:		else if (self->client->ps.fd.forcePowerLevel[FP_SPEED] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 952
ADDP4
INDIRI4
CNSTI4 2
NEI4 $343
line 773
;773:		{
line 774
;774:			duration = 15000;
ADDRLP4 4
CNSTI4 15000
ASGNI4
line 775
;775:		}
ADDRGP4 $344
JUMPV
LABELV $343
line 776
;776:		else if (self->client->ps.fd.forcePowerLevel[FP_SPEED] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 952
ADDP4
INDIRI4
CNSTI4 3
NEI4 $336
line 777
;777:		{
line 778
;778:			duration = 20000;
ADDRLP4 4
CNSTI4 20000
ASGNI4
line 779
;779:		}
line 781
;780:		else //shouldn't get here
;781:		{
line 782
;782:			break;
LABELV $346
LABELV $344
LABELV $342
line 785
;783:		}
;784:
;785:		if (overrideAmt)
ADDRFP4 8
INDIRI4
CNSTI4 0
EQI4 $347
line 786
;786:		{
line 787
;787:			duration = overrideAmt;
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
line 788
;788:		}
LABELV $347
line 790
;789:
;790:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 32
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 32
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 791
;791:		break;
ADDRGP4 $336
JUMPV
LABELV $349
line 793
;792:	case FP_PUSH:
;793:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 794
;794:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 795
;795:		break;
ADDRGP4 $336
JUMPV
LABELV $350
line 797
;796:	case FP_PULL:
;797:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 798
;798:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 799
;799:		break;
ADDRGP4 $336
JUMPV
LABELV $351
line 801
;800:	case FP_TELEPATHY:
;801:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 802
;802:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 803
;803:		if (self->client->ps.fd.forcePowerLevel[FP_TELEPATHY] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 964
ADDP4
INDIRI4
CNSTI4 1
NEI4 $352
line 804
;804:		{
line 805
;805:			duration = 20000;
ADDRLP4 4
CNSTI4 20000
ASGNI4
line 806
;806:		}
ADDRGP4 $353
JUMPV
LABELV $352
line 807
;807:		else if (self->client->ps.fd.forcePowerLevel[FP_TELEPATHY] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 964
ADDP4
INDIRI4
CNSTI4 2
NEI4 $354
line 808
;808:		{
line 809
;809:			duration = 25000;
ADDRLP4 4
CNSTI4 25000
ASGNI4
line 810
;810:		}
ADDRGP4 $355
JUMPV
LABELV $354
line 811
;811:		else if (self->client->ps.fd.forcePowerLevel[FP_TELEPATHY] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 964
ADDP4
INDIRI4
CNSTI4 3
NEI4 $336
line 812
;812:		{
line 813
;813:			duration = 30000;
ADDRLP4 4
CNSTI4 30000
ASGNI4
line 814
;814:		}
line 816
;815:		else //shouldn't get here
;816:		{
line 817
;817:			break;
LABELV $357
LABELV $355
LABELV $353
line 820
;818:		}
;819:
;820:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 36
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 36
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 821
;821:		break;
ADDRGP4 $336
JUMPV
LABELV $358
line 823
;822:	case FP_GRIP:
;823:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 824
;824:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 825
;825:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 826
;826:		self->client->ps.powerups[PW_DISINT_4] = level.time + 60000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 380
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 60000
ADDI4
ASGNI4
line 827
;827:		break;
ADDRGP4 $336
JUMPV
LABELV $360
line 829
;828:	case FP_LIGHTNING:
;829:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 830
;830:		hearDist = 512;
ADDRLP4 8
CNSTF4 1140850688
ASGNF4
line 831
;831:		duration = overrideAmt;
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
line 832
;832:		overrideAmt = 0;
ADDRFP4 8
CNSTI4 0
ASGNI4
line 833
;833:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 44
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 44
INDIRP4
ADDRLP4 44
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 834
;834:		self->client->ps.activeForcePass = self->client->ps.fd.forcePowerLevel[FP_LIGHTNING];
ADDRLP4 48
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 48
INDIRP4
CNSTI4 636
ADDP4
ADDRLP4 48
INDIRP4
CNSTI4 972
ADDP4
INDIRI4
ASGNI4
line 835
;835:		break;
ADDRGP4 $336
JUMPV
LABELV $361
line 837
;836:	case FP_RAGE:
;837:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 838
;838:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 839
;839:		if (self->client->ps.fd.forcePowerLevel[FP_RAGE] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 976
ADDP4
INDIRI4
CNSTI4 1
NEI4 $362
line 840
;840:		{
line 841
;841:			duration = 8000;
ADDRLP4 4
CNSTI4 8000
ASGNI4
line 842
;842:		}
ADDRGP4 $363
JUMPV
LABELV $362
line 843
;843:		else if (self->client->ps.fd.forcePowerLevel[FP_RAGE] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 976
ADDP4
INDIRI4
CNSTI4 2
NEI4 $364
line 844
;844:		{
line 845
;845:			duration = 14000;
ADDRLP4 4
CNSTI4 14000
ASGNI4
line 846
;846:		}
ADDRGP4 $365
JUMPV
LABELV $364
line 847
;847:		else if (self->client->ps.fd.forcePowerLevel[FP_RAGE] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 976
ADDP4
INDIRI4
CNSTI4 3
NEI4 $336
line 848
;848:		{
line 849
;849:			duration = 20000;
ADDRLP4 4
CNSTI4 20000
ASGNI4
line 850
;850:		}
line 852
;851:		else //shouldn't get here
;852:		{
line 853
;853:			break;
LABELV $367
LABELV $365
LABELV $363
line 856
;854:		}
;855:
;856:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 52
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 52
INDIRP4
ADDRLP4 52
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 857
;857:		break;
ADDRGP4 $336
JUMPV
LABELV $368
line 859
;858:	case FP_PROTECT:
;859:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 860
;860:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 861
;861:		duration = 20000;
ADDRLP4 4
CNSTI4 20000
ASGNI4
line 862
;862:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 56
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 56
INDIRP4
ADDRLP4 56
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 863
;863:		break;
ADDRGP4 $336
JUMPV
LABELV $369
line 865
;864:	case FP_ABSORB:
;865:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 866
;866:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 867
;867:		duration = 20000;
ADDRLP4 4
CNSTI4 20000
ASGNI4
line 868
;868:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 60
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 60
INDIRP4
ADDRLP4 60
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 869
;869:		break;
ADDRGP4 $336
JUMPV
LABELV $370
line 871
;870:	case FP_TEAM_HEAL:
;871:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 872
;872:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 873
;873:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 64
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 64
INDIRP4
ADDRLP4 64
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 874
;874:		break;
ADDRGP4 $336
JUMPV
LABELV $371
line 876
;875:	case FP_TEAM_FORCE:
;876:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 877
;877:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 878
;878:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 68
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 68
INDIRP4
ADDRLP4 68
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 879
;879:		break;
ADDRGP4 $336
JUMPV
LABELV $372
line 881
;880:	case FP_DRAIN:
;881:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 882
;882:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 883
;883:		duration = overrideAmt;
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
line 884
;884:		overrideAmt = 0;
ADDRFP4 8
CNSTI4 0
ASGNI4
line 885
;885:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 72
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 72
INDIRP4
ADDRLP4 72
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 887
;886:		//self->client->ps.activeForcePass = self->client->ps.fd.forcePowerLevel[FP_DRAIN];
;887:		break;
ADDRGP4 $336
JUMPV
LABELV $373
line 889
;888:	case FP_SEE:
;889:		hearable = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 890
;890:		hearDist = 256;
ADDRLP4 8
CNSTF4 1132462080
ASGNF4
line 891
;891:		if (self->client->ps.fd.forcePowerLevel[FP_SEE] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1000
ADDP4
INDIRI4
CNSTI4 1
NEI4 $374
line 892
;892:		{
line 893
;893:			duration = 10000;
ADDRLP4 4
CNSTI4 10000
ASGNI4
line 894
;894:		}
ADDRGP4 $375
JUMPV
LABELV $374
line 895
;895:		else if (self->client->ps.fd.forcePowerLevel[FP_SEE] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1000
ADDP4
INDIRI4
CNSTI4 2
NEI4 $376
line 896
;896:		{
line 897
;897:			duration = 20000;
ADDRLP4 4
CNSTI4 20000
ASGNI4
line 898
;898:		}
ADDRGP4 $377
JUMPV
LABELV $376
line 899
;899:		else if (self->client->ps.fd.forcePowerLevel[FP_SEE] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1000
ADDP4
INDIRI4
CNSTI4 3
NEI4 $336
line 900
;900:		{
line 901
;901:			duration = 30000;
ADDRLP4 4
CNSTI4 30000
ASGNI4
line 902
;902:		}
line 904
;903:		else //shouldn't get here
;904:		{
line 905
;905:			break;
LABELV $379
LABELV $377
LABELV $375
line 908
;906:		}
;907:
;908:		self->client->ps.fd.forcePowersActive |= ( 1 << forcePower );
ADDRLP4 76
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 76
INDIRP4
ADDRLP4 76
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 909
;909:		break;
line 911
;910:	case FP_SABERATTACK:
;911:		break;
line 913
;912:	case FP_SABERDEFEND:
;913:		break;
line 915
;914:	case FP_SABERTHROW:
;915:		break;
line 917
;916:	default:
;917:		break;
LABELV $336
line 920
;918:	}
;919:
;920:	if ( duration )
ADDRLP4 4
INDIRI4
CNSTI4 0
EQI4 $384
line 921
;921:	{
line 922
;922:		self->client->ps.fd.forcePowerDuration[forcePower] = level.time + duration;
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 860
ADDP4
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 923
;923:	}
ADDRGP4 $385
JUMPV
LABELV $384
line 925
;924:	else
;925:	{
line 926
;926:		self->client->ps.fd.forcePowerDuration[forcePower] = 0;
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 860
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 927
;927:	}
LABELV $385
line 929
;928:
;929:	if (hearable)
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $387
line 930
;930:	{
line 931
;931:		self->client->ps.otherSoundLen = hearDist;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1280
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
line 932
;932:		self->client->ps.otherSoundTime = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1276
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 933
;933:	}
LABELV $387
line 935
;934:	
;935:	self->client->ps.fd.forcePowerDebounce[forcePower] = 0;
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 937
;936:
;937:	if ((int)forcePower == FP_SPEED && overrideAmt)
ADDRFP4 4
INDIRI4
CNSTI4 2
NEI4 $390
ADDRFP4 8
INDIRI4
CNSTI4 0
EQI4 $390
line 938
;938:	{
line 939
;939:		BG_ForcePowerDrain( &self->client->ps, forcePower, overrideAmt*0.025 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
CNSTF4 1020054733
ADDRFP4 8
INDIRI4
CVIF4 4
MULF4
CVFI4 4
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 940
;940:	}
ADDRGP4 $391
JUMPV
LABELV $390
line 941
;941:	else if ((int)forcePower != FP_GRIP && (int)forcePower != FP_DRAIN)
ADDRLP4 24
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 6
EQI4 $392
ADDRLP4 24
INDIRI4
CNSTI4 13
EQI4 $392
line 942
;942:	{ //grip and drain drain as damage is done
line 943
;943:		BG_ForcePowerDrain( &self->client->ps, forcePower, overrideAmt );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 944
;944:	}
LABELV $392
LABELV $391
line 945
;945:}
LABELV $332
endproc WP_ForcePowerStart 80 12
export ForceHeal
proc ForceHeal 20 12
line 948
;946:
;947:void ForceHeal( gentity_t *self )
;948:{
line 949
;949:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $395
line 950
;950:	{
line 951
;951:		return;
ADDRGP4 $394
JUMPV
LABELV $395
line 954
;952:	}
;953:
;954:	if ( !WP_ForcePowerUsable( self, FP_HEAL ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 0
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $397
line 955
;955:	{
line 956
;956:		return;
ADDRGP4 $394
JUMPV
LABELV $397
line 959
;957:	}
;958:
;959:	if ( self->health >= self->client->ps.stats[STAT_MAX_HEALTH])
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LTI4 $399
line 960
;960:	{
line 961
;961:		return;
ADDRGP4 $394
JUMPV
LABELV $399
line 964
;962:	}
;963:
;964:	if (self->client->ps.fd.forcePowerLevel[FP_HEAL] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
INDIRI4
CNSTI4 3
NEI4 $401
line 965
;965:	{
line 966
;966:		self->health += 25; //This was 50, but that angered the Balance God.
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 25
ADDI4
ASGNI4
line 968
;967:		
;968:		if (self->health > self->client->ps.stats[STAT_MAX_HEALTH])
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $403
line 969
;969:		{
line 970
;970:			self->health = self->client->ps.stats[STAT_MAX_HEALTH];
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 676
ADDP4
ADDRLP4 16
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 971
;971:		}
LABELV $403
line 972
;972:		BG_ForcePowerDrain( &self->client->ps, FP_HEAL, 0 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRLP4 16
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 973
;973:	}
ADDRGP4 $402
JUMPV
LABELV $401
line 974
;974:	else if (self->client->ps.fd.forcePowerLevel[FP_HEAL] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
INDIRI4
CNSTI4 2
NEI4 $405
line 975
;975:	{
line 976
;976:		self->health += 10;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 10
ADDI4
ASGNI4
line 978
;977:		
;978:		if (self->health > self->client->ps.stats[STAT_MAX_HEALTH])
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $407
line 979
;979:		{
line 980
;980:			self->health = self->client->ps.stats[STAT_MAX_HEALTH];
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 676
ADDP4
ADDRLP4 16
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 981
;981:		}
LABELV $407
line 982
;982:		BG_ForcePowerDrain( &self->client->ps, FP_HEAL, 0 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRLP4 16
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 983
;983:	}
ADDRGP4 $406
JUMPV
LABELV $405
line 985
;984:	else
;985:	{
line 986
;986:		self->health += 5;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 5
ADDI4
ASGNI4
line 988
;987:		
;988:		if (self->health > self->client->ps.stats[STAT_MAX_HEALTH])
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $409
line 989
;989:		{
line 990
;990:			self->health = self->client->ps.stats[STAT_MAX_HEALTH];
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 676
ADDP4
ADDRLP4 16
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 991
;991:		}
LABELV $409
line 992
;992:		BG_ForcePowerDrain( &self->client->ps, FP_HEAL, 0 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRLP4 16
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 993
;993:	}
LABELV $406
LABELV $402
line 1002
;994:	/*
;995:	else
;996:	{
;997:		WP_ForcePowerStart( self, FP_HEAL, 0 );
;998:	}
;999:	*/
;1000:	//NOTE: Decided to make all levels instant.
;1001:
;1002:	G_Sound( self, CHAN_ITEM, G_SoundIndex("sound/weapons/force/heal.wav") );
ADDRGP4 $411
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 4
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1003
;1003:}
LABELV $394
endproc ForceHeal 20 12
export WP_AddToClientBitflags
proc WP_AddToClientBitflags 4 0
line 1006
;1004:
;1005:void WP_AddToClientBitflags(gentity_t *ent, int entNum)
;1006:{
line 1007
;1007:	if (!ent)
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $413
line 1008
;1008:	{
line 1009
;1009:		return;
ADDRGP4 $412
JUMPV
LABELV $413
line 1012
;1010:	}
;1011:
;1012:	if (entNum > 47)
ADDRFP4 4
INDIRI4
CNSTI4 47
LEI4 $415
line 1013
;1013:	{
line 1014
;1014:		ent->s.trickedentindex4 |= (1 << (entNum-48));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 160
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 48
SUBI4
LSHI4
BORI4
ASGNI4
line 1015
;1015:	}
ADDRGP4 $416
JUMPV
LABELV $415
line 1016
;1016:	else if (entNum > 31)
ADDRFP4 4
INDIRI4
CNSTI4 31
LEI4 $417
line 1017
;1017:	{
line 1018
;1018:		ent->s.trickedentindex3 |= (1 << (entNum-32));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 156
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 32
SUBI4
LSHI4
BORI4
ASGNI4
line 1019
;1019:	}
ADDRGP4 $418
JUMPV
LABELV $417
line 1020
;1020:	else if (entNum > 15)
ADDRFP4 4
INDIRI4
CNSTI4 15
LEI4 $419
line 1021
;1021:	{
line 1022
;1022:		ent->s.trickedentindex2 |= (1 << (entNum-16));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 152
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 16
SUBI4
LSHI4
BORI4
ASGNI4
line 1023
;1023:	}
ADDRGP4 $420
JUMPV
LABELV $419
line 1025
;1024:	else
;1025:	{
line 1026
;1026:		ent->s.trickedentindex |= (1 << entNum);
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 148
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 1027
;1027:	}
LABELV $420
LABELV $418
LABELV $416
line 1028
;1028:}
LABELV $412
endproc WP_AddToClientBitflags 4 0
export ForceTeamHeal
proc ForceTeamHeal 252 12
line 1031
;1029:
;1030:void ForceTeamHeal( gentity_t *self )
;1031:{
line 1032
;1032:	float radius = 256;
ADDRLP4 156
CNSTF4 1132462080
ASGNF4
line 1033
;1033:	int i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1036
;1034:	gentity_t *ent;
;1035:	vec3_t a;
;1036:	int numpl = 0;
ADDRLP4 148
CNSTI4 0
ASGNI4
line 1038
;1037:	int pl[MAX_CLIENTS];
;1038:	int healthadd = 0;
ADDRLP4 160
CNSTI4 0
ASGNI4
line 1039
;1039:	gentity_t *te = NULL;
ADDRLP4 152
CNSTP4 0
ASGNP4
line 1041
;1040:
;1041:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $422
line 1042
;1042:	{
line 1043
;1043:		return;
ADDRGP4 $421
JUMPV
LABELV $422
line 1046
;1044:	}
;1045:
;1046:	if ( !WP_ForcePowerUsable( self, FP_TEAM_HEAL ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 11
ARGI4
ADDRLP4 164
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 164
INDIRI4
CNSTI4 0
NEI4 $424
line 1047
;1047:	{
line 1048
;1048:		return;
ADDRGP4 $421
JUMPV
LABELV $424
line 1051
;1049:	}
;1050:
;1051:	if (self->client->ps.fd.forcePowerLevel[FP_TEAM_HEAL] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 988
ADDP4
INDIRI4
CNSTI4 2
NEI4 $426
line 1052
;1052:	{
line 1053
;1053:		radius *= 1.5;
ADDRLP4 156
CNSTF4 1069547520
ADDRLP4 156
INDIRF4
MULF4
ASGNF4
line 1054
;1054:	}
LABELV $426
line 1055
;1055:	if (self->client->ps.fd.forcePowerLevel[FP_TEAM_HEAL] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 988
ADDP4
INDIRI4
CNSTI4 3
NEI4 $431
line 1056
;1056:	{
line 1057
;1057:		radius *= 2;
ADDRLP4 156
CNSTF4 1073741824
ADDRLP4 156
INDIRF4
MULF4
ASGNF4
line 1058
;1058:	}
ADDRGP4 $431
JUMPV
LABELV $430
line 1061
;1059:
;1060:	while (i < MAX_CLIENTS)
;1061:	{
line 1062
;1062:		ent = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1064
;1063:
;1064:		if (ent && ent->client && self != ent && OnSameTeam(self, ent) && ent->client->ps.stats[STAT_HEALTH] < ent->client->ps.stats[STAT_MAX_HEALTH] && ent->client->ps.stats[STAT_HEALTH] > 0 && ForcePowerUsableOn(self, ent, FP_TEAM_HEAL) &&
ADDRLP4 172
ADDRLP4 0
INDIRP4
CVPU4 4
ASGNU4
ADDRLP4 176
CNSTU4 0
ASGNU4
ADDRLP4 172
INDIRU4
ADDRLP4 176
INDIRU4
EQU4 $433
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 176
INDIRU4
EQU4 $433
ADDRLP4 180
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 180
INDIRP4
CVPU4 4
ADDRLP4 172
INDIRU4
EQU4 $433
ADDRLP4 180
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 184
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 188
CNSTI4 0
ASGNI4
ADDRLP4 184
INDIRI4
ADDRLP4 188
INDIRI4
EQI4 $433
ADDRLP4 196
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 200
ADDRLP4 196
INDIRP4
CNSTI4 216
ADDP4
INDIRI4
ASGNI4
ADDRLP4 200
INDIRI4
ADDRLP4 196
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
GEI4 $433
ADDRLP4 200
INDIRI4
ADDRLP4 188
INDIRI4
LEI4 $433
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 11
ARGI4
ADDRLP4 204
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 204
INDIRI4
CNSTI4 0
EQI4 $433
ADDRLP4 208
CNSTI4 408
ASGNI4
ADDRLP4 212
CNSTI4 20
ASGNI4
ADDRFP4 0
INDIRP4
ADDRLP4 208
INDIRI4
ADDP4
INDIRP4
ADDRLP4 212
INDIRI4
ADDP4
ARGP4
ADDRLP4 0
INDIRP4
ADDRLP4 208
INDIRI4
ADDP4
INDIRP4
ADDRLP4 212
INDIRI4
ADDP4
ARGP4
ADDRLP4 216
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 216
INDIRI4
CNSTI4 0
EQI4 $433
line 1066
;1065:			trap_InPVS(self->client->ps.origin, ent->client->ps.origin))
;1066:		{
line 1067
;1067:			VectorSubtract(self->client->ps.origin, ent->client->ps.origin, a);
ADDRLP4 220
CNSTI4 408
ASGNI4
ADDRLP4 224
ADDRFP4 0
INDIRP4
ADDRLP4 220
INDIRI4
ADDP4
ASGNP4
ADDRLP4 228
CNSTI4 20
ASGNI4
ADDRLP4 232
ADDRLP4 0
INDIRP4
ADDRLP4 220
INDIRI4
ADDP4
ASGNP4
ADDRLP4 136
ADDRLP4 224
INDIRP4
INDIRP4
ADDRLP4 228
INDIRI4
ADDP4
INDIRF4
ADDRLP4 232
INDIRP4
INDIRP4
ADDRLP4 228
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 236
CNSTI4 24
ASGNI4
ADDRLP4 136+4
ADDRLP4 224
INDIRP4
INDIRP4
ADDRLP4 236
INDIRI4
ADDP4
INDIRF4
ADDRLP4 232
INDIRP4
INDIRP4
ADDRLP4 236
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 240
CNSTI4 408
ASGNI4
ADDRLP4 244
CNSTI4 28
ASGNI4
ADDRLP4 136+8
ADDRFP4 0
INDIRP4
ADDRLP4 240
INDIRI4
ADDP4
INDIRP4
ADDRLP4 244
INDIRI4
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
ADDRLP4 240
INDIRI4
ADDP4
INDIRP4
ADDRLP4 244
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1069
;1068:
;1069:			if (VectorLength(a) <= radius)
ADDRLP4 136
ARGP4
ADDRLP4 248
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 248
INDIRF4
ADDRLP4 156
INDIRF4
GTF4 $437
line 1070
;1070:			{
line 1071
;1071:				pl[numpl] = i;
ADDRLP4 148
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 1072
;1072:				numpl++;
ADDRLP4 148
ADDRLP4 148
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1073
;1073:			}
LABELV $437
line 1074
;1074:		}
LABELV $433
line 1076
;1075:
;1076:		i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1077
;1077:	}
LABELV $431
line 1060
ADDRLP4 4
INDIRI4
CNSTI4 32
LTI4 $430
line 1079
;1078:
;1079:	if (numpl < 1)
ADDRLP4 148
INDIRI4
CNSTI4 1
GEI4 $439
line 1080
;1080:	{
line 1081
;1081:		return;
ADDRGP4 $421
JUMPV
LABELV $439
line 1084
;1082:	}
;1083:
;1084:	if (numpl == 1)
ADDRLP4 148
INDIRI4
CNSTI4 1
NEI4 $441
line 1085
;1085:	{
line 1086
;1086:		healthadd = 50;
ADDRLP4 160
CNSTI4 50
ASGNI4
line 1087
;1087:	}
ADDRGP4 $442
JUMPV
LABELV $441
line 1088
;1088:	else if (numpl == 2)
ADDRLP4 148
INDIRI4
CNSTI4 2
NEI4 $443
line 1089
;1089:	{
line 1090
;1090:		healthadd = 33;
ADDRLP4 160
CNSTI4 33
ASGNI4
line 1091
;1091:	}
ADDRGP4 $444
JUMPV
LABELV $443
line 1093
;1092:	else
;1093:	{
line 1094
;1094:		healthadd = 25;
ADDRLP4 160
CNSTI4 25
ASGNI4
line 1095
;1095:	}
LABELV $444
LABELV $442
line 1097
;1096:
;1097:	i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $446
JUMPV
LABELV $445
line 1100
;1098:
;1099:	while (i < numpl)
;1100:	{
line 1101
;1101:		if (g_entities[pl[i]].client->ps.stats[STAT_HEALTH] > 0 &&
ADDRLP4 168
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 172
CNSTI4 0
ASGNI4
ADDRLP4 168
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 172
INDIRI4
LEI4 $448
ADDRLP4 168
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 172
INDIRI4
LEI4 $448
line 1103
;1102:			g_entities[pl[i]].health > 0)
;1103:		{
line 1104
;1104:			g_entities[pl[i]].client->ps.stats[STAT_HEALTH] += healthadd;
ADDRLP4 176
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
ASGNP4
ADDRLP4 176
INDIRP4
ADDRLP4 176
INDIRP4
INDIRI4
ADDRLP4 160
INDIRI4
ADDI4
ASGNI4
line 1105
;1105:			if (g_entities[pl[i]].client->ps.stats[STAT_HEALTH] > g_entities[pl[i]].client->ps.stats[STAT_MAX_HEALTH])
ADDRLP4 180
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 180
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 180
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $453
line 1106
;1106:			{
line 1107
;1107:				g_entities[pl[i]].client->ps.stats[STAT_HEALTH] = g_entities[pl[i]].client->ps.stats[STAT_MAX_HEALTH];
ADDRLP4 184
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 184
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
ADDRLP4 184
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 1108
;1108:			}
LABELV $453
line 1110
;1109:
;1110:			g_entities[pl[i]].health = g_entities[pl[i]].client->ps.stats[STAT_HEALTH];
ADDRLP4 184
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 184
INDIRI4
ADDRGP4 g_entities+676
ADDP4
ADDRLP4 184
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
INDIRI4
ASGNI4
line 1113
;1111:
;1112:			//At this point we know we got one, so add him into the collective event client bitflag
;1113:			if (!te)
ADDRLP4 152
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $461
line 1114
;1114:			{
line 1115
;1115:				te = G_TempEntity( self->client->ps.origin, EV_TEAM_POWER);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 37
ARGI4
ADDRLP4 188
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 152
ADDRLP4 188
INDIRP4
ASGNP4
line 1116
;1116:				te->s.eventParm = 1; //eventParm 1 is heal, eventParm 2 is force regen
ADDRLP4 152
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 1
ASGNI4
line 1119
;1117:
;1118:				//since we had an extra check above, do the drain now because we got at least one guy
;1119:				BG_ForcePowerDrain( &self->client->ps, FP_TEAM_HEAL, forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_TEAM_HEAL]][FP_TEAM_HEAL] );
ADDRLP4 192
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 192
INDIRP4
ARGP4
CNSTI4 11
ARGI4
CNSTI4 72
ADDRLP4 192
INDIRP4
CNSTI4 988
ADDP4
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded+44
ADDP4
INDIRI4
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 1120
;1120:			}
LABELV $461
line 1122
;1121:
;1122:			WP_AddToClientBitflags(te, pl[i]);
ADDRLP4 152
INDIRP4
ARGP4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
ARGI4
ADDRGP4 WP_AddToClientBitflags
CALLV
pop
line 1124
;1123:			//Now cramming it all into one event.. doing this many g_sound events at once was a Bad Thing.
;1124:		}
LABELV $448
line 1125
;1125:		i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1126
;1126:	}
LABELV $446
line 1099
ADDRLP4 4
INDIRI4
ADDRLP4 148
INDIRI4
LTI4 $445
line 1127
;1127:}
LABELV $421
endproc ForceTeamHeal 252 12
export ForceTeamForceReplenish
proc ForceTeamForceReplenish 240 12
line 1130
;1128:
;1129:void ForceTeamForceReplenish( gentity_t *self )
;1130:{
line 1131
;1131:	float radius = 256;
ADDRLP4 160
CNSTF4 1132462080
ASGNF4
line 1132
;1132:	int i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1135
;1133:	gentity_t *ent;
;1134:	vec3_t a;
;1135:	int numpl = 0;
ADDRLP4 152
CNSTI4 0
ASGNI4
line 1137
;1136:	int pl[MAX_CLIENTS];
;1137:	int poweradd = 0;
ADDRLP4 156
CNSTI4 0
ASGNI4
line 1138
;1138:	gentity_t *te = NULL;
ADDRLP4 136
CNSTP4 0
ASGNP4
line 1140
;1139:
;1140:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $465
line 1141
;1141:	{
line 1142
;1142:		return;
ADDRGP4 $464
JUMPV
LABELV $465
line 1145
;1143:	}
;1144:
;1145:	if ( !WP_ForcePowerUsable( self, FP_TEAM_FORCE ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 12
ARGI4
ADDRLP4 164
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 164
INDIRI4
CNSTI4 0
NEI4 $467
line 1146
;1146:	{
line 1147
;1147:		return;
ADDRGP4 $464
JUMPV
LABELV $467
line 1150
;1148:	}
;1149:
;1150:	if (self->client->ps.fd.forcePowerLevel[FP_TEAM_FORCE] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 992
ADDP4
INDIRI4
CNSTI4 2
NEI4 $469
line 1151
;1151:	{
line 1152
;1152:		radius *= 1.5;
ADDRLP4 160
CNSTF4 1069547520
ADDRLP4 160
INDIRF4
MULF4
ASGNF4
line 1153
;1153:	}
LABELV $469
line 1154
;1154:	if (self->client->ps.fd.forcePowerLevel[FP_TEAM_FORCE] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 992
ADDP4
INDIRI4
CNSTI4 3
NEI4 $474
line 1155
;1155:	{
line 1156
;1156:		radius *= 2;
ADDRLP4 160
CNSTF4 1073741824
ADDRLP4 160
INDIRF4
MULF4
ASGNF4
line 1157
;1157:	}
ADDRGP4 $474
JUMPV
LABELV $473
line 1160
;1158:
;1159:	while (i < MAX_CLIENTS)
;1160:	{
line 1161
;1161:		ent = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1163
;1162:
;1163:		if (ent && ent->client && self != ent && OnSameTeam(self, ent) && ent->client->ps.fd.forcePower < 100 && ForcePowerUsableOn(self, ent, FP_TEAM_FORCE) &&
ADDRLP4 172
ADDRLP4 0
INDIRP4
CVPU4 4
ASGNU4
ADDRLP4 176
CNSTU4 0
ASGNU4
ADDRLP4 172
INDIRU4
ADDRLP4 176
INDIRU4
EQU4 $476
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 176
INDIRU4
EQU4 $476
ADDRLP4 180
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 180
INDIRP4
CVPU4 4
ADDRLP4 172
INDIRU4
EQU4 $476
ADDRLP4 180
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 184
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 184
INDIRI4
CNSTI4 0
EQI4 $476
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 100
GEI4 $476
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 12
ARGI4
ADDRLP4 192
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 192
INDIRI4
CNSTI4 0
EQI4 $476
ADDRLP4 196
CNSTI4 408
ASGNI4
ADDRLP4 200
CNSTI4 20
ASGNI4
ADDRFP4 0
INDIRP4
ADDRLP4 196
INDIRI4
ADDP4
INDIRP4
ADDRLP4 200
INDIRI4
ADDP4
ARGP4
ADDRLP4 0
INDIRP4
ADDRLP4 196
INDIRI4
ADDP4
INDIRP4
ADDRLP4 200
INDIRI4
ADDP4
ARGP4
ADDRLP4 204
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 204
INDIRI4
CNSTI4 0
EQI4 $476
line 1165
;1164:			trap_InPVS(self->client->ps.origin, ent->client->ps.origin))
;1165:		{
line 1166
;1166:			VectorSubtract(self->client->ps.origin, ent->client->ps.origin, a);
ADDRLP4 208
CNSTI4 408
ASGNI4
ADDRLP4 212
ADDRFP4 0
INDIRP4
ADDRLP4 208
INDIRI4
ADDP4
ASGNP4
ADDRLP4 216
CNSTI4 20
ASGNI4
ADDRLP4 220
ADDRLP4 0
INDIRP4
ADDRLP4 208
INDIRI4
ADDP4
ASGNP4
ADDRLP4 140
ADDRLP4 212
INDIRP4
INDIRP4
ADDRLP4 216
INDIRI4
ADDP4
INDIRF4
ADDRLP4 220
INDIRP4
INDIRP4
ADDRLP4 216
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 224
CNSTI4 24
ASGNI4
ADDRLP4 140+4
ADDRLP4 212
INDIRP4
INDIRP4
ADDRLP4 224
INDIRI4
ADDP4
INDIRF4
ADDRLP4 220
INDIRP4
INDIRP4
ADDRLP4 224
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 228
CNSTI4 408
ASGNI4
ADDRLP4 232
CNSTI4 28
ASGNI4
ADDRLP4 140+8
ADDRFP4 0
INDIRP4
ADDRLP4 228
INDIRI4
ADDP4
INDIRP4
ADDRLP4 232
INDIRI4
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
ADDRLP4 228
INDIRI4
ADDP4
INDIRP4
ADDRLP4 232
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1168
;1167:
;1168:			if (VectorLength(a) <= radius)
ADDRLP4 140
ARGP4
ADDRLP4 236
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 236
INDIRF4
ADDRLP4 160
INDIRF4
GTF4 $480
line 1169
;1169:			{
line 1170
;1170:				pl[numpl] = i;
ADDRLP4 152
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 1171
;1171:				numpl++;
ADDRLP4 152
ADDRLP4 152
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1172
;1172:			}
LABELV $480
line 1173
;1173:		}
LABELV $476
line 1175
;1174:
;1175:		i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1176
;1176:	}
LABELV $474
line 1159
ADDRLP4 4
INDIRI4
CNSTI4 32
LTI4 $473
line 1178
;1177:
;1178:	if (numpl < 1)
ADDRLP4 152
INDIRI4
CNSTI4 1
GEI4 $482
line 1179
;1179:	{
line 1180
;1180:		return;
ADDRGP4 $464
JUMPV
LABELV $482
line 1183
;1181:	}
;1182:
;1183:	if (numpl == 1)
ADDRLP4 152
INDIRI4
CNSTI4 1
NEI4 $484
line 1184
;1184:	{
line 1185
;1185:		poweradd = 50;
ADDRLP4 156
CNSTI4 50
ASGNI4
line 1186
;1186:	}
ADDRGP4 $485
JUMPV
LABELV $484
line 1187
;1187:	else if (numpl == 2)
ADDRLP4 152
INDIRI4
CNSTI4 2
NEI4 $486
line 1188
;1188:	{
line 1189
;1189:		poweradd = 33;
ADDRLP4 156
CNSTI4 33
ASGNI4
line 1190
;1190:	}
ADDRGP4 $487
JUMPV
LABELV $486
line 1192
;1191:	else
;1192:	{
line 1193
;1193:		poweradd = 25;
ADDRLP4 156
CNSTI4 25
ASGNI4
line 1194
;1194:	}
LABELV $487
LABELV $485
line 1196
;1195:
;1196:	BG_ForcePowerDrain( &self->client->ps, FP_TEAM_FORCE, forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_TEAM_FORCE]][FP_TEAM_FORCE] );
ADDRLP4 168
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 168
INDIRP4
ARGP4
CNSTI4 12
ARGI4
CNSTI4 72
ADDRLP4 168
INDIRP4
CNSTI4 992
ADDP4
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded+48
ADDP4
INDIRI4
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 1198
;1197:
;1198:	i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $490
JUMPV
LABELV $489
line 1201
;1199:
;1200:	while (i < numpl)
;1201:	{
line 1202
;1202:		g_entities[pl[i]].client->ps.fd.forcePower += poweradd;
ADDRLP4 172
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
ASGNP4
ADDRLP4 172
INDIRP4
ADDRLP4 172
INDIRP4
INDIRI4
ADDRLP4 156
INDIRI4
ADDI4
ASGNI4
line 1203
;1203:		if (g_entities[pl[i]].client->ps.fd.forcePower > 100)
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 100
LEI4 $493
line 1204
;1204:		{
line 1205
;1205:			g_entities[pl[i]].client->ps.fd.forcePower = 100;
CNSTI4 828
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
CNSTI4 100
ASGNI4
line 1206
;1206:		}
LABELV $493
line 1209
;1207:
;1208:		//At this point we know we got one, so add him into the collective event client bitflag
;1209:		if (!te)
ADDRLP4 136
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $497
line 1210
;1210:		{
line 1211
;1211:			te = G_TempEntity( self->client->ps.origin, EV_TEAM_POWER);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 37
ARGI4
ADDRLP4 176
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 136
ADDRLP4 176
INDIRP4
ASGNP4
line 1212
;1212:			te->s.eventParm = 2; //eventParm 1 is heal, eventParm 2 is force regen
ADDRLP4 136
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 2
ASGNI4
line 1213
;1213:		}
LABELV $497
line 1215
;1214:
;1215:		WP_AddToClientBitflags(te, pl[i]);
ADDRLP4 136
INDIRP4
ARGP4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 8
ADDP4
INDIRI4
ARGI4
ADDRGP4 WP_AddToClientBitflags
CALLV
pop
line 1218
;1216:		//Now cramming it all into one event.. doing this many g_sound events at once was a Bad Thing.
;1217:		
;1218:		i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1219
;1219:	}
LABELV $490
line 1200
ADDRLP4 4
INDIRI4
ADDRLP4 152
INDIRI4
LTI4 $489
line 1220
;1220:}
LABELV $464
endproc ForceTeamForceReplenish 240 12
export ForceGrip
proc ForceGrip 1144 28
line 1223
;1221:
;1222:void ForceGrip( gentity_t *self )
;1223:{
line 1227
;1224:	trace_t tr;
;1225:	vec3_t tfrom, tto, fwd;
;1226:
;1227:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $500
line 1228
;1228:	{
line 1229
;1229:		return;
ADDRGP4 $499
JUMPV
LABELV $500
line 1232
;1230:	}
;1231:
;1232:	if (self->client->ps.forceHandExtend != HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
EQI4 $502
line 1233
;1233:	{
line 1234
;1234:		return;
ADDRGP4 $499
JUMPV
LABELV $502
line 1237
;1235:	}
;1236:
;1237:	if (self->client->ps.weaponTime > 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
CNSTI4 0
LEI4 $504
line 1238
;1238:	{
line 1239
;1239:		return;
ADDRGP4 $499
JUMPV
LABELV $504
line 1242
;1240:	}
;1241:
;1242:	if (self->client->ps.fd.forceGripUseTime > level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1124
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $506
line 1243
;1243:	{
line 1244
;1244:		return;
ADDRGP4 $499
JUMPV
LABELV $506
line 1247
;1245:	}
;1246:
;1247:	if ( !WP_ForcePowerUsable( self, FP_GRIP ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRLP4 1116
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 1116
INDIRI4
CNSTI4 0
NEI4 $509
line 1248
;1248:	{
line 1249
;1249:		return;
ADDRGP4 $499
JUMPV
LABELV $509
line 1252
;1250:	}
;1251:
;1252:	VectorCopy(self->client->ps.origin, tfrom);
ADDRLP4 1080
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 1253
;1253:	tfrom[2] += self->client->ps.viewheight;
ADDRLP4 1080+8
ADDRLP4 1080+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 168
ADDP4
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 1254
;1254:	AngleVectors(self->client->ps.viewangles, fwd, NULL, NULL);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 1104
ARGP4
ADDRLP4 1120
CNSTP4 0
ASGNP4
ADDRLP4 1120
INDIRP4
ARGP4
ADDRLP4 1120
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 1255
;1255:	tto[0] = tfrom[0] + fwd[0]*MAX_GRIP_DISTANCE;
ADDRLP4 1092
ADDRLP4 1080
INDIRF4
CNSTF4 1132462080
ADDRLP4 1104
INDIRF4
MULF4
ADDF4
ASGNF4
line 1256
;1256:	tto[1] = tfrom[1] + fwd[1]*MAX_GRIP_DISTANCE;
ADDRLP4 1092+4
ADDRLP4 1080+4
INDIRF4
CNSTF4 1132462080
ADDRLP4 1104+4
INDIRF4
MULF4
ADDF4
ASGNF4
line 1257
;1257:	tto[2] = tfrom[2] + fwd[2]*MAX_GRIP_DISTANCE;
ADDRLP4 1092+8
ADDRLP4 1080+8
INDIRF4
CNSTF4 1132462080
ADDRLP4 1104+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 1259
;1258:
;1259:	trap_Trace(&tr, tfrom, NULL, NULL, tto, self->s.number, MASK_PLAYERSOLID);
ADDRLP4 0
ARGP4
ADDRLP4 1080
ARGP4
ADDRLP4 1124
CNSTP4 0
ASGNP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRLP4 1092
ARGP4
ADDRFP4 0
INDIRP4
INDIRI4
ARGI4
CNSTI4 273
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1261
;1260:
;1261:	if ( tr.fraction != 1.0 &&
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
EQF4 $518
ADDRLP4 0+52
INDIRI4
CNSTI4 1023
EQI4 $518
ADDRLP4 1128
CNSTI4 828
ASGNI4
ADDRLP4 1128
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $518
ADDRLP4 1128
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1120
ADDP4
INDIRI4
CNSTI4 0
NEI4 $518
ADDRLP4 1128
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
GEF4 $518
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1128
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
CNSTI4 6
ARGI4
ADDRLP4 1132
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 1136
CNSTI4 0
ASGNI4
ADDRLP4 1132
INDIRI4
ADDRLP4 1136
INDIRI4
EQI4 $518
ADDRGP4 g_friendlyFire+12
INDIRI4
ADDRLP4 1136
INDIRI4
NEI4 $532
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 828
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 1140
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 1140
INDIRI4
CNSTI4 0
NEI4 $518
LABELV $532
line 1268
;1262:		tr.entityNum != ENTITYNUM_NONE &&
;1263:		g_entities[tr.entityNum].client &&
;1264:		!g_entities[tr.entityNum].client->ps.fd.forceGripCripple &&
;1265:		g_entities[tr.entityNum].client->ps.fd.forceGripBeingGripped < level.time &&
;1266:		ForcePowerUsableOn(self, &g_entities[tr.entityNum], FP_GRIP) &&
;1267:		(g_friendlyFire.integer || !OnSameTeam(self, &g_entities[tr.entityNum])) ) //don't grip someone who's still crippled
;1268:	{
line 1269
;1269:		self->client->ps.fd.forceGripEntityNum = tr.entityNum;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
ADDRLP4 0+52
INDIRI4
ASGNI4
line 1270
;1270:		g_entities[tr.entityNum].client->ps.fd.forceGripStarted = level.time;
CNSTI4 828
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
ADDRGP4 level+32
INDIRI4
CVIF4 4
ASGNF4
line 1271
;1271:		self->client->ps.fd.forceGripDamageDebounceTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1112
ADDP4
CNSTI4 0
ASGNI4
line 1273
;1272:
;1273:		self->client->ps.forceHandExtend = HANDEXTEND_FORCEGRIP;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 3
ASGNI4
line 1274
;1274:		self->client->ps.forceHandExtendTime = level.time + 5000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 1275
;1275:	}
ADDRGP4 $519
JUMPV
LABELV $518
line 1277
;1276:	else
;1277:	{
line 1278
;1278:		self->client->ps.fd.forceGripEntityNum = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
CNSTI4 1023
ASGNI4
line 1279
;1279:		return;
LABELV $519
line 1281
;1280:	}
;1281:}
LABELV $499
endproc ForceGrip 1144 28
export ForceSpeed
proc ForceSpeed 12 12
line 1284
;1282:
;1283:void ForceSpeed( gentity_t *self, int forceDuration )
;1284:{
line 1285
;1285:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $539
line 1286
;1286:	{
line 1287
;1287:		return;
ADDRGP4 $538
JUMPV
LABELV $539
line 1290
;1288:	}
;1289:
;1290:	if (self->client->ps.forceAllowDeactivateTime < level.time &&
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 1328
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $541
ADDRLP4 0
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 4
BANDI4
CNSTI4 0
EQI4 $541
line 1292
;1291:		(self->client->ps.fd.forcePowersActive & (1 << FP_SPEED)) )
;1292:	{
line 1293
;1293:		WP_ForcePowerStop( self, FP_SPEED );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 2
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1294
;1294:		return;
ADDRGP4 $538
JUMPV
LABELV $541
line 1297
;1295:	}
;1296:
;1297:	if ( !WP_ForcePowerUsable( self, FP_SPEED ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 2
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $544
line 1298
;1298:	{
line 1299
;1299:		return;
ADDRGP4 $538
JUMPV
LABELV $544
line 1302
;1300:	}
;1301:
;1302:	self->client->ps.forceAllowDeactivateTime = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1328
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 1304
;1303:
;1304:	WP_ForcePowerStart( self, FP_SPEED, forceDuration );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 2
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 1305
;1305:	G_Sound( self, CHAN_BODY, G_SoundIndex("sound/weapons/force/speed.wav") );
ADDRGP4 $547
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1306
;1306:	G_Sound( self, TRACK_CHANNEL_2, speedLoopSound );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 52
ARGI4
ADDRGP4 speedLoopSound
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1307
;1307:	self->client->ps.fd.forceSpeedSmash = 2; //initial boost (will automax to whatever is appropriate for force level)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1136
ADDP4
CNSTF4 1073741824
ASGNF4
line 1308
;1308:	self->client->ps.fd.forceSpeedDoDamage = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1140
ADDP4
CNSTF4 0
ASGNF4
line 1309
;1309:}
LABELV $538
endproc ForceSpeed 12 12
export ForceSeeing
proc ForceSeeing 12 12
line 1312
;1310:
;1311:void ForceSeeing( gentity_t *self )
;1312:{
line 1313
;1313:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $549
line 1314
;1314:	{
line 1315
;1315:		return;
ADDRGP4 $548
JUMPV
LABELV $549
line 1318
;1316:	}
;1317:
;1318:	if (self->client->ps.forceAllowDeactivateTime < level.time &&
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 1328
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $551
ADDRLP4 0
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 16384
BANDI4
CNSTI4 0
EQI4 $551
line 1320
;1319:		(self->client->ps.fd.forcePowersActive & (1 << FP_SEE)) )
;1320:	{
line 1321
;1321:		WP_ForcePowerStop( self, FP_SEE );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 14
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1322
;1322:		return;
ADDRGP4 $548
JUMPV
LABELV $551
line 1325
;1323:	}
;1324:
;1325:	if ( !WP_ForcePowerUsable( self, FP_SEE ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 14
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $554
line 1326
;1326:	{
line 1327
;1327:		return;
ADDRGP4 $548
JUMPV
LABELV $554
line 1330
;1328:	}
;1329:
;1330:	self->client->ps.forceAllowDeactivateTime = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1328
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 1332
;1331:
;1332:	WP_ForcePowerStart( self, FP_SEE, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 14
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 1334
;1333:
;1334:	G_Sound( self, CHAN_AUTO, G_SoundIndex("sound/weapons/force/see.wav") );
ADDRGP4 $557
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1335
;1335:	G_Sound( self, TRACK_CHANNEL_5, seeLoopSound );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 55
ARGI4
ADDRGP4 seeLoopSound
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1336
;1336:}
LABELV $548
endproc ForceSeeing 12 12
export ForceProtect
proc ForceProtect 8 12
line 1339
;1337:
;1338:void ForceProtect( gentity_t *self )
;1339:{
line 1340
;1340:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $559
line 1341
;1341:	{
line 1342
;1342:		return;
ADDRGP4 $558
JUMPV
LABELV $559
line 1345
;1343:	}
;1344:
;1345:	if (self->client->ps.forceAllowDeactivateTime < level.time &&
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 1328
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $561
ADDRLP4 0
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $561
line 1347
;1346:		(self->client->ps.fd.forcePowersActive & (1 << FP_PROTECT)) )
;1347:	{
line 1348
;1348:		WP_ForcePowerStop( self, FP_PROTECT );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 9
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1349
;1349:		return;
ADDRGP4 $558
JUMPV
LABELV $561
line 1352
;1350:	}
;1351:
;1352:	if ( !WP_ForcePowerUsable( self, FP_PROTECT ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 9
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $564
line 1353
;1353:	{
line 1354
;1354:		return;
ADDRGP4 $558
JUMPV
LABELV $564
line 1358
;1355:	}
;1356:
;1357:	// Make sure to turn off Force Rage and Force Absorb.
;1358:	if (self->client->ps.fd.forcePowersActive & (1 << FP_RAGE) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 256
BANDI4
CNSTI4 0
EQI4 $566
line 1359
;1359:	{
line 1360
;1360:		WP_ForcePowerStop( self, FP_RAGE );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 8
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1361
;1361:	}
LABELV $566
line 1362
;1362:	if (self->client->ps.fd.forcePowersActive & (1 << FP_ABSORB) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $568
line 1363
;1363:	{
line 1364
;1364:		WP_ForcePowerStop( self, FP_ABSORB );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 10
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1365
;1365:	}
LABELV $568
line 1367
;1366:
;1367:	self->client->ps.forceAllowDeactivateTime = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1328
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 1369
;1368:
;1369:	WP_ForcePowerStart( self, FP_PROTECT, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 9
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 1370
;1370:	G_PreDefSound(self->client->ps.origin, PDSOUND_PROTECT);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 2
ARGI4
ADDRGP4 G_PreDefSound
CALLP4
pop
line 1371
;1371:	G_Sound( self, TRACK_CHANNEL_3, protectLoopSound );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 53
ARGI4
ADDRGP4 protectLoopSound
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1372
;1372:}
LABELV $558
endproc ForceProtect 8 12
export ForceAbsorb
proc ForceAbsorb 8 12
line 1375
;1373:
;1374:void ForceAbsorb( gentity_t *self )
;1375:{
line 1376
;1376:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $572
line 1377
;1377:	{
line 1378
;1378:		return;
ADDRGP4 $571
JUMPV
LABELV $572
line 1381
;1379:	}
;1380:
;1381:	if (self->client->ps.forceAllowDeactivateTime < level.time &&
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 1328
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $574
ADDRLP4 0
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $574
line 1383
;1382:		(self->client->ps.fd.forcePowersActive & (1 << FP_ABSORB)) )
;1383:	{
line 1384
;1384:		WP_ForcePowerStop( self, FP_ABSORB );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 10
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1385
;1385:		return;
ADDRGP4 $571
JUMPV
LABELV $574
line 1388
;1386:	}
;1387:
;1388:	if ( !WP_ForcePowerUsable( self, FP_ABSORB ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 10
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $577
line 1389
;1389:	{
line 1390
;1390:		return;
ADDRGP4 $571
JUMPV
LABELV $577
line 1394
;1391:	}
;1392:
;1393:	// Make sure to turn off Force Rage and Force Protection.
;1394:	if (self->client->ps.fd.forcePowersActive & (1 << FP_RAGE) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 256
BANDI4
CNSTI4 0
EQI4 $579
line 1395
;1395:	{
line 1396
;1396:		WP_ForcePowerStop( self, FP_RAGE );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 8
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1397
;1397:	}
LABELV $579
line 1398
;1398:	if (self->client->ps.fd.forcePowersActive & (1 << FP_PROTECT) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $581
line 1399
;1399:	{
line 1400
;1400:		WP_ForcePowerStop( self, FP_PROTECT );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 9
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1401
;1401:	}
LABELV $581
line 1403
;1402:
;1403:	self->client->ps.forceAllowDeactivateTime = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1328
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 1405
;1404:
;1405:	WP_ForcePowerStart( self, FP_ABSORB, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 10
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 1406
;1406:	G_PreDefSound(self->client->ps.origin, PDSOUND_ABSORB);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 4
ARGI4
ADDRGP4 G_PreDefSound
CALLP4
pop
line 1407
;1407:	G_Sound( self, TRACK_CHANNEL_3, absorbLoopSound );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 53
ARGI4
ADDRGP4 absorbLoopSound
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1408
;1408:}
LABELV $571
endproc ForceAbsorb 8 12
export ForceRage
proc ForceRage 12 12
line 1411
;1409:
;1410:void ForceRage( gentity_t *self )
;1411:{
line 1412
;1412:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $585
line 1413
;1413:	{
line 1414
;1414:		return;
ADDRGP4 $584
JUMPV
LABELV $585
line 1417
;1415:	}
;1416:
;1417:	if (self->client->ps.forceAllowDeactivateTime < level.time &&
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 1328
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $587
ADDRLP4 0
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 256
BANDI4
CNSTI4 0
EQI4 $587
line 1419
;1418:		(self->client->ps.fd.forcePowersActive & (1 << FP_RAGE)) )
;1419:	{
line 1420
;1420:		WP_ForcePowerStop( self, FP_RAGE );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 8
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1421
;1421:		return;
ADDRGP4 $584
JUMPV
LABELV $587
line 1424
;1422:	}
;1423:
;1424:	if ( !WP_ForcePowerUsable( self, FP_RAGE ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 8
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $590
line 1425
;1425:	{
line 1426
;1426:		return;
ADDRGP4 $584
JUMPV
LABELV $590
line 1429
;1427:	}
;1428:
;1429:	if (self->client->ps.fd.forceRageRecoveryTime >= level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LTI4 $592
line 1430
;1430:	{
line 1431
;1431:		return;
ADDRGP4 $584
JUMPV
LABELV $592
line 1434
;1432:	}
;1433:
;1434:	if (self->health < 10)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 10
GEI4 $595
line 1435
;1435:	{
line 1436
;1436:		return;
ADDRGP4 $584
JUMPV
LABELV $595
line 1440
;1437:	}
;1438:
;1439:	// Make sure to turn off Force Protection and Force Absorb.
;1440:	if (self->client->ps.fd.forcePowersActive & (1 << FP_PROTECT) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $597
line 1441
;1441:	{
line 1442
;1442:		WP_ForcePowerStop( self, FP_PROTECT );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 9
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1443
;1443:	}
LABELV $597
line 1444
;1444:	if (self->client->ps.fd.forcePowersActive & (1 << FP_ABSORB) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $599
line 1445
;1445:	{
line 1446
;1446:		WP_ForcePowerStop( self, FP_ABSORB );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 10
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 1447
;1447:	}
LABELV $599
line 1449
;1448:
;1449:	self->client->ps.forceAllowDeactivateTime = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1328
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 1451
;1450:
;1451:	WP_ForcePowerStart( self, FP_RAGE, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 8
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 1453
;1452:
;1453:	G_Sound( self, TRACK_CHANNEL_4, G_SoundIndex("sound/weapons/force/rage.wav") );
ADDRGP4 $602
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 54
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1454
;1454:	G_Sound( self, TRACK_CHANNEL_3, rageLoopSound );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 53
ARGI4
ADDRGP4 rageLoopSound
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1455
;1455:}
LABELV $584
endproc ForceRage 12 12
export ForceLightning
proc ForceLightning 12 12
line 1458
;1456:
;1457:void ForceLightning( gentity_t *self )
;1458:{
line 1459
;1459:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $604
line 1460
;1460:	{
line 1461
;1461:		return;
ADDRGP4 $603
JUMPV
LABELV $604
line 1463
;1462:	}
;1463:	if ( self->client->ps.fd.forcePower < 25 || !WP_ForcePowerUsable( self, FP_LIGHTNING ) )
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 25
LTI4 $608
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 7
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $606
LABELV $608
line 1464
;1464:	{
line 1465
;1465:		return;
ADDRGP4 $603
JUMPV
LABELV $606
line 1467
;1466:	}
;1467:	if ( self->client->ps.fd.forcePowerDebounce[FP_LIGHTNING] > level.time )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 800
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $609
line 1468
;1468:	{//stops it while using it and also after using it, up to 3 second delay
line 1469
;1469:		return;
ADDRGP4 $603
JUMPV
LABELV $609
line 1472
;1470:	}
;1471:
;1472:	if (self->client->ps.forceHandExtend != HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
EQI4 $612
line 1473
;1473:	{
line 1474
;1474:		return;
ADDRGP4 $603
JUMPV
LABELV $612
line 1477
;1475:	}
;1476:
;1477:	if (self->client->ps.weaponTime > 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
CNSTI4 0
LEI4 $614
line 1478
;1478:	{
line 1479
;1479:		return;
ADDRGP4 $603
JUMPV
LABELV $614
line 1484
;1480:	}
;1481:
;1482:	//Shoot lightning from hand
;1483:	//using grip anim now, to extend the burst time
;1484:	self->client->ps.forceHandExtend = HANDEXTEND_FORCEGRIP;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 3
ASGNI4
line 1485
;1485:	self->client->ps.forceHandExtendTime = level.time + 20000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 20000
ADDI4
ASGNI4
line 1487
;1486:
;1487:	G_Sound( self, CHAN_BODY, G_SoundIndex("sound/weapons/force/lightning.wav") );
ADDRGP4 $617
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1489
;1488:	
;1489:	WP_ForcePowerStart( self, FP_LIGHTNING, 500 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 7
ARGI4
CNSTI4 500
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 1490
;1490:}
LABELV $603
endproc ForceLightning 12 12
export ForceLightningDamage
proc ForceLightningDamage 44 32
line 1493
;1491:
;1492:void ForceLightningDamage( gentity_t *self, gentity_t *traceEnt, vec3_t dir, vec3_t impactPoint )
;1493:{
line 1494
;1494:	self->client->dangerTime = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1792
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1495
;1495:	self->client->ps.eFlags &= ~EF_INVULNERABLE;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 -67108865
BANDI4
ASGNI4
line 1496
;1496:	self->client->invulnerableTimer = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1580
ADDP4
CNSTI4 0
ASGNI4
line 1498
;1497:
;1498:	if ( traceEnt && traceEnt->takedamage )
ADDRLP4 4
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $620
ADDRLP4 4
INDIRP4
CNSTI4 680
ADDP4
INDIRI4
CNSTI4 0
EQI4 $620
line 1499
;1499:	{
line 1500
;1500:		if (!traceEnt->client && traceEnt->s.eType == ET_GRAPPLE)
ADDRLP4 8
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $622
ADDRLP4 8
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $622
line 1501
;1501:		{ //g2animent
line 1502
;1502:			if (traceEnt->s.genericenemyindex < level.time)
ADDRFP4 4
INDIRP4
CNSTI4 172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $624
line 1503
;1503:			{
line 1504
;1504:				traceEnt->s.genericenemyindex = level.time + 2000;
ADDRFP4 4
INDIRP4
CNSTI4 172
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 2000
ADDI4
ASGNI4
line 1505
;1505:			}
LABELV $624
line 1506
;1506:		}
LABELV $622
line 1507
;1507:		if ( traceEnt->client )
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $628
line 1508
;1508:		{//an enemy or object
line 1509
;1509:			if (ForcePowerUsableOn(self, traceEnt, FP_LIGHTNING))
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 7
ARGI4
ADDRLP4 12
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
EQI4 $630
line 1510
;1510:			{
line 1511
;1511:				int	dmg = Q_irand(1,2); //Q_irand( 1, 3 );
CNSTI4 1
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 24
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 20
ADDRLP4 24
INDIRI4
ASGNI4
line 1513
;1512:				
;1513:				int modPowerLevel = -1;
ADDRLP4 16
CNSTI4 -1
ASGNI4
line 1515
;1514:				
;1515:				if (traceEnt->client)
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $632
line 1516
;1516:				{
line 1517
;1517:					modPowerLevel = WP_AbsorbConversion(traceEnt, traceEnt->client->ps.fd.forcePowerLevel[FP_ABSORB], self, FP_LIGHTNING, self->client->ps.fd.forcePowerLevel[FP_LIGHTNING], 1);
ADDRLP4 28
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 32
CNSTI4 408
ASGNI4
ADDRLP4 28
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRP4
CNSTI4 984
ADDP4
INDIRI4
ARGI4
ADDRLP4 36
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
ARGP4
CNSTI4 7
ARGI4
ADDRLP4 36
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRP4
CNSTI4 972
ADDP4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRLP4 40
ADDRGP4 WP_AbsorbConversion
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 40
INDIRI4
ASGNI4
line 1518
;1518:				}
LABELV $632
line 1520
;1519:
;1520:				if (modPowerLevel != -1)
ADDRLP4 16
INDIRI4
CNSTI4 -1
EQI4 $634
line 1521
;1521:				{
line 1522
;1522:					if (!modPowerLevel)
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $636
line 1523
;1523:					{
line 1524
;1524:						dmg = 0;
ADDRLP4 20
CNSTI4 0
ASGNI4
line 1525
;1525:					}
ADDRGP4 $637
JUMPV
LABELV $636
line 1526
;1526:					else if (modPowerLevel == 1)
ADDRLP4 16
INDIRI4
CNSTI4 1
NEI4 $638
line 1527
;1527:					{
line 1528
;1528:						dmg = 1;
ADDRLP4 20
CNSTI4 1
ASGNI4
line 1529
;1529:					}
ADDRGP4 $639
JUMPV
LABELV $638
line 1530
;1530:					else if (modPowerLevel == 2)
ADDRLP4 16
INDIRI4
CNSTI4 2
NEI4 $640
line 1531
;1531:					{
line 1532
;1532:						dmg = 1;
ADDRLP4 20
CNSTI4 1
ASGNI4
line 1533
;1533:					}
LABELV $640
LABELV $639
LABELV $637
line 1534
;1534:				}
LABELV $634
line 1536
;1535:
;1536:				if (dmg)
ADDRLP4 20
INDIRI4
CNSTI4 0
EQI4 $642
line 1537
;1537:				{
line 1539
;1538:					//rww - Shields can now absorb lightning too.
;1539:					G_Damage( traceEnt, self, self, dir, impactPoint, dmg, 0, MOD_FORCE_DARK );
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 28
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRFP4 12
INDIRP4
ARGP4
ADDRLP4 20
INDIRI4
ARGI4
CNSTI4 0
ARGI4
CNSTI4 27
ARGI4
ADDRGP4 G_Damage
CALLV
pop
line 1540
;1540:				}
LABELV $642
line 1541
;1541:				if ( traceEnt->client )
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $644
line 1542
;1542:				{
line 1543
;1543:					if ( !Q_irand( 0, 2 ) )
CNSTI4 0
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 28
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 0
NEI4 $646
line 1544
;1544:					{
line 1545
;1545:						G_Sound( traceEnt, CHAN_BODY, G_SoundIndex( "sound/weapons/force/lightninghit.wav" ) );
ADDRGP4 $648
ARGP4
ADDRLP4 32
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 32
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1546
;1546:					}
LABELV $646
line 1548
;1547:
;1548:					if (traceEnt->client->ps.electrifyTime < (level.time + 400))
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 740
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
CNSTI4 400
ADDI4
GEI4 $649
line 1549
;1549:					{ //only update every 400ms to reduce bandwidth usage (as it is passing a 32-bit time value)
line 1550
;1550:						traceEnt->client->ps.electrifyTime = level.time + 800;
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 740
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 800
ADDI4
ASGNI4
line 1551
;1551:					}
LABELV $649
line 1552
;1552:				}
LABELV $644
line 1553
;1553:			}
LABELV $630
line 1554
;1554:		}
LABELV $628
line 1555
;1555:	}
LABELV $620
line 1556
;1556:}
LABELV $618
endproc ForceLightningDamage 44 32
export ForceShootLightning
proc ForceShootLightning 9460 28
line 1559
;1557:
;1558:void ForceShootLightning( gentity_t *self )
;1559:{
line 1564
;1560:	trace_t	tr;
;1561:	vec3_t	end, forward;
;1562:	gentity_t	*traceEnt;
;1563:
;1564:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $654
line 1565
;1565:	{
line 1566
;1566:		return;
ADDRGP4 $653
JUMPV
LABELV $654
line 1568
;1567:	}
;1568:	AngleVectors( self->client->ps.viewangles, forward, NULL, NULL );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 1108
CNSTP4 0
ASGNP4
ADDRLP4 1108
INDIRP4
ARGP4
ADDRLP4 1108
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 1569
;1569:	VectorNormalize( forward );
ADDRLP4 4
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 1571
;1570:
;1571:	if ( self->client->ps.fd.forcePowerLevel[FP_LIGHTNING] > FORCE_LEVEL_2 )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 972
ADDP4
INDIRI4
CNSTI4 2
LEI4 $656
line 1572
;1572:	{//arc
line 1574
;1573:		vec3_t	center, mins, maxs, dir, ent_org, size, v;
;1574:		float	radius = FORCE_LIGHTNING_RADIUS, dot, dist;
ADDRLP4 1176
CNSTF4 1133903872
ASGNF4
line 1579
;1575:		gentity_t	*entityList[MAX_GENTITIES];
;1576:		int			iEntityList[MAX_GENTITIES];
;1577:		int		e, numListedEntities, i;
;1578:
;1579:		VectorCopy( self->client->ps.origin, center );
ADDRLP4 1116
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 1580
;1580:		for ( i = 0 ; i < 3 ; i++ ) 
ADDRLP4 1112
CNSTI4 0
ASGNI4
LABELV $658
line 1581
;1581:		{
line 1582
;1582:			mins[i] = center[i] - radius;
ADDRLP4 9412
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9412
INDIRI4
ADDRLP4 5288
ADDP4
ADDRLP4 9412
INDIRI4
ADDRLP4 1116
ADDP4
INDIRF4
ADDRLP4 1176
INDIRF4
SUBF4
ASGNF4
line 1583
;1583:			maxs[i] = center[i] + radius;
ADDRLP4 9416
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9416
INDIRI4
ADDRLP4 5300
ADDP4
ADDRLP4 9416
INDIRI4
ADDRLP4 1116
ADDP4
INDIRF4
ADDRLP4 1176
INDIRF4
ADDF4
ASGNF4
line 1584
;1584:		}
LABELV $659
line 1580
ADDRLP4 1112
ADDRLP4 1112
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 1112
INDIRI4
CNSTI4 3
LTI4 $658
line 1585
;1585:		numListedEntities = trap_EntitiesInBox( mins, maxs, iEntityList, MAX_GENTITIES );
ADDRLP4 5288
ARGP4
ADDRLP4 5300
ARGP4
ADDRLP4 5312
ARGP4
CNSTI4 1024
ARGI4
ADDRLP4 9412
ADDRGP4 trap_EntitiesInBox
CALLI4
ASGNI4
ADDRLP4 1184
ADDRLP4 9412
INDIRI4
ASGNI4
line 1587
;1586:
;1587:		i = 0;
ADDRLP4 1112
CNSTI4 0
ASGNI4
ADDRGP4 $663
JUMPV
LABELV $662
line 1589
;1588:		while (i < numListedEntities)
;1589:		{
line 1590
;1590:			entityList[i] = &g_entities[iEntityList[i]];
ADDRLP4 9416
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9416
INDIRI4
ADDRLP4 1192
ADDP4
CNSTI4 828
ADDRLP4 9416
INDIRI4
ADDRLP4 5312
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1592
;1591:
;1592:			i++;
ADDRLP4 1112
ADDRLP4 1112
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1593
;1593:		}
LABELV $663
line 1588
ADDRLP4 1112
INDIRI4
ADDRLP4 1184
INDIRI4
LTI4 $662
line 1595
;1594:
;1595:		for ( e = 0 ; e < numListedEntities ; e++ ) 
ADDRLP4 1180
CNSTI4 0
ASGNI4
ADDRGP4 $668
JUMPV
LABELV $665
line 1596
;1596:		{
line 1597
;1597:			traceEnt = entityList[e];
ADDRLP4 0
ADDRLP4 1180
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1192
ADDP4
INDIRP4
ASGNP4
line 1599
;1598:
;1599:			if ( !traceEnt )
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $669
line 1600
;1600:				continue;
ADDRGP4 $666
JUMPV
LABELV $669
line 1601
;1601:			if ( traceEnt == self )
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRFP4 0
INDIRP4
CVPU4 4
NEU4 $671
line 1602
;1602:				continue;
ADDRGP4 $666
JUMPV
LABELV $671
line 1603
;1603:			if ( traceEnt->r.ownerNum == self->s.number && traceEnt->s.weapon != WP_THERMAL )//can push your own thermals
ADDRLP4 0
INDIRP4
CNSTI4 396
ADDP4
INDIRI4
ADDRFP4 0
INDIRP4
INDIRI4
NEI4 $673
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
INDIRI4
CNSTI4 11
EQI4 $673
line 1604
;1604:				continue;
ADDRGP4 $666
JUMPV
LABELV $673
line 1605
;1605:			if ( !traceEnt->inuse )
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $675
line 1606
;1606:				continue;
ADDRGP4 $666
JUMPV
LABELV $675
line 1607
;1607:			if ( !traceEnt->takedamage )
ADDRLP4 0
INDIRP4
CNSTI4 680
ADDP4
INDIRI4
CNSTI4 0
NEI4 $677
line 1608
;1608:				continue;
ADDRGP4 $666
JUMPV
LABELV $677
line 1609
;1609:			if ( traceEnt->health <= 0 )//no torturing corpses
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $679
line 1610
;1610:				continue;
ADDRGP4 $666
JUMPV
LABELV $679
line 1611
;1611:			if ( !g_friendlyFire.integer && OnSameTeam(self, traceEnt))
ADDRGP4 g_friendlyFire+12
INDIRI4
CNSTI4 0
NEI4 $681
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 9420
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 9420
INDIRI4
CNSTI4 0
EQI4 $681
line 1612
;1612:				continue;
ADDRGP4 $666
JUMPV
LABELV $681
line 1615
;1613:			//this is all to see if we need to start a saber attack, if it's in flight, this doesn't matter
;1614:			// find the distance from the edge of the bounding box
;1615:			for ( i = 0 ; i < 3 ; i++ ) 
ADDRLP4 1112
CNSTI4 0
ASGNI4
LABELV $684
line 1616
;1616:			{
line 1617
;1617:				if ( center[i] < traceEnt->r.absmin[i] ) 
ADDRLP4 9424
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9424
INDIRI4
ADDRLP4 1116
ADDP4
INDIRF4
ADDRLP4 9424
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
ADDP4
INDIRF4
GEF4 $688
line 1618
;1618:				{
line 1619
;1619:					v[i] = traceEnt->r.absmin[i] - center[i];
ADDRLP4 9428
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9428
INDIRI4
ADDRLP4 1128
ADDP4
ADDRLP4 9428
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
ADDP4
INDIRF4
ADDRLP4 9428
INDIRI4
ADDRLP4 1116
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1620
;1620:				} else if ( center[i] > traceEnt->r.absmax[i] ) 
ADDRGP4 $689
JUMPV
LABELV $688
ADDRLP4 9428
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9428
INDIRI4
ADDRLP4 1116
ADDP4
INDIRF4
ADDRLP4 9428
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 356
ADDP4
ADDP4
INDIRF4
LEF4 $690
line 1621
;1621:				{
line 1622
;1622:					v[i] = center[i] - traceEnt->r.absmax[i];
ADDRLP4 9432
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9432
INDIRI4
ADDRLP4 1128
ADDP4
ADDRLP4 9432
INDIRI4
ADDRLP4 1116
ADDP4
INDIRF4
ADDRLP4 9432
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 356
ADDP4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1623
;1623:				} else 
ADDRGP4 $691
JUMPV
LABELV $690
line 1624
;1624:				{
line 1625
;1625:					v[i] = 0;
ADDRLP4 1112
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1128
ADDP4
CNSTF4 0
ASGNF4
line 1626
;1626:				}
LABELV $691
LABELV $689
line 1627
;1627:			}
LABELV $685
line 1615
ADDRLP4 1112
ADDRLP4 1112
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 1112
INDIRI4
CNSTI4 3
LTI4 $684
line 1629
;1628:
;1629:			VectorSubtract( traceEnt->r.absmax, traceEnt->r.absmin, size );
ADDRLP4 1164
ADDRLP4 0
INDIRP4
CNSTI4 356
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1164+4
ADDRLP4 0
INDIRP4
CNSTI4 360
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1164+8
ADDRLP4 0
INDIRP4
CNSTI4 364
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1630
;1630:			VectorMA( traceEnt->r.absmin, 0.5, size, ent_org );
ADDRLP4 9436
CNSTF4 1056964608
ASGNF4
ADDRLP4 1140
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
ADDRLP4 9436
INDIRF4
ADDRLP4 1164
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1140+4
ADDRLP4 0
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
ADDRLP4 9436
INDIRF4
ADDRLP4 1164+4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1140+8
ADDRLP4 0
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
CNSTF4 1056964608
ADDRLP4 1164+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 1634
;1631:
;1632:			//see if they're in front of me
;1633:			//must be within the forward cone
;1634:			VectorSubtract( ent_org, center, dir );
ADDRLP4 1152
ADDRLP4 1140
INDIRF4
ADDRLP4 1116
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1152+4
ADDRLP4 1140+4
INDIRF4
ADDRLP4 1116+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1152+8
ADDRLP4 1140+8
INDIRF4
ADDRLP4 1116+8
INDIRF4
SUBF4
ASGNF4
line 1635
;1635:			VectorNormalize( dir );
ADDRLP4 1152
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 1636
;1636:			if ( (dot = DotProduct( dir, forward )) < 0.5 )
ADDRLP4 9440
ADDRLP4 1152
INDIRF4
ADDRLP4 4
INDIRF4
MULF4
ADDRLP4 1152+4
INDIRF4
ADDRLP4 4+4
INDIRF4
MULF4
ADDF4
ADDRLP4 1152+8
INDIRF4
ADDRLP4 4+8
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 9408
ADDRLP4 9440
INDIRF4
ASGNF4
ADDRLP4 9440
INDIRF4
CNSTF4 1056964608
GEF4 $704
line 1637
;1637:				continue;
ADDRGP4 $666
JUMPV
LABELV $704
line 1640
;1638:
;1639:			//must be close enough
;1640:			dist = VectorLength( v );
ADDRLP4 1128
ARGP4
ADDRLP4 9444
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1188
ADDRLP4 9444
INDIRF4
ASGNF4
line 1641
;1641:			if ( dist >= radius ) 
ADDRLP4 1188
INDIRF4
ADDRLP4 1176
INDIRF4
LTF4 $710
line 1642
;1642:			{
line 1643
;1643:				continue;
ADDRGP4 $666
JUMPV
LABELV $710
line 1647
;1644:			}
;1645:		
;1646:			//in PVS?
;1647:			if ( !traceEnt->r.bmodel && !trap_InPVS( ent_org, self->client->ps.origin ) )
ADDRLP4 0
INDIRP4
CNSTI4 312
ADDP4
INDIRI4
CNSTI4 0
NEI4 $712
ADDRLP4 1140
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9448
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 9448
INDIRI4
CNSTI4 0
NEI4 $712
line 1648
;1648:			{//must be in PVS
line 1649
;1649:				continue;
ADDRGP4 $666
JUMPV
LABELV $712
line 1653
;1650:			}
;1651:
;1652:			//Now check and see if we can actually hit it
;1653:			trap_Trace( &tr, self->client->ps.origin, vec3_origin, vec3_origin, ent_org, self->s.number, MASK_SHOT );
ADDRLP4 16
ARGP4
ADDRLP4 9452
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 9452
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9456
ADDRGP4 vec3_origin
ASGNP4
ADDRLP4 9456
INDIRP4
ARGP4
ADDRLP4 9456
INDIRP4
ARGP4
ADDRLP4 1140
ARGP4
ADDRLP4 9452
INDIRP4
INDIRI4
ARGI4
CNSTI4 769
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1654
;1654:			if ( tr.fraction < 1.0f && tr.entityNum != traceEnt->s.number )
ADDRLP4 16+8
INDIRF4
CNSTF4 1065353216
GEF4 $714
ADDRLP4 16+52
INDIRI4
ADDRLP4 0
INDIRP4
INDIRI4
EQI4 $714
line 1655
;1655:			{//must have clear LOS
line 1656
;1656:				continue;
ADDRGP4 $666
JUMPV
LABELV $714
line 1660
;1657:			}
;1658:
;1659:			// ok, we are within the radius, add us to the incoming list
;1660:			ForceLightningDamage( self, traceEnt, dir, ent_org );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1152
ARGP4
ADDRLP4 1140
ARGP4
ADDRGP4 ForceLightningDamage
CALLV
pop
line 1661
;1661:		}
LABELV $666
line 1595
ADDRLP4 1180
ADDRLP4 1180
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $668
ADDRLP4 1180
INDIRI4
ADDRLP4 1184
INDIRI4
LTI4 $665
line 1662
;1662:	}
ADDRGP4 $657
JUMPV
LABELV $656
line 1664
;1663:	else
;1664:	{//trace-line
line 1665
;1665:		VectorMA( self->client->ps.origin, 2048, forward, end );
ADDRLP4 1112
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 1116
CNSTF4 1157627904
ASGNF4
ADDRLP4 1096
ADDRLP4 1112
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 1116
INDIRF4
ADDRLP4 4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1096+4
ADDRLP4 1112
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 1116
INDIRF4
ADDRLP4 4+4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1096+8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
CNSTF4 1157627904
ADDRLP4 4+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 1667
;1666:		
;1667:		trap_Trace( &tr, self->client->ps.origin, vec3_origin, vec3_origin, end, self->s.number, MASK_SHOT );
ADDRLP4 16
ARGP4
ADDRLP4 1120
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1120
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 1124
ADDRGP4 vec3_origin
ASGNP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRLP4 1096
ARGP4
ADDRLP4 1120
INDIRP4
INDIRI4
ARGI4
CNSTI4 769
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1668
;1668:		if ( tr.entityNum == ENTITYNUM_NONE || tr.fraction == 1.0 || tr.allsolid || tr.startsolid )
ADDRLP4 16+52
INDIRI4
CNSTI4 1023
EQI4 $729
ADDRLP4 16+8
INDIRF4
CNSTF4 1065353216
EQF4 $729
ADDRLP4 1128
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ADDRLP4 1128
INDIRI4
NEI4 $729
ADDRLP4 16+4
INDIRI4
ADDRLP4 1128
INDIRI4
EQI4 $722
LABELV $729
line 1669
;1669:		{
line 1670
;1670:			return;
ADDRGP4 $653
JUMPV
LABELV $722
line 1673
;1671:		}
;1672:		
;1673:		traceEnt = &g_entities[tr.entityNum];
ADDRLP4 0
CNSTI4 828
ADDRLP4 16+52
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1674
;1674:		ForceLightningDamage( self, traceEnt, forward, tr.endpos );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 16+12
ARGP4
ADDRGP4 ForceLightningDamage
CALLV
pop
line 1675
;1675:	}
LABELV $657
line 1676
;1676:}
LABELV $653
endproc ForceShootLightning 9460 28
export ForceDrain
proc ForceDrain 12 12
line 1679
;1677:
;1678:void ForceDrain( gentity_t *self )
;1679:{
line 1680
;1680:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $733
line 1681
;1681:	{
line 1682
;1682:		return;
ADDRGP4 $732
JUMPV
LABELV $733
line 1685
;1683:	}
;1684:
;1685:	if (self->client->ps.forceHandExtend != HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
EQI4 $735
line 1686
;1686:	{
line 1687
;1687:		return;
ADDRGP4 $732
JUMPV
LABELV $735
line 1690
;1688:	}
;1689:
;1690:	if (self->client->ps.weaponTime > 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
CNSTI4 0
LEI4 $737
line 1691
;1691:	{
line 1692
;1692:		return;
ADDRGP4 $732
JUMPV
LABELV $737
line 1695
;1693:	}
;1694:
;1695:	if ( self->client->ps.fd.forcePower < 25 || !WP_ForcePowerUsable( self, FP_DRAIN ) )
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 25
LTI4 $741
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 13
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $739
LABELV $741
line 1696
;1696:	{
line 1697
;1697:		return;
ADDRGP4 $732
JUMPV
LABELV $739
line 1699
;1698:	}
;1699:	if ( self->client->ps.fd.forcePowerDebounce[FP_DRAIN] > level.time )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 824
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $742
line 1700
;1700:	{//stops it while using it and also after using it, up to 3 second delay
line 1701
;1701:		return;
ADDRGP4 $732
JUMPV
LABELV $742
line 1706
;1702:	}
;1703:
;1704://	self->client->ps.forceHandExtend = HANDEXTEND_FORCEPUSH;
;1705://	self->client->ps.forceHandExtendTime = level.time + 1000;
;1706:	self->client->ps.forceHandExtend = HANDEXTEND_FORCEGRIP;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 3
ASGNI4
line 1707
;1707:	self->client->ps.forceHandExtendTime = level.time + 20000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 20000
ADDI4
ASGNI4
line 1709
;1708:
;1709:	G_Sound( self, CHAN_BODY, G_SoundIndex("sound/weapons/force/drain.wav") );
ADDRGP4 $746
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1711
;1710:	
;1711:	WP_ForcePowerStart( self, FP_DRAIN, 500 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 13
ARGI4
CNSTI4 500
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 1712
;1712:}
LABELV $732
endproc ForceDrain 12 12
export ForceDrainDamage
proc ForceDrainDamage 72 24
line 1715
;1713:
;1714:void ForceDrainDamage( gentity_t *self, gentity_t *traceEnt, vec3_t dir, vec3_t impactPoint )
;1715:{
line 1718
;1716:	gentity_t *tent;
;1717:
;1718:	self->client->dangerTime = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1792
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1719
;1719:	self->client->ps.eFlags &= ~EF_INVULNERABLE;
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 -67108865
BANDI4
ASGNI4
line 1720
;1720:	self->client->invulnerableTimer = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1580
ADDP4
CNSTI4 0
ASGNI4
line 1722
;1721:
;1722:	if ( traceEnt && traceEnt->takedamage )
ADDRLP4 8
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $749
ADDRLP4 8
INDIRP4
CNSTI4 680
ADDP4
INDIRI4
CNSTI4 0
EQI4 $749
line 1723
;1723:	{
line 1724
;1724:		if ( traceEnt->client && (!OnSameTeam(self, traceEnt) || g_friendlyFire.integer) && self->client->ps.fd.forceDrainTime < level.time && traceEnt->client->ps.fd.forcePower )
ADDRLP4 12
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $751
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ADDRLP4 20
INDIRI4
EQI4 $755
ADDRGP4 g_friendlyFire+12
INDIRI4
ADDRLP4 20
INDIRI4
EQI4 $751
LABELV $755
ADDRLP4 24
CNSTI4 408
ASGNI4
ADDRFP4 0
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRP4
CNSTI4 1180
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
GEF4 $751
ADDRFP4 4
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 0
EQI4 $751
line 1725
;1725:		{//an enemy or object
line 1726
;1726:			if (!traceEnt->client && traceEnt->s.eType == ET_GRAPPLE)
ADDRLP4 28
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $756
ADDRLP4 28
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $756
line 1727
;1727:			{ //g2animent
line 1728
;1728:				if (traceEnt->s.genericenemyindex < level.time)
ADDRFP4 4
INDIRP4
CNSTI4 172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $758
line 1729
;1729:				{
line 1730
;1730:					traceEnt->s.genericenemyindex = level.time + 2000;
ADDRFP4 4
INDIRP4
CNSTI4 172
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 2000
ADDI4
ASGNI4
line 1731
;1731:				}
LABELV $758
line 1732
;1732:			}
LABELV $756
line 1733
;1733:			if (ForcePowerUsableOn(self, traceEnt, FP_DRAIN))
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 13
ARGI4
ADDRLP4 32
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $762
line 1734
;1734:			{
line 1735
;1735:				int modPowerLevel = -1;
ADDRLP4 40
CNSTI4 -1
ASGNI4
line 1736
;1736:				int	dmg = 0; //Q_irand( 1, 3 );
ADDRLP4 36
CNSTI4 0
ASGNI4
line 1737
;1737:				if (self->client->ps.fd.forcePowerLevel[FP_DRAIN] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
CNSTI4 1
NEI4 $764
line 1738
;1738:				{
line 1739
;1739:					dmg = 2; //because it's one-shot
ADDRLP4 36
CNSTI4 2
ASGNI4
line 1740
;1740:				}
ADDRGP4 $765
JUMPV
LABELV $764
line 1741
;1741:				else if (self->client->ps.fd.forcePowerLevel[FP_DRAIN] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
CNSTI4 2
NEI4 $766
line 1742
;1742:				{
line 1743
;1743:					dmg = 3;
ADDRLP4 36
CNSTI4 3
ASGNI4
line 1744
;1744:				}
ADDRGP4 $767
JUMPV
LABELV $766
line 1745
;1745:				else if (self->client->ps.fd.forcePowerLevel[FP_DRAIN] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
CNSTI4 3
NEI4 $768
line 1746
;1746:				{
line 1747
;1747:					dmg = 4;
ADDRLP4 36
CNSTI4 4
ASGNI4
line 1748
;1748:				}
LABELV $768
LABELV $767
LABELV $765
line 1750
;1749:			
;1750:				if (traceEnt->client)
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $770
line 1751
;1751:				{
line 1752
;1752:					modPowerLevel = WP_AbsorbConversion(traceEnt, traceEnt->client->ps.fd.forcePowerLevel[FP_ABSORB], self, FP_DRAIN, self->client->ps.fd.forcePowerLevel[FP_DRAIN], 0);
ADDRLP4 44
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
ARGP4
ADDRLP4 48
CNSTI4 408
ASGNI4
ADDRLP4 44
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRP4
CNSTI4 984
ADDP4
INDIRI4
ARGI4
ADDRLP4 52
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
ARGP4
CNSTI4 13
ARGI4
ADDRLP4 52
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRLP4 56
ADDRGP4 WP_AbsorbConversion
CALLI4
ASGNI4
ADDRLP4 40
ADDRLP4 56
INDIRI4
ASGNI4
line 1754
;1753:					//Since this is drain, don't absorb any power, but nullify the affect it has
;1754:				}
LABELV $770
line 1756
;1755:
;1756:				if (modPowerLevel != -1)
ADDRLP4 40
INDIRI4
CNSTI4 -1
EQI4 $772
line 1757
;1757:				{
line 1758
;1758:					if (!modPowerLevel)
ADDRLP4 40
INDIRI4
CNSTI4 0
NEI4 $774
line 1759
;1759:					{
line 1760
;1760:						dmg = 0;
ADDRLP4 36
CNSTI4 0
ASGNI4
line 1761
;1761:					}
ADDRGP4 $775
JUMPV
LABELV $774
line 1762
;1762:					else if (modPowerLevel == 1)
ADDRLP4 40
INDIRI4
CNSTI4 1
NEI4 $776
line 1763
;1763:					{
line 1764
;1764:						dmg = 1;
ADDRLP4 36
CNSTI4 1
ASGNI4
line 1765
;1765:					}
ADDRGP4 $777
JUMPV
LABELV $776
line 1766
;1766:					else if (modPowerLevel == 2)
ADDRLP4 40
INDIRI4
CNSTI4 2
NEI4 $778
line 1767
;1767:					{
line 1768
;1768:						dmg = 2;
ADDRLP4 36
CNSTI4 2
ASGNI4
line 1769
;1769:					}
LABELV $778
LABELV $777
LABELV $775
line 1770
;1770:				}
LABELV $772
line 1773
;1771:				//G_Damage( traceEnt, self, self, dir, impactPoint, dmg, 0, MOD_FORCE_DARK );
;1772:
;1773:				if (dmg)
ADDRLP4 36
INDIRI4
CNSTI4 0
EQI4 $780
line 1774
;1774:				{
line 1775
;1775:					traceEnt->client->ps.fd.forcePower -= (dmg);
ADDRLP4 44
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
ASGNP4
ADDRLP4 44
INDIRP4
ADDRLP4 44
INDIRP4
INDIRI4
ADDRLP4 36
INDIRI4
SUBI4
ASGNI4
line 1776
;1776:				}
LABELV $780
line 1777
;1777:				if (traceEnt->client->ps.fd.forcePower < 0)
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 0
GEI4 $782
line 1778
;1778:				{
line 1779
;1779:					traceEnt->client->ps.fd.forcePower = 0;
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
CNSTI4 0
ASGNI4
line 1780
;1780:				}
LABELV $782
line 1782
;1781:
;1782:				if (self->client->ps.stats[STAT_HEALTH] < self->client->ps.stats[STAT_MAX_HEALTH] &&
ADDRLP4 44
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 48
ADDRLP4 44
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 52
ADDRLP4 48
INDIRP4
CNSTI4 216
ADDP4
INDIRI4
ASGNI4
ADDRLP4 52
INDIRI4
ADDRLP4 48
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
GEI4 $784
ADDRLP4 56
CNSTI4 0
ASGNI4
ADDRLP4 44
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 56
INDIRI4
LEI4 $784
ADDRLP4 52
INDIRI4
ADDRLP4 56
INDIRI4
LEI4 $784
line 1784
;1783:					self->health > 0 && self->client->ps.stats[STAT_HEALTH] > 0)
;1784:				{
line 1785
;1785:					self->health += dmg;
ADDRLP4 60
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
ASGNP4
ADDRLP4 60
INDIRP4
ADDRLP4 60
INDIRP4
INDIRI4
ADDRLP4 36
INDIRI4
ADDI4
ASGNI4
line 1786
;1786:					if (self->health > self->client->ps.stats[STAT_MAX_HEALTH])
ADDRLP4 64
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 64
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 64
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $786
line 1787
;1787:					{
line 1788
;1788:						self->health = self->client->ps.stats[STAT_MAX_HEALTH];
ADDRLP4 68
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 68
INDIRP4
CNSTI4 676
ADDP4
ADDRLP4 68
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 1789
;1789:					}
LABELV $786
line 1790
;1790:					self->client->ps.stats[STAT_HEALTH] = self->health;
ADDRLP4 68
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 68
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
ADDRLP4 68
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ASGNI4
line 1791
;1791:				}
LABELV $784
line 1793
;1792:
;1793:				traceEnt->client->ps.fd.forcePowerRegenDebounceTime = level.time + 800; //don't let the client being drained get force power back right away
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 940
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 800
ADDI4
ASGNI4
line 1817
;1794:
;1795:				//Drain the standard amount since we just drained someone else
;1796:
;1797:				/*
;1798:				if (self->client->ps.fd.forcePowerLevel[FP_DRAIN] == FORCE_LEVEL_1)
;1799:				{
;1800:					BG_ForcePowerDrain( &self->client->ps, FP_DRAIN, 0 );
;1801:				}
;1802:				else
;1803:				{
;1804:					BG_ForcePowerDrain( &self->client->ps, FP_DRAIN, forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_DRAIN]][FP_DRAIN]/5 );
;1805:				}
;1806:
;1807:				if (self->client->ps.fd.forcePowerLevel[FP_DRAIN] == FORCE_LEVEL_1)
;1808:				{
;1809:					self->client->ps.fd.forceDrainTime = level.time + 100;
;1810:				}
;1811:				else
;1812:				{
;1813:					self->client->ps.fd.forceDrainTime = level.time + 20;
;1814:				}
;1815:				*/
;1816:
;1817:				if ( traceEnt->client )
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $789
line 1818
;1818:				{
line 1819
;1819:					if ( !Q_irand( 0, 2 ) )
CNSTI4 0
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 60
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 60
INDIRI4
CNSTI4 0
NEI4 $791
line 1820
;1820:					{
line 1822
;1821:						//G_Sound( traceEnt, CHAN_BODY, G_SoundIndex( "sound/weapons/force/lightninghit.wav" ) );
;1822:					}
LABELV $791
line 1826
;1823:				//	traceEnt->s.powerups |= ( 1 << PW_DISINT_1 );
;1824:
;1825:				//	traceEnt->client->ps.powerups[PW_DISINT_1] = level.time + 500;
;1826:				}
LABELV $789
line 1828
;1827:
;1828:				if (traceEnt->client->forcePowerSoundDebounce < level.time)
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1796
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $793
line 1829
;1829:				{
line 1830
;1830:					tent = G_TempEntity( impactPoint, EV_FORCE_DRAINED);
ADDRFP4 12
INDIRP4
ARGP4
CNSTI4 84
ARGI4
ADDRLP4 60
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 60
INDIRP4
ASGNP4
line 1831
;1831:					tent->s.eventParm = DirToByte(dir);
ADDRFP4 8
INDIRP4
ARGP4
ADDRLP4 64
ADDRGP4 DirToByte
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 256
ADDP4
ADDRLP4 64
INDIRI4
ASGNI4
line 1832
;1832:					tent->s.owner = traceEnt->s.number;
ADDRLP4 0
INDIRP4
CNSTI4 260
ADDP4
ADDRFP4 4
INDIRP4
INDIRI4
ASGNI4
line 1834
;1833:
;1834:					traceEnt->client->forcePowerSoundDebounce = level.time + 400;
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1796
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 400
ADDI4
ASGNI4
line 1835
;1835:				}
LABELV $793
line 1836
;1836:			}
LABELV $762
line 1837
;1837:		}
LABELV $751
line 1838
;1838:	}
LABELV $749
line 1839
;1839:}
LABELV $747
endproc ForceDrainDamage 72 24
export ForceShootDrain
proc ForceShootDrain 9460 28
line 1842
;1840:
;1841:int ForceShootDrain( gentity_t *self )
;1842:{
line 1846
;1843:	trace_t	tr;
;1844:	vec3_t	end, forward;
;1845:	gentity_t	*traceEnt;
;1846:	int			gotOneOrMore = 0;
ADDRLP4 1096
CNSTI4 0
ASGNI4
line 1848
;1847:
;1848:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $798
line 1849
;1849:	{
line 1850
;1850:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $797
JUMPV
LABELV $798
line 1852
;1851:	}
;1852:	AngleVectors( self->client->ps.viewangles, forward, NULL, NULL );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 1084
ARGP4
ADDRLP4 1112
CNSTP4 0
ASGNP4
ADDRLP4 1112
INDIRP4
ARGP4
ADDRLP4 1112
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 1853
;1853:	VectorNormalize( forward );
ADDRLP4 1084
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 1855
;1854:
;1855:	if ( self->client->ps.fd.forcePowerLevel[FP_DRAIN] > FORCE_LEVEL_2 )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
CNSTI4 2
LEI4 $800
line 1856
;1856:	{//arc
line 1858
;1857:		vec3_t	center, mins, maxs, dir, ent_org, size, v;
;1858:		float	radius = MAX_DRAIN_DISTANCE, dot, dist;
ADDRLP4 1180
CNSTF4 1140850688
ASGNF4
line 1863
;1859:		gentity_t	*entityList[MAX_GENTITIES];
;1860:		int			iEntityList[MAX_GENTITIES];
;1861:		int		e, numListedEntities, i;
;1862:
;1863:		VectorCopy( self->client->ps.origin, center );
ADDRLP4 1120
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 1864
;1864:		for ( i = 0 ; i < 3 ; i++ ) 
ADDRLP4 1116
CNSTI4 0
ASGNI4
LABELV $802
line 1865
;1865:		{
line 1866
;1866:			mins[i] = center[i] - radius;
ADDRLP4 9416
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9416
INDIRI4
ADDRLP4 5292
ADDP4
ADDRLP4 9416
INDIRI4
ADDRLP4 1120
ADDP4
INDIRF4
ADDRLP4 1180
INDIRF4
SUBF4
ASGNF4
line 1867
;1867:			maxs[i] = center[i] + radius;
ADDRLP4 9420
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9420
INDIRI4
ADDRLP4 5304
ADDP4
ADDRLP4 9420
INDIRI4
ADDRLP4 1120
ADDP4
INDIRF4
ADDRLP4 1180
INDIRF4
ADDF4
ASGNF4
line 1868
;1868:		}
LABELV $803
line 1864
ADDRLP4 1116
ADDRLP4 1116
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 1116
INDIRI4
CNSTI4 3
LTI4 $802
line 1869
;1869:		numListedEntities = trap_EntitiesInBox( mins, maxs, iEntityList, MAX_GENTITIES );
ADDRLP4 5292
ARGP4
ADDRLP4 5304
ARGP4
ADDRLP4 5316
ARGP4
CNSTI4 1024
ARGI4
ADDRLP4 9416
ADDRGP4 trap_EntitiesInBox
CALLI4
ASGNI4
ADDRLP4 1188
ADDRLP4 9416
INDIRI4
ASGNI4
line 1871
;1870:
;1871:		i = 0;
ADDRLP4 1116
CNSTI4 0
ASGNI4
ADDRGP4 $807
JUMPV
LABELV $806
line 1873
;1872:		while (i < numListedEntities)
;1873:		{
line 1874
;1874:			entityList[i] = &g_entities[iEntityList[i]];
ADDRLP4 9420
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9420
INDIRI4
ADDRLP4 1196
ADDP4
CNSTI4 828
ADDRLP4 9420
INDIRI4
ADDRLP4 5316
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1876
;1875:
;1876:			i++;
ADDRLP4 1116
ADDRLP4 1116
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1877
;1877:		}
LABELV $807
line 1872
ADDRLP4 1116
INDIRI4
ADDRLP4 1188
INDIRI4
LTI4 $806
line 1879
;1878:
;1879:		for ( e = 0 ; e < numListedEntities ; e++ ) 
ADDRLP4 1184
CNSTI4 0
ASGNI4
ADDRGP4 $812
JUMPV
LABELV $809
line 1880
;1880:		{
line 1881
;1881:			traceEnt = entityList[e];
ADDRLP4 0
ADDRLP4 1184
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1196
ADDP4
INDIRP4
ASGNP4
line 1883
;1882:
;1883:			if ( !traceEnt )
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $813
line 1884
;1884:				continue;
ADDRGP4 $810
JUMPV
LABELV $813
line 1885
;1885:			if ( traceEnt == self )
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRFP4 0
INDIRP4
CVPU4 4
NEU4 $815
line 1886
;1886:				continue;
ADDRGP4 $810
JUMPV
LABELV $815
line 1887
;1887:			if ( !traceEnt->inuse )
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $817
line 1888
;1888:				continue;
ADDRGP4 $810
JUMPV
LABELV $817
line 1889
;1889:			if ( !traceEnt->takedamage )
ADDRLP4 0
INDIRP4
CNSTI4 680
ADDP4
INDIRI4
CNSTI4 0
NEI4 $819
line 1890
;1890:				continue;
ADDRGP4 $810
JUMPV
LABELV $819
line 1891
;1891:			if ( traceEnt->health <= 0 )//no torturing corpses
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $821
line 1892
;1892:				continue;
ADDRGP4 $810
JUMPV
LABELV $821
line 1893
;1893:			if ( !traceEnt->client )
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $823
line 1894
;1894:				continue;
ADDRGP4 $810
JUMPV
LABELV $823
line 1895
;1895:			if ( !traceEnt->client->ps.fd.forcePower )
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 0
NEI4 $825
line 1896
;1896:				continue;
ADDRGP4 $810
JUMPV
LABELV $825
line 1897
;1897:			if (OnSameTeam(self, traceEnt))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 9420
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 9420
INDIRI4
CNSTI4 0
EQI4 $827
line 1898
;1898:				continue;
ADDRGP4 $810
JUMPV
LABELV $827
line 1901
;1899:			//this is all to see if we need to start a saber attack, if it's in flight, this doesn't matter
;1900:			// find the distance from the edge of the bounding box
;1901:			for ( i = 0 ; i < 3 ; i++ ) 
ADDRLP4 1116
CNSTI4 0
ASGNI4
LABELV $829
line 1902
;1902:			{
line 1903
;1903:				if ( center[i] < traceEnt->r.absmin[i] ) 
ADDRLP4 9424
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9424
INDIRI4
ADDRLP4 1120
ADDP4
INDIRF4
ADDRLP4 9424
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
ADDP4
INDIRF4
GEF4 $833
line 1904
;1904:				{
line 1905
;1905:					v[i] = traceEnt->r.absmin[i] - center[i];
ADDRLP4 9428
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9428
INDIRI4
ADDRLP4 1132
ADDP4
ADDRLP4 9428
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
ADDP4
INDIRF4
ADDRLP4 9428
INDIRI4
ADDRLP4 1120
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1906
;1906:				} else if ( center[i] > traceEnt->r.absmax[i] ) 
ADDRGP4 $834
JUMPV
LABELV $833
ADDRLP4 9428
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9428
INDIRI4
ADDRLP4 1120
ADDP4
INDIRF4
ADDRLP4 9428
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 356
ADDP4
ADDP4
INDIRF4
LEF4 $835
line 1907
;1907:				{
line 1908
;1908:					v[i] = center[i] - traceEnt->r.absmax[i];
ADDRLP4 9432
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9432
INDIRI4
ADDRLP4 1132
ADDP4
ADDRLP4 9432
INDIRI4
ADDRLP4 1120
ADDP4
INDIRF4
ADDRLP4 9432
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 356
ADDP4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1909
;1909:				} else 
ADDRGP4 $836
JUMPV
LABELV $835
line 1910
;1910:				{
line 1911
;1911:					v[i] = 0;
ADDRLP4 1116
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1132
ADDP4
CNSTF4 0
ASGNF4
line 1912
;1912:				}
LABELV $836
LABELV $834
line 1913
;1913:			}
LABELV $830
line 1901
ADDRLP4 1116
ADDRLP4 1116
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 1116
INDIRI4
CNSTI4 3
LTI4 $829
line 1915
;1914:
;1915:			VectorSubtract( traceEnt->r.absmax, traceEnt->r.absmin, size );
ADDRLP4 1168
ADDRLP4 0
INDIRP4
CNSTI4 356
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1168+4
ADDRLP4 0
INDIRP4
CNSTI4 360
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1168+8
ADDRLP4 0
INDIRP4
CNSTI4 364
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1916
;1916:			VectorMA( traceEnt->r.absmin, 0.5, size, ent_org );
ADDRLP4 9436
CNSTF4 1056964608
ASGNF4
ADDRLP4 1144
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
ADDRLP4 9436
INDIRF4
ADDRLP4 1168
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1144+4
ADDRLP4 0
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
ADDRLP4 9436
INDIRF4
ADDRLP4 1168+4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1144+8
ADDRLP4 0
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
CNSTF4 1056964608
ADDRLP4 1168+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 1920
;1917:
;1918:			//see if they're in front of me
;1919:			//must be within the forward cone
;1920:			VectorSubtract( ent_org, center, dir );
ADDRLP4 1156
ADDRLP4 1144
INDIRF4
ADDRLP4 1120
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1156+4
ADDRLP4 1144+4
INDIRF4
ADDRLP4 1120+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1156+8
ADDRLP4 1144+8
INDIRF4
ADDRLP4 1120+8
INDIRF4
SUBF4
ASGNF4
line 1921
;1921:			VectorNormalize( dir );
ADDRLP4 1156
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 1922
;1922:			if ( (dot = DotProduct( dir, forward )) < 0.5 )
ADDRLP4 9440
ADDRLP4 1156
INDIRF4
ADDRLP4 1084
INDIRF4
MULF4
ADDRLP4 1156+4
INDIRF4
ADDRLP4 1084+4
INDIRF4
MULF4
ADDF4
ADDRLP4 1156+8
INDIRF4
ADDRLP4 1084+8
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 9412
ADDRLP4 9440
INDIRF4
ASGNF4
ADDRLP4 9440
INDIRF4
CNSTF4 1056964608
GEF4 $849
line 1923
;1923:				continue;
ADDRGP4 $810
JUMPV
LABELV $849
line 1926
;1924:
;1925:			//must be close enough
;1926:			dist = VectorLength( v );
ADDRLP4 1132
ARGP4
ADDRLP4 9444
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1192
ADDRLP4 9444
INDIRF4
ASGNF4
line 1927
;1927:			if ( dist >= radius ) 
ADDRLP4 1192
INDIRF4
ADDRLP4 1180
INDIRF4
LTF4 $855
line 1928
;1928:			{
line 1929
;1929:				continue;
ADDRGP4 $810
JUMPV
LABELV $855
line 1933
;1930:			}
;1931:		
;1932:			//in PVS?
;1933:			if ( !traceEnt->r.bmodel && !trap_InPVS( ent_org, self->client->ps.origin ) )
ADDRLP4 0
INDIRP4
CNSTI4 312
ADDP4
INDIRI4
CNSTI4 0
NEI4 $857
ADDRLP4 1144
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9448
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 9448
INDIRI4
CNSTI4 0
NEI4 $857
line 1934
;1934:			{//must be in PVS
line 1935
;1935:				continue;
ADDRGP4 $810
JUMPV
LABELV $857
line 1939
;1936:			}
;1937:
;1938:			//Now check and see if we can actually hit it
;1939:			trap_Trace( &tr, self->client->ps.origin, vec3_origin, vec3_origin, ent_org, self->s.number, MASK_SHOT );
ADDRLP4 4
ARGP4
ADDRLP4 9452
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 9452
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9456
ADDRGP4 vec3_origin
ASGNP4
ADDRLP4 9456
INDIRP4
ARGP4
ADDRLP4 9456
INDIRP4
ARGP4
ADDRLP4 1144
ARGP4
ADDRLP4 9452
INDIRP4
INDIRI4
ARGI4
CNSTI4 769
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1940
;1940:			if ( tr.fraction < 1.0f && tr.entityNum != traceEnt->s.number )
ADDRLP4 4+8
INDIRF4
CNSTF4 1065353216
GEF4 $859
ADDRLP4 4+52
INDIRI4
ADDRLP4 0
INDIRP4
INDIRI4
EQI4 $859
line 1941
;1941:			{//must have clear LOS
line 1942
;1942:				continue;
ADDRGP4 $810
JUMPV
LABELV $859
line 1946
;1943:			}
;1944:
;1945:			// ok, we are within the radius, add us to the incoming list
;1946:			ForceDrainDamage( self, traceEnt, dir, ent_org );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1156
ARGP4
ADDRLP4 1144
ARGP4
ADDRGP4 ForceDrainDamage
CALLV
pop
line 1947
;1947:			gotOneOrMore = 1;
ADDRLP4 1096
CNSTI4 1
ASGNI4
line 1948
;1948:		}
LABELV $810
line 1879
ADDRLP4 1184
ADDRLP4 1184
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $812
ADDRLP4 1184
INDIRI4
ADDRLP4 1188
INDIRI4
LTI4 $809
line 1949
;1949:	}
ADDRGP4 $801
JUMPV
LABELV $800
line 1951
;1950:	else
;1951:	{//trace-line
line 1952
;1952:		VectorMA( self->client->ps.origin, 2048, forward, end );
ADDRLP4 1116
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 1120
CNSTF4 1157627904
ASGNF4
ADDRLP4 1100
ADDRLP4 1116
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 1120
INDIRF4
ADDRLP4 1084
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1100+4
ADDRLP4 1116
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 1120
INDIRF4
ADDRLP4 1084+4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 1100+8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
CNSTF4 1157627904
ADDRLP4 1084+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 1954
;1953:		
;1954:		trap_Trace( &tr, self->client->ps.origin, vec3_origin, vec3_origin, end, self->s.number, MASK_SHOT );
ADDRLP4 4
ARGP4
ADDRLP4 1124
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1124
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 1128
ADDRGP4 vec3_origin
ASGNP4
ADDRLP4 1128
INDIRP4
ARGP4
ADDRLP4 1128
INDIRP4
ARGP4
ADDRLP4 1100
ARGP4
ADDRLP4 1124
INDIRP4
INDIRI4
ARGI4
CNSTI4 769
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1955
;1955:		if ( tr.entityNum == ENTITYNUM_NONE || tr.fraction == 1.0 || tr.allsolid || tr.startsolid || !g_entities[tr.entityNum].client || !g_entities[tr.entityNum].inuse )
ADDRLP4 4+52
INDIRI4
CNSTI4 1023
EQI4 $880
ADDRLP4 4+8
INDIRF4
CNSTF4 1065353216
EQF4 $880
ADDRLP4 1132
CNSTI4 0
ASGNI4
ADDRLP4 4
INDIRI4
ADDRLP4 1132
INDIRI4
NEI4 $880
ADDRLP4 4+4
INDIRI4
ADDRLP4 1132
INDIRI4
NEI4 $880
ADDRLP4 1136
CNSTI4 828
ASGNI4
ADDRLP4 1136
INDIRI4
ADDRLP4 4+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $880
ADDRLP4 1136
INDIRI4
ADDRLP4 4+52
INDIRI4
MULI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 1132
INDIRI4
NEI4 $867
LABELV $880
line 1956
;1956:		{
line 1957
;1957:			return 0;
CNSTI4 0
RETI4
ADDRGP4 $797
JUMPV
LABELV $867
line 1960
;1958:		}
;1959:		
;1960:		traceEnt = &g_entities[tr.entityNum];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4+52
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1961
;1961:		ForceDrainDamage( self, traceEnt, forward, tr.endpos );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1084
ARGP4
ADDRLP4 4+12
ARGP4
ADDRGP4 ForceDrainDamage
CALLV
pop
line 1962
;1962:		gotOneOrMore = 1;
ADDRLP4 1096
CNSTI4 1
ASGNI4
line 1963
;1963:	}
LABELV $801
line 1965
;1964:
;1965:	self->client->ps.activeForcePass = self->client->ps.fd.forcePowerLevel[FP_DRAIN] + FORCE_LEVEL_3;
ADDRLP4 1116
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1116
INDIRP4
CNSTI4 636
ADDP4
ADDRLP4 1116
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
CNSTI4 3
ADDI4
ASGNI4
line 1967
;1966:
;1967:	BG_ForcePowerDrain( &self->client->ps, FP_DRAIN, 5 ); //used to be 1, but this did, too, anger the God of Balance.
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
CNSTI4 13
ARGI4
CNSTI4 5
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 1969
;1968:
;1969:	self->client->ps.fd.forcePowerRegenDebounceTime = level.time + 500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 940
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 1971
;1970:
;1971:	return gotOneOrMore;
ADDRLP4 1096
INDIRI4
RETI4
LABELV $797
endproc ForceShootDrain 9460 28
export ForceJumpCharge
proc ForceJumpCharge 24 12
line 1975
;1972:}
;1973:
;1974:void ForceJumpCharge( gentity_t *self, usercmd_t *ucmd )
;1975:{ //I guess this is unused now. Was used for the "charge" jump type.
line 1976
;1976:	float forceJumpChargeInterval = forceJumpStrength[0] / (FORCE_JUMP_CHARGE_TIME/FRAMETIME);
ADDRLP4 0
ADDRGP4 forceJumpStrength
INDIRF4
CNSTF4 1115684864
DIVF4
ASGNF4
line 1978
;1977:
;1978:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $885
line 1979
;1979:	{
line 1980
;1980:		return;
ADDRGP4 $884
JUMPV
LABELV $885
line 1983
;1981:	}
;1982:
;1983:	if (!self->client->ps.fd.forceJumpCharge && self->client->ps.groundEntityNum == ENTITYNUM_NONE)
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 0
NEF4 $887
ADDRLP4 4
INDIRP4
CNSTI4 84
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $887
line 1984
;1984:	{
line 1985
;1985:		return;
ADDRGP4 $884
JUMPV
LABELV $887
line 1988
;1986:	}
;1987:
;1988:	if (self->client->ps.fd.forcePower < forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_LEVITATION]][FP_LEVITATION])
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 8
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 72
ADDRLP4 8
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded+4
ADDP4
INDIRI4
GEI4 $889
line 1989
;1989:	{
line 1990
;1990:		G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1204
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 1991
;1991:		return;
ADDRGP4 $884
JUMPV
LABELV $889
line 1994
;1992:	}
;1993:
;1994:	if (!self->client->ps.fd.forceJumpCharge)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 0
NEF4 $892
line 1995
;1995:	{
line 1996
;1996:		self->client->ps.fd.forceJumpAddTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1104
ADDP4
CNSTI4 0
ASGNI4
line 1997
;1997:	}
LABELV $892
line 1999
;1998:
;1999:	if (self->client->ps.fd.forceJumpAddTime >= level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1104
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LTI4 $894
line 2000
;2000:	{
line 2001
;2001:		return;
ADDRGP4 $884
JUMPV
LABELV $894
line 2005
;2002:	}
;2003:
;2004:	//need to play sound
;2005:	if ( !self->client->ps.fd.forceJumpCharge )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 0
NEF4 $897
line 2006
;2006:	{
line 2007
;2007:		G_Sound( self, TRACK_CHANNEL_1, G_SoundIndex("sound/weapons/force/jumpbuild.wav") );
ADDRGP4 $899
ARGP4
ADDRLP4 12
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 51
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2008
;2008:	}
LABELV $897
line 2011
;2009:
;2010:	//Increment
;2011:	if (self->client->ps.fd.forceJumpAddTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1104
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $900
line 2012
;2012:	{
line 2013
;2013:		self->client->ps.fd.forceJumpCharge += forceJumpChargeInterval*50;
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
ASGNP4
ADDRLP4 12
INDIRP4
ADDRLP4 12
INDIRP4
INDIRF4
CNSTF4 1112014848
ADDRLP4 0
INDIRF4
MULF4
ADDF4
ASGNF4
line 2014
;2014:		self->client->ps.fd.forceJumpAddTime = level.time + 500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1104
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 2015
;2015:	}
LABELV $900
line 2018
;2016:
;2017:	//clamp to max strength for current level
;2018:	if ( self->client->ps.fd.forceJumpCharge > forceJumpStrength[self->client->ps.fd.forcePowerLevel[FP_LEVITATION]] )
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
ADDRLP4 12
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 forceJumpStrength
ADDP4
INDIRF4
LEF4 $904
line 2019
;2019:	{
line 2020
;2020:		self->client->ps.fd.forceJumpCharge = forceJumpStrength[self->client->ps.fd.forcePowerLevel[FP_LEVITATION]];
ADDRLP4 16
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 1096
ADDP4
ADDRLP4 16
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 forceJumpStrength
ADDP4
INDIRF4
ASGNF4
line 2021
;2021:		G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1204
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 2022
;2022:	}
LABELV $904
line 2025
;2023:
;2024:	//clamp to max available force power
;2025:	if ( self->client->ps.fd.forceJumpCharge/forceJumpChargeInterval/(FORCE_JUMP_CHARGE_TIME/FRAMETIME)*forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_LEVITATION]][FP_LEVITATION] > self->client->ps.fd.forcePower )
ADDRLP4 16
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
ADDRLP4 0
INDIRF4
DIVF4
CNSTF4 1115684864
DIVF4
CNSTI4 72
ADDRLP4 16
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded+4
ADDP4
INDIRI4
CVIF4 4
MULF4
ADDRLP4 16
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CVIF4 4
LEF4 $906
line 2026
;2026:	{//can't use more than you have
line 2027
;2027:		G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1204
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 2028
;2028:		self->client->ps.fd.forceJumpCharge = self->client->ps.fd.forcePower*forceJumpChargeInterval/(FORCE_JUMP_CHARGE_TIME/FRAMETIME);
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 1096
ADDP4
ADDRLP4 20
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CVIF4 4
ADDRLP4 0
INDIRF4
MULF4
CNSTF4 1115684864
DIVF4
ASGNF4
line 2029
;2029:	}
LABELV $906
line 2032
;2030:	
;2031:	//G_Printf("%f\n", self->client->ps.fd.forceJumpCharge);
;2032:}
LABELV $884
endproc ForceJumpCharge 24 12
export WP_GetVelocityForForceJump
proc WP_GetVelocityForForceJump 64 16
line 2035
;2033:
;2034:int WP_GetVelocityForForceJump( gentity_t *self, vec3_t jumpVel, usercmd_t *ucmd )
;2035:{
line 2036
;2036:	float pushFwd = 0, pushRt = 0;
ADDRLP4 0
CNSTF4 0
ASGNF4
ADDRLP4 4
CNSTF4 0
ASGNF4
line 2038
;2037:	vec3_t	view, forward, right;
;2038:	VectorCopy( self->client->ps.viewangles, view );
ADDRLP4 32
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
INDIRB
ASGNB 12
line 2039
;2039:	view[0] = 0;
ADDRLP4 32
CNSTF4 0
ASGNF4
line 2040
;2040:	AngleVectors( view, forward, right, NULL );
ADDRLP4 32
ARGP4
ADDRLP4 8
ARGP4
ADDRLP4 20
ARGP4
CNSTP4 0
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 2041
;2041:	if ( ucmd->forwardmove && ucmd->rightmove )
ADDRLP4 44
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 48
CNSTI4 0
ASGNI4
ADDRLP4 44
INDIRP4
CNSTI4 24
ADDP4
INDIRI1
CVII4 1
ADDRLP4 48
INDIRI4
EQI4 $910
ADDRLP4 44
INDIRP4
CNSTI4 25
ADDP4
INDIRI1
CVII4 1
ADDRLP4 48
INDIRI4
EQI4 $910
line 2042
;2042:	{
line 2043
;2043:		if ( ucmd->forwardmove > 0 )
ADDRFP4 8
INDIRP4
CNSTI4 24
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
LEI4 $912
line 2044
;2044:		{
line 2045
;2045:			pushFwd = 50;
ADDRLP4 0
CNSTF4 1112014848
ASGNF4
line 2046
;2046:		}
ADDRGP4 $913
JUMPV
LABELV $912
line 2048
;2047:		else
;2048:		{
line 2049
;2049:			pushFwd = -50;
ADDRLP4 0
CNSTF4 3259498496
ASGNF4
line 2050
;2050:		}
LABELV $913
line 2051
;2051:		if ( ucmd->rightmove > 0 )
ADDRFP4 8
INDIRP4
CNSTI4 25
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
LEI4 $914
line 2052
;2052:		{
line 2053
;2053:			pushRt = 50;
ADDRLP4 4
CNSTF4 1112014848
ASGNF4
line 2054
;2054:		}
ADDRGP4 $911
JUMPV
LABELV $914
line 2056
;2055:		else
;2056:		{
line 2057
;2057:			pushRt = -50;
ADDRLP4 4
CNSTF4 3259498496
ASGNF4
line 2058
;2058:		}
line 2059
;2059:	}
ADDRGP4 $911
JUMPV
LABELV $910
line 2060
;2060:	else if ( ucmd->forwardmove || ucmd->rightmove )
ADDRLP4 52
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 56
CNSTI4 0
ASGNI4
ADDRLP4 52
INDIRP4
CNSTI4 24
ADDP4
INDIRI1
CVII4 1
ADDRLP4 56
INDIRI4
NEI4 $918
ADDRLP4 52
INDIRP4
CNSTI4 25
ADDP4
INDIRI1
CVII4 1
ADDRLP4 56
INDIRI4
EQI4 $916
LABELV $918
line 2061
;2061:	{
line 2062
;2062:		if ( ucmd->forwardmove > 0 )
ADDRFP4 8
INDIRP4
CNSTI4 24
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
LEI4 $919
line 2063
;2063:		{
line 2064
;2064:			pushFwd = 100;
ADDRLP4 0
CNSTF4 1120403456
ASGNF4
line 2065
;2065:		}
ADDRGP4 $920
JUMPV
LABELV $919
line 2066
;2066:		else if ( ucmd->forwardmove < 0 )
ADDRFP4 8
INDIRP4
CNSTI4 24
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
GEI4 $921
line 2067
;2067:		{
line 2068
;2068:			pushFwd = -100;
ADDRLP4 0
CNSTF4 3267887104
ASGNF4
line 2069
;2069:		}
ADDRGP4 $922
JUMPV
LABELV $921
line 2070
;2070:		else if ( ucmd->rightmove > 0 )
ADDRFP4 8
INDIRP4
CNSTI4 25
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
LEI4 $923
line 2071
;2071:		{
line 2072
;2072:			pushRt = 100;
ADDRLP4 4
CNSTF4 1120403456
ASGNF4
line 2073
;2073:		}
ADDRGP4 $924
JUMPV
LABELV $923
line 2074
;2074:		else if ( ucmd->rightmove < 0 )
ADDRFP4 8
INDIRP4
CNSTI4 25
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
GEI4 $925
line 2075
;2075:		{
line 2076
;2076:			pushRt = -100;
ADDRLP4 4
CNSTF4 3267887104
ASGNF4
line 2077
;2077:		}
LABELV $925
LABELV $924
LABELV $922
LABELV $920
line 2078
;2078:	}
LABELV $916
LABELV $911
line 2080
;2079:
;2080:	G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1204
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 2082
;2081:
;2082:	G_PreDefSound(self->client->ps.origin, PDSOUND_FORCEJUMP);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 5
ARGI4
ADDRGP4 G_PreDefSound
CALLP4
pop
line 2084
;2083:
;2084:	if (self->client->ps.fd.forceJumpCharge < JUMP_VELOCITY+40)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 1132756992
GEF4 $927
line 2085
;2085:	{ //give him at least a tiny boost from just a tap
line 2086
;2086:		self->client->ps.fd.forceJumpCharge = JUMP_VELOCITY+400;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
CNSTF4 1142702080
ASGNF4
line 2087
;2087:	}
LABELV $927
line 2089
;2088:
;2089:	if (self->client->ps.velocity[2] < -30)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRF4
CNSTF4 3253731328
GEF4 $929
line 2090
;2090:	{ //so that we can get a good boost when force jumping in a fall
line 2091
;2091:		self->client->ps.velocity[2] = -30;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 3253731328
ASGNF4
line 2092
;2092:	}
LABELV $929
line 2094
;2093:
;2094:	VectorMA( self->client->ps.velocity, pushFwd, forward, jumpVel );
ADDRFP4 4
INDIRP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
INDIRF4
ADDRLP4 8
INDIRF4
ADDRLP4 0
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRFP4 4
INDIRP4
CNSTI4 4
ADDP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
INDIRF4
ADDRLP4 8+4
INDIRF4
ADDRLP4 0
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRFP4 4
INDIRP4
CNSTI4 8
ADDP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRF4
ADDRLP4 8+8
INDIRF4
ADDRLP4 0
INDIRF4
MULF4
ADDF4
ASGNF4
line 2095
;2095:	VectorMA( self->client->ps.velocity, pushRt, right, jumpVel );
ADDRFP4 4
INDIRP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
INDIRF4
ADDRLP4 20
INDIRF4
ADDRLP4 4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRFP4 4
INDIRP4
CNSTI4 4
ADDP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
INDIRF4
ADDRLP4 20+4
INDIRF4
ADDRLP4 4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRFP4 4
INDIRP4
CNSTI4 8
ADDP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRF4
ADDRLP4 20+8
INDIRF4
ADDRLP4 4
INDIRF4
MULF4
ADDF4
ASGNF4
line 2096
;2096:	jumpVel[2] += self->client->ps.fd.forceJumpCharge;
ADDRLP4 60
ADDRFP4 4
INDIRP4
CNSTI4 8
ADDP4
ASGNP4
ADDRLP4 60
INDIRP4
ADDRLP4 60
INDIRP4
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
ADDF4
ASGNF4
line 2097
;2097:	if ( pushFwd > 0 && self->client->ps.fd.forceJumpCharge > 200 )
ADDRLP4 0
INDIRF4
CNSTF4 0
LEF4 $935
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 1128792064
LEF4 $935
line 2098
;2098:	{
line 2099
;2099:		return FJ_FORWARD;
CNSTI4 0
RETI4
ADDRGP4 $909
JUMPV
LABELV $935
line 2101
;2100:	}
;2101:	else if ( pushFwd < 0 && self->client->ps.fd.forceJumpCharge > 200 )
ADDRLP4 0
INDIRF4
CNSTF4 0
GEF4 $937
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 1128792064
LEF4 $937
line 2102
;2102:	{
line 2103
;2103:		return FJ_BACKWARD;
CNSTI4 1
RETI4
ADDRGP4 $909
JUMPV
LABELV $937
line 2105
;2104:	}
;2105:	else if ( pushRt > 0 && self->client->ps.fd.forceJumpCharge > 200 )
ADDRLP4 4
INDIRF4
CNSTF4 0
LEF4 $939
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 1128792064
LEF4 $939
line 2106
;2106:	{
line 2107
;2107:		return FJ_RIGHT;
CNSTI4 2
RETI4
ADDRGP4 $909
JUMPV
LABELV $939
line 2109
;2108:	}
;2109:	else if ( pushRt < 0 && self->client->ps.fd.forceJumpCharge > 200 )
ADDRLP4 4
INDIRF4
CNSTF4 0
GEF4 $941
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 1128792064
LEF4 $941
line 2110
;2110:	{
line 2111
;2111:		return FJ_LEFT;
CNSTI4 3
RETI4
ADDRGP4 $909
JUMPV
LABELV $941
line 2114
;2112:	}
;2113:	else
;2114:	{
line 2115
;2115:		return FJ_UP;
CNSTI4 4
RETI4
LABELV $909
endproc WP_GetVelocityForForceJump 64 16
export ForceJump
proc ForceJump 32 12
line 2120
;2116:	}
;2117:}
;2118:
;2119:void ForceJump( gentity_t *self, usercmd_t *ucmd )
;2120:{
line 2124
;2121:	float forceJumpChargeInterval;
;2122:	vec3_t	jumpVel;
;2123:
;2124:	if ( self->client->ps.fd.forcePowerDuration[FP_LEVITATION] > level.time )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 864
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $944
line 2125
;2125:	{
line 2126
;2126:		return;
ADDRGP4 $943
JUMPV
LABELV $944
line 2128
;2127:	}
;2128:	if ( !WP_ForcePowerUsable( self, FP_LEVITATION ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $947
line 2129
;2129:	{
line 2130
;2130:		return;
ADDRGP4 $943
JUMPV
LABELV $947
line 2132
;2131:	}
;2132:	if ( self->s.groundEntityNum == ENTITYNUM_NONE )
ADDRFP4 0
INDIRP4
CNSTI4 192
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $949
line 2133
;2133:	{
line 2134
;2134:		return;
ADDRGP4 $943
JUMPV
LABELV $949
line 2136
;2135:	}
;2136:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $951
line 2137
;2137:	{
line 2138
;2138:		return;
ADDRGP4 $943
JUMPV
LABELV $951
line 2141
;2139:	}
;2140:
;2141:	self->client->fjDidJump = qtrue;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1800
ADDP4
CNSTI4 1
ASGNI4
line 2143
;2142:
;2143:	forceJumpChargeInterval = forceJumpStrength[self->client->ps.fd.forcePowerLevel[FP_LEVITATION]]/(FORCE_JUMP_CHARGE_TIME/FRAMETIME);
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 forceJumpStrength
ADDP4
INDIRF4
CNSTF4 1115684864
DIVF4
ASGNF4
line 2145
;2144:
;2145:	WP_GetVelocityForForceJump( self, jumpVel, ucmd );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 WP_GetVelocityForForceJump
CALLI4
pop
line 2148
;2146:
;2147:	//FIXME: sound effect
;2148:	self->client->ps.fd.forceJumpZStart = self->client->ps.origin[2];//remember this for when we land
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 1092
ADDP4
ADDRLP4 20
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ASGNF4
line 2149
;2149:	VectorCopy( jumpVel, self->client->ps.velocity );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
ADDRLP4 4
INDIRB
ASGNB 12
line 2153
;2150:	//wasn't allowing them to attack when jumping, but that was annoying
;2151:	//self->client->ps.weaponTime = self->client->ps.torsoAnimTimer;
;2152:
;2153:	WP_ForcePowerStart( self, FP_LEVITATION, self->client->ps.fd.forceJumpCharge/forceJumpChargeInterval/(FORCE_JUMP_CHARGE_TIME/FRAMETIME)*forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_LEVITATION]][FP_LEVITATION] );
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 28
ADDRLP4 24
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
ADDRLP4 0
INDIRF4
DIVF4
CNSTF4 1115684864
DIVF4
CNSTI4 72
ADDRLP4 28
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded+4
ADDP4
INDIRI4
CVIF4 4
MULF4
CVFI4 4
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 2155
;2154:	//self->client->ps.fd.forcePowerDuration[FP_LEVITATION] = level.time + self->client->ps.weaponTime;
;2155:	self->client->ps.fd.forceJumpCharge = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
CNSTF4 0
ASGNF4
line 2156
;2156:	self->client->ps.forceJumpFlip = qtrue;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1244
ADDP4
CNSTI4 1
ASGNI4
line 2157
;2157:}
LABELV $943
endproc ForceJump 32 12
export WP_AddAsMindtricked
proc WP_AddAsMindtricked 4 0
line 2160
;2158:
;2159:void WP_AddAsMindtricked(forcedata_t *fd, int entNum)
;2160:{
line 2161
;2161:	if (!fd)
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $955
line 2162
;2162:	{
line 2163
;2163:		return;
ADDRGP4 $954
JUMPV
LABELV $955
line 2166
;2164:	}
;2165:
;2166:	if (entNum > 47)
ADDRFP4 4
INDIRI4
CNSTI4 47
LEI4 $957
line 2167
;2167:	{
line 2168
;2168:		fd->forceMindtrickTargetIndex4 |= (1 << (entNum-48));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 396
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 48
SUBI4
LSHI4
BORI4
ASGNI4
line 2169
;2169:	}
ADDRGP4 $958
JUMPV
LABELV $957
line 2170
;2170:	else if (entNum > 31)
ADDRFP4 4
INDIRI4
CNSTI4 31
LEI4 $959
line 2171
;2171:	{
line 2172
;2172:		fd->forceMindtrickTargetIndex3 |= (1 << (entNum-32));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 392
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 32
SUBI4
LSHI4
BORI4
ASGNI4
line 2173
;2173:	}
ADDRGP4 $960
JUMPV
LABELV $959
line 2174
;2174:	else if (entNum > 15)
ADDRFP4 4
INDIRI4
CNSTI4 15
LEI4 $961
line 2175
;2175:	{
line 2176
;2176:		fd->forceMindtrickTargetIndex2 |= (1 << (entNum-16));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 388
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 16
SUBI4
LSHI4
BORI4
ASGNI4
line 2177
;2177:	}
ADDRGP4 $962
JUMPV
LABELV $961
line 2179
;2178:	else
;2179:	{
line 2180
;2180:		fd->forceMindtrickTargetIndex |= (1 << entNum);
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 384
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BORI4
ASGNI4
line 2181
;2181:	}
LABELV $962
LABELV $960
LABELV $958
line 2182
;2182:}
LABELV $954
endproc WP_AddAsMindtricked 4 0
export ForceTelepathy
proc ForceTelepathy 5388 28
line 2185
;2183:
;2184:void ForceTelepathy(gentity_t *self)
;2185:{
line 2197
;2186:	trace_t tr;
;2187:	vec3_t tfrom, tto, fwd, thispush_org, a;
;2188:	vec3_t mins, maxs, fwdangles, forward, right, center;
;2189:	int i, e;
;2190:	int entityList[MAX_GENTITIES];
;2191:	int numListedEntities;
;2192:	int gotatleastone;
;2193:	float visionArc;
;2194:	float radius;
;2195:	gentity_t *ent;
;2196:
;2197:	visionArc = 0;
ADDRLP4 5284
CNSTF4 0
ASGNF4
line 2199
;2198:
;2199:	radius = MAX_TRICK_DISTANCE;
ADDRLP4 12
CNSTF4 1140850688
ASGNF4
line 2201
;2200:
;2201:	gotatleastone = 0;
ADDRLP4 4164
CNSTI4 0
ASGNI4
line 2203
;2202:
;2203:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $964
line 2204
;2204:	{
line 2205
;2205:		return;
ADDRGP4 $963
JUMPV
LABELV $964
line 2208
;2206:	}
;2207:
;2208:	if (self->client->ps.forceHandExtend != HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
EQI4 $966
line 2209
;2209:	{
line 2210
;2210:		return;
ADDRGP4 $963
JUMPV
LABELV $966
line 2213
;2211:	}
;2212:
;2213:	if (self->client->ps.weaponTime > 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
CNSTI4 0
LEI4 $968
line 2214
;2214:	{
line 2215
;2215:		return;
ADDRGP4 $963
JUMPV
LABELV $968
line 2218
;2216:	}
;2217:
;2218:	if (self->client->ps.powerups[PW_REDFLAG] ||
ADDRLP4 5336
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 5340
CNSTI4 0
ASGNI4
ADDRLP4 5336
INDIRP4
CNSTI4 360
ADDP4
INDIRI4
ADDRLP4 5340
INDIRI4
NEI4 $972
ADDRLP4 5336
INDIRP4
CNSTI4 364
ADDP4
INDIRI4
ADDRLP4 5340
INDIRI4
EQI4 $970
LABELV $972
line 2220
;2219:		self->client->ps.powerups[PW_BLUEFLAG])
;2220:	{ //can't mindtrick while carrying the flag
line 2221
;2221:		return;
ADDRGP4 $963
JUMPV
LABELV $970
line 2224
;2222:	}
;2223:
;2224:	if (self->client->ps.forceAllowDeactivateTime < level.time &&
ADDRLP4 5344
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 5344
INDIRP4
CNSTI4 1328
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $973
ADDRLP4 5344
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 32
BANDI4
CNSTI4 0
EQI4 $973
line 2226
;2225:		(self->client->ps.fd.forcePowersActive & (1 << FP_TELEPATHY)) )
;2226:	{
line 2227
;2227:		WP_ForcePowerStop( self, FP_TELEPATHY );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 2228
;2228:		return;
ADDRGP4 $963
JUMPV
LABELV $973
line 2231
;2229:	}
;2230:
;2231:	if ( !WP_ForcePowerUsable( self, FP_TELEPATHY ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 5348
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 5348
INDIRI4
CNSTI4 0
NEI4 $976
line 2232
;2232:	{
line 2233
;2233:		return;
ADDRGP4 $963
JUMPV
LABELV $976
line 2236
;2234:	}
;2235:
;2236:	if (self->client->ps.fd.forcePowerLevel[FP_TELEPATHY] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 964
ADDP4
INDIRI4
CNSTI4 2
NEI4 $978
line 2237
;2237:	{
line 2238
;2238:		visionArc = 360;
ADDRLP4 5284
CNSTF4 1135869952
ASGNF4
line 2239
;2239:	}
ADDRGP4 $979
JUMPV
LABELV $978
line 2240
;2240:	else if (self->client->ps.fd.forcePowerLevel[FP_TELEPATHY] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 964
ADDP4
INDIRI4
CNSTI4 3
NEI4 $980
line 2241
;2241:	{
line 2242
;2242:		visionArc = 360;
ADDRLP4 5284
CNSTF4 1135869952
ASGNF4
line 2243
;2243:	}
LABELV $980
LABELV $979
line 2245
;2244:
;2245:	VectorCopy( self->client->ps.viewangles, fwdangles );
ADDRLP4 5300
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
INDIRB
ASGNB 12
line 2246
;2246:	AngleVectors( fwdangles, forward, right, NULL );
ADDRLP4 5300
ARGP4
ADDRLP4 5312
ARGP4
ADDRLP4 5324
ARGP4
CNSTP4 0
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 2247
;2247:	VectorCopy( self->client->ps.origin, center );
ADDRLP4 16
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2249
;2248:
;2249:	for ( i = 0 ; i < 3 ; i++ ) 
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $982
line 2250
;2250:	{
line 2251
;2251:		mins[i] = center[i] - radius;
ADDRLP4 5352
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 5352
INDIRI4
ADDRLP4 4128
ADDP4
ADDRLP4 5352
INDIRI4
ADDRLP4 16
ADDP4
INDIRF4
ADDRLP4 12
INDIRF4
SUBF4
ASGNF4
line 2252
;2252:		maxs[i] = center[i] + radius;
ADDRLP4 5356
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 5356
INDIRI4
ADDRLP4 4140
ADDP4
ADDRLP4 5356
INDIRI4
ADDRLP4 16
ADDP4
INDIRF4
ADDRLP4 12
INDIRF4
ADDF4
ASGNF4
line 2253
;2253:	}
LABELV $983
line 2249
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 3
LTI4 $982
line 2255
;2254:
;2255:	if (self->client->ps.fd.forcePowerLevel[FP_TELEPATHY] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 964
ADDP4
INDIRI4
CNSTI4 1
NEI4 $986
line 2256
;2256:	{
line 2257
;2257:		VectorCopy(self->client->ps.origin, tfrom);
ADDRLP4 5272
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2258
;2258:		tfrom[2] += self->client->ps.viewheight;
ADDRLP4 5272+8
ADDRLP4 5272+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 168
ADDP4
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 2259
;2259:		AngleVectors(self->client->ps.viewangles, fwd, NULL, NULL);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 5288
ARGP4
ADDRLP4 5352
CNSTP4 0
ASGNP4
ADDRLP4 5352
INDIRP4
ARGP4
ADDRLP4 5352
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 2260
;2260:		tto[0] = tfrom[0] + fwd[0]*radius/2;
ADDRLP4 4152
ADDRLP4 5272
INDIRF4
ADDRLP4 5288
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
CNSTF4 1073741824
DIVF4
ADDF4
ASGNF4
line 2261
;2261:		tto[1] = tfrom[1] + fwd[1]*radius/2;
ADDRLP4 4152+4
ADDRLP4 5272+4
INDIRF4
ADDRLP4 5288+4
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
CNSTF4 1073741824
DIVF4
ADDF4
ASGNF4
line 2262
;2262:		tto[2] = tfrom[2] + fwd[2]*radius/2;
ADDRLP4 4152+8
ADDRLP4 5272+8
INDIRF4
ADDRLP4 5288+8
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
CNSTF4 1073741824
DIVF4
ADDF4
ASGNF4
line 2264
;2263:
;2264:		trap_Trace(&tr, tfrom, NULL, NULL, tto, self->s.number, MASK_PLAYERSOLID);
ADDRLP4 4192
ARGP4
ADDRLP4 5272
ARGP4
ADDRLP4 5356
CNSTP4 0
ASGNP4
ADDRLP4 5356
INDIRP4
ARGP4
ADDRLP4 5356
INDIRP4
ARGP4
ADDRLP4 4152
ARGP4
ADDRFP4 0
INDIRP4
INDIRI4
ARGI4
CNSTI4 273
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2266
;2265:
;2266:		if (tr.fraction != 1.0 &&
ADDRLP4 4192+8
INDIRF4
CNSTF4 1065353216
EQF4 $963
ADDRLP4 4192+52
INDIRI4
CNSTI4 1023
EQI4 $963
ADDRLP4 5360
CNSTI4 828
ASGNI4
ADDRLP4 5364
CNSTI4 0
ASGNI4
ADDRLP4 5360
INDIRI4
ADDRLP4 4192+52
INDIRI4
MULI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 5364
INDIRI4
EQI4 $963
ADDRLP4 5360
INDIRI4
ADDRLP4 4192+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $963
ADDRLP4 5360
INDIRI4
ADDRLP4 4192+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
ADDRLP4 5364
INDIRI4
EQI4 $963
ADDRLP4 5360
INDIRI4
ADDRLP4 4192+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $963
line 2272
;2267:			tr.entityNum != ENTITYNUM_NONE &&
;2268:			g_entities[tr.entityNum].inuse &&
;2269:			g_entities[tr.entityNum].client &&
;2270:			g_entities[tr.entityNum].client->pers.connected &&
;2271:			g_entities[tr.entityNum].client->sess.sessionTeam != TEAM_SPECTATOR)
;2272:		{
line 2273
;2273:			WP_AddAsMindtricked(&self->client->ps.fd, tr.entityNum);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ARGP4
ADDRLP4 4192+52
INDIRI4
ARGI4
ADDRGP4 WP_AddAsMindtricked
CALLV
pop
line 2274
;2274:			WP_ForcePowerStart( self, FP_TELEPATHY, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 2276
;2275:
;2276:			G_Sound( self, CHAN_AUTO, G_SoundIndex("sound/weapons/force/distract.wav") );
ADDRGP4 $1008
ARGP4
ADDRLP4 5368
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 5368
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2278
;2277:
;2278:			self->client->ps.forceHandExtend = HANDEXTEND_FORCEPUSH;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 1
ASGNI4
line 2279
;2279:			self->client->ps.forceHandExtendTime = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 2281
;2280:
;2281:			return;
ADDRGP4 $963
JUMPV
line 2284
;2282:		}
;2283:		else
;2284:		{
line 2285
;2285:			return;
LABELV $986
line 2288
;2286:		}
;2287:	}
;2288:	else if (self->client->ps.fd.forcePowerLevel[FP_TELEPATHY] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 964
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1010
line 2289
;2289:	{ //Level 3 tricks everyone on the level..
line 2291
;2290:		gentity_t *ent;
;2291:		qboolean gotAtLeastOne = qfalse;
ADDRLP4 5356
CNSTI4 0
ASGNI4
line 2293
;2292:
;2293:		e = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRGP4 $1013
JUMPV
LABELV $1012
line 2296
;2294:
;2295:		while (e < MAX_CLIENTS)
;2296:		{
line 2297
;2297:			ent = &g_entities[e];
ADDRLP4 5352
CNSTI4 828
ADDRLP4 8
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2298
;2298:			e++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2300
;2299:
;2300:			if (ent && ent->inuse && ent->client)
ADDRLP4 5364
CNSTU4 0
ASGNU4
ADDRLP4 5352
INDIRP4
CVPU4 4
ADDRLP4 5364
INDIRU4
EQU4 $1015
ADDRLP4 5352
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1015
ADDRLP4 5352
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 5364
INDIRU4
EQU4 $1015
line 2301
;2301:			{
line 2302
;2302:				if (!ForcePowerUsableOn(self, ent, FP_TELEPATHY))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 5352
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 5368
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 5368
INDIRI4
CNSTI4 0
NEI4 $1017
line 2303
;2303:				{
line 2304
;2304:					continue;
ADDRGP4 $1013
JUMPV
LABELV $1017
line 2307
;2305:				}
;2306:				
;2307:				if (OnSameTeam(self, ent))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 5352
INDIRP4
ARGP4
ADDRLP4 5372
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 5372
INDIRI4
CNSTI4 0
EQI4 $1019
line 2308
;2308:				{
line 2309
;2309:					continue;
ADDRGP4 $1013
JUMPV
LABELV $1019
line 2312
;2310:				}
;2311:
;2312:				if (self == ent)
ADDRFP4 0
INDIRP4
CVPU4 4
ADDRLP4 5352
INDIRP4
CVPU4 4
NEU4 $1021
line 2313
;2313:				{
line 2314
;2314:					continue;
ADDRGP4 $1013
JUMPV
LABELV $1021
line 2317
;2315:				}
;2316:
;2317:				if (self->s.number == ent->s.number)
ADDRFP4 0
INDIRP4
INDIRI4
ADDRLP4 5352
INDIRP4
INDIRI4
NEI4 $1023
line 2318
;2318:				{
line 2319
;2319:					continue;
ADDRGP4 $1013
JUMPV
LABELV $1023
line 2322
;2320:				}
;2321:
;2322:				if (!ent->client->pers.connected)
ADDRLP4 5352
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1025
line 2323
;2323:				{
line 2324
;2324:					continue;
ADDRGP4 $1013
JUMPV
LABELV $1025
line 2327
;2325:				}
;2326:
;2327:				if (ent->client->sess.sessionTeam == TEAM_SPECTATOR)
ADDRLP4 5352
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1027
line 2328
;2328:				{
line 2329
;2329:					continue;
ADDRGP4 $1013
JUMPV
LABELV $1027
line 2332
;2330:				}
;2331:
;2332:				if (!trap_InPVS(self->client->ps.origin, ent->client->ps.origin))
ADDRLP4 5376
CNSTI4 408
ASGNI4
ADDRLP4 5380
CNSTI4 20
ASGNI4
ADDRFP4 0
INDIRP4
ADDRLP4 5376
INDIRI4
ADDP4
INDIRP4
ADDRLP4 5380
INDIRI4
ADDP4
ARGP4
ADDRLP4 5352
INDIRP4
ADDRLP4 5376
INDIRI4
ADDP4
INDIRP4
ADDRLP4 5380
INDIRI4
ADDP4
ARGP4
ADDRLP4 5384
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 5384
INDIRI4
CNSTI4 0
NEI4 $1029
line 2333
;2333:				{
line 2334
;2334:					continue;
ADDRGP4 $1013
JUMPV
LABELV $1029
line 2337
;2335:				}
;2336:
;2337:				WP_AddAsMindtricked(&self->client->ps.fd, ent->s.number);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ARGP4
ADDRLP4 5352
INDIRP4
INDIRI4
ARGI4
ADDRGP4 WP_AddAsMindtricked
CALLV
pop
line 2338
;2338:				gotAtLeastOne = qtrue;
ADDRLP4 5356
CNSTI4 1
ASGNI4
line 2339
;2339:			}
LABELV $1015
line 2340
;2340:		}
LABELV $1013
line 2295
ADDRLP4 8
INDIRI4
CNSTI4 32
LTI4 $1012
line 2342
;2341:
;2342:		if (gotAtLeastOne)
ADDRLP4 5356
INDIRI4
CNSTI4 0
EQI4 $963
line 2343
;2343:		{
line 2344
;2344:			self->client->ps.forceAllowDeactivateTime = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1328
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 2346
;2345:
;2346:			WP_ForcePowerStart( self, FP_TELEPATHY, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 2348
;2347:
;2348:			G_Sound( self, CHAN_AUTO, G_SoundIndex("sound/weapons/force/distract.wav") );
ADDRGP4 $1008
ARGP4
ADDRLP4 5360
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 5360
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2350
;2349:
;2350:			self->client->ps.forceHandExtend = HANDEXTEND_FORCEPUSH;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 1
ASGNI4
line 2351
;2351:			self->client->ps.forceHandExtendTime = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 2352
;2352:		}
line 2354
;2353:
;2354:		return;
ADDRGP4 $963
JUMPV
LABELV $1010
line 2357
;2355:	}
;2356:	else
;2357:	{
line 2358
;2358:		numListedEntities = trap_EntitiesInBox( mins, maxs, entityList, MAX_GENTITIES );
ADDRLP4 4128
ARGP4
ADDRLP4 4140
ARGP4
ADDRLP4 28
ARGP4
CNSTI4 1024
ARGI4
ADDRLP4 5352
ADDRGP4 trap_EntitiesInBox
CALLI4
ASGNI4
ADDRLP4 4124
ADDRLP4 5352
INDIRI4
ASGNI4
line 2360
;2359:
;2360:		e = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRGP4 $1036
JUMPV
LABELV $1035
line 2363
;2361:
;2362:		while (e < numListedEntities)
;2363:		{
line 2364
;2364:			ent = &g_entities[entityList[e]];
ADDRLP4 4
CNSTI4 828
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 28
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2366
;2365:
;2366:			if (ent)
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1038
line 2367
;2367:			{
line 2368
;2368:				if (ent->client)
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1040
line 2369
;2369:				{
line 2370
;2370:					VectorCopy(ent->client->ps.origin, thispush_org);
ADDRLP4 4180
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2371
;2371:				}
ADDRGP4 $1041
JUMPV
LABELV $1040
line 2373
;2372:				else
;2373:				{
line 2374
;2374:					VectorCopy(ent->s.pos.trBase, thispush_org);
ADDRLP4 4180
ADDRLP4 4
INDIRP4
CNSTI4 24
ADDP4
INDIRB
ASGNB 12
line 2375
;2375:				}
LABELV $1041
line 2376
;2376:			}
LABELV $1038
line 2378
;2377:
;2378:			if (ent)
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1042
line 2379
;2379:			{ //not in the arc, don't consider it
line 2380
;2380:				VectorCopy(self->client->ps.origin, tto);
ADDRLP4 4152
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2381
;2381:				tto[2] += self->client->ps.viewheight;
ADDRLP4 4152+8
ADDRLP4 4152+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 168
ADDP4
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 2382
;2382:				VectorSubtract(thispush_org, tto, a);
ADDRLP4 4168
ADDRLP4 4180
INDIRF4
ADDRLP4 4152
INDIRF4
SUBF4
ASGNF4
ADDRLP4 4168+4
ADDRLP4 4180+4
INDIRF4
ADDRLP4 4152+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 4168+8
ADDRLP4 4180+8
INDIRF4
ADDRLP4 4152+8
INDIRF4
SUBF4
ASGNF4
line 2383
;2383:				vectoangles(a, a);
ADDRLP4 4168
ARGP4
ADDRLP4 4168
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 2385
;2384:
;2385:				if (!ent->client)
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1051
line 2386
;2386:				{
line 2387
;2387:					entityList[e] = ENTITYNUM_NONE;
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 28
ADDP4
CNSTI4 1023
ASGNI4
line 2388
;2388:				}
ADDRGP4 $1052
JUMPV
LABELV $1051
line 2389
;2389:				else if (!InFieldOfVision(self->client->ps.viewangles, visionArc, a))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 5284
INDIRF4
ARGF4
ADDRLP4 4168
ARGP4
ADDRLP4 5356
ADDRGP4 InFieldOfVision
CALLI4
ASGNI4
ADDRLP4 5356
INDIRI4
CNSTI4 0
NEI4 $1053
line 2390
;2390:				{ //only bother with arc rules if the victim is a client
line 2391
;2391:					entityList[e] = ENTITYNUM_NONE;
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 28
ADDP4
CNSTI4 1023
ASGNI4
line 2392
;2392:				}
ADDRGP4 $1054
JUMPV
LABELV $1053
line 2393
;2393:				else if (!ForcePowerUsableOn(self, ent, FP_TELEPATHY))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 5360
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 5360
INDIRI4
CNSTI4 0
NEI4 $1055
line 2394
;2394:				{
line 2395
;2395:					entityList[e] = ENTITYNUM_NONE;
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 28
ADDP4
CNSTI4 1023
ASGNI4
line 2396
;2396:				}
ADDRGP4 $1056
JUMPV
LABELV $1055
line 2397
;2397:				else if (OnSameTeam(self, ent))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 5364
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 5364
INDIRI4
CNSTI4 0
EQI4 $1057
line 2398
;2398:				{
line 2399
;2399:					entityList[e] = ENTITYNUM_NONE;
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 28
ADDP4
CNSTI4 1023
ASGNI4
line 2400
;2400:				}
LABELV $1057
LABELV $1056
LABELV $1054
LABELV $1052
line 2401
;2401:			}
LABELV $1042
line 2402
;2402:			e++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2403
;2403:		}
LABELV $1036
line 2362
ADDRLP4 8
INDIRI4
ADDRLP4 4124
INDIRI4
LTI4 $1035
line 2404
;2404:	}
line 2406
;2405:
;2406:	e = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRGP4 $1060
JUMPV
LABELV $1059
line 2409
;2407:
;2408:	while (e < numListedEntities)
;2409:	{
line 2410
;2410:		ent = &g_entities[entityList[e]];
ADDRLP4 4
CNSTI4 828
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 28
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2412
;2411:
;2412:		if (ent && ent != self && ent->client)
ADDRLP4 5356
ADDRLP4 4
INDIRP4
CVPU4 4
ASGNU4
ADDRLP4 5360
CNSTU4 0
ASGNU4
ADDRLP4 5356
INDIRU4
ADDRLP4 5360
INDIRU4
EQU4 $1062
ADDRLP4 5356
INDIRU4
ADDRFP4 0
INDIRP4
CVPU4 4
EQU4 $1062
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 5360
INDIRU4
EQU4 $1062
line 2413
;2413:		{
line 2414
;2414:			gotatleastone = 1;
ADDRLP4 4164
CNSTI4 1
ASGNI4
line 2415
;2415:			WP_AddAsMindtricked(&self->client->ps.fd, ent->s.number);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ARGP4
ADDRLP4 4
INDIRP4
INDIRI4
ARGI4
ADDRGP4 WP_AddAsMindtricked
CALLV
pop
line 2416
;2416:		}
LABELV $1062
line 2418
;2417:
;2418:		e++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2419
;2419:	}
LABELV $1060
line 2408
ADDRLP4 8
INDIRI4
ADDRLP4 4124
INDIRI4
LTI4 $1059
line 2421
;2420:
;2421:	if (gotatleastone)
ADDRLP4 4164
INDIRI4
CNSTI4 0
EQI4 $1064
line 2422
;2422:	{
line 2423
;2423:		self->client->ps.forceAllowDeactivateTime = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1328
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 2425
;2424:
;2425:		WP_ForcePowerStart( self, FP_TELEPATHY, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 2427
;2426:
;2427:		G_Sound( self, CHAN_AUTO, G_SoundIndex("sound/weapons/force/distract.wav") );
ADDRGP4 $1008
ARGP4
ADDRLP4 5352
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 5352
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2429
;2428:
;2429:		self->client->ps.forceHandExtend = HANDEXTEND_FORCEPUSH;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 1
ASGNI4
line 2430
;2430:		self->client->ps.forceHandExtendTime = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 2431
;2431:	}
LABELV $1064
line 2432
;2432:}
LABELV $963
endproc ForceTelepathy 5388 28
export GEntity_UseFunc
proc GEntity_UseFunc 4 12
line 2435
;2433:
;2434:void GEntity_UseFunc( gentity_t *self, gentity_t *other, gentity_t *activator )
;2435:{
line 2436
;2436:	self->use(self, other, activator);
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 652
ADDP4
INDIRP4
CALLV
pop
line 2437
;2437:}
LABELV $1068
endproc GEntity_UseFunc 4 12
export CanCounterThrow
proc CanCounterThrow 8 8
line 2440
;2438:
;2439:qboolean CanCounterThrow(gentity_t *self, qboolean pull)
;2440:{
line 2441
;2441:	int powerUse = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 2443
;2442:
;2443:	if (self->client->ps.forceHandExtend != HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1070
line 2444
;2444:	{
line 2445
;2445:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $1069
JUMPV
LABELV $1070
line 2448
;2446:	}
;2447:
;2448:	if (self->client->ps.weaponTime > 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
CNSTI4 0
LEI4 $1072
line 2449
;2449:	{
line 2450
;2450:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $1069
JUMPV
LABELV $1072
line 2453
;2451:	}
;2452:
;2453:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $1074
line 2454
;2454:	{
line 2455
;2455:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $1069
JUMPV
LABELV $1074
line 2458
;2456:	}
;2457:
;2458:	if ( self->client->ps.powerups[PW_DISINT_4] > level.time )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 380
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $1076
line 2459
;2459:	{
line 2460
;2460:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $1069
JUMPV
LABELV $1076
line 2463
;2461:	}
;2462:
;2463:	if (pull)
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1079
line 2464
;2464:	{
line 2465
;2465:		powerUse = FP_PULL;
ADDRLP4 0
CNSTI4 4
ASGNI4
line 2466
;2466:	}
ADDRGP4 $1080
JUMPV
LABELV $1079
line 2468
;2467:	else
;2468:	{
line 2469
;2469:		powerUse = FP_PUSH;
ADDRLP4 0
CNSTI4 3
ASGNI4
line 2470
;2470:	}
LABELV $1080
line 2472
;2471:
;2472:	if ( !WP_ForcePowerUsable( self, powerUse ) )
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $1081
line 2473
;2473:	{
line 2474
;2474:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $1069
JUMPV
LABELV $1081
line 2477
;2475:	}
;2476:
;2477:	if (self->client->ps.groundEntityNum == ENTITYNUM_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 84
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $1083
line 2478
;2478:	{ //you cannot counter a push/pull if you're in the air
line 2479
;2479:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $1069
JUMPV
LABELV $1083
line 2482
;2480:	}
;2481:
;2482:	return 1;
CNSTI4 1
RETI4
LABELV $1069
endproc CanCounterThrow 8 8
export G_InGetUpAnim
proc G_InGetUpAnim 16 0
line 2486
;2483:}
;2484:
;2485:qboolean G_InGetUpAnim(playerState_t *ps)
;2486:{
line 2487
;2487:	switch( (ps->legsAnim&~ANIM_TOGGLEBIT) )
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
INDIRI4
CNSTI4 -2049
BANDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 929
LTI4 $1086
ADDRLP4 0
INDIRI4
CNSTI4 942
GTI4 $1086
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $1090-3716
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $1090
address $1089
address $1089
address $1089
address $1089
address $1089
address $1086
address $1086
address $1089
address $1089
address $1089
address $1089
address $1089
address $1089
address $1089
code
line 2488
;2488:	{
LABELV $1089
line 2501
;2489:	case BOTH_GETUP1:
;2490:	case BOTH_GETUP2:
;2491:	case BOTH_GETUP3:
;2492:	case BOTH_GETUP4:
;2493:	case BOTH_GETUP5:
;2494:	case BOTH_FORCE_GETUP_F1:
;2495:	case BOTH_FORCE_GETUP_F2:
;2496:	case BOTH_FORCE_GETUP_B1:
;2497:	case BOTH_FORCE_GETUP_B2:
;2498:	case BOTH_FORCE_GETUP_B3:
;2499:	case BOTH_FORCE_GETUP_B4:
;2500:	case BOTH_FORCE_GETUP_B5:
;2501:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $1085
JUMPV
LABELV $1086
line 2504
;2502:	}
;2503:
;2504:	switch( (ps->torsoAnim&~ANIM_TOGGLEBIT) )
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 100
ADDP4
INDIRI4
CNSTI4 -2049
BANDI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 929
LTI4 $1092
ADDRLP4 8
INDIRI4
CNSTI4 942
GTI4 $1092
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $1096-3716
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $1096
address $1095
address $1095
address $1095
address $1095
address $1095
address $1092
address $1092
address $1095
address $1095
address $1095
address $1095
address $1095
address $1095
address $1095
code
line 2505
;2505:	{
LABELV $1095
line 2518
;2506:	case BOTH_GETUP1:
;2507:	case BOTH_GETUP2:
;2508:	case BOTH_GETUP3:
;2509:	case BOTH_GETUP4:
;2510:	case BOTH_GETUP5:
;2511:	case BOTH_FORCE_GETUP_F1:
;2512:	case BOTH_FORCE_GETUP_F2:
;2513:	case BOTH_FORCE_GETUP_B1:
;2514:	case BOTH_FORCE_GETUP_B2:
;2515:	case BOTH_FORCE_GETUP_B3:
;2516:	case BOTH_FORCE_GETUP_B4:
;2517:	case BOTH_FORCE_GETUP_B5:
;2518:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $1085
JUMPV
LABELV $1092
line 2521
;2519:	}
;2520:
;2521:	return qfalse;
CNSTI4 0
RETI4
LABELV $1085
endproc G_InGetUpAnim 16 0
lit
align 4
LABELV $1099
byte 4 0
skip 8
export ForceThrow
code
proc ForceThrow 9680 28
line 2526
;2522:}
;2523:
;2524:extern void Touch_Button(gentity_t *ent, gentity_t *other, trace_t *trace );
;2525:void ForceThrow( gentity_t *self, qboolean pull )
;2526:{
line 2536
;2527:	//shove things in front of you away
;2528:	float		dist;
;2529:	gentity_t	*ent;
;2530:	int			entityList[MAX_GENTITIES];
;2531:	gentity_t	*push_list[MAX_GENTITIES];
;2532:	int			numListedEntities;
;2533:	vec3_t		mins, maxs;
;2534:	vec3_t		v;
;2535:	int			i, e;
;2536:	int			ent_count = 0;
ADDRLP4 9364
CNSTI4 0
ASGNI4
line 2537
;2537:	int			radius = 1024; //since it's view-based now. //350;
ADDRLP4 9360
CNSTI4 1024
ASGNI4
line 2542
;2538:	int			powerLevel;
;2539:	int			visionArc;
;2540:	int			pushPower;
;2541:	int			pushPowerMod;
;2542:	vec3_t		center, ent_org, size, forward, right, end, dir, fwdangles = {0};
ADDRLP4 9476
ADDRGP4 $1099
INDIRB
ASGNB 12
line 2549
;2543:	float		dot1;
;2544:	trace_t		tr;
;2545:	int			x;
;2546:	vec3_t		pushDir;
;2547:	vec3_t		thispush_org;
;2548:	vec3_t		tfrom, tto, fwd, a;
;2549:	float		knockback = pull?0:200;
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1101
ADDRLP4 9536
CNSTI4 0
ASGNI4
ADDRGP4 $1102
JUMPV
LABELV $1101
ADDRLP4 9536
CNSTI4 200
ASGNI4
LABELV $1102
ADDRLP4 9472
ADDRLP4 9536
INDIRI4
CVIF4 4
ASGNF4
line 2550
;2550:	int			powerUse = 0;
ADDRLP4 9396
CNSTI4 0
ASGNI4
line 2552
;2551:
;2552:	visionArc = 0;
ADDRLP4 9468
CNSTI4 0
ASGNI4
line 2554
;2553:
;2554:	if (self->client->ps.forceHandExtend != HANDEXTEND_NONE && (self->client->ps.forceHandExtend != HANDEXTEND_KNOCKDOWN || !G_InGetUpAnim(&self->client->ps)))
ADDRLP4 9540
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9544
ADDRLP4 9540
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
ASGNI4
ADDRLP4 9544
INDIRI4
CNSTI4 0
EQI4 $1103
ADDRLP4 9544
INDIRI4
CNSTI4 8
NEI4 $1105
ADDRLP4 9540
INDIRP4
ARGP4
ADDRLP4 9548
ADDRGP4 G_InGetUpAnim
CALLI4
ASGNI4
ADDRLP4 9548
INDIRI4
CNSTI4 0
NEI4 $1103
LABELV $1105
line 2555
;2555:	{
line 2556
;2556:		return;
ADDRGP4 $1098
JUMPV
LABELV $1103
line 2559
;2557:	}
;2558:
;2559:	if (self->client->ps.weaponTime > 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
CNSTI4 0
LEI4 $1106
line 2560
;2560:	{
line 2561
;2561:		return;
ADDRGP4 $1098
JUMPV
LABELV $1106
line 2564
;2562:	}
;2563:
;2564:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $1108
line 2565
;2565:	{
line 2566
;2566:		return;
ADDRGP4 $1098
JUMPV
LABELV $1108
line 2568
;2567:	}
;2568:	if ( self->client->ps.powerups[PW_DISINT_4] > level.time )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 380
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $1110
line 2569
;2569:	{
line 2570
;2570:		return;
ADDRGP4 $1098
JUMPV
LABELV $1110
line 2572
;2571:	}
;2572:	if (pull)
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1113
line 2573
;2573:	{
line 2574
;2574:		powerUse = FP_PULL;
ADDRLP4 9396
CNSTI4 4
ASGNI4
line 2575
;2575:	}
ADDRGP4 $1114
JUMPV
LABELV $1113
line 2577
;2576:	else
;2577:	{
line 2578
;2578:		powerUse = FP_PUSH;
ADDRLP4 9396
CNSTI4 3
ASGNI4
line 2579
;2579:	}
LABELV $1114
line 2581
;2580:
;2581:	if ( !WP_ForcePowerUsable( self, powerUse ) )
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 9396
INDIRI4
ARGI4
ADDRLP4 9552
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 9552
INDIRI4
CNSTI4 0
NEI4 $1115
line 2582
;2582:	{
line 2583
;2583:		return;
ADDRGP4 $1098
JUMPV
LABELV $1115
line 2586
;2584:	}
;2585:
;2586:	if (!pull && self->client->ps.saberLockTime > level.time && self->client->ps.saberLockFrame)
ADDRLP4 9556
CNSTI4 0
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 9556
INDIRI4
NEI4 $1117
ADDRLP4 9560
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9560
INDIRP4
CNSTI4 524
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $1117
ADDRLP4 9560
INDIRP4
CNSTI4 532
ADDP4
INDIRI4
ADDRLP4 9556
INDIRI4
EQI4 $1117
line 2587
;2587:	{
line 2588
;2588:		G_Sound( self, CHAN_BODY, G_SoundIndex( "sound/weapons/force/push.wav" ) );
ADDRGP4 $1120
ARGP4
ADDRLP4 9564
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 9564
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2589
;2589:		self->client->ps.powerups[PW_DISINT_4] = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 380
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 2591
;2590:
;2591:		self->client->ps.saberLockHits += self->client->ps.fd.forcePowerLevel[FP_PUSH]*2;
ADDRLP4 9568
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9572
ADDRLP4 9568
INDIRP4
CNSTI4 536
ADDP4
ASGNP4
ADDRLP4 9572
INDIRP4
ADDRLP4 9572
INDIRP4
INDIRI4
ADDRLP4 9568
INDIRP4
CNSTI4 956
ADDP4
INDIRI4
CNSTI4 1
LSHI4
ADDI4
ASGNI4
line 2593
;2592:
;2593:		WP_ForcePowerStart( self, FP_PUSH, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 3
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 2594
;2594:		return;
ADDRGP4 $1098
JUMPV
LABELV $1117
line 2597
;2595:	}
;2596:
;2597:	WP_ForcePowerStart( self, powerUse, 0 );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 9396
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 2600
;2598:
;2599:	//make sure this plays and that you cannot press fire for about 1 second after this
;2600:	if ( pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1122
line 2601
;2601:	{
line 2602
;2602:		G_Sound( self, CHAN_BODY, G_SoundIndex( "sound/weapons/force/pull.wav" ) );
ADDRGP4 $1124
ARGP4
ADDRLP4 9564
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 9564
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2603
;2603:		if (self->client->ps.forceHandExtend == HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1125
line 2604
;2604:		{
line 2605
;2605:			self->client->ps.forceHandExtend = HANDEXTEND_FORCEPULL;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 2
ASGNI4
line 2606
;2606:			self->client->ps.forceHandExtendTime = level.time + 400;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 400
ADDI4
ASGNI4
line 2607
;2607:		}
LABELV $1125
line 2608
;2608:		self->client->ps.powerups[PW_DISINT_4] = self->client->ps.forceHandExtendTime + 200;
ADDRLP4 9568
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9568
INDIRP4
CNSTI4 380
ADDP4
ADDRLP4 9568
INDIRP4
CNSTI4 1252
ADDP4
INDIRI4
CNSTI4 200
ADDI4
ASGNI4
line 2609
;2609:	}
ADDRGP4 $1123
JUMPV
LABELV $1122
line 2611
;2610:	else
;2611:	{
line 2612
;2612:		G_Sound( self, CHAN_BODY, G_SoundIndex( "sound/weapons/force/push.wav" ) );
ADDRGP4 $1120
ARGP4
ADDRLP4 9564
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 9564
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2613
;2613:		if (self->client->ps.forceHandExtend == HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1128
line 2614
;2614:		{
line 2615
;2615:			self->client->ps.forceHandExtend = HANDEXTEND_FORCEPUSH;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 1
ASGNI4
line 2616
;2616:			self->client->ps.forceHandExtendTime = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 2617
;2617:		}
ADDRGP4 $1129
JUMPV
LABELV $1128
line 2618
;2618:		else if (self->client->ps.forceHandExtend == HANDEXTEND_KNOCKDOWN && G_InGetUpAnim(&self->client->ps))
ADDRLP4 9568
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9568
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 8
NEI4 $1131
ADDRLP4 9568
INDIRP4
ARGP4
ADDRLP4 9572
ADDRGP4 G_InGetUpAnim
CALLI4
ASGNI4
ADDRLP4 9572
INDIRI4
CNSTI4 0
EQI4 $1131
line 2619
;2619:		{
line 2620
;2620:			if (self->client->ps.forceDodgeAnim > 4)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
INDIRI4
CNSTI4 4
LEI4 $1133
line 2621
;2621:			{
line 2622
;2622:				self->client->ps.forceDodgeAnim -= 8;
ADDRLP4 9576
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
ASGNP4
ADDRLP4 9576
INDIRP4
ADDRLP4 9576
INDIRP4
INDIRI4
CNSTI4 8
SUBI4
ASGNI4
line 2623
;2623:			}
LABELV $1133
line 2624
;2624:			self->client->ps.forceDodgeAnim += 8; //special case, play push on upper torso, but keep playing current knockdown anim on legs
ADDRLP4 9576
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
ASGNP4
ADDRLP4 9576
INDIRP4
ADDRLP4 9576
INDIRP4
INDIRI4
CNSTI4 8
ADDI4
ASGNI4
line 2625
;2625:		}
LABELV $1131
LABELV $1129
line 2626
;2626:		self->client->ps.powerups[PW_DISINT_4] = level.time + 1100;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 380
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1100
ADDI4
ASGNI4
line 2627
;2627:	}
LABELV $1123
line 2629
;2628:
;2629:	VectorCopy( self->client->ps.viewangles, fwdangles );
ADDRLP4 9476
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
INDIRB
ASGNB 12
line 2630
;2630:	AngleVectors( fwdangles, forward, right, NULL );
ADDRLP4 9476
ARGP4
ADDRLP4 9348
ARGP4
ADDRLP4 9524
ARGP4
CNSTP4 0
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 2631
;2631:	VectorCopy( self->client->ps.origin, center );
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2633
;2632:
;2633:	for ( i = 0 ; i < 3 ; i++ ) 
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $1136
line 2634
;2634:	{
line 2635
;2635:		mins[i] = center[i] - radius;
ADDRLP4 9564
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9564
INDIRI4
ADDRLP4 9436
ADDP4
ADDRLP4 9564
INDIRI4
ADDRLP4 8
ADDP4
INDIRF4
ADDRLP4 9360
INDIRI4
CVIF4 4
SUBF4
ASGNF4
line 2636
;2636:		maxs[i] = center[i] + radius;
ADDRLP4 9568
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9568
INDIRI4
ADDRLP4 9448
ADDP4
ADDRLP4 9568
INDIRI4
ADDRLP4 8
ADDP4
INDIRF4
ADDRLP4 9360
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 2637
;2637:	}
LABELV $1137
line 2633
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 3
LTI4 $1136
line 2640
;2638:
;2639:
;2640:	if (pull)
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1140
line 2641
;2641:	{
line 2642
;2642:		powerLevel = self->client->ps.fd.forcePowerLevel[FP_PULL];
ADDRLP4 9428
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 960
ADDP4
INDIRI4
ASGNI4
line 2643
;2643:		pushPower = 256*self->client->ps.fd.forcePowerLevel[FP_PULL];
ADDRLP4 9464
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 960
ADDP4
INDIRI4
CNSTI4 8
LSHI4
ASGNI4
line 2644
;2644:	}
ADDRGP4 $1141
JUMPV
LABELV $1140
line 2646
;2645:	else
;2646:	{
line 2647
;2647:		powerLevel = self->client->ps.fd.forcePowerLevel[FP_PUSH];
ADDRLP4 9428
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 956
ADDP4
INDIRI4
ASGNI4
line 2648
;2648:		pushPower = 256*self->client->ps.fd.forcePowerLevel[FP_PUSH];
ADDRLP4 9464
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 956
ADDP4
INDIRI4
CNSTI4 8
LSHI4
ASGNI4
line 2649
;2649:	}
LABELV $1141
line 2651
;2650:
;2651:	if (!powerLevel)
ADDRLP4 9428
INDIRI4
CNSTI4 0
NEI4 $1142
line 2652
;2652:	{ //Shouldn't have made it here..
line 2653
;2653:		return;
ADDRGP4 $1098
JUMPV
LABELV $1142
line 2656
;2654:	}
;2655:
;2656:	if (powerLevel == FORCE_LEVEL_2)
ADDRLP4 9428
INDIRI4
CNSTI4 2
NEI4 $1144
line 2657
;2657:	{
line 2658
;2658:		visionArc = 60;
ADDRLP4 9468
CNSTI4 60
ASGNI4
line 2659
;2659:	}
ADDRGP4 $1145
JUMPV
LABELV $1144
line 2660
;2660:	else if (powerLevel == FORCE_LEVEL_3)
ADDRLP4 9428
INDIRI4
CNSTI4 3
NEI4 $1146
line 2661
;2661:	{
line 2662
;2662:		visionArc = 180;
ADDRLP4 9468
CNSTI4 180
ASGNI4
line 2663
;2663:	}
LABELV $1146
LABELV $1145
line 2665
;2664:
;2665:	if (powerLevel == FORCE_LEVEL_1)
ADDRLP4 9428
INDIRI4
CNSTI4 1
NEI4 $1148
line 2666
;2666:	{ //can only push/pull targeted things at level 1
line 2667
;2667:		VectorCopy(self->client->ps.origin, tfrom);
ADDRLP4 9488
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2668
;2668:		tfrom[2] += self->client->ps.viewheight;
ADDRLP4 9488+8
ADDRLP4 9488+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 168
ADDP4
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 2669
;2669:		AngleVectors(self->client->ps.viewangles, fwd, NULL, NULL);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 9512
ARGP4
ADDRLP4 9564
CNSTP4 0
ASGNP4
ADDRLP4 9564
INDIRP4
ARGP4
ADDRLP4 9564
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 2670
;2670:		tto[0] = tfrom[0] + fwd[0]*radius/2;
ADDRLP4 9416
ADDRLP4 9488
INDIRF4
ADDRLP4 9512
INDIRF4
ADDRLP4 9360
INDIRI4
CVIF4 4
MULF4
CNSTF4 1073741824
DIVF4
ADDF4
ASGNF4
line 2671
;2671:		tto[1] = tfrom[1] + fwd[1]*radius/2;
ADDRLP4 9416+4
ADDRLP4 9488+4
INDIRF4
ADDRLP4 9512+4
INDIRF4
ADDRLP4 9360
INDIRI4
CVIF4 4
MULF4
CNSTF4 1073741824
DIVF4
ADDF4
ASGNF4
line 2672
;2672:		tto[2] = tfrom[2] + fwd[2]*radius/2;
ADDRLP4 9416+8
ADDRLP4 9488+8
INDIRF4
ADDRLP4 9512+8
INDIRF4
ADDRLP4 9360
INDIRI4
CVIF4 4
MULF4
CNSTF4 1073741824
DIVF4
ADDF4
ASGNF4
line 2674
;2673:
;2674:		trap_Trace(&tr, tfrom, NULL, NULL, tto, self->s.number, MASK_PLAYERSOLID);
ADDRLP4 8268
ARGP4
ADDRLP4 9488
ARGP4
ADDRLP4 9568
CNSTP4 0
ASGNP4
ADDRLP4 9568
INDIRP4
ARGP4
ADDRLP4 9568
INDIRP4
ARGP4
ADDRLP4 9416
ARGP4
ADDRFP4 0
INDIRP4
INDIRI4
ARGI4
CNSTI4 273
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2676
;2675:
;2676:		if (tr.fraction != 1.0 &&
ADDRLP4 8268+8
INDIRF4
CNSTF4 1065353216
EQF4 $1098
ADDRLP4 8268+52
INDIRI4
CNSTI4 1023
EQI4 $1098
line 2678
;2677:			tr.entityNum != ENTITYNUM_NONE)
;2678:		{
line 2679
;2679:			if (!g_entities[tr.entityNum].client && g_entities[tr.entityNum].s.eType == ET_GRAPPLE)
ADDRLP4 9572
CNSTI4 828
ASGNI4
ADDRLP4 9572
INDIRI4
ADDRLP4 8268+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1161
ADDRLP4 9572
INDIRI4
ADDRLP4 8268+52
INDIRI4
MULI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $1161
line 2680
;2680:			{ //g2animent
line 2681
;2681:				if (g_entities[tr.entityNum].s.genericenemyindex < level.time)
CNSTI4 828
ADDRLP4 8268+52
INDIRI4
MULI4
ADDRGP4 g_entities+172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1167
line 2682
;2682:				{
line 2683
;2683:					g_entities[tr.entityNum].s.genericenemyindex = level.time + 2000;
CNSTI4 828
ADDRLP4 8268+52
INDIRI4
MULI4
ADDRGP4 g_entities+172
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 2000
ADDI4
ASGNI4
line 2684
;2684:				}
LABELV $1167
line 2685
;2685:			}
LABELV $1161
line 2687
;2686:
;2687:			numListedEntities = 0;
ADDRLP4 9400
CNSTI4 0
ASGNI4
line 2688
;2688:			entityList[numListedEntities] = tr.entityNum;
ADDRLP4 9400
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4172
ADDP4
ADDRLP4 8268+52
INDIRI4
ASGNI4
line 2689
;2689:			numListedEntities++;
ADDRLP4 9400
ADDRLP4 9400
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2690
;2690:		}
line 2692
;2691:		else
;2692:		{
line 2694
;2693:			//didn't get anything, so just
;2694:			return;
line 2696
;2695:		}
;2696:	}
ADDRGP4 $1149
JUMPV
LABELV $1148
line 2698
;2697:	else
;2698:	{
line 2699
;2699:		numListedEntities = trap_EntitiesInBox( mins, maxs, entityList, MAX_GENTITIES );
ADDRLP4 9436
ARGP4
ADDRLP4 9448
ARGP4
ADDRLP4 4172
ARGP4
CNSTI4 1024
ARGI4
ADDRLP4 9564
ADDRGP4 trap_EntitiesInBox
CALLI4
ASGNI4
ADDRLP4 9400
ADDRLP4 9564
INDIRI4
ASGNI4
line 2701
;2700:
;2701:		e = 0;
ADDRLP4 4144
CNSTI4 0
ASGNI4
ADDRGP4 $1177
JUMPV
LABELV $1176
line 2704
;2702:
;2703:		while (e < numListedEntities)
;2704:		{
line 2705
;2705:			ent = &g_entities[entityList[e]];
ADDRLP4 4
CNSTI4 828
ADDRLP4 4144
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4172
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2707
;2706:
;2707:			if (!ent->client && ent->s.eType == ET_GRAPPLE)
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1179
ADDRLP4 4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $1179
line 2708
;2708:			{ //g2animent
line 2709
;2709:				if (ent->s.genericenemyindex < level.time)
ADDRLP4 4
INDIRP4
CNSTI4 172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1181
line 2710
;2710:				{
line 2711
;2711:					ent->s.genericenemyindex = level.time + 2000;
ADDRLP4 4
INDIRP4
CNSTI4 172
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 2000
ADDI4
ASGNI4
line 2712
;2712:				}
LABELV $1181
line 2713
;2713:			}
LABELV $1179
line 2715
;2714:
;2715:			if (ent)
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1185
line 2716
;2716:			{
line 2717
;2717:				if (ent->client)
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1187
line 2718
;2718:				{
line 2719
;2719:					VectorCopy(ent->client->ps.origin, thispush_org);
ADDRLP4 9368
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2720
;2720:				}
ADDRGP4 $1188
JUMPV
LABELV $1187
line 2722
;2721:				else
;2722:				{
line 2723
;2723:					VectorCopy(ent->s.pos.trBase, thispush_org);
ADDRLP4 9368
ADDRLP4 4
INDIRP4
CNSTI4 24
ADDP4
INDIRB
ASGNB 12
line 2724
;2724:				}
LABELV $1188
line 2725
;2725:			}
LABELV $1185
line 2727
;2726:
;2727:			if (ent)
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1189
line 2728
;2728:			{ //not in the arc, don't consider it
line 2729
;2729:				VectorCopy(self->client->ps.origin, tto);
ADDRLP4 9416
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2730
;2730:				tto[2] += self->client->ps.viewheight;
ADDRLP4 9416+8
ADDRLP4 9416+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 168
ADDP4
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 2731
;2731:				VectorSubtract(thispush_org, tto, a);
ADDRLP4 9404
ADDRLP4 9368
INDIRF4
ADDRLP4 9416
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9404+4
ADDRLP4 9368+4
INDIRF4
ADDRLP4 9416+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9404+8
ADDRLP4 9368+8
INDIRF4
ADDRLP4 9416+8
INDIRF4
SUBF4
ASGNF4
line 2732
;2732:				vectoangles(a, a);
ADDRLP4 9404
ARGP4
ADDRLP4 9404
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 2734
;2733:
;2734:				if (ent->client && !InFieldOfVision(self->client->ps.viewangles, visionArc, a) &&
ADDRLP4 9572
CNSTI4 408
ASGNI4
ADDRLP4 4
INDIRP4
ADDRLP4 9572
INDIRI4
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1198
ADDRFP4 0
INDIRP4
ADDRLP4 9572
INDIRI4
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 9468
INDIRI4
CVIF4 4
ARGF4
ADDRLP4 9404
ARGP4
ADDRLP4 9576
ADDRGP4 InFieldOfVision
CALLI4
ASGNI4
ADDRLP4 9576
INDIRI4
CNSTI4 0
NEI4 $1198
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 9396
INDIRI4
ARGI4
ADDRLP4 9580
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 9580
INDIRI4
CNSTI4 0
EQI4 $1198
line 2736
;2735:					ForcePowerUsableOn(self, ent, powerUse))
;2736:				{ //only bother with arc rules if the victim is a client
line 2737
;2737:					entityList[e] = ENTITYNUM_NONE;
ADDRLP4 4144
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4172
ADDP4
CNSTI4 1023
ASGNI4
line 2738
;2738:				}
ADDRGP4 $1199
JUMPV
LABELV $1198
line 2739
;2739:				else if (ent->client)
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1200
line 2740
;2740:				{
line 2741
;2741:					if (pull)
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1202
line 2742
;2742:					{
line 2743
;2743:						if (!ForcePowerUsableOn(self, ent, FP_PULL))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 4
ARGI4
ADDRLP4 9584
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 9584
INDIRI4
CNSTI4 0
NEI4 $1203
line 2744
;2744:						{
line 2745
;2745:							entityList[e] = ENTITYNUM_NONE;
ADDRLP4 4144
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4172
ADDP4
CNSTI4 1023
ASGNI4
line 2746
;2746:						}
line 2747
;2747:					}
ADDRGP4 $1203
JUMPV
LABELV $1202
line 2749
;2748:					else
;2749:					{
line 2750
;2750:						if (!ForcePowerUsableOn(self, ent, FP_PUSH))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 3
ARGI4
ADDRLP4 9584
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 9584
INDIRI4
CNSTI4 0
NEI4 $1206
line 2751
;2751:						{
line 2752
;2752:							entityList[e] = ENTITYNUM_NONE;
ADDRLP4 4144
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4172
ADDP4
CNSTI4 1023
ASGNI4
line 2753
;2753:						}
LABELV $1206
line 2754
;2754:					}
LABELV $1203
line 2755
;2755:				}
LABELV $1200
LABELV $1199
line 2756
;2756:			}
LABELV $1189
line 2757
;2757:			e++;
ADDRLP4 4144
ADDRLP4 4144
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2758
;2758:		}
LABELV $1177
line 2703
ADDRLP4 4144
INDIRI4
ADDRLP4 9400
INDIRI4
LTI4 $1176
line 2759
;2759:	}
LABELV $1149
line 2761
;2760:
;2761:	for ( e = 0 ; e < numListedEntities ; e++ ) 
ADDRLP4 4144
CNSTI4 0
ASGNI4
ADDRGP4 $1211
JUMPV
LABELV $1208
line 2762
;2762:	{
line 2763
;2763:		if (entityList[e] != ENTITYNUM_NONE &&
ADDRLP4 9564
ADDRLP4 4144
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4172
ADDP4
INDIRI4
ASGNI4
ADDRLP4 9564
INDIRI4
CNSTI4 1023
EQI4 $1212
ADDRLP4 9564
INDIRI4
CNSTI4 0
LTI4 $1212
ADDRLP4 9564
INDIRI4
CNSTI4 1024
GEI4 $1212
line 2766
;2764:			entityList[e] >= 0 &&
;2765:			entityList[e] < MAX_GENTITIES)
;2766:		{
line 2767
;2767:			ent = &g_entities[entityList[e]];
ADDRLP4 4
CNSTI4 828
ADDRLP4 4144
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4172
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2768
;2768:		}
ADDRGP4 $1213
JUMPV
LABELV $1212
line 2770
;2769:		else
;2770:		{
line 2771
;2771:			ent = NULL;
ADDRLP4 4
CNSTP4 0
ASGNP4
line 2772
;2772:		}
LABELV $1213
line 2774
;2773:
;2774:		if (!ent)
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1214
line 2775
;2775:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1214
line 2776
;2776:		if (ent == self)
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRFP4 0
INDIRP4
CVPU4 4
NEU4 $1216
line 2777
;2777:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1216
line 2778
;2778:		if (ent->client && OnSameTeam(ent, self))
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1218
ADDRLP4 4
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 9572
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 9572
INDIRI4
CNSTI4 0
EQI4 $1218
line 2779
;2779:		{
line 2780
;2780:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1218
line 2782
;2781:		}
;2782:		if ( !(ent->inuse) )
ADDRLP4 4
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1220
line 2783
;2783:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1220
line 2784
;2784:		if ( ent->s.eType != ET_MISSILE )
ADDRLP4 4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 3
EQI4 $1222
line 2785
;2785:		{
line 2786
;2786:			if ( ent->s.eType != ET_ITEM )
ADDRLP4 4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 2
EQI4 $1223
line 2787
;2787:			{
line 2789
;2788:				//FIXME: need pushable objects
;2789:				if ( Q_stricmp( "func_button", ent->classname ) == 0 )
ADDRGP4 $1228
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRLP4 9576
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 9576
INDIRI4
CNSTI4 0
NEI4 $1226
line 2790
;2790:				{//we might push it
line 2791
;2791:					if ( pull || !(ent->spawnflags&SPF_BUTTON_FPUSHABLE) )
ADDRLP4 9580
CNSTI4 0
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 9580
INDIRI4
NEI4 $1231
ADDRLP4 4
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
CNSTI4 2
BANDI4
ADDRLP4 9580
INDIRI4
NEI4 $1223
LABELV $1231
line 2792
;2792:					{//not force-pushable, never pullable
line 2793
;2793:						continue;
ADDRGP4 $1209
JUMPV
line 2795
;2794:					}
;2795:				}
LABELV $1226
line 2797
;2796:				else
;2797:				{
line 2798
;2798:					if ( ent->s.eFlags & EF_NODRAW )
ADDRLP4 4
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $1232
line 2799
;2799:					{
line 2800
;2800:						continue;
ADDRGP4 $1209
JUMPV
LABELV $1232
line 2802
;2801:					}
;2802:					if ( !ent->client )
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1223
line 2803
;2803:					{
line 2804
;2804:						if ( Q_stricmp( "lightsaber", ent->classname ) != 0 )
ADDRGP4 $1238
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRLP4 9580
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 9580
INDIRI4
CNSTI4 0
EQI4 $1223
line 2805
;2805:						{//not a lightsaber 
line 2806
;2806:							if ( Q_stricmp( "func_door", ent->classname ) != 0 || !(ent->spawnflags & 2/*MOVER_FORCE_ACTIVATE*/) )
ADDRGP4 $1241
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRLP4 9584
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 9588
CNSTI4 0
ASGNI4
ADDRLP4 9584
INDIRI4
ADDRLP4 9588
INDIRI4
NEI4 $1242
ADDRLP4 4
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
CNSTI4 2
BANDI4
ADDRLP4 9588
INDIRI4
NEI4 $1239
LABELV $1242
line 2807
;2807:							{//not a force-usable door
line 2808
;2808:								if ( Q_stricmp( "limb", ent->classname ) )
ADDRGP4 $1245
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRLP4 9592
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 9592
INDIRI4
CNSTI4 0
EQI4 $1223
line 2809
;2809:								{//not a limb
line 2810
;2810:									continue;
ADDRGP4 $1209
JUMPV
line 2812
;2811:								}
;2812:							}
LABELV $1239
line 2813
;2813:							else if ( ent->moverState != MOVER_POS1 && ent->moverState != MOVER_POS2 )
ADDRLP4 9592
ADDRLP4 4
INDIRP4
CNSTI4 512
ADDP4
INDIRI4
ASGNI4
ADDRLP4 9592
INDIRI4
CNSTI4 0
EQI4 $1223
ADDRLP4 9592
INDIRI4
CNSTI4 1
EQI4 $1223
line 2814
;2814:							{//not at rest
line 2815
;2815:								continue;
ADDRGP4 $1209
JUMPV
line 2817
;2816:							}
;2817:						}
line 2818
;2818:					}
line 2819
;2819:				}
line 2820
;2820:			}
line 2821
;2821:		}
LABELV $1222
line 2823
;2822:		else
;2823:		{
line 2824
;2824:			if ( ent->s.pos.trType == TR_STATIONARY && (ent->s.eFlags&EF_MISSILE_STICK) )
ADDRLP4 9580
CNSTI4 0
ASGNI4
ADDRLP4 4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
ADDRLP4 9580
INDIRI4
NEI4 $1248
ADDRLP4 4
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
CNSTI4 2097152
BANDI4
ADDRLP4 9580
INDIRI4
EQI4 $1248
line 2825
;2825:			{//can't force-push/pull stuck missiles (detpacks, tripmines)
line 2826
;2826:				continue;
ADDRGP4 $1209
JUMPV
LABELV $1248
line 2828
;2827:			}
;2828:			if ( ent->s.pos.trType == TR_STATIONARY && ent->s.weapon != WP_THERMAL )
ADDRLP4 4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1250
ADDRLP4 4
INDIRP4
CNSTI4 276
ADDP4
INDIRI4
CNSTI4 11
EQI4 $1250
line 2829
;2829:			{//only thermal detonators can be pushed once stopped
line 2830
;2830:				continue;
ADDRGP4 $1209
JUMPV
LABELV $1250
line 2832
;2831:			}
;2832:		}
LABELV $1223
line 2836
;2833:
;2834:		//this is all to see if we need to start a saber attack, if it's in flight, this doesn't matter
;2835:		// find the distance from the edge of the bounding box
;2836:		for ( i = 0 ; i < 3 ; i++ ) 
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $1252
line 2837
;2837:		{
line 2838
;2838:			if ( center[i] < ent->r.absmin[i] ) 
ADDRLP4 9576
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9576
INDIRI4
ADDRLP4 8
ADDP4
INDIRF4
ADDRLP4 9576
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 344
ADDP4
ADDP4
INDIRF4
GEF4 $1256
line 2839
;2839:			{
line 2840
;2840:				v[i] = ent->r.absmin[i] - center[i];
ADDRLP4 9580
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9580
INDIRI4
ADDRLP4 20
ADDP4
ADDRLP4 9580
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 344
ADDP4
ADDP4
INDIRF4
ADDRLP4 9580
INDIRI4
ADDRLP4 8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2841
;2841:			} else if ( center[i] > ent->r.absmax[i] ) 
ADDRGP4 $1257
JUMPV
LABELV $1256
ADDRLP4 9580
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9580
INDIRI4
ADDRLP4 8
ADDP4
INDIRF4
ADDRLP4 9580
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 356
ADDP4
ADDP4
INDIRF4
LEF4 $1258
line 2842
;2842:			{
line 2843
;2843:				v[i] = center[i] - ent->r.absmax[i];
ADDRLP4 9584
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 9584
INDIRI4
ADDRLP4 20
ADDP4
ADDRLP4 9584
INDIRI4
ADDRLP4 8
ADDP4
INDIRF4
ADDRLP4 9584
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 356
ADDP4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2844
;2844:			} else 
ADDRGP4 $1259
JUMPV
LABELV $1258
line 2845
;2845:			{
line 2846
;2846:				v[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 20
ADDP4
CNSTF4 0
ASGNF4
line 2847
;2847:			}
LABELV $1259
LABELV $1257
line 2848
;2848:		}
LABELV $1253
line 2836
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 3
LTI4 $1252
line 2850
;2849:
;2850:		VectorSubtract( ent->r.absmax, ent->r.absmin, size );
ADDRLP4 4160
ADDRLP4 4
INDIRP4
CNSTI4 356
ADDP4
INDIRF4
ADDRLP4 4
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 4160+4
ADDRLP4 4
INDIRP4
CNSTI4 360
ADDP4
INDIRF4
ADDRLP4 4
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 4160+8
ADDRLP4 4
INDIRP4
CNSTI4 364
ADDP4
INDIRF4
ADDRLP4 4
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2851
;2851:		VectorMA( ent->r.absmin, 0.5, size, ent_org );
ADDRLP4 9588
CNSTF4 1056964608
ASGNF4
ADDRLP4 4132
ADDRLP4 4
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
ADDRLP4 9588
INDIRF4
ADDRLP4 4160
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 4132+4
ADDRLP4 4
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
ADDRLP4 9588
INDIRF4
ADDRLP4 4160+4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 4132+8
ADDRLP4 4
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
CNSTF4 1056964608
ADDRLP4 4160+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 2853
;2852:
;2853:		VectorSubtract( ent_org, center, dir );
ADDRLP4 4148
ADDRLP4 4132
INDIRF4
ADDRLP4 8
INDIRF4
SUBF4
ASGNF4
ADDRLP4 4148+4
ADDRLP4 4132+4
INDIRF4
ADDRLP4 8+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 4148+8
ADDRLP4 4132+8
INDIRF4
ADDRLP4 8+8
INDIRF4
SUBF4
ASGNF4
line 2854
;2854:		VectorNormalize( dir );
ADDRLP4 4148
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 2855
;2855:		if ( (dot1 = DotProduct( dir, forward )) < 0.6 )
ADDRLP4 9592
ADDRLP4 4148
INDIRF4
ADDRLP4 9348
INDIRF4
MULF4
ADDRLP4 4148+4
INDIRF4
ADDRLP4 9348+4
INDIRF4
MULF4
ADDF4
ADDRLP4 4148+8
INDIRF4
ADDRLP4 9348+8
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 9460
ADDRLP4 9592
INDIRF4
ASGNF4
ADDRLP4 9592
INDIRF4
CNSTF4 1058642330
GEF4 $1272
line 2856
;2856:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1272
line 2858
;2857:
;2858:		dist = VectorLength( v );
ADDRLP4 20
ARGP4
ADDRLP4 9596
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 9380
ADDRLP4 9596
INDIRF4
ASGNF4
line 2863
;2859:
;2860:		//Now check and see if we can actually deflect it
;2861:		//method1
;2862:		//if within a certain range, deflect it
;2863:		if ( dist >= radius ) 
ADDRLP4 9380
INDIRF4
ADDRLP4 9360
INDIRI4
CVIF4 4
LTF4 $1278
line 2864
;2864:		{
line 2865
;2865:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1278
line 2869
;2866:		}
;2867:	
;2868:		//in PVS?
;2869:		if ( !ent->r.bmodel && !trap_InPVS( ent_org, self->client->ps.origin ) )
ADDRLP4 4
INDIRP4
CNSTI4 312
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1280
ADDRLP4 4132
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9600
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 9600
INDIRI4
CNSTI4 0
NEI4 $1280
line 2870
;2870:		{//must be in PVS
line 2871
;2871:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1280
line 2875
;2872:		}
;2873:
;2874:		//really should have a clear LOS to this thing...
;2875:		trap_Trace( &tr, self->client->ps.origin, vec3_origin, vec3_origin, ent_org, self->s.number, MASK_SHOT );
ADDRLP4 8268
ARGP4
ADDRLP4 9604
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 9604
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9608
ADDRGP4 vec3_origin
ASGNP4
ADDRLP4 9608
INDIRP4
ARGP4
ADDRLP4 9608
INDIRP4
ARGP4
ADDRLP4 4132
ARGP4
ADDRLP4 9604
INDIRP4
INDIRI4
ARGI4
CNSTI4 769
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2876
;2876:		if ( tr.fraction < 1.0f && tr.entityNum != ent->s.number )
ADDRLP4 8268+8
INDIRF4
CNSTF4 1065353216
GEF4 $1282
ADDRLP4 8268+52
INDIRI4
ADDRLP4 4
INDIRP4
INDIRI4
EQI4 $1282
line 2877
;2877:		{//must have clear LOS
line 2878
;2878:			continue;
ADDRGP4 $1209
JUMPV
LABELV $1282
line 2882
;2879:		}
;2880:
;2881:		// ok, we are within the radius, add us to the incoming list
;2882:		push_list[ent_count] = ent;
ADDRLP4 9364
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
ADDRLP4 4
INDIRP4
ASGNP4
line 2883
;2883:		ent_count++;
ADDRLP4 9364
ADDRLP4 9364
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2884
;2884:	}
LABELV $1209
line 2761
ADDRLP4 4144
ADDRLP4 4144
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1211
ADDRLP4 4144
INDIRI4
ADDRLP4 9400
INDIRI4
LTI4 $1208
line 2886
;2885:
;2886:	if ( ent_count )
ADDRLP4 9364
INDIRI4
CNSTI4 0
EQI4 $1286
line 2887
;2887:	{
line 2889
;2888:		//method1:
;2889:		for ( x = 0; x < ent_count; x++ )
ADDRLP4 32
CNSTI4 0
ASGNI4
ADDRGP4 $1291
JUMPV
LABELV $1288
line 2890
;2890:		{
line 2891
;2891:			int modPowerLevel = powerLevel;
ADDRLP4 9564
ADDRLP4 9428
INDIRI4
ASGNI4
line 2894
;2892:
;2893:	
;2894:			if (push_list[x]->client)
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1292
line 2895
;2895:			{
line 2896
;2896:				modPowerLevel = WP_AbsorbConversion(push_list[x], push_list[x]->client->ps.fd.forcePowerLevel[FP_ABSORB], self, powerUse, powerLevel, forcePowerNeeded[self->client->ps.fd.forcePowerLevel[powerUse]][powerUse]);
ADDRLP4 9568
CNSTI4 2
ASGNI4
ADDRLP4 9572
ADDRLP4 32
INDIRI4
ADDRLP4 9568
INDIRI4
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9572
INDIRP4
ARGP4
ADDRLP4 9576
CNSTI4 408
ASGNI4
ADDRLP4 9572
INDIRP4
ADDRLP4 9576
INDIRI4
ADDP4
INDIRP4
CNSTI4 984
ADDP4
INDIRI4
ARGI4
ADDRLP4 9580
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 9580
INDIRP4
ARGP4
ADDRLP4 9396
INDIRI4
ARGI4
ADDRLP4 9428
INDIRI4
ARGI4
ADDRLP4 9588
ADDRLP4 9396
INDIRI4
ADDRLP4 9568
INDIRI4
LSHI4
ASGNI4
ADDRLP4 9588
INDIRI4
CNSTI4 72
ADDRLP4 9588
INDIRI4
ADDRLP4 9580
INDIRP4
ADDRLP4 9576
INDIRI4
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded
ADDP4
ADDP4
INDIRI4
ARGI4
ADDRLP4 9592
ADDRGP4 WP_AbsorbConversion
CALLI4
ASGNI4
ADDRLP4 9564
ADDRLP4 9592
INDIRI4
ASGNI4
line 2897
;2897:				if (modPowerLevel == -1)
ADDRLP4 9564
INDIRI4
CNSTI4 -1
NEI4 $1294
line 2898
;2898:				{
line 2899
;2899:					modPowerLevel = powerLevel;
ADDRLP4 9564
ADDRLP4 9428
INDIRI4
ASGNI4
line 2900
;2900:				}
LABELV $1294
line 2901
;2901:			}
LABELV $1292
line 2903
;2902:
;2903:			pushPower = 256*modPowerLevel;
ADDRLP4 9464
ADDRLP4 9564
INDIRI4
CNSTI4 8
LSHI4
ASGNI4
line 2905
;2904:
;2905:			if (push_list[x]->client)
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1296
line 2906
;2906:			{
line 2907
;2907:				VectorCopy(push_list[x]->client->ps.origin, thispush_org);
ADDRLP4 9368
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2908
;2908:			}
ADDRGP4 $1297
JUMPV
LABELV $1296
line 2910
;2909:			else
;2910:			{
line 2911
;2911:				VectorCopy(push_list[x]->s.origin, thispush_org);
ADDRLP4 9368
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 92
ADDP4
INDIRB
ASGNB 12
line 2912
;2912:			}
LABELV $1297
line 2914
;2913:
;2914:			if ( push_list[x]->client )
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1298
line 2915
;2915:			{//FIXME: make enemy jedi able to hunker down and resist this?
line 2916
;2916:				int otherPushPower = push_list[x]->client->ps.fd.forcePowerLevel[powerUse];
ADDRLP4 9580
CNSTI4 2
ASGNI4
ADDRLP4 9568
ADDRLP4 9396
INDIRI4
ADDRLP4 9580
INDIRI4
LSHI4
ADDRLP4 32
INDIRI4
ADDRLP4 9580
INDIRI4
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
ASGNI4
line 2917
;2917:				qboolean canPullWeapon = qtrue;
ADDRLP4 9576
CNSTI4 1
ASGNI4
line 2918
;2918:				float dirLen = 0;
ADDRLP4 9572
CNSTF4 0
ASGNF4
line 2920
;2919:
;2920:				knockback = pull?0:200;
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1301
ADDRLP4 9584
CNSTI4 0
ASGNI4
ADDRGP4 $1302
JUMPV
LABELV $1301
ADDRLP4 9584
CNSTI4 200
ASGNI4
LABELV $1302
ADDRLP4 9472
ADDRLP4 9584
INDIRI4
CVIF4 4
ASGNF4
line 2922
;2921:
;2922:				pushPowerMod = pushPower;
ADDRLP4 9432
ADDRLP4 9464
INDIRI4
ASGNI4
line 2924
;2923:
;2924:				if (push_list[x]->client->pers.cmd.forwardmove ||
ADDRLP4 9588
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9592
CNSTI4 0
ASGNI4
ADDRLP4 9588
INDIRP4
CNSTI4 1408
ADDP4
INDIRI1
CVII4 1
ADDRLP4 9592
INDIRI4
NEI4 $1305
ADDRLP4 9588
INDIRP4
CNSTI4 1409
ADDP4
INDIRI1
CVII4 1
ADDRLP4 9592
INDIRI4
EQI4 $1303
LABELV $1305
line 2926
;2925:					push_list[x]->client->pers.cmd.rightmove)
;2926:				{ //if you are moving, you get one less level of defense
line 2927
;2927:					otherPushPower--;
ADDRLP4 9568
ADDRLP4 9568
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 2929
;2928:
;2929:					if (otherPushPower < 0)
ADDRLP4 9568
INDIRI4
CNSTI4 0
GEI4 $1306
line 2930
;2930:					{
line 2931
;2931:						otherPushPower = 0;
ADDRLP4 9568
CNSTI4 0
ASGNI4
line 2932
;2932:					}
LABELV $1306
line 2933
;2933:				}
LABELV $1303
line 2935
;2934:
;2935:				if (otherPushPower && CanCounterThrow(push_list[x], pull))
ADDRLP4 9568
INDIRI4
CNSTI4 0
EQI4 $1308
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 9596
ADDRGP4 CanCounterThrow
CALLI4
ASGNI4
ADDRLP4 9596
INDIRI4
CNSTI4 0
EQI4 $1308
line 2936
;2936:				{
line 2937
;2937:					if ( pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1310
line 2938
;2938:					{
line 2939
;2939:						G_Sound( push_list[x], CHAN_BODY, G_SoundIndex( "sound/weapons/force/pull.wav" ) );
ADDRGP4 $1124
ARGP4
ADDRLP4 9600
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 9600
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2940
;2940:						push_list[x]->client->ps.forceHandExtend = HANDEXTEND_FORCEPULL;
ADDRLP4 9604
CNSTI4 2
ASGNI4
ADDRLP4 32
INDIRI4
ADDRLP4 9604
INDIRI4
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
ADDRLP4 9604
INDIRI4
ASGNI4
line 2941
;2941:						push_list[x]->client->ps.forceHandExtendTime = level.time + 400;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 400
ADDI4
ASGNI4
line 2942
;2942:					}
ADDRGP4 $1311
JUMPV
LABELV $1310
line 2944
;2943:					else
;2944:					{
line 2945
;2945:						G_Sound( push_list[x], CHAN_BODY, G_SoundIndex( "sound/weapons/force/push.wav" ) );
ADDRGP4 $1120
ARGP4
ADDRLP4 9600
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 9600
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2946
;2946:						push_list[x]->client->ps.forceHandExtend = HANDEXTEND_FORCEPUSH;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 1
ASGNI4
line 2947
;2947:						push_list[x]->client->ps.forceHandExtendTime = level.time + 1000;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 2948
;2948:					}
LABELV $1311
line 2949
;2949:					push_list[x]->client->ps.powerups[PW_DISINT_4] = push_list[x]->client->ps.forceHandExtendTime + 200;
ADDRLP4 9600
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9600
INDIRP4
CNSTI4 380
ADDP4
ADDRLP4 9600
INDIRP4
CNSTI4 1252
ADDP4
INDIRI4
CNSTI4 200
ADDI4
ASGNI4
line 2953
;2950:
;2951:					//Make a counter-throw effect
;2952:
;2953:					if (otherPushPower >= modPowerLevel)
ADDRLP4 9568
INDIRI4
ADDRLP4 9564
INDIRI4
LTI4 $1314
line 2954
;2954:					{
line 2955
;2955:						pushPowerMod = 0;
ADDRLP4 9432
CNSTI4 0
ASGNI4
line 2956
;2956:						canPullWeapon = qfalse;
ADDRLP4 9576
CNSTI4 0
ASGNI4
line 2957
;2957:					}
ADDRGP4 $1315
JUMPV
LABELV $1314
line 2959
;2958:					else
;2959:					{
line 2960
;2960:						int powerDif = (modPowerLevel - otherPushPower);
ADDRLP4 9604
ADDRLP4 9564
INDIRI4
ADDRLP4 9568
INDIRI4
SUBI4
ASGNI4
line 2962
;2961:
;2962:						if (powerDif >= 3)
ADDRLP4 9604
INDIRI4
CNSTI4 3
LTI4 $1316
line 2963
;2963:						{
line 2964
;2964:							pushPowerMod -= pushPowerMod*0.2;
ADDRLP4 9608
ADDRLP4 9432
INDIRI4
CVIF4 4
ASGNF4
ADDRLP4 9432
ADDRLP4 9608
INDIRF4
CNSTF4 1045220557
ADDRLP4 9608
INDIRF4
MULF4
SUBF4
CVFI4 4
ASGNI4
line 2965
;2965:						}
ADDRGP4 $1317
JUMPV
LABELV $1316
line 2966
;2966:						else if (powerDif == 2)
ADDRLP4 9604
INDIRI4
CNSTI4 2
NEI4 $1318
line 2967
;2967:						{
line 2968
;2968:							pushPowerMod -= pushPowerMod*0.4;
ADDRLP4 9608
ADDRLP4 9432
INDIRI4
CVIF4 4
ASGNF4
ADDRLP4 9432
ADDRLP4 9608
INDIRF4
CNSTF4 1053609165
ADDRLP4 9608
INDIRF4
MULF4
SUBF4
CVFI4 4
ASGNI4
line 2969
;2969:						}
ADDRGP4 $1319
JUMPV
LABELV $1318
line 2970
;2970:						else if (powerDif == 1)
ADDRLP4 9604
INDIRI4
CNSTI4 1
NEI4 $1320
line 2971
;2971:						{
line 2972
;2972:							pushPowerMod -= pushPowerMod*0.8;
ADDRLP4 9608
ADDRLP4 9432
INDIRI4
CVIF4 4
ASGNF4
ADDRLP4 9432
ADDRLP4 9608
INDIRF4
CNSTF4 1061997773
ADDRLP4 9608
INDIRF4
MULF4
SUBF4
CVFI4 4
ASGNI4
line 2973
;2973:						}
LABELV $1320
LABELV $1319
LABELV $1317
line 2975
;2974:
;2975:						if (pushPowerMod < 0)
ADDRLP4 9432
INDIRI4
CNSTI4 0
GEI4 $1322
line 2976
;2976:						{
line 2977
;2977:							pushPowerMod = 0;
ADDRLP4 9432
CNSTI4 0
ASGNI4
line 2978
;2978:						}
LABELV $1322
line 2979
;2979:					}
LABELV $1315
line 2980
;2980:				}
LABELV $1308
line 2983
;2981:
;2982:				//shove them
;2983:				if ( pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1324
line 2984
;2984:				{
line 2985
;2985:					VectorSubtract( self->client->ps.origin, thispush_org, pushDir );
ADDRLP4 9600
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 9384
ADDRLP4 9600
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 9368
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9384+4
ADDRLP4 9600
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 9368+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9384+8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRLP4 9368+8
INDIRF4
SUBF4
ASGNF4
line 2987
;2986:
;2987:					if (push_list[x]->client && VectorLength(pushDir) <= 256)
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1325
ADDRLP4 9384
ARGP4
ADDRLP4 9604
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 9604
INDIRF4
CNSTF4 1132462080
GTF4 $1325
line 2988
;2988:					{
line 2989
;2989:						int randfact = 0;
ADDRLP4 9608
CNSTI4 0
ASGNI4
line 2991
;2990:
;2991:						if (modPowerLevel == FORCE_LEVEL_1)
ADDRLP4 9564
INDIRI4
CNSTI4 1
NEI4 $1332
line 2992
;2992:						{
line 2993
;2993:							randfact = 3;
ADDRLP4 9608
CNSTI4 3
ASGNI4
line 2994
;2994:						}
ADDRGP4 $1333
JUMPV
LABELV $1332
line 2995
;2995:						else if (modPowerLevel == FORCE_LEVEL_2)
ADDRLP4 9564
INDIRI4
CNSTI4 2
NEI4 $1334
line 2996
;2996:						{
line 2997
;2997:							randfact = 7;
ADDRLP4 9608
CNSTI4 7
ASGNI4
line 2998
;2998:						}
ADDRGP4 $1335
JUMPV
LABELV $1334
line 2999
;2999:						else if (modPowerLevel == FORCE_LEVEL_3)
ADDRLP4 9564
INDIRI4
CNSTI4 3
NEI4 $1336
line 3000
;3000:						{
line 3001
;3001:							randfact = 10;
ADDRLP4 9608
CNSTI4 10
ASGNI4
line 3002
;3002:						}
LABELV $1336
LABELV $1335
LABELV $1333
line 3004
;3003:
;3004:						if (!OnSameTeam(self, push_list[x]) && Q_irand(1, 10) <= randfact && canPullWeapon)
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
ADDRLP4 9612
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 9612
INDIRI4
CNSTI4 0
NEI4 $1325
CNSTI4 1
ARGI4
CNSTI4 10
ARGI4
ADDRLP4 9616
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 9616
INDIRI4
ADDRLP4 9608
INDIRI4
GTI4 $1325
ADDRLP4 9576
INDIRI4
CNSTI4 0
EQI4 $1325
line 3005
;3005:						{
line 3008
;3006:							vec3_t uorg, vecnorm;
;3007:
;3008:							VectorCopy(self->client->ps.origin, uorg);
ADDRLP4 9620
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 3009
;3009:							uorg[2] += 64;
ADDRLP4 9620+8
ADDRLP4 9620+8
INDIRF4
CNSTF4 1115684864
ADDF4
ASGNF4
line 3011
;3010:
;3011:							VectorSubtract(uorg, thispush_org, vecnorm);
ADDRLP4 9632
ADDRLP4 9620
INDIRF4
ADDRLP4 9368
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9632+4
ADDRLP4 9620+4
INDIRF4
ADDRLP4 9368+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9632+8
ADDRLP4 9620+8
INDIRF4
ADDRLP4 9368+8
INDIRF4
SUBF4
ASGNF4
line 3012
;3012:							VectorNormalize(vecnorm);
ADDRLP4 9632
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3014
;3013:
;3014:							TossClientWeapon(push_list[x], vecnorm, 500);
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
ADDRLP4 9632
ARGP4
CNSTF4 1140457472
ARGF4
ADDRGP4 TossClientWeapon
CALLV
pop
line 3015
;3015:						}
line 3016
;3016:					}
line 3017
;3017:				}
ADDRGP4 $1325
JUMPV
LABELV $1324
line 3019
;3018:				else
;3019:				{
line 3020
;3020:					VectorSubtract( thispush_org, self->client->ps.origin, pushDir );
ADDRLP4 9600
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 9384
ADDRLP4 9368
INDIRF4
ADDRLP4 9600
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9384+4
ADDRLP4 9368+4
INDIRF4
ADDRLP4 9600
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9384+8
ADDRLP4 9368+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
SUBF4
ASGNF4
line 3021
;3021:				}
LABELV $1325
line 3023
;3022:
;3023:				if (modPowerLevel > otherPushPower && push_list[x]->client)
ADDRLP4 9564
INDIRI4
ADDRLP4 9568
INDIRI4
LEI4 $1351
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1351
line 3024
;3024:				{
line 3025
;3025:					if (modPowerLevel == FORCE_LEVEL_3 &&
ADDRLP4 9564
INDIRI4
CNSTI4 3
NEI4 $1353
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 8
EQI4 $1353
line 3027
;3026:						push_list[x]->client->ps.forceHandExtend != HANDEXTEND_KNOCKDOWN)
;3027:					{
line 3028
;3028:						dirLen = VectorLength(pushDir);
ADDRLP4 9384
ARGP4
ADDRLP4 9600
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 9572
ADDRLP4 9600
INDIRF4
ASGNF4
line 3030
;3029:
;3030:						if (dirLen <= (64*((modPowerLevel - otherPushPower)-1)))
ADDRLP4 9572
INDIRF4
ADDRLP4 9564
INDIRI4
ADDRLP4 9568
INDIRI4
SUBI4
CNSTI4 6
LSHI4
CNSTI4 64
SUBI4
CVIF4 4
GTF4 $1355
line 3031
;3031:						{ //can only do a knockdown if fairly close
line 3032
;3032:							push_list[x]->client->ps.forceHandExtend = HANDEXTEND_KNOCKDOWN;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 8
ASGNI4
line 3033
;3033:							push_list[x]->client->ps.forceHandExtendTime = level.time + 700;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 700
ADDI4
ASGNI4
line 3034
;3034:							push_list[x]->client->ps.forceDodgeAnim = 0; //this toggles between 1 and 0, when it's 1 we should play the get up anim
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
CNSTI4 0
ASGNI4
line 3035
;3035:							push_list[x]->client->ps.quickerGetup = qtrue;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1264
ADDP4
CNSTI4 1
ASGNI4
line 3036
;3036:						}
LABELV $1355
line 3037
;3037:					}
LABELV $1353
line 3038
;3038:				}
LABELV $1351
line 3040
;3039:
;3040:				if (!dirLen)
ADDRLP4 9572
INDIRF4
CNSTF4 0
NEF4 $1358
line 3041
;3041:				{
line 3042
;3042:					dirLen = VectorLength(pushDir);
ADDRLP4 9384
ARGP4
ADDRLP4 9600
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 9572
ADDRLP4 9600
INDIRF4
ASGNF4
line 3043
;3043:				}
LABELV $1358
line 3045
;3044:
;3045:				VectorNormalize(pushDir);
ADDRLP4 9384
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3047
;3046:
;3047:				if (push_list[x]->client)
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1299
line 3048
;3048:				{
line 3050
;3049:					//escape a force grip if we're in one
;3050:					if (self->client->ps.fd.forceGripBeingGripped > level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LEF4 $1362
line 3051
;3051:					{ //force the enemy to stop gripping me if I managed to push him
line 3052
;3052:						if (push_list[x]->client->ps.fd.forceGripEntityNum == self->s.number)
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
ADDRFP4 0
INDIRP4
INDIRI4
NEI4 $1365
line 3053
;3053:						{
line 3054
;3054:							if (modPowerLevel >= push_list[x]->client->ps.fd.forcePowerLevel[FP_GRIP])
ADDRLP4 9564
INDIRI4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 968
ADDP4
INDIRI4
LTI4 $1367
line 3055
;3055:							{ //only break the grip if our push/pull level is >= their grip level
line 3056
;3056:								WP_ForcePowerStop(push_list[x], FP_GRIP);
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3057
;3057:								self->client->ps.fd.forceGripBeingGripped = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
CNSTF4 0
ASGNF4
line 3058
;3058:								push_list[x]->client->ps.fd.forceGripUseTime = level.time + 1000; //since we just broke out of it..
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1124
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 3059
;3059:							}
LABELV $1367
line 3060
;3060:						}
LABELV $1365
line 3061
;3061:					}
LABELV $1362
line 3063
;3062:
;3063:					push_list[x]->client->ps.otherKiller = self->s.number;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 760
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 3064
;3064:					push_list[x]->client->ps.otherKillerTime = level.time + 5000;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 764
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 3065
;3065:					push_list[x]->client->ps.otherKillerDebounceTime = level.time + 100;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 768
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 3067
;3066:
;3067:					pushPowerMod -= (dirLen*0.7);
ADDRLP4 9432
ADDRLP4 9432
INDIRI4
CVIF4 4
CNSTF4 1060320051
ADDRLP4 9572
INDIRF4
MULF4
SUBF4
CVFI4 4
ASGNI4
line 3068
;3068:					if (pushPowerMod < 16)
ADDRLP4 9432
INDIRI4
CNSTI4 16
GEI4 $1372
line 3069
;3069:					{
line 3070
;3070:						pushPowerMod = 16;
ADDRLP4 9432
CNSTI4 16
ASGNI4
line 3071
;3071:					}
LABELV $1372
line 3073
;3072:
;3073:					push_list[x]->client->ps.velocity[0] = pushDir[0]*pushPowerMod;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
ADDRLP4 9384
INDIRF4
ADDRLP4 9432
INDIRI4
CVIF4 4
MULF4
ASGNF4
line 3074
;3074:					push_list[x]->client->ps.velocity[1] = pushDir[1]*pushPowerMod;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
ADDRLP4 9384+4
INDIRF4
ADDRLP4 9432
INDIRI4
CVIF4 4
MULF4
ASGNF4
line 3076
;3075:
;3076:					if ((int)push_list[x]->client->ps.velocity[2] == 0)
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRF4
CVFI4 4
CNSTI4 0
NEI4 $1375
line 3077
;3077:					{ //if not going anywhere vertically, boost them up a bit
line 3078
;3078:						push_list[x]->client->ps.velocity[2] = pushDir[2]*pushPowerMod;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
ADDRLP4 9384+8
INDIRF4
ADDRLP4 9432
INDIRI4
CVIF4 4
MULF4
ASGNF4
line 3080
;3079:
;3080:						if (push_list[x]->client->ps.velocity[2] < 128)
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRF4
CNSTF4 1124073472
GEF4 $1299
line 3081
;3081:						{
line 3082
;3082:							push_list[x]->client->ps.velocity[2] = 128;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1124073472
ASGNF4
line 3083
;3083:						}
line 3084
;3084:					}
ADDRGP4 $1299
JUMPV
LABELV $1375
line 3086
;3085:					else
;3086:					{
line 3087
;3087:						push_list[x]->client->ps.velocity[2] = pushDir[2]*pushPowerMod;
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
ADDRLP4 9384+8
INDIRF4
ADDRLP4 9432
INDIRI4
CVIF4 4
MULF4
ASGNF4
line 3088
;3088:					}
line 3089
;3089:				}
line 3090
;3090:			}
ADDRGP4 $1299
JUMPV
LABELV $1298
line 3091
;3091:			else if ( push_list[x]->s.eType == ET_MISSILE && push_list[x]->s.pos.trType != TR_STATIONARY && (push_list[x]->s.pos.trType != TR_INTERPOLATE||push_list[x]->s.weapon != WP_THERMAL) )//rolling and stationary thermal detonators are dealt with below
ADDRLP4 9568
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ASGNP4
ADDRLP4 9568
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1381
ADDRLP4 9572
ADDRLP4 9568
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
ASGNI4
ADDRLP4 9572
INDIRI4
CNSTI4 0
EQI4 $1381
ADDRLP4 9572
INDIRI4
CNSTI4 1
NEI4 $1383
ADDRLP4 9568
INDIRP4
CNSTI4 276
ADDP4
INDIRI4
CNSTI4 11
EQI4 $1381
LABELV $1383
line 3092
;3092:			{
line 3093
;3093:				if ( pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1384
line 3094
;3094:				{//deflect rather than reflect?
line 3095
;3095:				}
ADDRGP4 $1382
JUMPV
LABELV $1384
line 3097
;3096:				else 
;3097:				{
line 3098
;3098:					G_ReflectMissile( self, push_list[x], forward );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
ADDRLP4 9348
ARGP4
ADDRGP4 G_ReflectMissile
CALLV
pop
line 3099
;3099:				}
line 3100
;3100:			}
ADDRGP4 $1382
JUMPV
LABELV $1381
line 3101
;3101:			else if ( !Q_stricmp( "func_door", push_list[x]->classname ) && (push_list[x]->spawnflags&2) )
ADDRGP4 $1241
ARGP4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRLP4 9576
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 9580
CNSTI4 0
ASGNI4
ADDRLP4 9576
INDIRI4
ADDRLP4 9580
INDIRI4
NEI4 $1386
ADDRLP4 9584
CNSTI4 2
ASGNI4
ADDRLP4 32
INDIRI4
ADDRLP4 9584
INDIRI4
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
ADDRLP4 9584
INDIRI4
BANDI4
ADDRLP4 9580
INDIRI4
EQI4 $1386
line 3102
;3102:			{//push/pull the door
line 3105
;3103:				vec3_t	pos1, pos2;
;3104:
;3105:				AngleVectors( self->client->ps.viewangles, forward, NULL, NULL );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 9348
ARGP4
ADDRLP4 9612
CNSTP4 0
ASGNP4
ADDRLP4 9612
INDIRP4
ARGP4
ADDRLP4 9612
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 3106
;3106:				VectorNormalize( forward );
ADDRLP4 9348
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3107
;3107:				VectorMA( self->client->ps.origin, radius, forward, end );
ADDRLP4 9616
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 9620
ADDRLP4 9360
INDIRI4
CVIF4 4
ASGNF4
ADDRLP4 9500
ADDRLP4 9616
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 9348
INDIRF4
ADDRLP4 9620
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 9500+4
ADDRLP4 9616
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 9348+4
INDIRF4
ADDRLP4 9620
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 9500+8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRLP4 9348+8
INDIRF4
ADDRLP4 9360
INDIRI4
CVIF4 4
MULF4
ADDF4
ASGNF4
line 3108
;3108:				trap_Trace( &tr, self->client->ps.origin, vec3_origin, vec3_origin, end, self->s.number, MASK_SHOT );
ADDRLP4 8268
ARGP4
ADDRLP4 9624
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 9624
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9628
ADDRGP4 vec3_origin
ASGNP4
ADDRLP4 9628
INDIRP4
ARGP4
ADDRLP4 9628
INDIRP4
ARGP4
ADDRLP4 9500
ARGP4
ADDRLP4 9624
INDIRP4
INDIRI4
ARGI4
CNSTI4 769
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 3109
;3109:				if ( tr.entityNum != push_list[x]->s.number || tr.fraction == 1.0 || tr.allsolid || tr.startsolid )
ADDRLP4 8268+52
INDIRI4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
INDIRI4
NEI4 $1399
ADDRLP4 8268+8
INDIRF4
CNSTF4 1065353216
EQF4 $1399
ADDRLP4 9632
CNSTI4 0
ASGNI4
ADDRLP4 8268
INDIRI4
ADDRLP4 9632
INDIRI4
NEI4 $1399
ADDRLP4 8268+4
INDIRI4
ADDRLP4 9632
INDIRI4
EQI4 $1392
LABELV $1399
line 3110
;3110:				{//must be pointing right at it
line 3111
;3111:					continue;
ADDRGP4 $1289
JUMPV
LABELV $1392
line 3114
;3112:				}
;3113:
;3114:				VectorSubtract( push_list[x]->r.absmax, push_list[x]->r.absmin, size );
ADDRLP4 9636
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
ASGNP4
ADDRLP4 9640
ADDRLP4 9636
INDIRP4
INDIRP4
ASGNP4
ADDRLP4 4160
ADDRLP4 9640
INDIRP4
CNSTI4 356
ADDP4
INDIRF4
ADDRLP4 9640
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9644
ADDRLP4 9636
INDIRP4
INDIRP4
ASGNP4
ADDRLP4 4160+4
ADDRLP4 9644
INDIRP4
CNSTI4 360
ADDP4
INDIRF4
ADDRLP4 9644
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 9648
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ASGNP4
ADDRLP4 4160+8
ADDRLP4 9648
INDIRP4
CNSTI4 364
ADDP4
INDIRF4
ADDRLP4 9648
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
SUBF4
ASGNF4
line 3115
;3115:				VectorMA( push_list[x]->r.absmin, 0.5, size, center );
ADDRLP4 9652
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
ASGNP4
ADDRLP4 9656
CNSTF4 1056964608
ASGNF4
ADDRLP4 8
ADDRLP4 9652
INDIRP4
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
ADDRLP4 9656
INDIRF4
ADDRLP4 4160
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 8+4
ADDRLP4 9652
INDIRP4
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
ADDRLP4 9656
INDIRF4
ADDRLP4 4160+4
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 8+8
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
CNSTF4 1056964608
ADDRLP4 4160+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 3116
;3116:				VectorAdd( center, push_list[x]->pos1, pos1 );
ADDRLP4 9660
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
ASGNP4
ADDRLP4 9588
ADDRLP4 8
INDIRF4
ADDRLP4 9660
INDIRP4
INDIRP4
CNSTI4 548
ADDP4
INDIRF4
ADDF4
ASGNF4
ADDRLP4 9588+4
ADDRLP4 8+4
INDIRF4
ADDRLP4 9660
INDIRP4
INDIRP4
CNSTI4 552
ADDP4
INDIRF4
ADDF4
ASGNF4
ADDRLP4 9588+8
ADDRLP4 8+8
INDIRF4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 556
ADDP4
INDIRF4
ADDF4
ASGNF4
line 3117
;3117:				VectorAdd( center, push_list[x]->pos2, pos2 );
ADDRLP4 9664
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
ASGNP4
ADDRLP4 9600
ADDRLP4 8
INDIRF4
ADDRLP4 9664
INDIRP4
INDIRP4
CNSTI4 560
ADDP4
INDIRF4
ADDF4
ASGNF4
ADDRLP4 9600+4
ADDRLP4 8+4
INDIRF4
ADDRLP4 9664
INDIRP4
INDIRP4
CNSTI4 564
ADDP4
INDIRF4
ADDF4
ASGNF4
ADDRLP4 9600+8
ADDRLP4 8+8
INDIRF4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 568
ADDP4
INDIRF4
ADDF4
ASGNF4
line 3119
;3118:
;3119:				if ( Distance( pos1, self->client->ps.origin ) < Distance( pos2, self->client->ps.origin ) )
ADDRLP4 9588
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9668
ADDRGP4 Distance
CALLF4
ASGNF4
ADDRLP4 9600
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 9672
ADDRGP4 Distance
CALLF4
ASGNF4
ADDRLP4 9668
INDIRF4
ADDRLP4 9672
INDIRF4
GEF4 $1414
line 3120
;3120:				{//pos1 is closer
line 3121
;3121:					if ( push_list[x]->moverState == MOVER_POS1 )
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 512
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1416
line 3122
;3122:					{//at the closest pos
line 3123
;3123:						if ( pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1415
line 3124
;3124:						{//trying to pull, but already at closest point, so screw it
line 3125
;3125:							continue;
ADDRGP4 $1289
JUMPV
line 3127
;3126:						}
;3127:					}
LABELV $1416
line 3128
;3128:					else if ( push_list[x]->moverState == MOVER_POS2 )
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 512
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1415
line 3129
;3129:					{//at farthest pos
line 3130
;3130:						if ( !pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
NEI4 $1415
line 3131
;3131:						{//trying to push, but already at farthest point, so screw it
line 3132
;3132:							continue;
ADDRGP4 $1289
JUMPV
line 3134
;3133:						}
;3134:					}
line 3135
;3135:				}
LABELV $1414
line 3137
;3136:				else
;3137:				{//pos2 is closer
line 3138
;3138:					if ( push_list[x]->moverState == MOVER_POS1 )
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 512
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1424
line 3139
;3139:					{//at the farthest pos
line 3140
;3140:						if ( !pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
NEI4 $1425
line 3141
;3141:						{//trying to push, but already at farthest point, so screw it
line 3142
;3142:							continue;
ADDRGP4 $1289
JUMPV
line 3144
;3143:						}
;3144:					}
LABELV $1424
line 3145
;3145:					else if ( push_list[x]->moverState == MOVER_POS2 )
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 512
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1428
line 3146
;3146:					{//at closest pos
line 3147
;3147:						if ( pull )
ADDRFP4 4
INDIRI4
CNSTI4 0
EQI4 $1430
line 3148
;3148:						{//trying to pull, but already at closest point, so screw it
line 3149
;3149:							continue;
ADDRGP4 $1289
JUMPV
LABELV $1430
line 3151
;3150:						}
;3151:					}
LABELV $1428
LABELV $1425
line 3152
;3152:				}
LABELV $1415
line 3153
;3153:				GEntity_UseFunc( push_list[x], self, self );
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
ADDRLP4 9676
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 9676
INDIRP4
ARGP4
ADDRLP4 9676
INDIRP4
ARGP4
ADDRGP4 GEntity_UseFunc
CALLV
pop
line 3154
;3154:			}
ADDRGP4 $1387
JUMPV
LABELV $1386
line 3155
;3155:			else if ( Q_stricmp( "func_button", push_list[x]->classname ) == 0 )
ADDRGP4 $1228
ARGP4
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRLP4 9588
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 9588
INDIRI4
CNSTI4 0
NEI4 $1432
line 3156
;3156:			{//pretend you pushed it
line 3157
;3157:				Touch_Button( push_list[x], self, NULL );
ADDRLP4 32
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 36
ADDP4
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
CNSTP4 0
ARGP4
ADDRGP4 Touch_Button
CALLV
pop
line 3158
;3158:				continue;
LABELV $1432
LABELV $1387
LABELV $1382
LABELV $1299
line 3160
;3159:			}
;3160:		}
LABELV $1289
line 2889
ADDRLP4 32
ADDRLP4 32
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1291
ADDRLP4 32
INDIRI4
ADDRLP4 9364
INDIRI4
LTI4 $1288
line 3161
;3161:	}
LABELV $1286
line 3165
;3162:
;3163:	//attempt to break any leftover grips
;3164:	//if we're still in a current grip that wasn't broken by the push, it will still remain
;3165:	self->client->dangerTime = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1792
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 3166
;3166:	self->client->ps.eFlags &= ~EF_INVULNERABLE;
ADDRLP4 9564
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
ASGNP4
ADDRLP4 9564
INDIRP4
ADDRLP4 9564
INDIRP4
INDIRI4
CNSTI4 -67108865
BANDI4
ASGNI4
line 3167
;3167:	self->client->invulnerableTimer = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1580
ADDP4
CNSTI4 0
ASGNI4
line 3169
;3168:
;3169:	if (self->client->ps.fd.forceGripBeingGripped > level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LEF4 $1435
line 3170
;3170:	{
line 3171
;3171:		self->client->ps.fd.forceGripBeingGripped = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
CNSTF4 0
ASGNF4
line 3172
;3172:	}
LABELV $1435
line 3173
;3173:}
LABELV $1098
endproc ForceThrow 9680 28
export WP_ForcePowerStop
proc WP_ForcePowerStop 32 12
line 3176
;3174:
;3175:void WP_ForcePowerStop( gentity_t *self, forcePowers_t forcePower )
;3176:{
line 3177
;3177:	int wasActive = self->client->ps.fd.forcePowersActive;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
ASGNI4
line 3179
;3178:
;3179:	self->client->ps.fd.forcePowersActive &= ~( 1 << forcePower );
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 3181
;3180:
;3181:	switch( (int)forcePower )
ADDRLP4 8
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
LTI4 $1440
ADDRLP4 8
INDIRI4
CNSTI4 14
GTI4 $1440
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $1499
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $1499
address $1442
address $1440
address $1444
address $1440
address $1440
address $1449
address $1456
address $1475
address $1482
address $1489
address $1486
address $1440
address $1440
address $1492
address $1453
code
line 3182
;3182:	{
LABELV $1442
line 3184
;3183:	case FP_HEAL:
;3184:		self->client->ps.fd.forceHealAmount = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1152
ADDP4
CNSTI4 0
ASGNI4
line 3185
;3185:		self->client->ps.fd.forceHealTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1148
ADDP4
CNSTI4 0
ASGNI4
line 3186
;3186:		break;
ADDRGP4 $1440
JUMPV
line 3188
;3187:	case FP_LEVITATION:
;3188:		break;
LABELV $1444
line 3190
;3189:	case FP_SPEED:
;3190:		if (wasActive & (1 << FP_SPEED))
ADDRLP4 0
INDIRI4
CNSTI4 4
BANDI4
CNSTI4 0
EQI4 $1440
line 3191
;3191:		{
line 3192
;3192:			G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_2-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1208
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 3193
;3193:		}
line 3194
;3194:		break;
ADDRGP4 $1440
JUMPV
line 3196
;3195:	case FP_PUSH:
;3196:		break;
line 3198
;3197:	case FP_PULL:
;3198:		break;
LABELV $1449
line 3200
;3199:	case FP_TELEPATHY:
;3200:		if (wasActive & (1 << FP_TELEPATHY))
ADDRLP4 0
INDIRI4
CNSTI4 32
BANDI4
CNSTI4 0
EQI4 $1450
line 3201
;3201:		{
line 3202
;3202:			G_Sound( self, CHAN_AUTO, G_SoundIndex("sound/weapons/force/distractstop.wav") );
ADDRGP4 $1452
ARGP4
ADDRLP4 16
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 3203
;3203:		}
LABELV $1450
line 3204
;3204:		self->client->ps.fd.forceMindtrickTargetIndex = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1156
ADDP4
CNSTI4 0
ASGNI4
line 3205
;3205:		self->client->ps.fd.forceMindtrickTargetIndex2 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1160
ADDP4
CNSTI4 0
ASGNI4
line 3206
;3206:		self->client->ps.fd.forceMindtrickTargetIndex3 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1164
ADDP4
CNSTI4 0
ASGNI4
line 3207
;3207:		self->client->ps.fd.forceMindtrickTargetIndex4 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1168
ADDP4
CNSTI4 0
ASGNI4
line 3208
;3208:		break;
ADDRGP4 $1440
JUMPV
LABELV $1453
line 3210
;3209:	case FP_SEE:
;3210:		if (wasActive & (1 << FP_SEE))
ADDRLP4 0
INDIRI4
CNSTI4 16384
BANDI4
CNSTI4 0
EQI4 $1440
line 3211
;3211:		{
line 3212
;3212:			G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_5-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1220
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 3213
;3213:		}
line 3214
;3214:		break;
ADDRGP4 $1440
JUMPV
LABELV $1456
line 3216
;3215:	case FP_GRIP:
;3216:		self->client->ps.fd.forceGripUseTime = level.time + 3000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1124
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 3217
;3217:		if (self->client->ps.fd.forcePowerLevel[FP_GRIP] > FORCE_LEVEL_1 &&
ADDRLP4 16
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 968
ADDP4
INDIRI4
CNSTI4 1
LEI4 $1458
ADDRLP4 20
CNSTI4 828
ADDRLP4 16
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 20
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1458
ADDRLP4 24
CNSTI4 0
ASGNI4
ADDRLP4 20
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 24
INDIRI4
LEI4 $1458
ADDRLP4 20
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 24
INDIRI4
EQI4 $1458
ADDRGP4 level+32
INDIRI4
CVIF4 4
ADDRLP4 20
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
INDIRF4
SUBF4
CNSTF4 1140457472
LEF4 $1458
line 3222
;3218:			g_entities[self->client->ps.fd.forceGripEntityNum].client &&
;3219:			g_entities[self->client->ps.fd.forceGripEntityNum].health > 0 &&
;3220:			g_entities[self->client->ps.fd.forceGripEntityNum].inuse &&
;3221:			(level.time - g_entities[self->client->ps.fd.forceGripEntityNum].client->ps.fd.forceGripStarted) > 500)
;3222:		{ //if we had our throat crushed in for more than half a second, gasp for air when we're let go
line 3223
;3223:			if (wasActive & (1 << FP_GRIP))
ADDRLP4 0
INDIRI4
CNSTI4 64
BANDI4
CNSTI4 0
EQI4 $1465
line 3224
;3224:			{
line 3225
;3225:				G_EntitySound( &g_entities[self->client->ps.fd.forceGripEntityNum], CHAN_VOICE, G_SoundIndex("*gasp.wav") );
ADDRGP4 $1467
ARGP4
ADDRLP4 28
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
CNSTI4 3
ARGI4
ADDRLP4 28
INDIRI4
ARGI4
ADDRGP4 G_EntitySound
CALLV
pop
line 3226
;3226:			}
LABELV $1465
line 3227
;3227:		}
LABELV $1458
line 3229
;3228:
;3229:		if (g_entities[self->client->ps.fd.forceGripEntityNum].client &&
ADDRLP4 28
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 28
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1468
ADDRLP4 28
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1468
line 3231
;3230:			g_entities[self->client->ps.fd.forceGripEntityNum].inuse)
;3231:		{
line 3233
;3232:			
;3233:			g_entities[self->client->ps.fd.forceGripEntityNum].client->ps.forceGripChangeMovetype = PM_NORMAL;
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1288
ADDP4
CNSTI4 0
ASGNI4
line 3234
;3234:		}
LABELV $1468
line 3236
;3235:
;3236:		if (self->client->ps.forceHandExtend == HANDEXTEND_FORCEGRIP)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1473
line 3237
;3237:		{
line 3238
;3238:			self->client->ps.forceHandExtendTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
CNSTI4 0
ASGNI4
line 3239
;3239:		}
LABELV $1473
line 3241
;3240:
;3241:		self->client->ps.fd.forceGripEntityNum = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
CNSTI4 1023
ASGNI4
line 3243
;3242:
;3243:		self->client->ps.powerups[PW_DISINT_4] = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 380
ADDP4
CNSTI4 0
ASGNI4
line 3244
;3244:		break;
ADDRGP4 $1440
JUMPV
LABELV $1475
line 3246
;3245:	case FP_LIGHTNING:
;3246:		if ( self->client->ps.fd.forcePowerLevel[FP_LIGHTNING] < FORCE_LEVEL_2 )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 972
ADDP4
INDIRI4
CNSTI4 2
GEI4 $1476
line 3247
;3247:		{//don't do it again for 3 seconds, minimum... FIXME: this should be automatic once regeneration is slower (normal)
line 3248
;3248:			self->client->ps.fd.forcePowerDebounce[FP_LIGHTNING] = level.time + 3000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 800
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 3249
;3249:		}
ADDRGP4 $1477
JUMPV
LABELV $1476
line 3251
;3250:		else
;3251:		{
line 3252
;3252:			self->client->ps.fd.forcePowerDebounce[FP_LIGHTNING] = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 800
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 3253
;3253:		}
LABELV $1477
line 3254
;3254:		if (self->client->ps.forceHandExtend == HANDEXTEND_FORCEGRIP)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1480
line 3255
;3255:		{
line 3256
;3256:			self->client->ps.forceHandExtendTime = 0; //reset hand position
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
CNSTI4 0
ASGNI4
line 3257
;3257:		}
LABELV $1480
line 3259
;3258:
;3259:		self->client->ps.activeForcePass = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 636
ADDP4
CNSTI4 0
ASGNI4
line 3260
;3260:		break;
ADDRGP4 $1440
JUMPV
LABELV $1482
line 3262
;3261:	case FP_RAGE:
;3262:		self->client->ps.fd.forceRageRecoveryTime = level.time + 10000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1172
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 10000
ADDI4
ASGNI4
line 3263
;3263:		if (wasActive & (1 << FP_RAGE))
ADDRLP4 0
INDIRI4
CNSTI4 256
BANDI4
CNSTI4 0
EQI4 $1440
line 3264
;3264:		{
line 3265
;3265:			G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_3-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1212
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 3266
;3266:		}
line 3267
;3267:		break;
ADDRGP4 $1440
JUMPV
LABELV $1486
line 3269
;3268:	case FP_ABSORB:
;3269:		if (wasActive & (1 << FP_ABSORB))
ADDRLP4 0
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $1440
line 3270
;3270:		{
line 3271
;3271:			G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_3-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1212
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 3272
;3272:		}
line 3273
;3273:		break;
ADDRGP4 $1440
JUMPV
LABELV $1489
line 3275
;3274:	case FP_PROTECT:
;3275:		if (wasActive & (1 << FP_PROTECT))
ADDRLP4 0
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $1440
line 3276
;3276:		{
line 3277
;3277:			G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_3-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1212
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 3278
;3278:		}
line 3279
;3279:		break;
ADDRGP4 $1440
JUMPV
LABELV $1492
line 3281
;3280:	case FP_DRAIN:
;3281:		if ( self->client->ps.fd.forcePowerLevel[FP_DRAIN] < FORCE_LEVEL_2 )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
CNSTI4 2
GEI4 $1493
line 3282
;3282:		{//don't do it again for 3 seconds, minimum...
line 3283
;3283:			self->client->ps.fd.forcePowerDebounce[FP_DRAIN] = level.time + 3000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 824
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 3284
;3284:		}
ADDRGP4 $1494
JUMPV
LABELV $1493
line 3286
;3285:		else
;3286:		{
line 3287
;3287:			self->client->ps.fd.forcePowerDebounce[FP_DRAIN] = level.time + 1500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 824
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
ASGNI4
line 3288
;3288:		}
LABELV $1494
line 3290
;3289:
;3290:		if (self->client->ps.forceHandExtend == HANDEXTEND_FORCEGRIP)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1497
line 3291
;3291:		{
line 3292
;3292:			self->client->ps.forceHandExtendTime = 0; //reset hand position
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
CNSTI4 0
ASGNI4
line 3293
;3293:		}
LABELV $1497
line 3295
;3294:
;3295:		self->client->ps.activeForcePass = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 636
ADDP4
CNSTI4 0
ASGNI4
line 3297
;3296:	default:
;3297:		break;
LABELV $1440
line 3299
;3298:	}
;3299:}
LABELV $1438
endproc WP_ForcePowerStop 32 12
export DoGripAction
proc DoGripAction 1272 32
line 3302
;3300:
;3301:void DoGripAction(gentity_t *self, forcePowers_t forcePower)
;3302:{
line 3304
;3303:	gentity_t *gripEnt;
;3304:	int gripLevel = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 3309
;3305:	trace_t tr;
;3306:	vec3_t a;
;3307:	vec3_t fwd, fwd_o, start_o, nvel;
;3308:
;3309:	self->client->dangerTime = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1792
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 3310
;3310:	self->client->ps.eFlags &= ~EF_INVULNERABLE;
ADDRLP4 1148
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
ASGNP4
ADDRLP4 1148
INDIRP4
ADDRLP4 1148
INDIRP4
INDIRI4
CNSTI4 -67108865
BANDI4
ASGNI4
line 3311
;3311:	self->client->invulnerableTimer = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1580
ADDP4
CNSTI4 0
ASGNI4
line 3313
;3312:
;3313:	gripEnt = &g_entities[self->client->ps.fd.forceGripEntityNum];
ADDRLP4 0
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 3315
;3314:
;3315:	if (!gripEnt || !gripEnt->client || !gripEnt->inuse || gripEnt->health < 1 || !ForcePowerUsableOn(self, gripEnt, FP_GRIP))
ADDRLP4 1156
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 1156
INDIRU4
EQU4 $1507
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 1156
INDIRU4
EQU4 $1507
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1507
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
LTI4 $1507
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRLP4 1160
ADDRGP4 ForcePowerUsableOn
CALLI4
ASGNI4
ADDRLP4 1160
INDIRI4
CNSTI4 0
NEI4 $1502
LABELV $1507
line 3316
;3316:	{
line 3317
;3317:		WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3318
;3318:		self->client->ps.fd.forceGripEntityNum = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
CNSTI4 1023
ASGNI4
line 3320
;3319:
;3320:		if (gripEnt && gripEnt->client && gripEnt->inuse)
ADDRLP4 1168
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 1168
INDIRU4
EQU4 $1500
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 1168
INDIRU4
EQU4 $1500
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1500
line 3321
;3321:		{
line 3322
;3322:			gripEnt->client->ps.forceGripChangeMovetype = PM_NORMAL;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1288
ADDP4
CNSTI4 0
ASGNI4
line 3323
;3323:		}
line 3324
;3324:		return;
ADDRGP4 $1500
JUMPV
LABELV $1502
line 3327
;3325:	}
;3326:
;3327:	VectorSubtract(gripEnt->client->ps.origin, self->client->ps.origin, a);
ADDRLP4 1164
CNSTI4 408
ASGNI4
ADDRLP4 1168
ADDRLP4 0
INDIRP4
ADDRLP4 1164
INDIRI4
ADDP4
ASGNP4
ADDRLP4 1172
CNSTI4 20
ASGNI4
ADDRLP4 1176
ADDRFP4 0
INDIRP4
ADDRLP4 1164
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8
ADDRLP4 1168
INDIRP4
INDIRP4
ADDRLP4 1172
INDIRI4
ADDP4
INDIRF4
ADDRLP4 1176
INDIRP4
INDIRP4
ADDRLP4 1172
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1180
CNSTI4 24
ASGNI4
ADDRLP4 8+4
ADDRLP4 1168
INDIRP4
INDIRP4
ADDRLP4 1180
INDIRI4
ADDP4
INDIRF4
ADDRLP4 1176
INDIRP4
INDIRP4
ADDRLP4 1180
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1184
CNSTI4 408
ASGNI4
ADDRLP4 1188
CNSTI4 28
ASGNI4
ADDRLP4 8+8
ADDRLP4 0
INDIRP4
ADDRLP4 1184
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1188
INDIRI4
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
ADDRLP4 1184
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1188
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 3329
;3328:	
;3329:	trap_Trace(&tr, self->client->ps.origin, NULL, NULL, gripEnt->client->ps.origin, self->s.number, MASK_PLAYERSOLID);
ADDRLP4 20
ARGP4
ADDRLP4 1192
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1196
CNSTI4 408
ASGNI4
ADDRLP4 1200
CNSTI4 20
ASGNI4
ADDRLP4 1192
INDIRP4
ADDRLP4 1196
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1200
INDIRI4
ADDP4
ARGP4
ADDRLP4 1204
CNSTP4 0
ASGNP4
ADDRLP4 1204
INDIRP4
ARGP4
ADDRLP4 1204
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ADDRLP4 1196
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1200
INDIRI4
ADDP4
ARGP4
ADDRLP4 1192
INDIRP4
INDIRI4
ARGI4
CNSTI4 273
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 3331
;3330:
;3331:	gripLevel = WP_AbsorbConversion(gripEnt, gripEnt->client->ps.fd.forcePowerLevel[FP_ABSORB], self, FP_GRIP, self->client->ps.fd.forcePowerLevel[FP_GRIP], forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_GRIP]][FP_GRIP]);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1212
CNSTI4 408
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 1212
INDIRI4
ADDP4
INDIRP4
CNSTI4 984
ADDP4
INDIRI4
ARGI4
ADDRLP4 1216
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1216
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRLP4 1220
ADDRLP4 1216
INDIRP4
ADDRLP4 1212
INDIRI4
ADDP4
INDIRP4
CNSTI4 968
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1220
INDIRI4
ARGI4
CNSTI4 72
ADDRLP4 1220
INDIRI4
MULI4
ADDRGP4 forcePowerNeeded+24
ADDP4
INDIRI4
ARGI4
ADDRLP4 1224
ADDRGP4 WP_AbsorbConversion
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 1224
INDIRI4
ASGNI4
line 3333
;3332:
;3333:	if (gripLevel == -1)
ADDRLP4 4
INDIRI4
CNSTI4 -1
NEI4 $1513
line 3334
;3334:	{
line 3335
;3335:		gripLevel = self->client->ps.fd.forcePowerLevel[FP_GRIP];
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 968
ADDP4
INDIRI4
ASGNI4
line 3336
;3336:	}
LABELV $1513
line 3338
;3337:
;3338:	if (!gripLevel)
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $1515
line 3339
;3339:	{
line 3340
;3340:		WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3341
;3341:		return;
ADDRGP4 $1500
JUMPV
LABELV $1515
line 3344
;3342:	}
;3343:
;3344:	if (VectorLength(a) > MAX_GRIP_DISTANCE)
ADDRLP4 8
ARGP4
ADDRLP4 1228
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1228
INDIRF4
CNSTF4 1132462080
LEF4 $1517
line 3345
;3345:	{
line 3346
;3346:		WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3347
;3347:		return;
ADDRGP4 $1500
JUMPV
LABELV $1517
line 3350
;3348:	}
;3349:
;3350:	if ( !InFront( gripEnt->client->ps.origin, self->client->ps.origin, self->client->ps.viewangles, 0.9f ) &&
ADDRLP4 1232
CNSTI4 408
ASGNI4
ADDRLP4 1236
CNSTI4 20
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 1232
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1236
INDIRI4
ADDP4
ARGP4
ADDRLP4 1240
ADDRFP4 0
INDIRP4
ADDRLP4 1232
INDIRI4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1240
INDIRP4
ADDRLP4 1236
INDIRI4
ADDP4
ARGP4
ADDRLP4 1240
INDIRP4
CNSTI4 156
ADDP4
ARGP4
CNSTF4 1063675494
ARGF4
ADDRLP4 1244
ADDRGP4 InFront
CALLI4
ASGNI4
ADDRLP4 1244
INDIRI4
CNSTI4 0
NEI4 $1519
ADDRLP4 4
INDIRI4
CNSTI4 3
GEI4 $1519
line 3352
;3351:		gripLevel < FORCE_LEVEL_3)
;3352:	{
line 3353
;3353:		WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3354
;3354:		return;
ADDRGP4 $1500
JUMPV
LABELV $1519
line 3357
;3355:	}
;3356:
;3357:	if (tr.fraction != 1 &&
ADDRLP4 20+8
INDIRF4
CNSTF4 1065353216
EQF4 $1521
ADDRLP4 20+52
INDIRI4
ADDRLP4 0
INDIRP4
INDIRI4
EQI4 $1521
ADDRLP4 4
INDIRI4
CNSTI4 3
GEI4 $1521
line 3360
;3358:		tr.entityNum != gripEnt->s.number &&
;3359:		gripLevel < FORCE_LEVEL_3)
;3360:	{
line 3361
;3361:		WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3362
;3362:		return;
ADDRGP4 $1500
JUMPV
LABELV $1521
line 3365
;3363:	}
;3364:
;3365:	if (self->client->ps.fd.forcePowerDebounce[FP_GRIP] < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 796
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1525
line 3366
;3366:	{ //2 damage per second while choking, resulting in 10 damage total (not including The Squeeze<tm>)
line 3367
;3367:		self->client->ps.fd.forcePowerDebounce[FP_GRIP] = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 796
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 3368
;3368:		G_Damage(gripEnt, self, self, NULL, NULL, 2, DAMAGE_NO_ARMOR, MOD_FORCE_DARK);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1248
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1248
INDIRP4
ARGP4
ADDRLP4 1248
INDIRP4
ARGP4
ADDRLP4 1252
CNSTP4 0
ASGNP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRLP4 1256
CNSTI4 2
ASGNI4
ADDRLP4 1256
INDIRI4
ARGI4
ADDRLP4 1256
INDIRI4
ARGI4
CNSTI4 27
ARGI4
ADDRGP4 G_Damage
CALLV
pop
line 3369
;3369:	}
LABELV $1525
line 3371
;3370:
;3371:	if (gripLevel == FORCE_LEVEL_1)
ADDRLP4 4
INDIRI4
CNSTI4 1
NEI4 $1529
line 3372
;3372:	{
line 3373
;3373:		gripEnt->client->ps.fd.forceGripBeingGripped = level.time + 1000;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
CVIF4 4
ASGNF4
line 3375
;3374:		
;3375:		if ((level.time - gripEnt->client->ps.fd.forceGripStarted) > 5000)
ADDRGP4 level+32
INDIRI4
CVIF4 4
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
INDIRF4
SUBF4
CNSTF4 1167867904
LEF4 $1500
line 3376
;3376:		{
line 3377
;3377:			WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3378
;3378:		}
line 3379
;3379:		return;
ADDRGP4 $1500
JUMPV
LABELV $1529
line 3382
;3380:	}
;3381:
;3382:	if (gripLevel == FORCE_LEVEL_2)
ADDRLP4 4
INDIRI4
CNSTI4 2
NEI4 $1535
line 3383
;3383:	{
line 3384
;3384:		gripEnt->client->ps.fd.forceGripBeingGripped = level.time + 1000;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
CVIF4 4
ASGNF4
line 3386
;3385:
;3386:		if (gripEnt->client->ps.forceGripMoveInterval < level.time)
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1284
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1538
line 3387
;3387:		{
line 3388
;3388:			gripEnt->client->ps.velocity[2] = 30;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1106247680
ASGNF4
line 3390
;3389:
;3390:			gripEnt->client->ps.forceGripMoveInterval = level.time + 300; //only update velocity every 300ms, so as to avoid heavy bandwidth usage
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1284
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 300
ADDI4
ASGNI4
line 3391
;3391:		}
LABELV $1538
line 3393
;3392:
;3393:		gripEnt->client->ps.otherKiller = self->s.number;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 760
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 3394
;3394:		gripEnt->client->ps.otherKillerTime = level.time + 5000;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 764
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 3395
;3395:		gripEnt->client->ps.otherKillerDebounceTime = level.time + 100;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 768
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 3397
;3396:
;3397:		gripEnt->client->ps.forceGripChangeMovetype = PM_FLOAT;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1288
ADDP4
CNSTI4 1
ASGNI4
line 3399
;3398:
;3399:		if ((level.time - gripEnt->client->ps.fd.forceGripStarted) > 3000 && !self->client->ps.fd.forceGripDamageDebounceTime)
ADDRLP4 1248
CNSTI4 408
ASGNI4
ADDRGP4 level+32
INDIRI4
CVIF4 4
ADDRLP4 0
INDIRP4
ADDRLP4 1248
INDIRI4
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
INDIRF4
SUBF4
CNSTF4 1161527296
LEF4 $1544
ADDRFP4 0
INDIRP4
ADDRLP4 1248
INDIRI4
ADDP4
INDIRP4
CNSTI4 1112
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1544
line 3400
;3400:		{ //if we managed to lift him into the air for 2 seconds, give him a crack
line 3401
;3401:			self->client->ps.fd.forceGripDamageDebounceTime = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1112
ADDP4
CNSTI4 1
ASGNI4
line 3402
;3402:			G_Damage(gripEnt, self, self, NULL, NULL, 20, DAMAGE_NO_ARMOR, MOD_FORCE_DARK);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1252
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRLP4 1256
CNSTP4 0
ASGNP4
ADDRLP4 1256
INDIRP4
ARGP4
ADDRLP4 1256
INDIRP4
ARGP4
CNSTI4 20
ARGI4
CNSTI4 2
ARGI4
CNSTI4 27
ARGI4
ADDRGP4 G_Damage
CALLV
pop
line 3405
;3403:
;3404:			//Must play custom sounds on the actual entity. Don't use G_Sound (it creates a temp entity for the sound)
;3405:			G_EntitySound( gripEnt, CHAN_VOICE, G_SoundIndex(va( "*choke%d.wav", Q_irand( 1, 3 ) )) );
CNSTI4 1
ARGI4
CNSTI4 3
ARGI4
ADDRLP4 1260
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRGP4 $1547
ARGP4
ADDRLP4 1260
INDIRI4
ARGI4
ADDRLP4 1264
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 1264
INDIRP4
ARGP4
ADDRLP4 1268
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 3
ARGI4
ADDRLP4 1268
INDIRI4
ARGI4
ADDRGP4 G_EntitySound
CALLV
pop
line 3407
;3406:
;3407:			gripEnt->client->ps.forceHandExtend = HANDEXTEND_CHOKE;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 5
ASGNI4
line 3408
;3408:			gripEnt->client->ps.forceHandExtendTime = level.time + 2000;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 2000
ADDI4
ASGNI4
line 3410
;3409:
;3410:			if (gripEnt->client->ps.fd.forcePowersActive & (1 << FP_GRIP))
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 64
BANDI4
CNSTI4 0
EQI4 $1500
line 3411
;3411:			{ //choking, so don't let him keep gripping himself
line 3412
;3412:				WP_ForcePowerStop(gripEnt, FP_GRIP);
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3413
;3413:			}
line 3414
;3414:		}
ADDRGP4 $1500
JUMPV
LABELV $1544
line 3415
;3415:		else if ((level.time - gripEnt->client->ps.fd.forceGripStarted) > 4000)
ADDRGP4 level+32
INDIRI4
CVIF4 4
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
INDIRF4
SUBF4
CNSTF4 1165623296
LEF4 $1500
line 3416
;3416:		{
line 3417
;3417:			WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3418
;3418:		}
line 3419
;3419:		return;
ADDRGP4 $1500
JUMPV
LABELV $1535
line 3422
;3420:	}
;3421:
;3422:	if (gripLevel == FORCE_LEVEL_3)
ADDRLP4 4
INDIRI4
CNSTI4 3
NEI4 $1554
line 3423
;3423:	{
line 3424
;3424:		gripEnt->client->ps.fd.forceGripBeingGripped = level.time + 1000;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
CVIF4 4
ASGNF4
line 3426
;3425:
;3426:		gripEnt->client->ps.otherKiller = self->s.number;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 760
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 3427
;3427:		gripEnt->client->ps.otherKillerTime = level.time + 5000;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 764
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 3428
;3428:		gripEnt->client->ps.otherKillerDebounceTime = level.time + 100;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 768
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 3430
;3429:
;3430:		gripEnt->client->ps.forceGripChangeMovetype = PM_FLOAT;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1288
ADDP4
CNSTI4 1
ASGNI4
line 3432
;3431:
;3432:		if (gripEnt->client->ps.forceGripMoveInterval < level.time)
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1284
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1559
line 3433
;3433:		{
line 3434
;3434:			float nvLen = 0;
ADDRLP4 1248
CNSTF4 0
ASGNF4
line 3436
;3435:
;3436:			VectorCopy(gripEnt->client->ps.origin, start_o);
ADDRLP4 1136
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 3437
;3437:			AngleVectors(self->client->ps.viewangles, fwd, NULL, NULL);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 1124
ARGP4
ADDRLP4 1252
CNSTP4 0
ASGNP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 3438
;3438:			fwd_o[0] = self->client->ps.origin[0] + fwd[0]*128;
ADDRLP4 1112
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
CNSTF4 1124073472
ADDRLP4 1124
INDIRF4
MULF4
ADDF4
ASGNF4
line 3439
;3439:			fwd_o[1] = self->client->ps.origin[1] + fwd[1]*128;
ADDRLP4 1112+4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
CNSTF4 1124073472
ADDRLP4 1124+4
INDIRF4
MULF4
ADDF4
ASGNF4
line 3440
;3440:			fwd_o[2] = self->client->ps.origin[2] + fwd[2]*128;
ADDRLP4 1112+8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
CNSTF4 1124073472
ADDRLP4 1124+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 3441
;3441:			fwd_o[2] += 16;
ADDRLP4 1112+8
ADDRLP4 1112+8
INDIRF4
CNSTF4 1098907648
ADDF4
ASGNF4
line 3442
;3442:			VectorSubtract(fwd_o, start_o, nvel);
ADDRLP4 1100
ADDRLP4 1112
INDIRF4
ADDRLP4 1136
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1100+4
ADDRLP4 1112+4
INDIRF4
ADDRLP4 1136+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1100+8
ADDRLP4 1112+8
INDIRF4
ADDRLP4 1136+8
INDIRF4
SUBF4
ASGNF4
line 3444
;3443:
;3444:			nvLen = VectorLength(nvel);
ADDRLP4 1100
ARGP4
ADDRLP4 1256
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1248
ADDRLP4 1256
INDIRF4
ASGNF4
line 3446
;3445:
;3446:			if (nvLen < 16)
ADDRLP4 1248
INDIRF4
CNSTF4 1098907648
GEF4 $1573
line 3447
;3447:			{ //within x units of desired spot
line 3448
;3448:				VectorNormalize(nvel);
ADDRLP4 1100
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3449
;3449:				gripEnt->client->ps.velocity[0] = nvel[0]*8;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
CNSTF4 1090519040
ADDRLP4 1100
INDIRF4
MULF4
ASGNF4
line 3450
;3450:				gripEnt->client->ps.velocity[1] = nvel[1]*8;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTF4 1090519040
ADDRLP4 1100+4
INDIRF4
MULF4
ASGNF4
line 3451
;3451:				gripEnt->client->ps.velocity[2] = nvel[2]*8;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1090519040
ADDRLP4 1100+8
INDIRF4
MULF4
ASGNF4
line 3452
;3452:			}
ADDRGP4 $1574
JUMPV
LABELV $1573
line 3453
;3453:			else if (nvLen < 64)
ADDRLP4 1248
INDIRF4
CNSTF4 1115684864
GEF4 $1577
line 3454
;3454:			{
line 3455
;3455:				VectorNormalize(nvel);
ADDRLP4 1100
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3456
;3456:				gripEnt->client->ps.velocity[0] = nvel[0]*128;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
CNSTF4 1124073472
ADDRLP4 1100
INDIRF4
MULF4
ASGNF4
line 3457
;3457:				gripEnt->client->ps.velocity[1] = nvel[1]*128;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTF4 1124073472
ADDRLP4 1100+4
INDIRF4
MULF4
ASGNF4
line 3458
;3458:				gripEnt->client->ps.velocity[2] = nvel[2]*128;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1124073472
ADDRLP4 1100+8
INDIRF4
MULF4
ASGNF4
line 3459
;3459:			}
ADDRGP4 $1578
JUMPV
LABELV $1577
line 3460
;3460:			else if (nvLen < 128)
ADDRLP4 1248
INDIRF4
CNSTF4 1124073472
GEF4 $1581
line 3461
;3461:			{
line 3462
;3462:				VectorNormalize(nvel);
ADDRLP4 1100
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3463
;3463:				gripEnt->client->ps.velocity[0] = nvel[0]*256;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
CNSTF4 1132462080
ADDRLP4 1100
INDIRF4
MULF4
ASGNF4
line 3464
;3464:				gripEnt->client->ps.velocity[1] = nvel[1]*256;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTF4 1132462080
ADDRLP4 1100+4
INDIRF4
MULF4
ASGNF4
line 3465
;3465:				gripEnt->client->ps.velocity[2] = nvel[2]*256;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1132462080
ADDRLP4 1100+8
INDIRF4
MULF4
ASGNF4
line 3466
;3466:			}
ADDRGP4 $1582
JUMPV
LABELV $1581
line 3467
;3467:			else if (nvLen < 200)
ADDRLP4 1248
INDIRF4
CNSTF4 1128792064
GEF4 $1585
line 3468
;3468:			{
line 3469
;3469:				VectorNormalize(nvel);
ADDRLP4 1100
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3470
;3470:				gripEnt->client->ps.velocity[0] = nvel[0]*512;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
CNSTF4 1140850688
ADDRLP4 1100
INDIRF4
MULF4
ASGNF4
line 3471
;3471:				gripEnt->client->ps.velocity[1] = nvel[1]*512;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTF4 1140850688
ADDRLP4 1100+4
INDIRF4
MULF4
ASGNF4
line 3472
;3472:				gripEnt->client->ps.velocity[2] = nvel[2]*512;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1140850688
ADDRLP4 1100+8
INDIRF4
MULF4
ASGNF4
line 3473
;3473:			}
ADDRGP4 $1586
JUMPV
LABELV $1585
line 3475
;3474:			else
;3475:			{
line 3476
;3476:				VectorNormalize(nvel);
ADDRLP4 1100
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 3477
;3477:				gripEnt->client->ps.velocity[0] = nvel[0]*700;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
CNSTF4 1143930880
ADDRLP4 1100
INDIRF4
MULF4
ASGNF4
line 3478
;3478:				gripEnt->client->ps.velocity[1] = nvel[1]*700;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTF4 1143930880
ADDRLP4 1100+4
INDIRF4
MULF4
ASGNF4
line 3479
;3479:				gripEnt->client->ps.velocity[2] = nvel[2]*700;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1143930880
ADDRLP4 1100+8
INDIRF4
MULF4
ASGNF4
line 3480
;3480:			}
LABELV $1586
LABELV $1582
LABELV $1578
LABELV $1574
line 3482
;3481:
;3482:			gripEnt->client->ps.forceGripMoveInterval = level.time + 300; //only update velocity every 300ms, so as to avoid heavy bandwidth usage
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1284
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 300
ADDI4
ASGNI4
line 3483
;3483:		}
LABELV $1559
line 3485
;3484:
;3485:		if ((level.time - gripEnt->client->ps.fd.forceGripStarted) > 3000 && !self->client->ps.fd.forceGripDamageDebounceTime)
ADDRLP4 1248
CNSTI4 408
ASGNI4
ADDRGP4 level+32
INDIRI4
CVIF4 4
ADDRLP4 0
INDIRP4
ADDRLP4 1248
INDIRI4
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
INDIRF4
SUBF4
CNSTF4 1161527296
LEF4 $1592
ADDRFP4 0
INDIRP4
ADDRLP4 1248
INDIRI4
ADDP4
INDIRP4
CNSTI4 1112
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1592
line 3486
;3486:		{ //if we managed to lift him into the air for 2 seconds, give him a crack
line 3487
;3487:			self->client->ps.fd.forceGripDamageDebounceTime = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1112
ADDP4
CNSTI4 1
ASGNI4
line 3488
;3488:			G_Damage(gripEnt, self, self, NULL, NULL, 40, DAMAGE_NO_ARMOR, MOD_FORCE_DARK);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1252
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRLP4 1252
INDIRP4
ARGP4
ADDRLP4 1256
CNSTP4 0
ASGNP4
ADDRLP4 1256
INDIRP4
ARGP4
ADDRLP4 1256
INDIRP4
ARGP4
CNSTI4 40
ARGI4
CNSTI4 2
ARGI4
CNSTI4 27
ARGI4
ADDRGP4 G_Damage
CALLV
pop
line 3491
;3489:
;3490:			//Must play custom sounds on the actual entity. Don't use G_Sound (it creates a temp entity for the sound)
;3491:			G_EntitySound( gripEnt, CHAN_VOICE, G_SoundIndex(va( "*choke%d.wav", Q_irand( 1, 3 ) )) );
CNSTI4 1
ARGI4
CNSTI4 3
ARGI4
ADDRLP4 1260
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRGP4 $1547
ARGP4
ADDRLP4 1260
INDIRI4
ARGI4
ADDRLP4 1264
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 1264
INDIRP4
ARGP4
ADDRLP4 1268
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 3
ARGI4
ADDRLP4 1268
INDIRI4
ARGI4
ADDRGP4 G_EntitySound
CALLV
pop
line 3493
;3492:
;3493:			gripEnt->client->ps.forceHandExtend = HANDEXTEND_CHOKE;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 5
ASGNI4
line 3494
;3494:			gripEnt->client->ps.forceHandExtendTime = level.time + 2000;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 2000
ADDI4
ASGNI4
line 3496
;3495:
;3496:			if (gripEnt->client->ps.fd.forcePowersActive & (1 << FP_GRIP))
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 64
BANDI4
CNSTI4 0
EQI4 $1500
line 3497
;3497:			{ //choking, so don't let him keep gripping himself
line 3498
;3498:				WP_ForcePowerStop(gripEnt, FP_GRIP);
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3499
;3499:			}
line 3500
;3500:		}
ADDRGP4 $1500
JUMPV
LABELV $1592
line 3501
;3501:		else if ((level.time - gripEnt->client->ps.fd.forceGripStarted) > 4000)
ADDRGP4 level+32
INDIRI4
CVIF4 4
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1132
ADDP4
INDIRF4
SUBF4
CNSTF4 1165623296
LEF4 $1500
line 3502
;3502:		{
line 3503
;3503:			WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3504
;3504:		}
line 3505
;3505:		return;
LABELV $1554
line 3507
;3506:	}
;3507:}
LABELV $1500
endproc DoGripAction 1272 32
export G_IsMindTricked
proc G_IsMindTricked 24 0
line 3510
;3508:
;3509:qboolean G_IsMindTricked(forcedata_t *fd, int client)
;3510:{
line 3513
;3511:	int checkIn;
;3512:	int trickIndex1, trickIndex2, trickIndex3, trickIndex4;
;3513:	int sub = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3515
;3514:
;3515:	if (!fd)
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1602
line 3516
;3516:	{
line 3517
;3517:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $1601
JUMPV
LABELV $1602
line 3520
;3518:	}
;3519:
;3520:	trickIndex1 = fd->forceMindtrickTargetIndex;
ADDRLP4 16
ADDRFP4 0
INDIRP4
CNSTI4 384
ADDP4
INDIRI4
ASGNI4
line 3521
;3521:	trickIndex2 = fd->forceMindtrickTargetIndex2;
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 388
ADDP4
INDIRI4
ASGNI4
line 3522
;3522:	trickIndex3 = fd->forceMindtrickTargetIndex3;
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 392
ADDP4
INDIRI4
ASGNI4
line 3523
;3523:	trickIndex4 = fd->forceMindtrickTargetIndex4;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 396
ADDP4
INDIRI4
ASGNI4
line 3525
;3524:
;3525:	if (client > 47)
ADDRFP4 4
INDIRI4
CNSTI4 47
LEI4 $1604
line 3526
;3526:	{
line 3527
;3527:		checkIn = trickIndex4;
ADDRLP4 4
ADDRLP4 8
INDIRI4
ASGNI4
line 3528
;3528:		sub = 48;
ADDRLP4 0
CNSTI4 48
ASGNI4
line 3529
;3529:	}
ADDRGP4 $1605
JUMPV
LABELV $1604
line 3530
;3530:	else if (client > 31)
ADDRFP4 4
INDIRI4
CNSTI4 31
LEI4 $1606
line 3531
;3531:	{
line 3532
;3532:		checkIn = trickIndex3;
ADDRLP4 4
ADDRLP4 12
INDIRI4
ASGNI4
line 3533
;3533:		sub = 32;
ADDRLP4 0
CNSTI4 32
ASGNI4
line 3534
;3534:	}
ADDRGP4 $1607
JUMPV
LABELV $1606
line 3535
;3535:	else if (client > 15)
ADDRFP4 4
INDIRI4
CNSTI4 15
LEI4 $1608
line 3536
;3536:	{
line 3537
;3537:		checkIn = trickIndex2;
ADDRLP4 4
ADDRLP4 20
INDIRI4
ASGNI4
line 3538
;3538:		sub = 16;
ADDRLP4 0
CNSTI4 16
ASGNI4
line 3539
;3539:	}
ADDRGP4 $1609
JUMPV
LABELV $1608
line 3541
;3540:	else
;3541:	{
line 3542
;3542:		checkIn = trickIndex1;
ADDRLP4 4
ADDRLP4 16
INDIRI4
ASGNI4
line 3543
;3543:	}
LABELV $1609
LABELV $1607
LABELV $1605
line 3545
;3544:
;3545:	if (checkIn & (1 << (client-sub)))
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
ADDRLP4 0
INDIRI4
SUBI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $1610
line 3546
;3546:	{
line 3547
;3547:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $1601
JUMPV
LABELV $1610
line 3550
;3548:	}
;3549:	
;3550:	return qfalse;
CNSTI4 0
RETI4
LABELV $1601
endproc G_IsMindTricked 24 0
proc RemoveTrickedEnt 4 0
line 3554
;3551:}
;3552:
;3553:static void RemoveTrickedEnt(forcedata_t *fd, int client)
;3554:{
line 3555
;3555:	if (!fd)
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1613
line 3556
;3556:	{
line 3557
;3557:		return;
ADDRGP4 $1612
JUMPV
LABELV $1613
line 3560
;3558:	}
;3559:
;3560:	if (client > 47)
ADDRFP4 4
INDIRI4
CNSTI4 47
LEI4 $1615
line 3561
;3561:	{
line 3562
;3562:		fd->forceMindtrickTargetIndex4 &= ~(1 << (client-48));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 396
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 48
SUBI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 3563
;3563:	}
ADDRGP4 $1616
JUMPV
LABELV $1615
line 3564
;3564:	else if (client > 31)
ADDRFP4 4
INDIRI4
CNSTI4 31
LEI4 $1617
line 3565
;3565:	{
line 3566
;3566:		fd->forceMindtrickTargetIndex3 &= ~(1 << (client-32));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 392
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 32
SUBI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 3567
;3567:	}
ADDRGP4 $1618
JUMPV
LABELV $1617
line 3568
;3568:	else if (client > 15)
ADDRFP4 4
INDIRI4
CNSTI4 15
LEI4 $1619
line 3569
;3569:	{
line 3570
;3570:		fd->forceMindtrickTargetIndex2 &= ~(1 << (client-16));
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 388
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
CNSTI4 16
SUBI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 3571
;3571:	}
ADDRGP4 $1620
JUMPV
LABELV $1619
line 3573
;3572:	else
;3573:	{
line 3574
;3574:		fd->forceMindtrickTargetIndex &= ~(1 << client);
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 384
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDRFP4 4
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 3575
;3575:	}
LABELV $1620
LABELV $1618
LABELV $1616
line 3576
;3576:}
LABELV $1612
endproc RemoveTrickedEnt 4 0
proc WP_UpdateMindtrickEnts 56 12
line 3582
;3577:
;3578:extern int g_LastFrameTime;
;3579:extern int g_TimeSinceLastFrame;
;3580:
;3581:static void WP_UpdateMindtrickEnts(gentity_t *self)
;3582:{
line 3583
;3583:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1623
JUMPV
LABELV $1622
line 3586
;3584:
;3585:	while (i < MAX_CLIENTS)
;3586:	{
line 3587
;3587:		if (G_IsMindTricked(&self->client->ps.fd, i))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 4
ADDRGP4 G_IsMindTricked
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
EQI4 $1625
line 3588
;3588:		{
line 3589
;3589:			gentity_t *ent = &g_entities[i];
ADDRLP4 8
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 3591
;3590:
;3591:			if ( !ent || !ent->client || !ent->inuse || ent->health < 1 ||
ADDRLP4 16
CNSTU4 0
ASGNU4
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $1632
ADDRLP4 20
ADDRLP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $1632
ADDRLP4 24
CNSTI4 0
ASGNI4
ADDRLP4 8
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
ADDRLP4 24
INDIRI4
EQI4 $1632
ADDRLP4 8
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
LTI4 $1632
ADDRLP4 20
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 16384
BANDI4
ADDRLP4 24
INDIRI4
EQI4 $1627
LABELV $1632
line 3593
;3592:				(ent->client->ps.fd.forcePowersActive & (1 << FP_SEE)) )
;3593:			{
line 3594
;3594:				RemoveTrickedEnt(&self->client->ps.fd, i);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 RemoveTrickedEnt
CALLV
pop
line 3595
;3595:			}
ADDRGP4 $1628
JUMPV
LABELV $1627
line 3596
;3596:			else if ((level.time - self->client->dangerTime) < g_TimeSinceLastFrame*4)
ADDRGP4 level+32
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1792
ADDP4
INDIRI4
SUBI4
ADDRGP4 g_TimeSinceLastFrame
INDIRI4
CNSTI4 2
LSHI4
GEI4 $1633
line 3597
;3597:			{ //Untrick this entity if the tricker (self) fires while in his fov
line 3598
;3598:				if (trap_InPVS(ent->client->ps.origin, self->client->ps.origin) &&
ADDRLP4 28
CNSTI4 408
ASGNI4
ADDRLP4 32
CNSTI4 20
ASGNI4
ADDRLP4 8
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
ARGP4
ADDRFP4 0
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
ARGP4
ADDRLP4 36
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 36
INDIRI4
CNSTI4 0
EQI4 $1634
ADDRLP4 44
CNSTI4 408
ASGNI4
ADDRLP4 48
CNSTI4 20
ASGNI4
ADDRLP4 8
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
ARGP4
ADDRFP4 0
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
ARGP4
ADDRLP4 8
INDIRP4
INDIRI4
ARGI4
ADDRLP4 52
ADDRGP4 OrgVisible
CALLI4
ASGNI4
ADDRLP4 52
INDIRI4
CNSTI4 0
EQI4 $1634
line 3600
;3599:					OrgVisible(ent->client->ps.origin, self->client->ps.origin, ent->s.number))
;3600:				{
line 3601
;3601:					RemoveTrickedEnt(&self->client->ps.fd, i);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 RemoveTrickedEnt
CALLV
pop
line 3602
;3602:				}
line 3603
;3603:			}
ADDRGP4 $1634
JUMPV
LABELV $1633
line 3604
;3604:			else if (BG_HasYsalamiri(g_gametype.integer, &ent->client->ps))
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRLP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 BG_HasYsalamiri
CALLI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 0
EQI4 $1638
line 3605
;3605:			{
line 3606
;3606:				RemoveTrickedEnt(&self->client->ps.fd, i);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 RemoveTrickedEnt
CALLV
pop
line 3607
;3607:			}
LABELV $1638
LABELV $1634
LABELV $1628
line 3608
;3608:		}
LABELV $1625
line 3610
;3609:
;3610:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 3611
;3611:	}
LABELV $1623
line 3585
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $1622
line 3613
;3612:
;3613:	if (!self->client->ps.fd.forceMindtrickTargetIndex &&
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRLP4 4
INDIRP4
CNSTI4 1156
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
NEI4 $1641
ADDRLP4 4
INDIRP4
CNSTI4 1160
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
NEI4 $1641
ADDRLP4 4
INDIRP4
CNSTI4 1164
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
NEI4 $1641
ADDRLP4 4
INDIRP4
CNSTI4 1168
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
NEI4 $1641
line 3617
;3614:		!self->client->ps.fd.forceMindtrickTargetIndex2 &&
;3615:		!self->client->ps.fd.forceMindtrickTargetIndex3 &&
;3616:		!self->client->ps.fd.forceMindtrickTargetIndex4)
;3617:	{ //everyone who we had tricked is no longer tricked, so stop the power
line 3618
;3618:		WP_ForcePowerStop(self, FP_TELEPATHY);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3619
;3619:	}
ADDRGP4 $1642
JUMPV
LABELV $1641
line 3620
;3620:	else if (self->client->ps.powerups[PW_REDFLAG] ||
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRP4
CNSTI4 360
ADDP4
INDIRI4
ADDRLP4 16
INDIRI4
NEI4 $1645
ADDRLP4 12
INDIRP4
CNSTI4 364
ADDP4
INDIRI4
ADDRLP4 16
INDIRI4
EQI4 $1643
LABELV $1645
line 3622
;3621:		self->client->ps.powerups[PW_BLUEFLAG])
;3622:	{
line 3623
;3623:		WP_ForcePowerStop(self, FP_TELEPATHY);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3624
;3624:	}
LABELV $1643
LABELV $1642
line 3625
;3625:}
LABELV $1621
endproc WP_UpdateMindtrickEnts 56 12
proc WP_ForcePowerRun 64 12
line 3628
;3626:
;3627:static void WP_ForcePowerRun( gentity_t *self, forcePowers_t forcePower, usercmd_t *cmd )
;3628:{
line 3631
;3629:	extern usercmd_t	ucmd;
;3630:
;3631:	switch( (int)forcePower )
ADDRLP4 0
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
LTI4 $1648
ADDRLP4 0
INDIRI4
CNSTI4 17
GTI4 $1648
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $1746
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $1746
address $1650
address $1682
address $1648
address $1648
address $1648
address $1728
address $1673
address $1714
address $1685
address $1732
address $1739
address $1648
address $1648
address $1700
address $1648
address $1648
address $1648
address $1648
code
line 3632
;3632:	{
LABELV $1650
line 3634
;3633:	case FP_HEAL:
;3634:		if (self->client->ps.fd.forcePowerLevel[FP_HEAL] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1651
line 3635
;3635:		{
line 3636
;3636:			if (self->client->ps.velocity[0] || self->client->ps.velocity[1] || self->client->ps.velocity[2])
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 12
CNSTF4 0
ASGNF4
ADDRLP4 8
INDIRP4
CNSTI4 32
ADDP4
INDIRF4
ADDRLP4 12
INDIRF4
NEF4 $1656
ADDRLP4 8
INDIRP4
CNSTI4 36
ADDP4
INDIRF4
ADDRLP4 12
INDIRF4
NEF4 $1656
ADDRLP4 8
INDIRP4
CNSTI4 40
ADDP4
INDIRF4
ADDRLP4 12
INDIRF4
EQF4 $1653
LABELV $1656
line 3637
;3637:			{
line 3638
;3638:				WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3639
;3639:				break;
ADDRGP4 $1648
JUMPV
LABELV $1653
line 3641
;3640:			}
;3641:		}
LABELV $1651
line 3643
;3642:
;3643:		if (self->health < 1 || self->client->ps.stats[STAT_HEALTH] < 1)
ADDRLP4 8
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
CNSTI4 1
ASGNI4
ADDRLP4 8
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 12
INDIRI4
LTI4 $1659
ADDRLP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 12
INDIRI4
GEI4 $1657
LABELV $1659
line 3644
;3644:		{
line 3645
;3645:			WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3646
;3646:			break;
ADDRGP4 $1648
JUMPV
LABELV $1657
line 3649
;3647:		}
;3648:
;3649:		if (self->client->ps.fd.forceHealTime > level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1148
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $1660
line 3650
;3650:		{
line 3651
;3651:			break;
ADDRGP4 $1648
JUMPV
LABELV $1660
line 3653
;3652:		}
;3653:		if ( self->health > self->client->ps.stats[STAT_MAX_HEALTH])
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 16
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $1663
line 3654
;3654:		{ //rww - we might start out over max_health and we don't want force heal taking us down to 100 or whatever max_health is
line 3655
;3655:			WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3656
;3656:			break;
ADDRGP4 $1648
JUMPV
LABELV $1663
line 3658
;3657:		}
;3658:		self->client->ps.fd.forceHealTime = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1148
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 3659
;3659:		self->health++;
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
ASGNP4
ADDRLP4 20
INDIRP4
ADDRLP4 20
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 3660
;3660:		self->client->ps.fd.forceHealAmount++;
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1152
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 3662
;3661:
;3662:		if ( self->health > self->client->ps.stats[STAT_MAX_HEALTH])	// Past max health
ADDRLP4 28
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 28
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $1666
line 3663
;3663:		{
line 3664
;3664:			self->health = self->client->ps.stats[STAT_MAX_HEALTH];
ADDRLP4 32
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 32
INDIRP4
CNSTI4 676
ADDP4
ADDRLP4 32
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 3665
;3665:			WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3666
;3666:		}
LABELV $1666
line 3668
;3667:
;3668:		if ( (self->client->ps.fd.forcePowerLevel[FP_HEAL] == FORCE_LEVEL_1 && self->client->ps.fd.forceHealAmount >= 25) ||
ADDRLP4 32
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 32
INDIRP4
CNSTI4 944
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1671
ADDRLP4 32
INDIRP4
CNSTI4 1152
ADDP4
INDIRI4
CNSTI4 25
GEI4 $1670
LABELV $1671
ADDRLP4 36
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI4 944
ADDP4
INDIRI4
CNSTI4 2
NEI4 $1648
ADDRLP4 36
INDIRP4
CNSTI4 1152
ADDP4
INDIRI4
CNSTI4 33
LTI4 $1648
LABELV $1670
line 3670
;3669:			(self->client->ps.fd.forcePowerLevel[FP_HEAL] == FORCE_LEVEL_2 && self->client->ps.fd.forceHealAmount >= 33))
;3670:		{
line 3671
;3671:			WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3672
;3672:		}
line 3673
;3673:		break;
ADDRGP4 $1648
JUMPV
line 3676
;3674:	case FP_SPEED:
;3675:		//This is handled in PM_WalkMove and PM_StepSlideMove
;3676:		break;
LABELV $1673
line 3678
;3677:	case FP_GRIP:
;3678:		if (self->client->ps.forceHandExtend != HANDEXTEND_FORCEGRIP)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 3
EQI4 $1674
line 3679
;3679:		{
line 3680
;3680:			WP_ForcePowerStop(self, FP_GRIP);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3681
;3681:			break;
ADDRGP4 $1648
JUMPV
LABELV $1674
line 3684
;3682:		}
;3683:
;3684:		if (self->client->ps.fd.forcePowerDebounce[FP_PULL] < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 788
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1676
line 3685
;3685:		{ //This is sort of not ideal. Using the debounce value reserved for pull for this because pull doesn't need it.
line 3686
;3686:			BG_ForcePowerDrain( &self->client->ps, forcePower, 1 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 3687
;3687:			self->client->ps.fd.forcePowerDebounce[FP_PULL] = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 788
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 3688
;3688:		}
LABELV $1676
line 3690
;3689:
;3690:		if (self->client->ps.fd.forcePower < 1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1680
line 3691
;3691:		{
line 3692
;3692:			WP_ForcePowerStop(self, FP_GRIP);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3693
;3693:			break;
ADDRGP4 $1648
JUMPV
LABELV $1680
line 3696
;3694:		}
;3695:
;3696:		DoGripAction(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 DoGripAction
CALLV
pop
line 3697
;3697:		break;
ADDRGP4 $1648
JUMPV
LABELV $1682
line 3699
;3698:	case FP_LEVITATION:
;3699:		if ( self->client->ps.groundEntityNum != ENTITYNUM_NONE && !self->client->ps.fd.forceJumpZStart )
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 40
INDIRP4
CNSTI4 84
ADDP4
INDIRI4
CNSTI4 1023
EQI4 $1648
ADDRLP4 40
INDIRP4
CNSTI4 1092
ADDP4
INDIRF4
CNSTF4 0
NEF4 $1648
line 3700
;3700:		{//done with jump
line 3701
;3701:			WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3702
;3702:		}
line 3703
;3703:		break;
ADDRGP4 $1648
JUMPV
LABELV $1685
line 3705
;3704:	case FP_RAGE:
;3705:		if (self->health < 1)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1686
line 3706
;3706:		{
line 3707
;3707:			WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3708
;3708:			break;
ADDRGP4 $1648
JUMPV
LABELV $1686
line 3710
;3709:		}
;3710:		if (self->client->ps.forceRageDrainTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1256
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1688
line 3711
;3711:		{
line 3712
;3712:			int addTime = 400;
ADDRLP4 44
CNSTI4 400
ASGNI4
line 3714
;3713:
;3714:			self->health -= 2;
ADDRLP4 48
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
ASGNP4
ADDRLP4 48
INDIRP4
ADDRLP4 48
INDIRP4
INDIRI4
CNSTI4 2
SUBI4
ASGNI4
line 3716
;3715:
;3716:			if (self->client->ps.fd.forcePowerLevel[FP_RAGE] == FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 976
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1691
line 3717
;3717:			{
line 3718
;3718:				addTime = 150;
ADDRLP4 44
CNSTI4 150
ASGNI4
line 3719
;3719:			}
ADDRGP4 $1692
JUMPV
LABELV $1691
line 3720
;3720:			else if (self->client->ps.fd.forcePowerLevel[FP_RAGE] == FORCE_LEVEL_2)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 976
ADDP4
INDIRI4
CNSTI4 2
NEI4 $1693
line 3721
;3721:			{
line 3722
;3722:				addTime = 300;
ADDRLP4 44
CNSTI4 300
ASGNI4
line 3723
;3723:			}
ADDRGP4 $1694
JUMPV
LABELV $1693
line 3724
;3724:			else if (self->client->ps.fd.forcePowerLevel[FP_RAGE] == FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 976
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1695
line 3725
;3725:			{
line 3726
;3726:				addTime = 450;
ADDRLP4 44
CNSTI4 450
ASGNI4
line 3727
;3727:			}
LABELV $1695
LABELV $1694
LABELV $1692
line 3728
;3728:			self->client->ps.forceRageDrainTime = level.time + addTime;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1256
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 44
INDIRI4
ADDI4
ASGNI4
line 3729
;3729:		}
LABELV $1688
line 3731
;3730:
;3731:		if (self->health < 1)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1698
line 3732
;3732:		{
line 3733
;3733:			self->health = 1;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 1
ASGNI4
line 3734
;3734:			WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3735
;3735:		}
LABELV $1698
line 3737
;3736:
;3737:		self->client->ps.stats[STAT_HEALTH] = self->health;
ADDRLP4 44
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 216
ADDP4
ADDRLP4 44
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ASGNI4
line 3738
;3738:		break;
ADDRGP4 $1648
JUMPV
LABELV $1700
line 3740
;3739:	case FP_DRAIN:
;3740:		if (self->client->ps.forceHandExtend != HANDEXTEND_FORCEGRIP)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 3
EQI4 $1701
line 3741
;3741:		{
line 3742
;3742:			WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3743
;3743:			break;
ADDRGP4 $1648
JUMPV
LABELV $1701
line 3746
;3744:		}
;3745:
;3746:		if ( self->client->ps.fd.forcePowerLevel[FP_DRAIN] > FORCE_LEVEL_1 )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 996
ADDP4
INDIRI4
CNSTI4 1
LEI4 $1703
line 3747
;3747:		{//higher than level 1
line 3750
;3748:			// adnan
;3749:         // no drain
;3750:         if ( (cmd->buttons & BUTTON_FORCE_DRAIN) || ((cmd->buttons & BUTTON_FORCEPOWER) && self->client->ps.fd.forcePowerSelected == FP_DRAIN) )
ADDRLP4 48
ADDRFP4 8
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ASGNI4
ADDRLP4 52
CNSTI4 0
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 2048
BANDI4
ADDRLP4 52
INDIRI4
NEI4 $1707
ADDRLP4 48
INDIRI4
CNSTI4 512
BANDI4
ADDRLP4 52
INDIRI4
EQI4 $1705
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 13
NEI4 $1705
LABELV $1707
line 3751
;3751:			{//holding it keeps it going
line 3752
;3752:            self->client->ps.fd.forcePowerDuration[FP_DRAIN] = level.time + 500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 912
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 3753
;3753:			}
LABELV $1705
line 3754
;3754:		}
LABELV $1703
line 3755
;3755:		if ( !WP_ForcePowerAvailable( self, forcePower ) || self->client->ps.fd.forcePowerDuration[FP_DRAIN] < level.time ||
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 48
ADDRGP4 WP_ForcePowerAvailable
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 0
EQI4 $1713
ADDRLP4 52
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
CNSTI4 912
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LTI4 $1713
ADDRLP4 52
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 25
GEI4 $1709
LABELV $1713
line 3757
;3756:			self->client->ps.fd.forcePower < 25)
;3757:		{
line 3758
;3758:			WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3759
;3759:		}
ADDRGP4 $1648
JUMPV
LABELV $1709
line 3761
;3760:		else
;3761:		{
line 3762
;3762:			ForceShootDrain( self );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceShootDrain
CALLI4
pop
line 3763
;3763:		}
line 3764
;3764:		break;
ADDRGP4 $1648
JUMPV
LABELV $1714
line 3766
;3765:	case FP_LIGHTNING:
;3766:		if (self->client->ps.forceHandExtend != HANDEXTEND_FORCEGRIP)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 3
EQI4 $1715
line 3767
;3767:		{ //Animation for hand extend doesn't end with hand out, so we have to limit lightning intervals by animation intervals (once hand starts to go in in animation, lightning should stop)
line 3768
;3768:			WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3769
;3769:			break;
ADDRGP4 $1648
JUMPV
LABELV $1715
line 3772
;3770:		}
;3771:
;3772:		if ( self->client->ps.fd.forcePowerLevel[FP_LIGHTNING] > FORCE_LEVEL_1 )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 972
ADDP4
INDIRI4
CNSTI4 1
LEI4 $1717
line 3773
;3773:		{//higher than level 1
line 3774
;3774:			if ( (cmd->buttons & BUTTON_FORCE_LIGHTNING) || ((cmd->buttons & BUTTON_FORCEPOWER) && self->client->ps.fd.forcePowerSelected == FP_LIGHTNING) )
ADDRLP4 56
ADDRFP4 8
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ASGNI4
ADDRLP4 60
CNSTI4 0
ASGNI4
ADDRLP4 56
INDIRI4
CNSTI4 1024
BANDI4
ADDRLP4 60
INDIRI4
NEI4 $1721
ADDRLP4 56
INDIRI4
CNSTI4 512
BANDI4
ADDRLP4 60
INDIRI4
EQI4 $1719
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 7
NEI4 $1719
LABELV $1721
line 3775
;3775:			{//holding it keeps it going
line 3776
;3776:				self->client->ps.fd.forcePowerDuration[FP_LIGHTNING] = level.time + 500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 888
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 3777
;3777:			}
LABELV $1719
line 3778
;3778:		}
LABELV $1717
line 3779
;3779:		if ( !WP_ForcePowerAvailable( self, forcePower ) || self->client->ps.fd.forcePowerDuration[FP_LIGHTNING] < level.time ||
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 56
ADDRGP4 WP_ForcePowerAvailable
CALLI4
ASGNI4
ADDRLP4 56
INDIRI4
CNSTI4 0
EQI4 $1727
ADDRLP4 60
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 60
INDIRP4
CNSTI4 888
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LTI4 $1727
ADDRLP4 60
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 25
GEI4 $1723
LABELV $1727
line 3781
;3780:			self->client->ps.fd.forcePower < 25)
;3781:		{
line 3782
;3782:			WP_ForcePowerStop( self, forcePower );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3783
;3783:		}
ADDRGP4 $1648
JUMPV
LABELV $1723
line 3785
;3784:		else
;3785:		{
line 3786
;3786:			ForceShootLightning( self );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceShootLightning
CALLV
pop
line 3787
;3787:			BG_ForcePowerDrain( &self->client->ps, forcePower, 0 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 3788
;3788:		}
line 3789
;3789:		break;
ADDRGP4 $1648
JUMPV
LABELV $1728
line 3791
;3790:	case FP_TELEPATHY:
;3791:		WP_UpdateMindtrickEnts(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 WP_UpdateMindtrickEnts
CALLV
pop
line 3792
;3792:		break;
ADDRGP4 $1648
JUMPV
line 3794
;3793:	case FP_SABERATTACK:
;3794:		break;
line 3796
;3795:	case FP_SABERDEFEND:
;3796:		break;
line 3798
;3797:	case FP_SABERTHROW:
;3798:		break;
LABELV $1732
line 3800
;3799:	case FP_PROTECT:
;3800:		if (self->client->ps.fd.forcePowerDebounce[forcePower] < level.time)
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1648
line 3801
;3801:		{
line 3802
;3802:			BG_ForcePowerDrain( &self->client->ps, forcePower, 1 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 3803
;3803:			if (self->client->ps.fd.forcePower < 1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1736
line 3804
;3804:			{
line 3805
;3805:				WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3806
;3806:			}
LABELV $1736
line 3808
;3807:
;3808:			self->client->ps.fd.forcePowerDebounce[forcePower] = level.time + 300;
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 300
ADDI4
ASGNI4
line 3809
;3809:		}
line 3810
;3810:		break;
ADDRGP4 $1648
JUMPV
LABELV $1739
line 3812
;3811:	case FP_ABSORB:
;3812:		if (self->client->ps.fd.forcePowerDebounce[forcePower] < level.time)
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1648
line 3813
;3813:		{
line 3814
;3814:			BG_ForcePowerDrain( &self->client->ps, forcePower, 1 );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 3815
;3815:			if (self->client->ps.fd.forcePower < 1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1743
line 3816
;3816:			{
line 3817
;3817:				WP_ForcePowerStop(self, forcePower);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 3818
;3818:			}
LABELV $1743
line 3820
;3819:
;3820:			self->client->ps.fd.forcePowerDebounce[forcePower] = level.time + 600;
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 772
ADDP4
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 600
ADDI4
ASGNI4
line 3821
;3821:		}
line 3822
;3822:		break;
line 3824
;3823:	default:
;3824:		break;
LABELV $1648
line 3826
;3825:	}
;3826:}
LABELV $1646
endproc WP_ForcePowerRun 64 12
export WP_DoSpecificPower
proc WP_DoSpecificPower 16 12
line 3829
;3827:
;3828:int WP_DoSpecificPower( gentity_t *self, usercmd_t *ucmd, forcePowers_t forcepower)
;3829:{
line 3832
;3830:	int powerSucceeded;
;3831:
;3832:	powerSucceeded = 1;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 3834
;3833:
;3834:	if ( !WP_ForcePowerAvailable( self, forcepower ) )
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 8
INDIRI4
ARGI4
ADDRLP4 4
ADDRGP4 WP_ForcePowerAvailable
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $1748
line 3835
;3835:	{
line 3836
;3836:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $1747
JUMPV
LABELV $1748
line 3839
;3837:	}
;3838:
;3839:	switch(forcepower)
ADDRLP4 8
ADDRFP4 8
INDIRI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
LTI4 $1751
ADDRLP4 8
INDIRI4
CNSTI4 17
GTI4 $1751
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $1801
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $1801
address $1753
address $1756
address $1759
address $1770
address $1773
address $1776
address $1762
address $1769
address $1779
address $1782
address $1785
address $1788
address $1791
address $1794
address $1795
address $1751
address $1751
address $1751
code
line 3840
;3840:	{
LABELV $1753
line 3842
;3841:	case FP_HEAL:
;3842:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3843
;3843:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1754
line 3844
;3844:		{ //need to release before we can use nonhold powers again
line 3845
;3845:			break;
ADDRGP4 $1751
JUMPV
LABELV $1754
line 3847
;3846:		}
;3847:		ForceHeal(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceHeal
CALLV
pop
line 3848
;3848:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3849
;3849:		break;
ADDRGP4 $1751
JUMPV
LABELV $1756
line 3853
;3850:	case FP_LEVITATION:
;3851:		//if leave the ground by some other means, cancel the force jump so we don't suddenly jump when we land.
;3852:		
;3853:		if ( self->client->ps.groundEntityNum == ENTITYNUM_NONE )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 84
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $1757
line 3854
;3854:		{
line 3855
;3855:			self->client->ps.fd.forceJumpCharge = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
CNSTF4 0
ASGNF4
line 3856
;3856:			G_MuteSound( self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1204
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 3858
;3857:			//This only happens if the groundEntityNum == ENTITYNUM_NONE when the button is actually released
;3858:		}
ADDRGP4 $1751
JUMPV
LABELV $1757
line 3860
;3859:		else
;3860:		{//still on ground, so jump
line 3861
;3861:			ForceJump( self, ucmd );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 ForceJump
CALLV
pop
line 3862
;3862:		}
line 3863
;3863:		break;
ADDRGP4 $1751
JUMPV
LABELV $1759
line 3865
;3864:	case FP_SPEED:
;3865:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3866
;3866:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1760
line 3867
;3867:		{ //need to release before we can use nonhold powers again
line 3868
;3868:			break;
ADDRGP4 $1751
JUMPV
LABELV $1760
line 3870
;3869:		}
;3870:		ForceSpeed(self, 0);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRGP4 ForceSpeed
CALLV
pop
line 3871
;3871:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3872
;3872:		break;
ADDRGP4 $1751
JUMPV
LABELV $1762
line 3874
;3873:	case FP_GRIP:
;3874:		if (self->client->ps.fd.forceGripEntityNum == ENTITYNUM_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $1763
line 3875
;3875:		{
line 3876
;3876:			ForceGrip( self );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceGrip
CALLV
pop
line 3877
;3877:		}
LABELV $1763
line 3879
;3878:
;3879:		if (self->client->ps.fd.forceGripEntityNum != ENTITYNUM_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1108
ADDP4
INDIRI4
CNSTI4 1023
EQI4 $1765
line 3880
;3880:		{
line 3881
;3881:			if (!(self->client->ps.fd.forcePowersActive & (1 << FP_GRIP)))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 64
BANDI4
CNSTI4 0
NEI4 $1751
line 3882
;3882:			{
line 3883
;3883:				WP_ForcePowerStart( self, FP_GRIP, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerStart
CALLV
pop
line 3884
;3884:				BG_ForcePowerDrain( &self->client->ps, FP_GRIP, GRIP_DRAIN_AMOUNT );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
CNSTI4 6
ARGI4
CNSTI4 30
ARGI4
ADDRGP4 BG_ForcePowerDrain
CALLV
pop
line 3885
;3885:			}
line 3886
;3886:		}
ADDRGP4 $1751
JUMPV
LABELV $1765
line 3888
;3887:		else
;3888:		{
line 3889
;3889:			powerSucceeded = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3890
;3890:		}
line 3891
;3891:		break;
ADDRGP4 $1751
JUMPV
LABELV $1769
line 3893
;3892:	case FP_LIGHTNING:
;3893:		ForceLightning(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceLightning
CALLV
pop
line 3894
;3894:		break;
ADDRGP4 $1751
JUMPV
LABELV $1770
line 3896
;3895:	case FP_PUSH:
;3896:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3897
;3897:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1771
line 3898
;3898:		{ //need to release before we can use nonhold powers again
line 3899
;3899:			break;
ADDRGP4 $1751
JUMPV
LABELV $1771
line 3901
;3900:		}
;3901:		ForceThrow(self, qfalse);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRGP4 ForceThrow
CALLV
pop
line 3902
;3902:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3903
;3903:		break;
ADDRGP4 $1751
JUMPV
LABELV $1773
line 3905
;3904:	case FP_PULL:
;3905:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3906
;3906:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1774
line 3907
;3907:		{ //need to release before we can use nonhold powers again
line 3908
;3908:			break;
ADDRGP4 $1751
JUMPV
LABELV $1774
line 3910
;3909:		}
;3910:		ForceThrow(self, qtrue);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRGP4 ForceThrow
CALLV
pop
line 3911
;3911:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3912
;3912:		break;
ADDRGP4 $1751
JUMPV
LABELV $1776
line 3914
;3913:	case FP_TELEPATHY:
;3914:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3915
;3915:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1777
line 3916
;3916:		{ //need to release before we can use nonhold powers again
line 3917
;3917:			break;
ADDRGP4 $1751
JUMPV
LABELV $1777
line 3919
;3918:		}
;3919:		ForceTelepathy(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceTelepathy
CALLV
pop
line 3920
;3920:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3921
;3921:		break;
ADDRGP4 $1751
JUMPV
LABELV $1779
line 3923
;3922:	case FP_RAGE:
;3923:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3924
;3924:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1780
line 3925
;3925:		{ //need to release before we can use nonhold powers again
line 3926
;3926:			break;
ADDRGP4 $1751
JUMPV
LABELV $1780
line 3928
;3927:		}
;3928:		ForceRage(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceRage
CALLV
pop
line 3929
;3929:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3930
;3930:		break;
ADDRGP4 $1751
JUMPV
LABELV $1782
line 3932
;3931:	case FP_PROTECT:
;3932:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3933
;3933:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1783
line 3934
;3934:		{ //need to release before we can use nonhold powers again
line 3935
;3935:			break;
ADDRGP4 $1751
JUMPV
LABELV $1783
line 3937
;3936:		}
;3937:		ForceProtect(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceProtect
CALLV
pop
line 3938
;3938:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3939
;3939:		break;
ADDRGP4 $1751
JUMPV
LABELV $1785
line 3941
;3940:	case FP_ABSORB:
;3941:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3942
;3942:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1786
line 3943
;3943:		{ //need to release before we can use nonhold powers again
line 3944
;3944:			break;
ADDRGP4 $1751
JUMPV
LABELV $1786
line 3946
;3945:		}
;3946:		ForceAbsorb(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceAbsorb
CALLV
pop
line 3947
;3947:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3948
;3948:		break;
ADDRGP4 $1751
JUMPV
LABELV $1788
line 3950
;3949:	case FP_TEAM_HEAL:
;3950:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3951
;3951:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1789
line 3952
;3952:		{ //need to release before we can use nonhold powers again
line 3953
;3953:			break;
ADDRGP4 $1751
JUMPV
LABELV $1789
line 3955
;3954:		}
;3955:		ForceTeamHeal(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceTeamHeal
CALLV
pop
line 3956
;3956:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3957
;3957:		break;
ADDRGP4 $1751
JUMPV
LABELV $1791
line 3959
;3958:	case FP_TEAM_FORCE:
;3959:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3960
;3960:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1792
line 3961
;3961:		{ //need to release before we can use nonhold powers again
line 3962
;3962:			break;
ADDRGP4 $1751
JUMPV
LABELV $1792
line 3964
;3963:		}
;3964:		ForceTeamForceReplenish(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceTeamForceReplenish
CALLV
pop
line 3965
;3965:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3966
;3966:		break;
ADDRGP4 $1751
JUMPV
LABELV $1794
line 3968
;3967:	case FP_DRAIN:
;3968:		ForceDrain(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceDrain
CALLV
pop
line 3969
;3969:		break;
ADDRGP4 $1751
JUMPV
LABELV $1795
line 3971
;3970:	case FP_SEE:
;3971:		powerSucceeded = 0; //always 0 for nonhold powers
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3972
;3972:		if (self->client->ps.fd.forceButtonNeedRelease)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1796
line 3973
;3973:		{ //need to release before we can use nonhold powers again
line 3974
;3974:			break;
ADDRGP4 $1751
JUMPV
LABELV $1796
line 3976
;3975:		}
;3976:		ForceSeeing(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ForceSeeing
CALLV
pop
line 3977
;3977:		self->client->ps.fd.forceButtonNeedRelease = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 1
ASGNI4
line 3978
;3978:		break;
line 3980
;3979:	case FP_SABERATTACK:
;3980:		break;
line 3982
;3981:	case FP_SABERDEFEND:
;3982:		break;
line 3984
;3983:	case FP_SABERTHROW:
;3984:		break;
line 3986
;3985:	default:
;3986:		break;
LABELV $1751
line 3989
;3987:	}
;3988:
;3989:	return powerSucceeded;
ADDRLP4 0
INDIRI4
RETI4
LABELV $1747
endproc WP_DoSpecificPower 16 12
export FindGenericEnemyIndex
proc FindGenericEnemyIndex 116 16
line 3993
;3990:}
;3991:
;3992:void FindGenericEnemyIndex(gentity_t *self)
;3993:{ //Find another client that would be considered a threat.
line 3994
;3994:	int i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 3997
;3995:	float tlen;
;3996:	gentity_t *ent;
;3997:	gentity_t *besten = NULL;
ADDRLP4 28
CNSTP4 0
ASGNP4
line 3998
;3998:	float blen = 99999999;
ADDRLP4 24
CNSTF4 1287568416
ASGNF4
ADDRGP4 $1804
JUMPV
LABELV $1803
line 4002
;3999:	vec3_t a;
;4000:
;4001:	while (i < MAX_CLIENTS)
;4002:	{
line 4003
;4003:		ent = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 4005
;4004:
;4005:		if (ent && ent->client && ent->s.number != self->s.number && ent->health > 0 && !OnSameTeam(self, ent) && ent->client->ps.pm_type != PM_INTERMISSION && ent->client->ps.pm_type != PM_SPECTATOR)
ADDRLP4 36
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 36
INDIRU4
EQU4 $1806
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 36
INDIRU4
EQU4 $1806
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
INDIRI4
ADDRLP4 40
INDIRP4
INDIRI4
EQI4 $1806
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
LEI4 $1806
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 44
INDIRI4
CNSTI4 0
NEI4 $1806
ADDRLP4 48
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 6
EQI4 $1806
ADDRLP4 48
INDIRI4
CNSTI4 3
EQI4 $1806
line 4006
;4006:		{
line 4007
;4007:			VectorSubtract(ent->client->ps.origin, self->client->ps.origin, a);
ADDRLP4 52
CNSTI4 408
ASGNI4
ADDRLP4 56
ADDRLP4 0
INDIRP4
ADDRLP4 52
INDIRI4
ADDP4
ASGNP4
ADDRLP4 60
CNSTI4 20
ASGNI4
ADDRLP4 64
ADDRFP4 0
INDIRP4
ADDRLP4 52
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8
ADDRLP4 56
INDIRP4
INDIRP4
ADDRLP4 60
INDIRI4
ADDP4
INDIRF4
ADDRLP4 64
INDIRP4
INDIRP4
ADDRLP4 60
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 68
CNSTI4 24
ASGNI4
ADDRLP4 8+4
ADDRLP4 56
INDIRP4
INDIRP4
ADDRLP4 68
INDIRI4
ADDP4
INDIRF4
ADDRLP4 64
INDIRP4
INDIRP4
ADDRLP4 68
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 72
CNSTI4 408
ASGNI4
ADDRLP4 76
CNSTI4 28
ASGNI4
ADDRLP4 8+8
ADDRLP4 0
INDIRP4
ADDRLP4 72
INDIRI4
ADDP4
INDIRP4
ADDRLP4 76
INDIRI4
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
ADDRLP4 72
INDIRI4
ADDP4
INDIRP4
ADDRLP4 76
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 4008
;4008:			tlen = VectorLength(a);
ADDRLP4 8
ARGP4
ADDRLP4 80
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 20
ADDRLP4 80
INDIRF4
ASGNF4
line 4010
;4009:
;4010:			if (tlen < blen &&
ADDRLP4 20
INDIRF4
ADDRLP4 24
INDIRF4
GEF4 $1810
ADDRLP4 84
CNSTI4 408
ASGNI4
ADDRLP4 88
CNSTI4 20
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 84
INDIRI4
ADDP4
INDIRP4
ADDRLP4 88
INDIRI4
ADDP4
ARGP4
ADDRLP4 92
ADDRFP4 0
INDIRP4
ADDRLP4 84
INDIRI4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 92
INDIRP4
ADDRLP4 88
INDIRI4
ADDP4
ARGP4
ADDRLP4 92
INDIRP4
CNSTI4 156
ADDP4
ARGP4
CNSTF4 1061997773
ARGF4
ADDRLP4 96
ADDRGP4 InFront
CALLI4
ASGNI4
ADDRLP4 96
INDIRI4
CNSTI4 0
EQI4 $1810
ADDRLP4 100
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 104
CNSTI4 408
ASGNI4
ADDRLP4 108
CNSTI4 20
ASGNI4
ADDRLP4 100
INDIRP4
ADDRLP4 104
INDIRI4
ADDP4
INDIRP4
ADDRLP4 108
INDIRI4
ADDP4
ARGP4
ADDRLP4 0
INDIRP4
ADDRLP4 104
INDIRI4
ADDP4
INDIRP4
ADDRLP4 108
INDIRI4
ADDP4
ARGP4
ADDRLP4 100
INDIRP4
INDIRI4
ARGI4
ADDRLP4 112
ADDRGP4 OrgVisible
CALLI4
ASGNI4
ADDRLP4 112
INDIRI4
CNSTI4 0
EQI4 $1810
line 4013
;4011:				InFront(ent->client->ps.origin, self->client->ps.origin, self->client->ps.viewangles, 0.8f ) &&
;4012:				OrgVisible(self->client->ps.origin, ent->client->ps.origin, self->s.number))
;4013:			{
line 4014
;4014:				blen = tlen;
ADDRLP4 24
ADDRLP4 20
INDIRF4
ASGNF4
line 4015
;4015:				besten = ent;
ADDRLP4 28
ADDRLP4 0
INDIRP4
ASGNP4
line 4016
;4016:			}
LABELV $1810
line 4017
;4017:		}
LABELV $1806
line 4019
;4018:
;4019:		i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 4020
;4020:	}
LABELV $1804
line 4001
ADDRLP4 4
INDIRI4
CNSTI4 32
LTI4 $1803
line 4022
;4021:
;4022:	if (!besten)
ADDRLP4 28
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1812
line 4023
;4023:	{
line 4024
;4024:		return;
ADDRGP4 $1802
JUMPV
LABELV $1812
line 4027
;4025:	}
;4026:
;4027:	self->client->ps.genericEnemyIndex = besten->s.number;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
ADDRLP4 28
INDIRP4
INDIRI4
ASGNI4
line 4028
;4028:}
LABELV $1802
endproc FindGenericEnemyIndex 116 16
export SeekerDroneUpdate
proc SeekerDroneUpdate 1204 28
line 4031
;4029:
;4030:void SeekerDroneUpdate(gentity_t *self)
;4031:{
line 4035
;4032:	vec3_t org, elevated, dir, a, endir;
;4033:	gentity_t *en;
;4034:	float angle;
;4035:	float prefig = 0;
ADDRLP4 56
CNSTF4 0
ASGNF4
line 4038
;4036:	trace_t tr;
;4037:
;4038:	if (!(self->client->ps.eFlags & EF_SEEKERDRONE))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
INDIRI4
CNSTI4 1048576
BANDI4
CNSTI4 0
NEI4 $1815
line 4039
;4039:	{
line 4040
;4040:		self->client->ps.genericEnemyIndex = -1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 -1
ASGNI4
line 4041
;4041:		return;
ADDRGP4 $1814
JUMPV
LABELV $1815
line 4044
;4042:	}
;4043:
;4044:	if (self->health < 1)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1817
line 4045
;4045:	{
line 4046
;4046:		VectorCopy(self->client->ps.origin, elevated);
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 4047
;4047:		elevated[2] += 40;
ADDRLP4 12+8
ADDRLP4 12+8
INDIRF4
CNSTF4 1109393408
ADDF4
ASGNF4
line 4049
;4048:
;4049:		angle = ((level.time / 12) & 255) * (M_PI * 2) / 255; //magical numbers make magic happen
ADDRLP4 36
CNSTF4 1086918619
ADDRGP4 level+32
INDIRI4
CNSTI4 12
DIVI4
CNSTI4 255
BANDI4
CVIF4 4
MULF4
CNSTF4 1132396544
DIVF4
ASGNF4
line 4050
;4050:		dir[0] = cos(angle) * 20;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1152
ADDRGP4 cos
CALLF4
ASGNF4
ADDRLP4 0
CNSTF4 1101004800
ADDRLP4 1152
INDIRF4
MULF4
ASGNF4
line 4051
;4051:		dir[1] = sin(angle) * 20;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1156
ADDRGP4 sin
CALLF4
ASGNF4
ADDRLP4 0+4
CNSTF4 1101004800
ADDRLP4 1156
INDIRF4
MULF4
ASGNF4
line 4052
;4052:		dir[2] = cos(angle) * 5;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1160
ADDRGP4 cos
CALLF4
ASGNF4
ADDRLP4 0+8
CNSTF4 1084227584
ADDRLP4 1160
INDIRF4
MULF4
ASGNF4
line 4053
;4053:		VectorAdd(elevated, dir, org);
ADDRLP4 24
ADDRLP4 12
INDIRF4
ADDRLP4 0
INDIRF4
ADDF4
ASGNF4
ADDRLP4 24+4
ADDRLP4 12+4
INDIRF4
ADDRLP4 0+4
INDIRF4
ADDF4
ASGNF4
ADDRLP4 24+8
ADDRLP4 12+8
INDIRF4
ADDRLP4 0+8
INDIRF4
ADDF4
ASGNF4
line 4055
;4054:
;4055:		a[ROLL] = 0;
ADDRLP4 44+8
CNSTF4 0
ASGNF4
line 4056
;4056:		a[YAW] = 0;
ADDRLP4 44+4
CNSTF4 0
ASGNF4
line 4057
;4057:		a[PITCH] = 1;
ADDRLP4 44
CNSTF4 1065353216
ASGNF4
line 4059
;4058:
;4059:		G_PlayEffect(EFFECT_SPARK_EXPLOSION, org, a);
CNSTI4 4
ARGI4
ADDRLP4 24
ARGP4
ADDRLP4 44
ARGP4
ADDRGP4 G_PlayEffect
CALLP4
pop
line 4061
;4060:
;4061:		self->client->ps.eFlags -= EF_SEEKERDRONE;
ADDRLP4 1164
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
ASGNP4
ADDRLP4 1164
INDIRP4
ADDRLP4 1164
INDIRP4
INDIRI4
CNSTI4 1048576
SUBI4
ASGNI4
line 4062
;4062:		self->client->ps.genericEnemyIndex = -1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 -1
ASGNI4
line 4064
;4063:
;4064:		return;
ADDRGP4 $1814
JUMPV
LABELV $1817
line 4067
;4065:	}
;4066:
;4067:	if (self->client->ps.droneExistTime >= level.time && 
ADDRLP4 1152
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 632
ADDP4
INDIRF4
ASGNF4
ADDRLP4 1152
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LTF4 $1831
ADDRLP4 1152
INDIRF4
ADDRGP4 level+32
INDIRI4
CNSTI4 5000
ADDI4
CVIF4 4
GEF4 $1831
line 4069
;4068:		self->client->ps.droneExistTime < (level.time+5000))
;4069:	{
line 4070
;4070:		self->client->ps.genericEnemyIndex = 1024+self->client->ps.droneExistTime;
ADDRLP4 1156
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1156
INDIRP4
CNSTI4 624
ADDP4
ADDRLP4 1156
INDIRP4
CNSTI4 632
ADDP4
INDIRF4
CNSTF4 1149239296
ADDF4
CVFI4 4
ASGNI4
line 4071
;4071:		if (self->client->ps.droneFireTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 628
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
GEF4 $1814
line 4072
;4072:		{
line 4073
;4073:			G_Sound( self, CHAN_BODY, G_SoundIndex("sound/weapons/laser_trap/warning.wav") );
ADDRGP4 $1838
ARGP4
ADDRLP4 1160
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 1160
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 4074
;4074:			self->client->ps.droneFireTime = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 628
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
CVIF4 4
ASGNF4
line 4075
;4075:		}
line 4076
;4076:		return;
ADDRGP4 $1814
JUMPV
LABELV $1831
line 4078
;4077:	}
;4078:	else if (self->client->ps.droneExistTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 632
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
GEF4 $1840
line 4079
;4079:	{
line 4080
;4080:		VectorCopy(self->client->ps.origin, elevated);
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 4081
;4081:		elevated[2] += 40;
ADDRLP4 12+8
ADDRLP4 12+8
INDIRF4
CNSTF4 1109393408
ADDF4
ASGNF4
line 4083
;4082:
;4083:		prefig = (self->client->ps.droneExistTime-level.time)/80;
ADDRLP4 56
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 632
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
SUBF4
CNSTF4 1117782016
DIVF4
ASGNF4
line 4085
;4084:
;4085:		if (prefig > 55)
ADDRLP4 56
INDIRF4
CNSTF4 1113325568
LEF4 $1845
line 4086
;4086:		{
line 4087
;4087:			prefig = 55;
ADDRLP4 56
CNSTF4 1113325568
ASGNF4
line 4088
;4088:		}
ADDRGP4 $1846
JUMPV
LABELV $1845
line 4089
;4089:		else if (prefig < 1)
ADDRLP4 56
INDIRF4
CNSTF4 1065353216
GEF4 $1847
line 4090
;4090:		{
line 4091
;4091:			prefig = 1;
ADDRLP4 56
CNSTF4 1065353216
ASGNF4
line 4092
;4092:		}
LABELV $1847
LABELV $1846
line 4094
;4093:
;4094:		elevated[2] -= 55-prefig;
ADDRLP4 12+8
ADDRLP4 12+8
INDIRF4
CNSTF4 1113325568
ADDRLP4 56
INDIRF4
SUBF4
SUBF4
ASGNF4
line 4096
;4095:
;4096:		angle = ((level.time / 12) & 255) * (M_PI * 2) / 255; //magical numbers make magic happen
ADDRLP4 36
CNSTF4 1086918619
ADDRGP4 level+32
INDIRI4
CNSTI4 12
DIVI4
CNSTI4 255
BANDI4
CVIF4 4
MULF4
CNSTF4 1132396544
DIVF4
ASGNF4
line 4097
;4097:		dir[0] = cos(angle) * 20;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1156
ADDRGP4 cos
CALLF4
ASGNF4
ADDRLP4 0
CNSTF4 1101004800
ADDRLP4 1156
INDIRF4
MULF4
ASGNF4
line 4098
;4098:		dir[1] = sin(angle) * 20;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1160
ADDRGP4 sin
CALLF4
ASGNF4
ADDRLP4 0+4
CNSTF4 1101004800
ADDRLP4 1160
INDIRF4
MULF4
ASGNF4
line 4099
;4099:		dir[2] = cos(angle) * 5;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1164
ADDRGP4 cos
CALLF4
ASGNF4
ADDRLP4 0+8
CNSTF4 1084227584
ADDRLP4 1164
INDIRF4
MULF4
ASGNF4
line 4100
;4100:		VectorAdd(elevated, dir, org);
ADDRLP4 24
ADDRLP4 12
INDIRF4
ADDRLP4 0
INDIRF4
ADDF4
ASGNF4
ADDRLP4 24+4
ADDRLP4 12+4
INDIRF4
ADDRLP4 0+4
INDIRF4
ADDF4
ASGNF4
ADDRLP4 24+8
ADDRLP4 12+8
INDIRF4
ADDRLP4 0+8
INDIRF4
ADDF4
ASGNF4
line 4102
;4101:
;4102:		a[ROLL] = 0;
ADDRLP4 44+8
CNSTF4 0
ASGNF4
line 4103
;4103:		a[YAW] = 0;
ADDRLP4 44+4
CNSTF4 0
ASGNF4
line 4104
;4104:		a[PITCH] = 1;
ADDRLP4 44
CNSTF4 1065353216
ASGNF4
line 4106
;4105:
;4106:		G_PlayEffect(EFFECT_SPARK_EXPLOSION, org, a);
CNSTI4 4
ARGI4
ADDRLP4 24
ARGP4
ADDRLP4 44
ARGP4
ADDRGP4 G_PlayEffect
CALLP4
pop
line 4108
;4107:
;4108:		self->client->ps.eFlags -= EF_SEEKERDRONE;
ADDRLP4 1168
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
ASGNP4
ADDRLP4 1168
INDIRP4
ADDRLP4 1168
INDIRP4
INDIRI4
CNSTI4 1048576
SUBI4
ASGNI4
line 4109
;4109:		self->client->ps.genericEnemyIndex = -1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 -1
ASGNI4
line 4111
;4110:
;4111:		return;
ADDRGP4 $1814
JUMPV
LABELV $1840
line 4114
;4112:	}
;4113:
;4114:	if (self->client->ps.genericEnemyIndex == -1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 -1
NEI4 $1861
line 4115
;4115:	{
line 4116
;4116:		self->client->ps.genericEnemyIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 1023
ASGNI4
line 4117
;4117:	}
LABELV $1861
line 4119
;4118:
;4119:	if (self->client->ps.genericEnemyIndex != ENTITYNUM_NONE && self->client->ps.genericEnemyIndex != -1)
ADDRLP4 1156
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1156
INDIRI4
CNSTI4 1023
EQI4 $1863
ADDRLP4 1156
INDIRI4
CNSTI4 -1
EQI4 $1863
line 4120
;4120:	{
line 4121
;4121:		en = &g_entities[self->client->ps.genericEnemyIndex];
ADDRLP4 40
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 4123
;4122:
;4123:		if (!en || !en->client)
ADDRLP4 1164
CNSTU4 0
ASGNU4
ADDRLP4 40
INDIRP4
CVPU4 4
ADDRLP4 1164
INDIRU4
EQU4 $1867
ADDRLP4 40
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 1164
INDIRU4
NEU4 $1865
LABELV $1867
line 4124
;4124:		{
line 4125
;4125:			self->client->ps.genericEnemyIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 1023
ASGNI4
line 4126
;4126:		}
ADDRGP4 $1866
JUMPV
LABELV $1865
line 4127
;4127:		else if (en->s.number == self->s.number)
ADDRLP4 40
INDIRP4
INDIRI4
ADDRFP4 0
INDIRP4
INDIRI4
NEI4 $1868
line 4128
;4128:		{
line 4129
;4129:			self->client->ps.genericEnemyIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 1023
ASGNI4
line 4130
;4130:		}
ADDRGP4 $1869
JUMPV
LABELV $1868
line 4131
;4131:		else if (en->health < 1)
ADDRLP4 40
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1870
line 4132
;4132:		{
line 4133
;4133:			self->client->ps.genericEnemyIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 1023
ASGNI4
line 4134
;4134:		}
ADDRGP4 $1871
JUMPV
LABELV $1870
line 4135
;4135:		else if (OnSameTeam(self, en))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 1168
ADDRGP4 OnSameTeam
CALLI4
ASGNI4
ADDRLP4 1168
INDIRI4
CNSTI4 0
EQI4 $1872
line 4136
;4136:		{
line 4137
;4137:			self->client->ps.genericEnemyIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 1023
ASGNI4
line 4138
;4138:		}
ADDRGP4 $1873
JUMPV
LABELV $1872
line 4140
;4139:		else
;4140:		{
line 4141
;4141:			if (!InFront(en->client->ps.origin, self->client->ps.origin, self->client->ps.viewangles, 0.8f ))
ADDRLP4 1172
CNSTI4 408
ASGNI4
ADDRLP4 1176
CNSTI4 20
ASGNI4
ADDRLP4 40
INDIRP4
ADDRLP4 1172
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1176
INDIRI4
ADDP4
ARGP4
ADDRLP4 1180
ADDRFP4 0
INDIRP4
ADDRLP4 1172
INDIRI4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1180
INDIRP4
ADDRLP4 1176
INDIRI4
ADDP4
ARGP4
ADDRLP4 1180
INDIRP4
CNSTI4 156
ADDP4
ARGP4
CNSTF4 1061997773
ARGF4
ADDRLP4 1184
ADDRGP4 InFront
CALLI4
ASGNI4
ADDRLP4 1184
INDIRI4
CNSTI4 0
NEI4 $1874
line 4142
;4142:			{
line 4143
;4143:				self->client->ps.genericEnemyIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 1023
ASGNI4
line 4144
;4144:			}
ADDRGP4 $1875
JUMPV
LABELV $1874
line 4145
;4145:			else if (!OrgVisible(self->client->ps.origin, en->client->ps.origin, self->s.number))
ADDRLP4 1188
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1192
CNSTI4 408
ASGNI4
ADDRLP4 1196
CNSTI4 20
ASGNI4
ADDRLP4 1188
INDIRP4
ADDRLP4 1192
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1196
INDIRI4
ADDP4
ARGP4
ADDRLP4 40
INDIRP4
ADDRLP4 1192
INDIRI4
ADDP4
INDIRP4
ADDRLP4 1196
INDIRI4
ADDP4
ARGP4
ADDRLP4 1188
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1200
ADDRGP4 OrgVisible
CALLI4
ASGNI4
ADDRLP4 1200
INDIRI4
CNSTI4 0
NEI4 $1876
line 4146
;4146:			{
line 4147
;4147:				self->client->ps.genericEnemyIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
CNSTI4 1023
ASGNI4
line 4148
;4148:			}
LABELV $1876
LABELV $1875
line 4149
;4149:		}
LABELV $1873
LABELV $1871
LABELV $1869
LABELV $1866
line 4150
;4150:	}
LABELV $1863
line 4152
;4151:
;4152:	if (self->client->ps.genericEnemyIndex == ENTITYNUM_NONE || self->client->ps.genericEnemyIndex == -1)
ADDRLP4 1160
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1160
INDIRI4
CNSTI4 1023
EQI4 $1880
ADDRLP4 1160
INDIRI4
CNSTI4 -1
NEI4 $1878
LABELV $1880
line 4153
;4153:	{
line 4154
;4154:		FindGenericEnemyIndex(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 FindGenericEnemyIndex
CALLV
pop
line 4155
;4155:	}
LABELV $1878
line 4157
;4156:
;4157:	if (self->client->ps.genericEnemyIndex != ENTITYNUM_NONE && self->client->ps.genericEnemyIndex != -1)
ADDRLP4 1164
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1164
INDIRI4
CNSTI4 1023
EQI4 $1881
ADDRLP4 1164
INDIRI4
CNSTI4 -1
EQI4 $1881
line 4158
;4158:	{
line 4159
;4159:		en = &g_entities[self->client->ps.genericEnemyIndex];
ADDRLP4 40
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 4161
;4160:
;4161:		VectorCopy(self->client->ps.origin, elevated);
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 4162
;4162:		elevated[2] += 40;
ADDRLP4 12+8
ADDRLP4 12+8
INDIRF4
CNSTF4 1109393408
ADDF4
ASGNF4
line 4164
;4163:
;4164:		angle = ((level.time / 12) & 255) * (M_PI * 2) / 255; //magical numbers make magic happen
ADDRLP4 36
CNSTF4 1086918619
ADDRGP4 level+32
INDIRI4
CNSTI4 12
DIVI4
CNSTI4 255
BANDI4
CVIF4 4
MULF4
CNSTF4 1132396544
DIVF4
ASGNF4
line 4165
;4165:		dir[0] = cos(angle) * 20;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1168
ADDRGP4 cos
CALLF4
ASGNF4
ADDRLP4 0
CNSTF4 1101004800
ADDRLP4 1168
INDIRF4
MULF4
ASGNF4
line 4166
;4166:		dir[1] = sin(angle) * 20;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1172
ADDRGP4 sin
CALLF4
ASGNF4
ADDRLP4 0+4
CNSTF4 1101004800
ADDRLP4 1172
INDIRF4
MULF4
ASGNF4
line 4167
;4167:		dir[2] = cos(angle) * 5;
ADDRLP4 36
INDIRF4
ARGF4
ADDRLP4 1176
ADDRGP4 cos
CALLF4
ASGNF4
ADDRLP4 0+8
CNSTF4 1084227584
ADDRLP4 1176
INDIRF4
MULF4
ASGNF4
line 4168
;4168:		VectorAdd(elevated, dir, org);
ADDRLP4 24
ADDRLP4 12
INDIRF4
ADDRLP4 0
INDIRF4
ADDF4
ASGNF4
ADDRLP4 24+4
ADDRLP4 12+4
INDIRF4
ADDRLP4 0+4
INDIRF4
ADDF4
ASGNF4
ADDRLP4 24+8
ADDRLP4 12+8
INDIRF4
ADDRLP4 0+8
INDIRF4
ADDF4
ASGNF4
line 4171
;4169:
;4170:		//org is now where the thing should be client-side because it uses the same time-based offset
;4171:		if (self->client->ps.droneFireTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 628
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
GEF4 $1893
line 4172
;4172:		{
line 4173
;4173:			trap_Trace(&tr, org, NULL, NULL, en->client->ps.origin, -1, MASK_SOLID);
ADDRLP4 60
ARGP4
ADDRLP4 24
ARGP4
ADDRLP4 1180
CNSTP4 0
ASGNP4
ADDRLP4 1180
INDIRP4
ARGP4
ADDRLP4 1180
INDIRP4
ARGP4
ADDRLP4 40
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 4175
;4174:
;4175:			if (tr.fraction == 1 && !tr.startsolid && !tr.allsolid)
ADDRLP4 60+8
INDIRF4
CNSTF4 1065353216
NEF4 $1896
ADDRLP4 1184
CNSTI4 0
ASGNI4
ADDRLP4 60+4
INDIRI4
ADDRLP4 1184
INDIRI4
NEI4 $1896
ADDRLP4 60
INDIRI4
ADDRLP4 1184
INDIRI4
NEI4 $1896
line 4176
;4176:			{
line 4177
;4177:				VectorSubtract(en->client->ps.origin, org, endir);
ADDRLP4 1188
ADDRLP4 40
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 1140
ADDRLP4 1188
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 24
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1140+4
ADDRLP4 1188
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 24+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1140+8
ADDRLP4 40
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRLP4 24+8
INDIRF4
SUBF4
ASGNF4
line 4178
;4178:				VectorNormalize(endir);
ADDRLP4 1140
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 4180
;4179:
;4180:				WP_FireGenericBlasterMissile(self, org, endir, 0, 15, 2000, MOD_BLASTER);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 24
ARGP4
ADDRLP4 1140
ARGP4
CNSTI4 0
ARGI4
CNSTI4 15
ARGI4
CNSTI4 2000
ARGI4
CNSTI4 6
ARGI4
ADDRGP4 WP_FireGenericBlasterMissile
CALLV
pop
line 4181
;4181:				G_SoundAtLoc( org, CHAN_WEAPON, G_SoundIndex("sound/weapons/bryar/fire.wav") );
ADDRGP4 $1904
ARGP4
ADDRLP4 1192
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 24
ARGP4
CNSTI4 2
ARGI4
ADDRLP4 1192
INDIRI4
ARGI4
ADDRGP4 G_SoundAtLoc
CALLV
pop
line 4183
;4182:
;4183:				self->client->ps.droneFireTime = level.time + Q_irand(400, 700);
CNSTI4 400
ARGI4
CNSTI4 700
ARGI4
ADDRLP4 1196
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 628
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 1196
INDIRI4
ADDI4
CVIF4 4
ASGNF4
line 4184
;4184:			}
LABELV $1896
line 4185
;4185:		}
LABELV $1893
line 4186
;4186:	}
LABELV $1881
line 4187
;4187:}
LABELV $1814
endproc SeekerDroneUpdate 1204 28
export HolocronUpdate
proc HolocronUpdate 12 4
line 4190
;4188:
;4189:void HolocronUpdate(gentity_t *self)
;4190:{ //keep holocron status updated in holocron mode
line 4191
;4191:	int i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 4192
;4192:	int noHRank = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 4194
;4193:
;4194:	if (noHRank < FORCE_LEVEL_0)
ADDRLP4 0
INDIRI4
CNSTI4 0
GEI4 $1907
line 4195
;4195:	{
line 4196
;4196:		noHRank = FORCE_LEVEL_0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 4197
;4197:	}
LABELV $1907
line 4198
;4198:	if (noHRank > FORCE_LEVEL_3)
ADDRLP4 0
INDIRI4
CNSTI4 3
LEI4 $1909
line 4199
;4199:	{
line 4200
;4200:		noHRank = FORCE_LEVEL_3;
ADDRLP4 0
CNSTI4 3
ASGNI4
line 4201
;4201:	}
LABELV $1909
line 4203
;4202:
;4203:	trap_Cvar_Update(&g_MaxHolocronCarry);
ADDRGP4 g_MaxHolocronCarry
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
line 4268
;4204:
;4205:	// adnan
;4206:   // killed holocron crap
;4207:   /*
;4208:   while (i < NUM_FORCE_POWERS)
;4209:	{
;4210:		if (self->client->ps.holocronsCarried[i])
;4211:		{ //carrying it, make sure we have the power
;4212:			self->client->ps.holocronBits |= (1 << i);
;4213:			self->client->ps.fd.forcePowersKnown |= (1 << i);
;4214:			self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_3;
;4215:		}
;4216:		else
;4217:		{ //otherwise, make sure the power is cleared from us
;4218:			self->client->ps.fd.forcePowerLevel[i] = 0;
;4219:			if (self->client->ps.holocronBits & (1 << i))
;4220:			{
;4221:				self->client->ps.holocronBits -= (1 << i);
;4222:			}
;4223:
;4224:			if ((self->client->ps.fd.forcePowersKnown & (1 << i)) && i != FP_LEVITATION && i != FP_SABERATTACK)
;4225:			{
;4226:				self->client->ps.fd.forcePowersKnown -= (1 << i);
;4227:			}
;4228:
;4229:			if ((self->client->ps.fd.forcePowersActive & (1 << i)) && i != FP_LEVITATION && i != FP_SABERATTACK)
;4230:			{
;4231:				WP_ForcePowerStop(self, i);
;4232:			}
;4233:
;4234:			if (i == FP_LEVITATION)
;4235:			{
;4236:				if (noHRank >= FORCE_LEVEL_1)
;4237:				{
;4238:					self->client->ps.fd.forcePowerLevel[i] = noHRank;
;4239:				}
;4240:				else
;4241:				{
;4242:					self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_1;
;4243:				}
;4244:			}
;4245:			else if (i == FP_SABERATTACK)
;4246:			{
;4247:				self->client->ps.fd.forcePowersKnown |= (1 << i);
;4248:
;4249:				if (noHRank >= FORCE_LEVEL_1)
;4250:				{
;4251:					self->client->ps.fd.forcePowerLevel[i] = noHRank;
;4252:				}
;4253:				else
;4254:				{
;4255:					self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_1;
;4256:				}
;4257:			}
;4258:			else
;4259:			{
;4260:				self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_0;
;4261:			}
;4262:		}
;4263:
;4264:		i++;
;4265:	}
;4266:   */
;4267:
;4268:	if (HasSetSaberOnly())
ADDRLP4 8
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $1911
line 4269
;4269:	{ //if saberonly, we get these powers no matter what (still need the holocrons for level 3)
line 4270
;4270:		if (self->client->ps.fd.forcePowerLevel[FP_SABERATTACK] < FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1004
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1913
line 4271
;4271:		{
line 4272
;4272:			self->client->ps.fd.forcePowerLevel[FP_SABERATTACK] = FORCE_LEVEL_1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1004
ADDP4
CNSTI4 1
ASGNI4
line 4273
;4273:		}
LABELV $1913
line 4274
;4274:		if (self->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] < FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1008
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1915
line 4275
;4275:		{
line 4276
;4276:			self->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] = FORCE_LEVEL_1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1008
ADDP4
CNSTI4 1
ASGNI4
line 4277
;4277:		}
LABELV $1915
line 4278
;4278:	}
LABELV $1911
line 4279
;4279:}
LABELV $1906
endproc HolocronUpdate 12 4
export JediMasterUpdate
proc JediMasterUpdate 20 8
line 4282
;4280:
;4281:void JediMasterUpdate(gentity_t *self)
;4282:{ //keep jedi master status updated for JM gametype
line 4283
;4283:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 4285
;4284:
;4285:	trap_Cvar_Update(&g_MaxHolocronCarry);
ADDRGP4 g_MaxHolocronCarry
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
ADDRGP4 $1919
JUMPV
LABELV $1918
line 4288
;4286:
;4287:	while (i < NUM_FORCE_POWERS)
;4288:	{
line 4289
;4289:		if (self->client->ps.isJediMaster)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 604
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1921
line 4290
;4290:		{
line 4291
;4291:			self->client->ps.fd.forcePowersKnown |= (1 << i);
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BORI4
ASGNI4
line 4292
;4292:			self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_3;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
CNSTI4 3
ASGNI4
line 4294
;4293:
;4294:			if (i == FP_TEAM_HEAL || i == FP_TEAM_FORCE ||
ADDRLP4 0
INDIRI4
CNSTI4 11
EQI4 $1927
ADDRLP4 0
INDIRI4
CNSTI4 12
EQI4 $1927
ADDRLP4 0
INDIRI4
CNSTI4 13
EQI4 $1927
ADDRLP4 0
INDIRI4
CNSTI4 10
NEI4 $1923
LABELV $1927
line 4296
;4295:				i == FP_DRAIN || i == FP_ABSORB)
;4296:			{ //team powers are useless in JM, absorb is too because no one else has powers to absorb. Drain is just
line 4299
;4297:			  //relatively useless in comparison, because its main intent is not to heal, but rather to cripple others
;4298:			  //by draining their force at the same time. And no one needs force in JM except the JM himself.
;4299:				self->client->ps.fd.forcePowersKnown &= ~(1 << i);
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 12
INDIRP4
ADDRLP4 12
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 4300
;4300:				self->client->ps.fd.forcePowerLevel[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 4301
;4301:			}
LABELV $1923
line 4303
;4302:
;4303:			if (i == FP_TELEPATHY)
ADDRLP4 0
INDIRI4
CNSTI4 5
NEI4 $1922
line 4304
;4304:			{ //this decision was made because level 3 mindtrick allows the JM to just hide too much, and no one else has force
line 4307
;4305:			  //sight to counteract it. Since the JM himself is the focus of gameplay in this mode, having him hidden for large
;4306:			  //durations is indeed a bad thing.
;4307:				self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_2;
ADDRLP4 12
CNSTI4 2
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 12
INDIRI4
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
ADDRLP4 12
INDIRI4
ASGNI4
line 4308
;4308:			}
line 4309
;4309:		}
ADDRGP4 $1922
JUMPV
LABELV $1921
line 4311
;4310:		else
;4311:		{
line 4312
;4312:			if ((self->client->ps.fd.forcePowersKnown & (1 << i)) && i != FP_LEVITATION)
ADDRLP4 4
CNSTI4 1
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $1930
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $1930
line 4313
;4313:			{
line 4314
;4314:				self->client->ps.fd.forcePowersKnown -= (1 << i);
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 12
INDIRP4
ADDRLP4 12
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
SUBI4
ASGNI4
line 4315
;4315:			}
LABELV $1930
line 4317
;4316:
;4317:			if ((self->client->ps.fd.forcePowersActive & (1 << i)) && i != FP_LEVITATION)
ADDRLP4 12
CNSTI4 1
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
ADDRLP4 12
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $1932
ADDRLP4 0
INDIRI4
ADDRLP4 12
INDIRI4
EQI4 $1932
line 4318
;4318:			{
line 4319
;4319:				WP_ForcePowerStop(self, i);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4320
;4320:			}
LABELV $1932
line 4322
;4321:
;4322:			if (i == FP_LEVITATION)
ADDRLP4 0
INDIRI4
CNSTI4 1
NEI4 $1934
line 4323
;4323:			{
line 4324
;4324:				self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_1;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
CNSTI4 1
ASGNI4
line 4325
;4325:			}
ADDRGP4 $1935
JUMPV
LABELV $1934
line 4327
;4326:			else
;4327:			{
line 4328
;4328:				self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 4329
;4329:			}
LABELV $1935
line 4330
;4330:		}
LABELV $1922
line 4332
;4331:
;4332:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 4333
;4333:	}
LABELV $1919
line 4287
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $1918
line 4334
;4334:}
LABELV $1917
endproc JediMasterUpdate 20 8
export WP_HasForcePowers
proc WP_HasForcePowers 4 0
line 4337
;4335:
;4336:qboolean WP_HasForcePowers( const playerState_t *ps )
;4337:{
line 4339
;4338:	int i;
;4339:	if ( ps )
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1937
line 4340
;4340:	{
line 4341
;4341:		for ( i = 0; i < NUM_FORCE_POWERS; i++ )
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $1939
line 4342
;4342:		{
line 4343
;4343:			if ( i == FP_LEVITATION )
ADDRLP4 0
INDIRI4
CNSTI4 1
NEI4 $1943
line 4344
;4344:			{
line 4345
;4345:				if ( ps->fd.forcePowerLevel[i] > FORCE_LEVEL_1 )
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
CNSTI4 1
LEI4 $1944
line 4346
;4346:				{
line 4347
;4347:					return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $1936
JUMPV
line 4349
;4348:				}
;4349:			}
LABELV $1943
line 4350
;4350:			else if ( ps->fd.forcePowerLevel[i] > FORCE_LEVEL_0 )
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
CNSTI4 0
LEI4 $1947
line 4351
;4351:			{
line 4352
;4352:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $1936
JUMPV
LABELV $1947
LABELV $1944
line 4354
;4353:			}
;4354:		}
LABELV $1940
line 4341
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $1939
line 4355
;4355:	}
LABELV $1937
line 4356
;4356:	return qfalse;
CNSTI4 0
RETI4
LABELV $1936
endproc WP_HasForcePowers 4 0
export WP_ForcePowersUpdate
proc WP_ForcePowersUpdate 136 32
line 4360
;4357:}
;4358:
;4359:void WP_ForcePowersUpdate( gentity_t *self, usercmd_t *ucmd )
;4360:{
line 4361
;4361:	qboolean	usingForce = qfalse;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 4364
;4362:	vec3_t		dmgdir;
;4363:	int			i, holo, holoregen;
;4364:	int			prepower = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 4366
;4365:	//see if any force powers are running
;4366:	if ( !self )
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1950
line 4367
;4367:	{
line 4368
;4368:		return;
ADDRGP4 $1949
JUMPV
LABELV $1950
line 4371
;4369:	}
;4370:
;4371:	if ( !self->client )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1952
line 4372
;4372:	{
line 4373
;4373:		return;
ADDRGP4 $1949
JUMPV
LABELV $1952
line 4376
;4374:	}
;4375:
;4376:	if (self->client->ps.pm_flags & PMF_FOLLOW)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 4096
BANDI4
CNSTI4 0
EQI4 $1954
line 4377
;4377:	{ //not a "real" game client, it's a spectator following someone
line 4378
;4378:		return;
ADDRGP4 $1949
JUMPV
LABELV $1954
line 4380
;4379:	}
;4380:	if (self->client->sess.sessionTeam == TEAM_SPECTATOR)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1956
line 4381
;4381:	{
line 4382
;4382:		return;
ADDRGP4 $1949
JUMPV
LABELV $1956
line 4385
;4383:	}
;4384:
;4385:	if (self->client->ps.fd.saberAnimLevel > self->client->ps.fd.forcePowerLevel[FP_SABERATTACK])
ADDRLP4 32
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 32
INDIRP4
CNSTI4 1228
ADDP4
INDIRI4
ADDRLP4 32
INDIRP4
CNSTI4 1004
ADDP4
INDIRI4
LEI4 $1958
line 4386
;4386:	{
line 4387
;4387:		self->client->ps.fd.saberAnimLevel = self->client->ps.fd.forcePowerLevel[FP_SABERATTACK];
ADDRLP4 36
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI4 1228
ADDP4
ADDRLP4 36
INDIRP4
CNSTI4 1004
ADDP4
INDIRI4
ASGNI4
line 4388
;4388:	}
ADDRGP4 $1959
JUMPV
LABELV $1958
line 4389
;4389:	else if (!self->client->ps.fd.saberAnimLevel)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1228
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1960
line 4390
;4390:	{
line 4391
;4391:		self->client->ps.fd.saberAnimLevel = FORCE_LEVEL_1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1228
ADDP4
CNSTI4 1
ASGNI4
line 4392
;4392:	}
LABELV $1960
LABELV $1959
line 4394
;4393:
;4394:	if (!(self->client->ps.fd.forcePowersKnown & (1 << FP_LEVITATION)))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
INDIRI4
CNSTI4 2
BANDI4
CNSTI4 0
NEI4 $1962
line 4395
;4395:	{
line 4396
;4396:		self->client->ps.fd.forcePowersKnown |= (1 << FP_LEVITATION);
ADDRLP4 36
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 36
INDIRP4
INDIRI4
CNSTI4 2
BORI4
ASGNI4
line 4397
;4397:	}
LABELV $1962
line 4399
;4398:
;4399:	if (self->client->ps.fd.forcePowerLevel[FP_LEVITATION] < FORCE_LEVEL_1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1964
line 4400
;4400:	{
line 4401
;4401:		self->client->ps.fd.forcePowerLevel[FP_LEVITATION] = FORCE_LEVEL_1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 948
ADDP4
CNSTI4 1
ASGNI4
line 4402
;4402:	}
LABELV $1964
line 4404
;4403:
;4404:	if (self->client->ps.fd.forcePowerSelected < 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 0
GEI4 $1966
line 4405
;4405:	{ //bad
line 4406
;4406:		self->client->ps.fd.forcePowerSelected = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
CNSTI4 0
ASGNI4
line 4407
;4407:	}
LABELV $1966
line 4409
;4408:
;4409:	if ( ((self->client->sess.selectedFP != self->client->ps.fd.forcePowerSelected) ||
ADDRLP4 36
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI4 1560
ADDP4
INDIRI4
ADDRLP4 36
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
NEI4 $1970
ADDRLP4 36
INDIRP4
CNSTI4 1564
ADDP4
INDIRI4
ADDRLP4 36
INDIRP4
CNSTI4 1228
ADDP4
INDIRI4
EQI4 $1968
LABELV $1970
ADDRFP4 0
INDIRP4
CNSTI4 304
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
NEI4 $1968
line 4412
;4410:		(self->client->sess.saberLevel != self->client->ps.fd.saberAnimLevel)) &&
;4411:		!(self->r.svFlags & SVF_BOT) )
;4412:	{
line 4413
;4413:		if (self->client->sess.updateUITime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1572
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1971
line 4414
;4414:		{ //a bit hackish, but we don't want the client to flood with userinfo updates if they rapidly cycle
line 4417
;4415:		  //through their force powers or saber attack levels
;4416:
;4417:			self->client->sess.selectedFP = self->client->ps.fd.forcePowerSelected;
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 40
INDIRP4
CNSTI4 1560
ADDP4
ADDRLP4 40
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
ASGNI4
line 4418
;4418:			self->client->sess.saberLevel = self->client->ps.fd.saberAnimLevel;
ADDRLP4 44
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
CNSTI4 1564
ADDP4
ADDRLP4 44
INDIRP4
CNSTI4 1228
ADDP4
INDIRI4
ASGNI4
line 4419
;4419:		}
LABELV $1971
line 4420
;4420:	}
LABELV $1968
line 4422
;4421:
;4422:	if (!g_LastFrameTime)
ADDRGP4 g_LastFrameTime
INDIRI4
CNSTI4 0
NEI4 $1974
line 4423
;4423:	{
line 4424
;4424:		g_LastFrameTime = level.time;
ADDRGP4 g_LastFrameTime
ADDRGP4 level+32
INDIRI4
ASGNI4
line 4425
;4425:	}
LABELV $1974
line 4427
;4426:
;4427:	if (self->client->ps.forceHandExtend == HANDEXTEND_KNOCKDOWN)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 8
NEI4 $1977
line 4428
;4428:	{
line 4429
;4429:		self->client->ps.zoomFov = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1344
ADDP4
CNSTF4 0
ASGNF4
line 4430
;4430:		self->client->ps.zoomMode = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1332
ADDP4
CNSTI4 0
ASGNI4
line 4431
;4431:		self->client->ps.zoomLocked = qfalse;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1340
ADDP4
CNSTI4 0
ASGNI4
line 4432
;4432:		self->client->ps.zoomTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1336
ADDP4
CNSTI4 0
ASGNI4
line 4433
;4433:	}
LABELV $1977
line 4435
;4434:
;4435:	if (self->client->ps.forceHandExtend == HANDEXTEND_KNOCKDOWN &&
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 40
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 8
NEI4 $1979
ADDRLP4 40
INDIRP4
CNSTI4 1252
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LTI4 $1979
line 4437
;4436:		self->client->ps.forceHandExtendTime >= level.time)
;4437:	{
line 4438
;4438:		self->client->ps.saberMove = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 512
ADDP4
CNSTI4 0
ASGNI4
line 4439
;4439:		self->client->ps.saberBlocking = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 516
ADDP4
CNSTI4 0
ASGNI4
line 4440
;4440:		self->client->ps.saberBlocked = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 520
ADDP4
CNSTI4 0
ASGNI4
line 4441
;4441:		self->client->ps.weaponTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
CNSTI4 0
ASGNI4
line 4442
;4442:	}
ADDRGP4 $1980
JUMPV
LABELV $1979
line 4443
;4443:	else if (self->client->ps.forceHandExtend != HANDEXTEND_NONE &&
ADDRLP4 44
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1982
ADDRLP4 44
INDIRP4
CNSTI4 1252
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1982
line 4445
;4444:		self->client->ps.forceHandExtendTime < level.time)
;4445:	{
line 4446
;4446:		if (self->client->ps.forceHandExtend == HANDEXTEND_KNOCKDOWN &&
ADDRLP4 48
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 48
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 8
NEI4 $1985
ADDRLP4 48
INDIRP4
CNSTI4 1260
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1985
line 4448
;4447:			!self->client->ps.forceDodgeAnim)
;4448:		{
line 4449
;4449:			if (self->health < 1 || (self->client->ps.eFlags & EF_DEAD))
ADDRLP4 52
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 56
CNSTI4 1
ASGNI4
ADDRLP4 52
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
ADDRLP4 56
INDIRI4
LTI4 $1989
ADDRLP4 52
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
INDIRI4
ADDRLP4 56
INDIRI4
BANDI4
CNSTI4 0
EQI4 $1987
LABELV $1989
line 4450
;4450:			{
line 4451
;4451:				self->client->ps.forceHandExtend = HANDEXTEND_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 0
ASGNI4
line 4452
;4452:			}
ADDRGP4 $1986
JUMPV
LABELV $1987
line 4454
;4453:			else
;4454:			{
line 4455
;4455:				if (self->client->pers.cmd.upmove &&
ADDRLP4 60
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 60
INDIRP4
CNSTI4 1410
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $1990
ADDRLP4 60
INDIRP4
CNSTI4 948
ADDP4
INDIRI4
CNSTI4 1
LEI4 $1990
line 4457
;4456:					self->client->ps.fd.forcePowerLevel[FP_LEVITATION] > FORCE_LEVEL_1)
;4457:				{ //force getup
line 4458
;4458:					G_PreDefSound(self->client->ps.origin, PDSOUND_FORCEJUMP);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 5
ARGI4
ADDRGP4 G_PreDefSound
CALLP4
pop
line 4459
;4459:					self->client->ps.forceDodgeAnim = 2;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
CNSTI4 2
ASGNI4
line 4460
;4460:					self->client->ps.forceHandExtendTime = level.time + 500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 4462
;4461:
;4462:					self->client->ps.velocity[2] = 400;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1137180672
ASGNF4
line 4463
;4463:				}
ADDRGP4 $1986
JUMPV
LABELV $1990
line 4464
;4464:				else if (self->client->ps.quickerGetup)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1264
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1993
line 4465
;4465:				{
line 4466
;4466:					self->client->ps.quickerGetup = qfalse;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1264
ADDP4
CNSTI4 0
ASGNI4
line 4467
;4467:					G_EntitySound( self, CHAN_VOICE, G_SoundIndex("*jump1.wav") );
ADDRGP4 $1995
ARGP4
ADDRLP4 64
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 3
ARGI4
ADDRLP4 64
INDIRI4
ARGI4
ADDRGP4 G_EntitySound
CALLV
pop
line 4468
;4468:					self->client->ps.forceDodgeAnim = 3;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
CNSTI4 3
ASGNI4
line 4469
;4469:					self->client->ps.forceHandExtendTime = level.time + 500;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 4470
;4470:					self->client->ps.velocity[2] = 300;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTF4 1133903872
ASGNF4
line 4471
;4471:				}
ADDRGP4 $1986
JUMPV
LABELV $1993
line 4473
;4472:				else
;4473:				{
line 4474
;4474:					self->client->ps.forceDodgeAnim = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
CNSTI4 1
ASGNI4
line 4475
;4475:					self->client->ps.forceHandExtendTime = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 4476
;4476:				}
line 4477
;4477:			}
line 4478
;4478:		}
ADDRGP4 $1986
JUMPV
LABELV $1985
line 4480
;4479:		else
;4480:		{
line 4481
;4481:			self->client->ps.forceHandExtend = HANDEXTEND_WEAPONREADY;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 6
ASGNI4
line 4482
;4482:		}
LABELV $1986
line 4483
;4483:	}
LABELV $1982
LABELV $1980
line 4485
;4484:
;4485:	if (g_gametype.integer == GT_HOLOCRON)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 1
NEI4 $1998
line 4486
;4486:	{
line 4487
;4487:		HolocronUpdate(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 HolocronUpdate
CALLV
pop
line 4488
;4488:	}
LABELV $1998
line 4489
;4489:	if (g_gametype.integer == GT_JEDIMASTER)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 2
NEI4 $2001
line 4490
;4490:	{
line 4491
;4491:		JediMasterUpdate(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 JediMasterUpdate
CALLV
pop
line 4492
;4492:	}
LABELV $2001
line 4494
;4493:
;4494:	SeekerDroneUpdate(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 SeekerDroneUpdate
CALLV
pop
line 4496
;4495:
;4496:	if (self->client->ps.powerups[PW_FORCE_BOON])
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 400
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2004
line 4497
;4497:	{
line 4498
;4498:		prepower = self->client->ps.fd.forcePower;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
ASGNI4
line 4499
;4499:	}
LABELV $2004
line 4501
;4500:
;4501:	if (self && self->client && (BG_HasYsalamiri(g_gametype.integer, &self->client->ps) ||
ADDRLP4 48
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 52
CNSTU4 0
ASGNU4
ADDRLP4 48
INDIRP4
CVPU4 4
ADDRLP4 52
INDIRU4
EQU4 $2006
ADDRLP4 56
ADDRLP4 48
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 56
INDIRP4
CVPU4 4
ADDRLP4 52
INDIRU4
EQU4 $2006
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRLP4 56
INDIRP4
ARGP4
ADDRLP4 60
ADDRGP4 BG_HasYsalamiri
CALLI4
ASGNI4
ADDRLP4 64
CNSTI4 0
ASGNI4
ADDRLP4 60
INDIRI4
ADDRLP4 64
INDIRI4
NEI4 $2009
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1196
ADDP4
INDIRI4
ADDRLP4 64
INDIRI4
EQI4 $2006
LABELV $2009
line 4503
;4502:		self->client->ps.fd.forceDeactivateAll))
;4503:	{ //has ysalamiri.. or we want to forcefully stop all his active powers
line 4504
;4504:		i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $2011
JUMPV
LABELV $2010
line 4507
;4505:
;4506:		while (i < NUM_FORCE_POWERS)
;4507:		{
line 4508
;4508:			if ((self->client->ps.fd.forcePowersActive & (1 << i)) && i != FP_LEVITATION)
ADDRLP4 68
CNSTI4 1
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
ADDRLP4 68
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $2013
ADDRLP4 0
INDIRI4
ADDRLP4 68
INDIRI4
EQI4 $2013
line 4509
;4509:			{
line 4510
;4510:				WP_ForcePowerStop(self, i);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4511
;4511:			}
LABELV $2013
line 4513
;4512:
;4513:			i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 4514
;4514:		}
LABELV $2011
line 4506
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $2010
line 4516
;4515:
;4516:		self->client->ps.fd.forceDeactivateAll = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1196
ADDP4
CNSTI4 0
ASGNI4
line 4518
;4517:
;4518:		if (self->client->ps.fd.forceJumpCharge)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 0
EQF4 $2007
line 4519
;4519:		{
line 4520
;4520:			G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1204
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 4521
;4521:			self->client->ps.fd.forceJumpCharge = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
CNSTF4 0
ASGNF4
line 4522
;4522:		}
line 4523
;4523:	}
ADDRGP4 $2007
JUMPV
LABELV $2006
line 4525
;4524:	else
;4525:	{ //otherwise just do a check through them all to see if they need to be stopped for any reason.
line 4526
;4526:		i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $2018
JUMPV
LABELV $2017
line 4529
;4527:
;4528:		while (i < NUM_FORCE_POWERS)
;4529:		{
line 4530
;4530:			if ((self->client->ps.fd.forcePowersActive & (1 << i)) && i != FP_LEVITATION &&
ADDRLP4 68
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 72
CNSTI4 1
ASGNI4
ADDRLP4 68
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
ADDRLP4 72
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $2020
ADDRLP4 0
INDIRI4
ADDRLP4 72
INDIRI4
EQI4 $2020
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRLP4 68
INDIRP4
ARGP4
ADDRGP4 level+32
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 80
ADDRGP4 BG_CanUseFPNow
CALLI4
ASGNI4
ADDRLP4 80
INDIRI4
CNSTI4 0
NEI4 $2020
line 4532
;4531:				!BG_CanUseFPNow(g_gametype.integer, &self->client->ps, level.time, i))
;4532:			{
line 4533
;4533:				WP_ForcePowerStop(self, i);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4534
;4534:			}
LABELV $2020
line 4536
;4535:
;4536:			i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 4537
;4537:		}
LABELV $2018
line 4528
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $2017
line 4538
;4538:	}
LABELV $2007
line 4540
;4539:
;4540:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 4542
;4541:
;4542:	if (self->client->ps.powerups[PW_FORCE_ENLIGHTENED_LIGHT] || self->client->ps.powerups[PW_FORCE_ENLIGHTENED_DARK])
ADDRLP4 68
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 72
CNSTI4 0
ASGNI4
ADDRLP4 68
INDIRP4
CNSTI4 392
ADDP4
INDIRI4
ADDRLP4 72
INDIRI4
NEI4 $2026
ADDRLP4 68
INDIRP4
CNSTI4 396
ADDP4
INDIRI4
ADDRLP4 72
INDIRI4
EQI4 $2024
LABELV $2026
line 4543
;4543:	{ //enlightenment
line 4544
;4544:		if (!self->client->ps.fd.forceUsingAdded)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1088
ADDP4
INDIRI4
CNSTI4 0
NEI4 $2025
line 4545
;4545:		{
line 4546
;4546:			i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $2030
JUMPV
LABELV $2029
line 4549
;4547:
;4548:			while (i < NUM_FORCE_POWERS)
;4549:			{
line 4550
;4550:				self->client->ps.fd.forcePowerBaseLevel[i] = self->client->ps.fd.forcePowerLevel[i];
ADDRLP4 76
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 80
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 76
INDIRI4
ADDRLP4 80
INDIRP4
CNSTI4 1016
ADDP4
ADDP4
ADDRLP4 76
INDIRI4
ADDRLP4 80
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
ASGNI4
line 4552
;4551:
;4552:				if (!forcePowerDarkLight[i] ||
ADDRLP4 84
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 forcePowerDarkLight
ADDP4
INDIRI4
ASGNI4
ADDRLP4 84
INDIRI4
CNSTI4 0
EQI4 $2034
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1188
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
NEI4 $2032
LABELV $2034
line 4554
;4553:					self->client->ps.fd.forceSide == forcePowerDarkLight[i])
;4554:				{
line 4555
;4555:					self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_3;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
CNSTI4 3
ASGNI4
line 4556
;4556:					self->client->ps.fd.forcePowersKnown |= (1 << i);
ADDRLP4 88
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 88
INDIRP4
ADDRLP4 88
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BORI4
ASGNI4
line 4557
;4557:				}
LABELV $2032
line 4559
;4558:
;4559:				i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 4560
;4560:			}
LABELV $2030
line 4548
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $2029
line 4562
;4561:
;4562:			self->client->ps.fd.forceUsingAdded = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1088
ADDP4
CNSTI4 1
ASGNI4
line 4563
;4563:		}
line 4564
;4564:	}
ADDRGP4 $2025
JUMPV
LABELV $2024
line 4565
;4565:	else if (self->client->ps.fd.forceUsingAdded)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1088
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2035
line 4566
;4566:	{ //we don't have enlightenment but we're still using enlightened powers, so clear them back to how they should be.
line 4567
;4567:		i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $2038
JUMPV
LABELV $2037
line 4570
;4568:
;4569:		while (i < NUM_FORCE_POWERS)
;4570:		{
line 4571
;4571:			self->client->ps.fd.forcePowerLevel[i] = self->client->ps.fd.forcePowerBaseLevel[i];
ADDRLP4 76
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 80
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 76
INDIRI4
ADDRLP4 80
INDIRP4
CNSTI4 944
ADDP4
ADDP4
ADDRLP4 76
INDIRI4
ADDRLP4 80
INDIRP4
CNSTI4 1016
ADDP4
ADDP4
INDIRI4
ASGNI4
line 4572
;4572:			if (!self->client->ps.fd.forcePowerLevel[i])
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 944
ADDP4
ADDP4
INDIRI4
CNSTI4 0
NEI4 $2040
line 4573
;4573:			{
line 4574
;4574:				if (self->client->ps.fd.forcePowersActive & (1 << i))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $2042
line 4575
;4575:				{
line 4576
;4576:					WP_ForcePowerStop(self, i);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4577
;4577:				}
LABELV $2042
line 4578
;4578:				self->client->ps.fd.forcePowersKnown &= ~(1 << i);
ADDRLP4 84
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 844
ADDP4
ASGNP4
ADDRLP4 84
INDIRP4
ADDRLP4 84
INDIRP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BCOMI4
BANDI4
ASGNI4
line 4579
;4579:			}
LABELV $2040
line 4581
;4580:
;4581:			i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 4582
;4582:		}
LABELV $2038
line 4569
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $2037
line 4584
;4583:
;4584:		self->client->ps.fd.forceUsingAdded = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1088
ADDP4
CNSTI4 0
ASGNI4
line 4585
;4585:	}
LABELV $2035
LABELV $2025
line 4587
;4586:
;4587:	i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 4589
;4588:
;4589:	if (!(self->client->ps.fd.forcePowersActive & (1 << FP_TELEPATHY)))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 32
BANDI4
CNSTI4 0
NEI4 $2044
line 4590
;4590:	{ //clear the mindtrick index values
line 4591
;4591:		self->client->ps.fd.forceMindtrickTargetIndex = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1156
ADDP4
CNSTI4 0
ASGNI4
line 4592
;4592:		self->client->ps.fd.forceMindtrickTargetIndex2 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1160
ADDP4
CNSTI4 0
ASGNI4
line 4593
;4593:		self->client->ps.fd.forceMindtrickTargetIndex3 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1164
ADDP4
CNSTI4 0
ASGNI4
line 4594
;4594:		self->client->ps.fd.forceMindtrickTargetIndex4 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1168
ADDP4
CNSTI4 0
ASGNI4
line 4595
;4595:	}
LABELV $2044
line 4597
;4596:	
;4597:	if (self->health < 1)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $2046
line 4598
;4598:	{
line 4599
;4599:		self->client->ps.fd.forceGripBeingGripped = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
CNSTF4 0
ASGNF4
line 4600
;4600:	}
LABELV $2046
line 4602
;4601:
;4602:	if (self->client->ps.fd.forceGripBeingGripped > level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1116
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LEF4 $2048
line 4603
;4603:	{
line 4604
;4604:		self->client->ps.fd.forceGripCripple = 1;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1120
ADDP4
CNSTI4 1
ASGNI4
line 4605
;4605:	}
ADDRGP4 $2049
JUMPV
LABELV $2048
line 4607
;4606:	else
;4607:	{
line 4608
;4608:		self->client->ps.fd.forceGripCripple = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1120
ADDP4
CNSTI4 0
ASGNI4
line 4609
;4609:	}
LABELV $2049
line 4611
;4610:
;4611:	if (self->client->ps.fd.forceJumpSound)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1100
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2051
line 4612
;4612:	{
line 4613
;4613:		G_PreDefSound(self->client->ps.origin, PDSOUND_FORCEJUMP);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 5
ARGI4
ADDRGP4 G_PreDefSound
CALLP4
pop
line 4614
;4614:		self->client->ps.fd.forceJumpSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1100
ADDP4
CNSTI4 0
ASGNI4
line 4615
;4615:	}
LABELV $2051
line 4617
;4616:
;4617:	if (self->client->ps.fd.forceGripCripple)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1120
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2053
line 4618
;4618:	{
line 4619
;4619:		if (self->client->ps.fd.forceGripSoundTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1128
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
GEF4 $2055
line 4620
;4620:		{
line 4621
;4621:			G_PreDefSound(self->client->ps.origin, PDSOUND_FORCEGRIP);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 G_PreDefSound
CALLP4
pop
line 4622
;4622:			self->client->ps.fd.forceGripSoundTime = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1128
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
CVIF4 4
ASGNF4
line 4623
;4623:		}
LABELV $2055
line 4624
;4624:	}
LABELV $2053
line 4626
;4625:
;4626:	if (self->client->ps.fd.forcePowersActive & (1 << FP_SPEED))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 4
BANDI4
CNSTI4 0
EQI4 $2059
line 4627
;4627:	{
line 4628
;4628:		self->client->ps.powerups[PW_SPEED] = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 384
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 4629
;4629:	}
LABELV $2059
line 4631
;4630:
;4631:	if (self->client->ps.fd.forceSpeedDoDamage && FORCE_VELOCITY_DAMAGE) //You used to be able to run into walls and crack your face on them (like JK1)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1140
ADDP4
INDIRF4
CNSTF4 0
EQF4 $2062
ADDRGP4 $2062
JUMPV
line 4632
;4632:	{ //we set the flag somewhere to do damage for some reason, so do it
line 4633
;4633:		G_Damage (self, NULL, NULL, NULL, NULL, self->client->ps.fd.forceSpeedDoDamage, DAMAGE_NO_ARMOR, MOD_FALLING);
ADDRLP4 76
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 76
INDIRP4
ARGP4
ADDRLP4 80
CNSTP4 0
ASGNP4
ADDRLP4 80
INDIRP4
ARGP4
ADDRLP4 80
INDIRP4
ARGP4
ADDRLP4 84
CNSTP4 0
ASGNP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRLP4 76
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1140
ADDP4
INDIRF4
CVFI4 4
ARGI4
CNSTI4 2
ARGI4
CNSTI4 34
ARGI4
ADDRGP4 G_Damage
CALLV
pop
line 4635
;4634:
;4635:		if (self->client->ps.fd.forceSpeedHitIndex != ENTITYNUM_NONE &&
ADDRLP4 88
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1144
ADDP4
INDIRI4
ASGNI4
ADDRLP4 88
INDIRI4
CNSTI4 1023
EQI4 $2064
CNSTI4 828
ADDRLP4 88
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $2064
line 4637
;4636:			g_entities[self->client->ps.fd.forceSpeedHitIndex].client)
;4637:		{
line 4638
;4638:			VectorSubtract(g_entities[self->client->ps.fd.forceSpeedHitIndex].client->ps.origin, self->client->ps.origin, dmgdir);
ADDRLP4 92
CNSTI4 828
ASGNI4
ADDRLP4 96
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 100
ADDRLP4 96
INDIRP4
INDIRP4
ASGNP4
ADDRLP4 104
CNSTI4 1144
ASGNI4
ADDRLP4 108
CNSTI4 20
ASGNI4
ADDRLP4 12
ADDRLP4 92
INDIRI4
ADDRLP4 100
INDIRP4
ADDRLP4 104
INDIRI4
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
ADDRLP4 108
INDIRI4
ADDP4
INDIRF4
ADDRLP4 100
INDIRP4
ADDRLP4 108
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 112
ADDRLP4 96
INDIRP4
INDIRP4
ASGNP4
ADDRLP4 116
CNSTI4 24
ASGNI4
ADDRLP4 12+4
ADDRLP4 92
INDIRI4
ADDRLP4 112
INDIRP4
ADDRLP4 104
INDIRI4
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
ADDRLP4 116
INDIRI4
ADDP4
INDIRF4
ADDRLP4 112
INDIRP4
ADDRLP4 116
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 120
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 124
CNSTI4 28
ASGNI4
ADDRLP4 12+8
CNSTI4 828
ADDRLP4 120
INDIRP4
CNSTI4 1144
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
ADDRLP4 124
INDIRI4
ADDP4
INDIRF4
ADDRLP4 120
INDIRP4
ADDRLP4 124
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 4640
;4639:
;4640:			G_Damage (&g_entities[self->client->ps.fd.forceSpeedHitIndex], self, self, dmgdir, NULL, self->client->ps.fd.forceSpeedDoDamage, DAMAGE_NO_ARMOR, MOD_CRUSH);
ADDRLP4 128
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 132
ADDRLP4 128
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
CNSTI4 828
ADDRLP4 132
INDIRP4
CNSTI4 1144
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 128
INDIRP4
ARGP4
ADDRLP4 128
INDIRP4
ARGP4
ADDRLP4 12
ARGP4
CNSTP4 0
ARGP4
ADDRLP4 132
INDIRP4
CNSTI4 1140
ADDP4
INDIRF4
CVFI4 4
ARGI4
CNSTI4 2
ARGI4
CNSTI4 32
ARGI4
ADDRGP4 G_Damage
CALLV
pop
line 4641
;4641:			self->client->ps.fd.forceSpeedHitIndex = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1144
ADDP4
CNSTI4 1023
ASGNI4
line 4642
;4642:		}
LABELV $2064
line 4644
;4643:
;4644:		self->client->ps.fd.forceSpeedDoDamage = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1140
ADDP4
CNSTF4 0
ASGNF4
line 4645
;4645:	}
LABELV $2062
line 4647
;4646:
;4647:	if ( self->health <= 0 )
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $2072
line 4648
;4648:	{//if dead, deactivate any active force powers
line 4649
;4649:		for ( i = 0; i < NUM_FORCE_POWERS; i++ )
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $2074
line 4650
;4650:		{
line 4651
;4651:			if ( self->client->ps.fd.forcePowerDuration[i] || (self->client->ps.fd.forcePowersActive&( 1 << i )) )
ADDRLP4 80
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 84
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 80
INDIRP4
CNSTI4 860
ADDP4
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
NEI4 $2080
ADDRLP4 80
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
ADDRLP4 84
INDIRI4
EQI4 $2078
LABELV $2080
line 4652
;4652:			{
line 4653
;4653:				WP_ForcePowerStop( self, (forcePowers_t)i );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4654
;4654:				self->client->ps.fd.forcePowerDuration[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 860
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 4655
;4655:			}
LABELV $2078
line 4656
;4656:		}
LABELV $2075
line 4649
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $2074
line 4657
;4657:		goto powersetcheck;
ADDRGP4 $2081
JUMPV
LABELV $2072
line 4660
;4658:	}
;4659:
;4660:	if (self->client->ps.groundEntityNum != ENTITYNUM_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 84
ADDP4
INDIRI4
CNSTI4 1023
EQI4 $2082
line 4661
;4661:	{
line 4662
;4662:		self->client->fjDidJump = qfalse;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1800
ADDP4
CNSTI4 0
ASGNI4
line 4663
;4663:	}
LABELV $2082
line 4665
;4664:
;4665:	if (self->client->ps.fd.forceJumpCharge && self->client->ps.groundEntityNum == ENTITYNUM_NONE && self->client->fjDidJump)
ADDRLP4 76
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 76
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 0
EQF4 $2084
ADDRLP4 76
INDIRP4
CNSTI4 84
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $2084
ADDRLP4 76
INDIRP4
CNSTI4 1800
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2084
line 4666
;4666:	{ //this was for the "charge" jump method... I guess
line 4667
;4667:		if (ucmd->upmove < 10 && (!(ucmd->buttons & BUTTON_FORCEPOWER) || self->client->ps.fd.forcePowerSelected != FP_LEVITATION))
ADDRLP4 80
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 80
INDIRP4
CNSTI4 26
ADDP4
INDIRI1
CVII4 1
CNSTI4 10
GEI4 $2086
ADDRLP4 80
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $2088
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 1
EQI4 $2086
LABELV $2088
line 4668
;4668:		{
line 4669
;4669:			G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1204
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 G_MuteSound
CALLV
pop
line 4670
;4670:			self->client->ps.fd.forceJumpCharge = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1096
ADDP4
CNSTF4 0
ASGNF4
line 4671
;4671:		}
LABELV $2086
line 4672
;4672:	}
LABELV $2084
line 4686
;4673:
;4674:#ifndef METROID_JUMP
;4675:	else if ( (ucmd->upmove > 10) && (self->client->ps.pm_flags & PMF_JUMP_HELD) && self->client->ps.groundTime && (level.time - self->client->ps.groundTime) > 150 && !BG_HasYsalamiri(g_gametype.integer, &self->client->ps) && BG_CanUseFPNow(g_gametype.integer, &self->client->ps, level.time, FP_LEVITATION) )
;4676:	{//just charging up
;4677:		ForceJumpCharge( self, ucmd );
;4678:		usingForce = qtrue;
;4679:	}
;4680:	else if (ucmd->upmove < 10 && self->client->ps.groundEntityNum == ENTITYNUM_NONE && self->client->ps.fd.forceJumpCharge)
;4681:	{
;4682:		self->client->ps.pm_flags &= ~(PMF_JUMP_HELD);
;4683:	}
;4684:#endif
;4685:
;4686:	if (!(self->client->ps.pm_flags & PMF_JUMP_HELD) && self->client->ps.fd.forceJumpCharge)
ADDRLP4 80
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 80
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 2
BANDI4
CNSTI4 0
NEI4 $2089
ADDRLP4 80
INDIRP4
CNSTI4 1096
ADDP4
INDIRF4
CNSTF4 0
EQF4 $2089
line 4687
;4687:	{
line 4688
;4688:		if (!(ucmd->buttons & BUTTON_FORCEPOWER) ||
ADDRFP4 4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $2093
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 1
EQI4 $2091
LABELV $2093
line 4690
;4689:			self->client->ps.fd.forcePowerSelected != FP_LEVITATION)
;4690:		{
line 4691
;4691:			if (WP_DoSpecificPower( self, ucmd, FP_LEVITATION ))
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 84
ADDRGP4 WP_DoSpecificPower
CALLI4
ASGNI4
ADDRLP4 84
INDIRI4
CNSTI4 0
EQI4 $2094
line 4692
;4692:			{
line 4693
;4693:				usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4694
;4694:			}
LABELV $2094
line 4695
;4695:		}
LABELV $2091
line 4696
;4696:	}
LABELV $2089
line 4714
;4697:
;4698:	// adnan
;4699:   // took out grip so we could have another button
;4700:   /*
;4701:   if ( ucmd->buttons & BUTTON_FORCEGRIP )
;4702:	{ //grip is one of the powers with its own button.. if it's held, call the specific grip power function.
;4703:		if (WP_DoSpecificPower( self, ucmd, FP_GRIP ))
;4704:		{
;4705:			usingForce = qtrue;
;4706:		}
;4707:		else
;4708:		{ //don't let recharge even if the grip misses if the player still has the button down
;4709:			usingForce = qtrue;
;4710:		}
;4711:	}
;4712:	else
;4713:   */
;4714:	{ //see if we're using it generically.. if not, stop.
line 4715
;4715:		if (self->client->ps.fd.forcePowersActive & (1 << FP_GRIP))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 64
BANDI4
CNSTI4 0
EQI4 $2096
line 4716
;4716:		{
line 4717
;4717:			if (!(ucmd->buttons & BUTTON_FORCEPOWER) || self->client->ps.fd.forcePowerSelected != FP_GRIP)
ADDRFP4 4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $2100
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 6
EQI4 $2098
LABELV $2100
line 4718
;4718:			{
line 4719
;4719:				WP_ForcePowerStop(self, FP_GRIP);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4720
;4720:			}
LABELV $2098
line 4721
;4721:		}
LABELV $2096
line 4722
;4722:	}
line 4724
;4723:
;4724:	if ( ucmd->buttons & BUTTON_FORCE_LIGHTNING )
ADDRFP4 4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $2101
line 4725
;4725:	{ //lightning
line 4726
;4726:		WP_DoSpecificPower(self, ucmd, FP_LIGHTNING);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 7
ARGI4
ADDRGP4 WP_DoSpecificPower
CALLI4
pop
line 4727
;4727:		usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4728
;4728:	}
ADDRGP4 $2102
JUMPV
LABELV $2101
line 4730
;4729:	else
;4730:	{ //see if we're using it generically.. if not, stop.
line 4731
;4731:		if (self->client->ps.fd.forcePowersActive & (1 << FP_LIGHTNING))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $2103
line 4732
;4732:		{
line 4733
;4733:			if (!(ucmd->buttons & BUTTON_FORCEPOWER) || self->client->ps.fd.forcePowerSelected != FP_LIGHTNING)
ADDRFP4 4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $2107
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 7
EQI4 $2105
LABELV $2107
line 4734
;4734:			{
line 4735
;4735:				WP_ForcePowerStop(self, FP_LIGHTNING);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 7
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4736
;4736:			}
LABELV $2105
line 4737
;4737:		}
LABELV $2103
line 4738
;4738:	}
LABELV $2102
line 4740
;4739:
;4740:	if ( ucmd->buttons & BUTTON_FORCE_DRAIN )
ADDRFP4 4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 2048
BANDI4
CNSTI4 0
EQI4 $2108
line 4741
;4741:	{ //drain
line 4742
;4742:		WP_DoSpecificPower(self, ucmd, FP_DRAIN);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 13
ARGI4
ADDRGP4 WP_DoSpecificPower
CALLI4
pop
line 4743
;4743:		usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4744
;4744:	}
ADDRGP4 $2109
JUMPV
LABELV $2108
line 4746
;4745:	else
;4746:	{ //see if we're using it generically.. if not, stop.
line 4747
;4747:		if (self->client->ps.fd.forcePowersActive & (1 << FP_DRAIN))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 8192
BANDI4
CNSTI4 0
EQI4 $2110
line 4748
;4748:		{
line 4749
;4749:			if (!(ucmd->buttons & BUTTON_FORCEPOWER) || self->client->ps.fd.forcePowerSelected != FP_DRAIN)
ADDRFP4 4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $2114
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 13
EQI4 $2112
LABELV $2114
line 4750
;4750:			{
line 4751
;4751:				WP_ForcePowerStop(self, FP_DRAIN);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 13
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4752
;4752:			}
LABELV $2112
line 4753
;4753:		}
LABELV $2110
line 4754
;4754:	}
LABELV $2109
line 4756
;4755:
;4756:	if ( (ucmd->buttons & BUTTON_FORCEPOWER) &&
ADDRFP4 4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 512
BANDI4
CNSTI4 0
EQI4 $2115
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRLP4 84
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRGP4 level+32
INDIRI4
ARGI4
ADDRLP4 84
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
ARGI4
ADDRLP4 88
ADDRGP4 BG_CanUseFPNow
CALLI4
ASGNI4
ADDRLP4 88
INDIRI4
CNSTI4 0
EQI4 $2115
line 4758
;4757:		BG_CanUseFPNow(g_gametype.integer, &self->client->ps, level.time, self->client->ps.fd.forcePowerSelected))
;4758:	{
line 4759
;4759:		if (self->client->ps.fd.forcePowerSelected == FP_LEVITATION)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 1
NEI4 $2119
line 4760
;4760:		{
line 4761
;4761:			ForceJumpCharge( self, ucmd );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 ForceJumpCharge
CALLV
pop
line 4762
;4762:			usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4763
;4763:		}
ADDRGP4 $2116
JUMPV
LABELV $2119
line 4764
;4764:		else if (WP_DoSpecificPower( self, ucmd, self->client->ps.fd.forcePowerSelected ))
ADDRLP4 92
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 92
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 92
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
ARGI4
ADDRLP4 96
ADDRGP4 WP_DoSpecificPower
CALLI4
ASGNI4
ADDRLP4 96
INDIRI4
CNSTI4 0
EQI4 $2121
line 4765
;4765:		{
line 4766
;4766:			usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4767
;4767:		}
ADDRGP4 $2116
JUMPV
LABELV $2121
line 4768
;4768:		else if (self->client->ps.fd.forcePowerSelected == FP_GRIP)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
CNSTI4 6
NEI4 $2116
line 4769
;4769:		{
line 4770
;4770:			usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4771
;4771:		}
line 4772
;4772:	}
ADDRGP4 $2116
JUMPV
LABELV $2115
line 4774
;4773:	else
;4774:	{
line 4775
;4775:		self->client->ps.fd.forceButtonNeedRelease = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 856
ADDP4
CNSTI4 0
ASGNI4
line 4776
;4776:	}
LABELV $2116
line 4778
;4777:
;4778:	for ( i = 0; i < NUM_FORCE_POWERS; i++ )
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $2125
line 4779
;4779:	{
line 4780
;4780:		if ( self->client->ps.fd.forcePowerDuration[i] )
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 860
ADDP4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2129
line 4781
;4781:		{
line 4782
;4782:			if ( self->client->ps.fd.forcePowerDuration[i] < level.time )
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 860
ADDP4
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $2131
line 4783
;4783:			{
line 4784
;4784:				if ( (self->client->ps.fd.forcePowersActive&( 1 << i )) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $2134
line 4785
;4785:				{//turn it off
line 4786
;4786:					WP_ForcePowerStop( self, (forcePowers_t)i );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 WP_ForcePowerStop
CALLV
pop
line 4787
;4787:				}
LABELV $2134
line 4788
;4788:				self->client->ps.fd.forcePowerDuration[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 860
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 4789
;4789:			}
LABELV $2131
line 4790
;4790:		}
LABELV $2129
line 4791
;4791:		if ( (self->client->ps.fd.forcePowersActive&( 1 << i )) )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BANDI4
CNSTI4 0
EQI4 $2136
line 4792
;4792:		{
line 4793
;4793:			usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4794
;4794:			WP_ForcePowerRun( self, (forcePowers_t)i, ucmd );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 WP_ForcePowerRun
CALLV
pop
line 4795
;4795:		}
LABELV $2136
line 4796
;4796:	}
LABELV $2126
line 4778
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $2125
line 4797
;4797:	if ( self->client->ps.saberInFlight )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 504
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2138
line 4798
;4798:	{//don't regen force power while throwing saber
line 4799
;4799:		if ( self->client->ps.saberEntityNum < ENTITYNUM_NONE && self->client->ps.saberEntityNum > 0 )//player is 0
ADDRLP4 92
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 544
ADDP4
INDIRI4
ASGNI4
ADDRLP4 92
INDIRI4
CNSTI4 1023
GEI4 $2140
ADDRLP4 92
INDIRI4
CNSTI4 0
LEI4 $2140
line 4800
;4800:		{//
line 4801
;4801:			if ( &g_entities[self->client->ps.saberEntityNum] != NULL && g_entities[self->client->ps.saberEntityNum].s.pos.trType == TR_LINEAR )
ADDRLP4 96
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 544
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 96
INDIRI4
ADDRGP4 g_entities
ADDP4
CVPU4 4
CNSTU4 0
EQU4 $2142
ADDRLP4 96
INDIRI4
ADDRGP4 g_entities+12
ADDP4
INDIRI4
CNSTI4 2
NEI4 $2142
line 4802
;4802:			{//fell to the ground and we're trying to pull it back
line 4803
;4803:				usingForce = qtrue;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 4804
;4804:			}
LABELV $2142
line 4805
;4805:		}
LABELV $2140
line 4806
;4806:	}
LABELV $2138
line 4807
;4807:	if ( !self->client->ps.fd.forcePowersActive || self->client->ps.fd.forcePowersActive == (1 << FP_DRAIN) )
ADDRLP4 92
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
ASGNI4
ADDRLP4 92
INDIRI4
CNSTI4 0
EQI4 $2147
ADDRLP4 92
INDIRI4
CNSTI4 8192
NEI4 $2145
LABELV $2147
line 4808
;4808:	{//when not using the force, regenerate at 1 point per half second
line 4809
;4809:		if ( !self->client->ps.saberInFlight && self->client->ps.fd.forcePowerRegenDebounceTime < level.time )
ADDRLP4 96
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 96
INDIRP4
CNSTI4 504
ADDP4
INDIRI4
CNSTI4 0
NEI4 $2148
ADDRLP4 96
INDIRP4
CNSTI4 940
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $2148
line 4810
;4810:		{
line 4811
;4811:			if (g_gametype.integer != GT_HOLOCRON || g_MaxHolocronCarry.value)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 1
NEI4 $2155
ADDRGP4 g_MaxHolocronCarry+8
INDIRF4
CNSTF4 0
EQF4 $2151
LABELV $2155
line 4812
;4812:			{
line 4815
;4813:				//if (!g_trueJedi.integer || self->client->ps.weapon == WP_SABER)
;4814:				//let non-jedi force regen since we're doing a more strict jedi/non-jedi thing... this gives dark jedi something to drain
;4815:				{
line 4816
;4816:					if (self->client->ps.powerups[PW_FORCE_BOON])
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 400
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2156
line 4817
;4817:					{
line 4818
;4818:						WP_ForcePowerRegenerate( self, 6 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 6
ARGI4
ADDRGP4 WP_ForcePowerRegenerate
CALLV
pop
line 4819
;4819:					}
ADDRGP4 $2157
JUMPV
LABELV $2156
line 4820
;4820:					else if (self->client->ps.isJediMaster && g_gametype.integer == GT_JEDIMASTER)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 604
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2158
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 2
NEI4 $2158
line 4821
;4821:					{
line 4822
;4822:						WP_ForcePowerRegenerate( self, 4 ); //jedi master regenerates 4 times as fast
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 4
ARGI4
ADDRGP4 WP_ForcePowerRegenerate
CALLV
pop
line 4823
;4823:					}
ADDRGP4 $2159
JUMPV
LABELV $2158
line 4825
;4824:					else
;4825:					{
line 4826
;4826:						WP_ForcePowerRegenerate( self, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRGP4 WP_ForcePowerRegenerate
CALLV
pop
line 4827
;4827:					}
LABELV $2159
LABELV $2157
line 4828
;4828:				}
line 4835
;4829:				/*
;4830:				else if (g_trueJedi.integer && self->client->ps.weapon != WP_SABER)
;4831:				{
;4832:					self->client->ps.fd.forcePower = 0;
;4833:				}
;4834:				*/
;4835:			}
LABELV $2151
line 4856
;4836:			// adnan
;4837:         // killed holocron crap
;4838:         /*
;4839:         else
;4840:			{ //regenerate based on the number of holocrons carried
;4841:				holoregen = 0;
;4842:				holo = 0;
;4843:				while (holo < NUM_FORCE_POWERS)
;4844:				{
;4845:					if (self->client->ps.holocronsCarried[holo])
;4846:					{
;4847:						holoregen++;
;4848:					}
;4849:					holo++;
;4850:				}
;4851:
;4852:				WP_ForcePowerRegenerate(self, holoregen);
;4853:			}
;4854:         */
;4855:
;4856:			self->client->ps.fd.forcePowerRegenDebounceTime = level.time + g_forceRegenTime.integer;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 940
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRGP4 g_forceRegenTime+12
INDIRI4
ADDI4
ASGNI4
line 4857
;4857:		}
LABELV $2148
line 4858
;4858:	}
LABELV $2145
LABELV $2081
line 4862
;4859:
;4860:powersetcheck:
;4861:
;4862:	if (prepower && self->client->ps.fd.forcePower < prepower)
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $2163
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
GEI4 $2163
line 4863
;4863:	{
line 4864
;4864:		int dif = ((prepower - self->client->ps.fd.forcePower)/2);
ADDRLP4 100
ADDRLP4 8
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
INDIRI4
SUBI4
CNSTI4 2
DIVI4
ASGNI4
line 4865
;4865:		if (dif < 1)
ADDRLP4 100
INDIRI4
CNSTI4 1
GEI4 $2165
line 4866
;4866:		{
line 4867
;4867:			dif = 1;
ADDRLP4 100
CNSTI4 1
ASGNI4
line 4868
;4868:		}
LABELV $2165
line 4870
;4869:
;4870:		self->client->ps.fd.forcePower = (prepower-dif);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 932
ADDP4
ADDRLP4 8
INDIRI4
ADDRLP4 100
INDIRI4
SUBI4
ASGNI4
line 4871
;4871:	}
LABELV $2163
line 4872
;4872:}
LABELV $1949
endproc WP_ForcePowersUpdate 136 32
export Jedi_DodgeEvasion
proc Jedi_DodgeEvasion 28 12
line 4875
;4873:
;4874:qboolean Jedi_DodgeEvasion( gentity_t *self, gentity_t *shooter, trace_t *tr, int hitLoc )
;4875:{
line 4876
;4876:	int	dodgeAnim = -1;
ADDRLP4 0
CNSTI4 -1
ASGNI4
line 4878
;4877:
;4878:	if ( !self || !self->client || self->health <= 0 )
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
CNSTU4 0
ASGNU4
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $2171
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $2171
ADDRLP4 4
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $2168
LABELV $2171
line 4879
;4879:	{
line 4880
;4880:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2168
line 4883
;4881:	}
;4882:
;4883:	if (!g_forceDodge.integer)
ADDRGP4 g_forceDodge+12
INDIRI4
CNSTI4 0
NEI4 $2172
line 4884
;4884:	{
line 4885
;4885:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2172
line 4888
;4886:	}
;4887:
;4888:	if (g_forceDodge.integer != 2)
ADDRGP4 g_forceDodge+12
INDIRI4
CNSTI4 2
EQI4 $2175
line 4889
;4889:	{
line 4890
;4890:		if (!(self->client->ps.fd.forcePowersActive & (1 << FP_SEE)))
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 16384
BANDI4
CNSTI4 0
NEI4 $2178
line 4891
;4891:		{
line 4892
;4892:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2178
line 4894
;4893:		}
;4894:	}
LABELV $2175
line 4896
;4895:
;4896:	if (self->client->ps.usingATST)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1316
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2180
line 4897
;4897:	{
line 4898
;4898:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2180
line 4901
;4899:	}
;4900:
;4901:	if ( self->client->ps.groundEntityNum == ENTITYNUM_NONE )
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 84
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $2182
line 4902
;4902:	{//can't dodge in mid-air
line 4903
;4903:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2182
line 4906
;4904:	}
;4905:
;4906:	if ( self->client->ps.weaponTime > 0 || self->client->ps.forceHandExtend != HANDEXTEND_NONE )
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
ADDRLP4 16
INDIRI4
GTI4 $2186
ADDRLP4 12
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
ADDRLP4 16
INDIRI4
EQI4 $2184
LABELV $2186
line 4907
;4907:	{//in some effect that stops me from moving on my own
line 4908
;4908:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2184
line 4911
;4909:	}
;4910:
;4911:	if (g_forceDodge.integer == 2)
ADDRGP4 g_forceDodge+12
INDIRI4
CNSTI4 2
NEI4 $2187
line 4912
;4912:	{
line 4913
;4913:		if (self->client->ps.fd.forcePowersActive)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 0
EQI4 $2190
line 4914
;4914:		{ //for now just don't let us dodge if we're using a force power at all
line 4915
;4915:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2190
line 4917
;4916:		}
;4917:	}
LABELV $2187
line 4919
;4918:
;4919:	if (g_forceDodge.integer == 2)
ADDRGP4 g_forceDodge+12
INDIRI4
CNSTI4 2
NEI4 $2192
line 4920
;4920:	{
line 4921
;4921:		if ( !WP_ForcePowerUsable( self, FP_SPEED ) )
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 WP_ForcePowerUsable
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $2195
line 4922
;4922:		{//make sure we have it and have enough force power
line 4923
;4923:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2195
line 4925
;4924:		}
;4925:	}
LABELV $2192
line 4927
;4926:
;4927:	if (g_forceDodge.integer == 2)
ADDRGP4 g_forceDodge+12
INDIRI4
CNSTI4 2
NEI4 $2197
line 4928
;4928:	{
line 4929
;4929:		if ( Q_irand( 1, 7 ) > self->client->ps.fd.forcePowerLevel[FP_SPEED] )
CNSTI4 1
ARGI4
CNSTI4 7
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 952
ADDP4
INDIRI4
LEI4 $2198
line 4930
;4930:		{//more likely to fail on lower force speed level
line 4931
;4931:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
line 4933
;4932:		}
;4933:	}
LABELV $2197
line 4935
;4934:	else
;4935:	{
line 4937
;4936:		//We now dodge all the time, but only on level 3
;4937:		if (self->client->ps.fd.forcePowerLevel[FP_SEE] < FORCE_LEVEL_3)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1000
ADDP4
INDIRI4
CNSTI4 3
GEI4 $2202
line 4938
;4938:		{//more likely to fail on lower force sight level
line 4939
;4939:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2202
line 4941
;4940:		}
;4941:	}
LABELV $2198
line 4943
;4942:
;4943:	switch( hitLoc )
ADDRLP4 20
ADDRFP4 12
INDIRI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
LTI4 $2204
ADDRLP4 20
INDIRI4
CNSTI4 16
GTI4 $2204
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $2216
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $2216
address $2206
address $2207
address $2207
address $2207
address $2207
address $2212
address $2208
address $2210
address $2212
address $2209
address $2211
address $2212
address $2213
address $2214
address $2213
address $2214
address $2215
code
line 4944
;4944:	{
LABELV $2206
line 4946
;4945:	case HL_NONE:
;4946:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
line 4947
;4947:		break;
LABELV $2207
line 4953
;4948:
;4949:	case HL_FOOT_RT:
;4950:	case HL_FOOT_LT:
;4951:	case HL_LEG_RT:
;4952:	case HL_LEG_LT:
;4953:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2208
line 4956
;4954:
;4955:	case HL_BACK_RT:
;4956:		dodgeAnim = BOTH_DODGE_FL;
ADDRLP4 0
CNSTI4 897
ASGNI4
line 4957
;4957:		break;
ADDRGP4 $2205
JUMPV
LABELV $2209
line 4959
;4958:	case HL_CHEST_RT:
;4959:		dodgeAnim = BOTH_DODGE_FR;
ADDRLP4 0
CNSTI4 898
ASGNI4
line 4960
;4960:		break;
ADDRGP4 $2205
JUMPV
LABELV $2210
line 4962
;4961:	case HL_BACK_LT:
;4962:		dodgeAnim = BOTH_DODGE_FR;
ADDRLP4 0
CNSTI4 898
ASGNI4
line 4963
;4963:		break;
ADDRGP4 $2205
JUMPV
LABELV $2211
line 4965
;4964:	case HL_CHEST_LT:
;4965:		dodgeAnim = BOTH_DODGE_FR;
ADDRLP4 0
CNSTI4 898
ASGNI4
line 4966
;4966:		break;
ADDRGP4 $2205
JUMPV
LABELV $2212
line 4970
;4967:	case HL_BACK:
;4968:	case HL_CHEST:
;4969:	case HL_WAIST:
;4970:		dodgeAnim = BOTH_DODGE_FL;
ADDRLP4 0
CNSTI4 897
ASGNI4
line 4971
;4971:		break;
ADDRGP4 $2205
JUMPV
LABELV $2213
line 4974
;4972:	case HL_ARM_RT:
;4973:	case HL_HAND_RT:
;4974:		dodgeAnim = BOTH_DODGE_L;
ADDRLP4 0
CNSTI4 901
ASGNI4
line 4975
;4975:		break;
ADDRGP4 $2205
JUMPV
LABELV $2214
line 4978
;4976:	case HL_ARM_LT:
;4977:	case HL_HAND_LT:
;4978:		dodgeAnim = BOTH_DODGE_R;
ADDRLP4 0
CNSTI4 902
ASGNI4
line 4979
;4979:		break;
ADDRGP4 $2205
JUMPV
LABELV $2215
line 4981
;4980:	case HL_HEAD:
;4981:		dodgeAnim = BOTH_DODGE_FL;
ADDRLP4 0
CNSTI4 897
ASGNI4
line 4982
;4982:		break;
ADDRGP4 $2205
JUMPV
LABELV $2204
line 4984
;4983:	default:
;4984:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2205
line 4987
;4985:	}
;4986:
;4987:	if ( dodgeAnim != -1 )
ADDRLP4 0
INDIRI4
CNSTI4 -1
EQI4 $2217
line 4988
;4988:	{
line 4990
;4989:		//Our own happy way of forcing an anim:
;4990:		self->client->ps.forceHandExtend = HANDEXTEND_DODGE;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 7
ASGNI4
line 4991
;4991:		self->client->ps.forceDodgeAnim = dodgeAnim;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1260
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 4992
;4992:		self->client->ps.forceHandExtendTime = level.time + 300;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1252
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 300
ADDI4
ASGNI4
line 4994
;4993:
;4994:		self->client->ps.powerups[PW_SPEEDBURST] = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 376
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 4996
;4995:
;4996:		if (g_forceDodge.integer == 2)
ADDRGP4 g_forceDodge+12
INDIRI4
CNSTI4 2
NEI4 $2221
line 4997
;4997:		{
line 4998
;4998:			ForceSpeed( self, 500 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 500
ARGI4
ADDRGP4 ForceSpeed
CALLV
pop
line 4999
;4999:		}
ADDRGP4 $2222
JUMPV
LABELV $2221
line 5001
;5000:		else
;5001:		{
line 5002
;5002:			G_Sound( self, CHAN_BODY, G_SoundIndex("sound/weapons/force/speed.wav") );
ADDRGP4 $547
ARGP4
ADDRLP4 24
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 5
ARGI4
ADDRLP4 24
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 5003
;5003:		}
LABELV $2222
line 5004
;5004:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $2167
JUMPV
LABELV $2217
line 5006
;5005:	}
;5006:	return qfalse;
CNSTI4 0
RETI4
LABELV $2167
endproc Jedi_DodgeEvasion 28 12
import ucmd
import g_TimeSinceLastFrame
import g_LastFrameTime
import Touch_Button
import botstates
import floattime
import gLevelFlags
import nodenum
import nodetable
import gLastPrintedIndex
import gWPNum
import gWPArray
import gWPRenderedFrame
import gBotEdit
import gDeactivated
import gWPRenderTime
import gBotChatBuffer
import eFlagBlue
import eFlagRed
import oFlagBlue
import flagBlue
import oFlagRed
import flagRed
import bot_wp_visconnect
import bot_wp_distconnect
import bot_wp_clearweight
import bot_wp_edit
import bot_wp_info
import bot_camp
import bot_attachments
import bot_honorableduelacceptance
import bot_forgimmick
import bot_forcepowers
import ConcatArgs
import GetBestIdleGoal
import GetNearestVisibleWP
import BotIsAChickenWuss
import OrgVisibleBox
import BotWaypointRender
import StandardBotAI
import BotDoChat
import BotUtilizePersonality
import NumBots
import BotResetState
import B_Free
import B_Alloc
import B_TempFree
import B_TempAlloc
import forceJumpStrength
import forceJumpHeight
import forcePowerNeeded
import g_MaxHolocronCarry
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_austrian
import g_saberDebugPrint
import g_saberDmgDelay_Wound
import g_saberDmgDelay_Idle
import g_saberDmgVelocityScale
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_fraglimitVoteCorrection
import g_allowDuelSuicide
import g_weaponDisable
import g_forcePowerDisable
import g_spawnInvulnerability
import g_forceRegenTime
import g_saberDamageScale
import g_slowmoDuelEnd
import g_logClientInfo
import g_saberBoxTraceSize
import g_saberAlwaysBoxTrace
import g_saberGhoul2Collision
import g_saberTraceSaberFirst
import g_saberLockFactor
import g_saberLocking
import g_privateDuel
import g_forceBasedTeams
import g_maxForceRank
import g_dmflags
import g_autoMapCycle
import g_trueJedi
import g_restarted
import g_maxGameClients
import g_maxclients
import g_cheats
import g_dedicated
import g_gametype
import g_vehicles
import g_vehicleTemplates
import vehicleId
import VehicleTemplateArray_GetTemplateIndexForName
import VehicleTemplateArray_OutputTemplates
import VehicleTemplateArray_InitVehicleTemplateArray
import VehicleArray_OutputVehicles
import VehicleArray_RemoveVehicleForId
import VehicleArray_AddVehicle
import VehicleArray_SetVehicleForId
import VehicleArray_GetVehicleForId
import VehicleArray_InitVehicleArray
import G_SpawnVehicle
import Touch_Vehicle
import VehicleInfo_GetNameForMovementType
import VehicleInfo_GetBitForMovementType
import VehicleInfo_GetNameForWeapon
import VehicleInfo_GetIndexForWeapon
import VehicleInfo_GetBitForWeapon
import VehicleInfo_GetBitForVehicleType
import Vehicle_CopyVehicle
import Vehicle_InitVehicle
import g_entities
import level
import Pickup_Team
import CheckTeamStatus
import TeamplayInfoMessage
import Team_GetLocationMsg
import Team_GetLocation
import SelectSagaSpawnPoint
import SelectCTFSpawnPoint
import Team_FreeEntity
import Team_ReturnFlag
import Team_InitGame
import Team_CheckHurtCarrier
import Team_FragBonuses
import Team_DroppedFlagThink
import AddTeamScore
import TeamColorString
import OtherTeamName
import TeamName
import OtherTeam
import BotAIStartFrame
import BotAIShutdownClient
import BotAISetupClient
import BotAILoadMap
import BotAIShutdown
import BotAISetup
import B_CleanupAlloc
import B_InitAlloc
import InFieldOfVision
import BotOrder
import OrgVisible
import InitSagaMode
import G_ClearClientLog
import G_LogExit
import G_LogWeaponOutput
import G_LogWeaponInit
import G_LogWeaponItem
import G_LogWeaponPowerup
import G_LogWeaponFrag
import G_LogWeaponDeath
import G_LogWeaponKill
import G_LogWeaponDamage
import G_LogWeaponFire
import G_LogWeaponPickup
import WP_SaberInitBladeData
import WP_SaberCanBlock
import WP_SaberPositionUpdate
import HasSetSaberOnly
import G_RefreshNextMap
import G_DoesMapSupportGametype
import BotInterbreedEndMatch
import Svcmd_BotList_f
import Svcmd_AddBot_f
import G_BotConnect
import G_RemoveQueuedBotBegin
import G_CheckBotSpawn
import G_GetBotInfoByName
import G_GetBotInfoByNumber
import G_InitBots
import UpdateTournamentInfo
import G_WriteSessionData
import G_InitWorldSession
import G_InitSessionData
import G_ReadSessionData
import Svcmd_GameMem_f
import G_InitMemory
import G_Alloc
import Team_CheckDroppedItem
import OnSameTeam
import G_RunClient
import ClientEndFrame
import ClientThink
import G_CheckClientTimeouts
import ClientCommand
import ClientBegin
import ClientDisconnect
import ClientUserinfoChanged
import ClientConnect
import G_GetStripEdString
import G_Error
import G_Printf
import SendScoreboardMessageToAllClients
import G_LogPrintf
import G_RunThink
import CheckTeamLeader
import SetLeader
import FindIntermissionPoint
import gSlowMoDuelTime
import gDoSlowMoDuel
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_CreateExampleAnimEnt
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 gGAvoidDismember
import G_CheckForDismemberment
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_CollisionDetect
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_NoRecNoRot
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 gEscapeTime
import gEscaping
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_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_KnockawayForParry
import BG_BrokenParryForParry
import BG_BrokenParryForAttack
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 PM_CalculateRelativeViewAngles
import Pmove
import PM_QuaternionViewAngles
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_ParseVec4
import COM_ParseFloat
import COM_ParseInt
import COM_ParseString
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 MatrixToEuler
import QuatToAngles
import QuatMul
import AnglesToQuat
import AxisToQuaternion
import QuaternionToAxis
import QuaternionToEuler
import QuatToAxis
import QuaternionMultiply
import QuaternionNormalize
import QuaternionMagnitude
import QuaternionFromString
import AnglesToTieFloats
import AnglesFromTieFloats
import QuaternionToTieFloats
import QuaternionFromTieFloats
import QuaternionCopy
import PerpendicularVector
import AngleVectors
import RotationMatrixAroundDir
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 $1995
byte 1 42
byte 1 106
byte 1 117
byte 1 109
byte 1 112
byte 1 49
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1904
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 98
byte 1 114
byte 1 121
byte 1 97
byte 1 114
byte 1 47
byte 1 102
byte 1 105
byte 1 114
byte 1 101
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1838
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 108
byte 1 97
byte 1 115
byte 1 101
byte 1 114
byte 1 95
byte 1 116
byte 1 114
byte 1 97
byte 1 112
byte 1 47
byte 1 119
byte 1 97
byte 1 114
byte 1 110
byte 1 105
byte 1 110
byte 1 103
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1547
byte 1 42
byte 1 99
byte 1 104
byte 1 111
byte 1 107
byte 1 101
byte 1 37
byte 1 100
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1467
byte 1 42
byte 1 103
byte 1 97
byte 1 115
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1452
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 100
byte 1 105
byte 1 115
byte 1 116
byte 1 114
byte 1 97
byte 1 99
byte 1 116
byte 1 115
byte 1 116
byte 1 111
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1245
byte 1 108
byte 1 105
byte 1 109
byte 1 98
byte 1 0
align 1
LABELV $1241
byte 1 102
byte 1 117
byte 1 110
byte 1 99
byte 1 95
byte 1 100
byte 1 111
byte 1 111
byte 1 114
byte 1 0
align 1
LABELV $1238
byte 1 108
byte 1 105
byte 1 103
byte 1 104
byte 1 116
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $1228
byte 1 102
byte 1 117
byte 1 110
byte 1 99
byte 1 95
byte 1 98
byte 1 117
byte 1 116
byte 1 116
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $1124
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 112
byte 1 117
byte 1 108
byte 1 108
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1120
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 112
byte 1 117
byte 1 115
byte 1 104
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $1008
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 100
byte 1 105
byte 1 115
byte 1 116
byte 1 114
byte 1 97
byte 1 99
byte 1 116
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $899
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 106
byte 1 117
byte 1 109
byte 1 112
byte 1 98
byte 1 117
byte 1 105
byte 1 108
byte 1 100
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $746
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 100
byte 1 114
byte 1 97
byte 1 105
byte 1 110
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $648
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 108
byte 1 105
byte 1 103
byte 1 104
byte 1 116
byte 1 110
byte 1 105
byte 1 110
byte 1 103
byte 1 104
byte 1 105
byte 1 116
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $617
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 108
byte 1 105
byte 1 103
byte 1 104
byte 1 116
byte 1 110
byte 1 105
byte 1 110
byte 1 103
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $602
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 114
byte 1 97
byte 1 103
byte 1 101
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $557
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 115
byte 1 101
byte 1 101
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $547
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 115
byte 1 112
byte 1 101
byte 1 101
byte 1 100
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $411
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 104
byte 1 101
byte 1 97
byte 1 108
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $206
byte 1 110
byte 1 102
byte 1 114
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $139
byte 1 37
byte 1 115
byte 1 0
byte 1 0
align 1
LABELV $136
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 112
byte 1 111
byte 1 119
byte 1 101
byte 1 114
byte 1 115
byte 1 0
align 1
LABELV $132
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 47
byte 1 110
byte 1 117
byte 1 108
byte 1 108
byte 1 105
byte 1 102
byte 1 121
byte 1 108
byte 1 111
byte 1 111
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $129
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 115
byte 1 101
byte 1 101
byte 1 108
byte 1 111
byte 1 111
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $126
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 112
byte 1 114
byte 1 111
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 108
byte 1 111
byte 1 111
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $123
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 97
byte 1 98
byte 1 115
byte 1 111
byte 1 114
byte 1 98
byte 1 108
byte 1 111
byte 1 111
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $120
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 114
byte 1 97
byte 1 103
byte 1 101
byte 1 108
byte 1 111
byte 1 111
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $117
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 115
byte 1 47
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 47
byte 1 115
byte 1 112
byte 1 101
byte 1 101
byte 1 100
byte 1 108
byte 1 111
byte 1 111
byte 1 112
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
