16391 lines
228 KiB
NASM
16391 lines
228 KiB
NASM
export ObjectDie
|
|
code
|
|
proc ObjectDie 0 8
|
|
file "../g_combat.c"
|
|
line 14
|
|
;1:// Copyright (C) 1999-2000 Id Software, Inc.
|
|
;2://
|
|
;3:// g_combat.c
|
|
;4:
|
|
;5:#include "g_local.h"
|
|
;6:
|
|
;7://rww - pd
|
|
;8:void BotDamageNotification(gclient_t *bot, gentity_t *attacker);
|
|
;9://end rww
|
|
;10:
|
|
;11:void ThrowSaberToAttacker(gentity_t *self, gentity_t *attacker);
|
|
;12:
|
|
;13:void ObjectDie (gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int meansOfDeath )
|
|
;14:{
|
|
line 15
|
|
;15: if(self->target)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 584
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $79
|
|
line 16
|
|
;16: {
|
|
line 17
|
|
;17: G_UseTargets(self, attacker);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 G_UseTargets
|
|
CALLV
|
|
pop
|
|
line 18
|
|
;18: }
|
|
LABELV $79
|
|
line 21
|
|
;19:
|
|
;20: //remove my script_targetname
|
|
;21: G_FreeEntity( self );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 G_FreeEntity
|
|
CALLV
|
|
pop
|
|
line 22
|
|
;22:}
|
|
LABELV $78
|
|
endproc ObjectDie 0 8
|
|
export G_GetHitLocation
|
|
proc G_GetHitLocation 172 16
|
|
line 152
|
|
;23:
|
|
;24:/*
|
|
;25:int G_GetHitLocFromSurfName( gentity_t *ent, const char *surfName, vec3_t point )
|
|
;26:{
|
|
;27: if ( !surfName || !surfName[0] )
|
|
;28: {
|
|
;29: return HL_NONE;
|
|
;30: }
|
|
;31: if ( !Q_strncmp( "hips", surfName, 4 ) )
|
|
;32: {//FIXME: test properly for legs
|
|
;33: if ( Q_irand( 0, 1 ) )
|
|
;34: {
|
|
;35: return HL_WAIST;
|
|
;36: }
|
|
;37: else if ( Q_irand( 0, 1 ) )
|
|
;38: {
|
|
;39: return HL_LEG_RT;
|
|
;40: }
|
|
;41: else
|
|
;42: {
|
|
;43: return HL_LEG_LT;
|
|
;44: }
|
|
;45: }
|
|
;46: else if ( !Q_strncmp( "torso", surfName, 5 ) )
|
|
;47: {
|
|
;48: if ( !ent->client )
|
|
;49: {
|
|
;50: return HL_CHEST;
|
|
;51: }
|
|
;52: else
|
|
;53: {
|
|
;54: vec3_t t_fwd, t_rt, t_up, dirToImpact;
|
|
;55: float frontSide, rightSide, upSide;
|
|
;56: AngleVectors( ent->client->renderInfo.torsoAngles, t_fwd, t_rt, t_up );
|
|
;57: VectorSubtract( point, ent->client->renderInfo.torsoPoint, dirToImpact );
|
|
;58: frontSide = DotProduct( t_fwd, dirToImpact );
|
|
;59: rightSide = DotProduct( t_rt, dirToImpact );
|
|
;60: upSide = DotProduct( t_up, dirToImpact );
|
|
;61: if ( upSide < 0 )
|
|
;62: {//hit at waist
|
|
;63: return HL_WAIST;
|
|
;64: }
|
|
;65: else
|
|
;66: {//hit on upper torso
|
|
;67: if ( rightSide > 10 )
|
|
;68: {
|
|
;69: return HL_ARM_RT;
|
|
;70: }
|
|
;71: else if ( rightSide < -10 )
|
|
;72: {
|
|
;73: return HL_ARM_LT;
|
|
;74: }
|
|
;75: else if ( rightSide > 4 )
|
|
;76: {
|
|
;77: if ( frontSide > 0 )
|
|
;78: {
|
|
;79: return HL_CHEST_RT;
|
|
;80: }
|
|
;81: else
|
|
;82: {
|
|
;83: return HL_BACK_RT;
|
|
;84: }
|
|
;85: }
|
|
;86: else if ( rightSide < -4 )
|
|
;87: {
|
|
;88: if ( frontSide > 0 )
|
|
;89: {
|
|
;90: return HL_CHEST_LT;
|
|
;91: }
|
|
;92: else
|
|
;93: {
|
|
;94: return HL_BACK_LT;
|
|
;95: }
|
|
;96: }
|
|
;97: else if ( upSide > 6 )
|
|
;98: {
|
|
;99: return HL_HEAD;
|
|
;100: }
|
|
;101: else if ( frontSide > 0 )
|
|
;102: {
|
|
;103: return HL_CHEST;
|
|
;104: }
|
|
;105: else
|
|
;106: {
|
|
;107: return HL_BACK;
|
|
;108: }
|
|
;109: }
|
|
;110: }
|
|
;111: }
|
|
;112: else if ( !Q_strncmp( "head", surfName, 4 ) )
|
|
;113: {
|
|
;114: return HL_HEAD;
|
|
;115: }
|
|
;116: else if ( !Q_strncmp( "r_arm", surfName, 5 ) )
|
|
;117: {
|
|
;118: return HL_ARM_RT;
|
|
;119: }
|
|
;120: else if ( !Q_strncmp( "l_arm", surfName, 5 ) )
|
|
;121: {
|
|
;122: return HL_ARM_LT;
|
|
;123: }
|
|
;124: else if ( !Q_strncmp( "r_leg", surfName, 5 ) )
|
|
;125: {
|
|
;126: if ( ent->client && DistanceSquared( ent->client->renderInfo.crotchPoint, point ) > 144 )
|
|
;127: {//not close enough to the pelvis to be a dismemberment hit and we don't dismember at the ankle or knee
|
|
;128: return HL_FOOT_RT;
|
|
;129: }
|
|
;130: return HL_LEG_RT;
|
|
;131: }
|
|
;132: else if ( !Q_strncmp( "l_leg", surfName, 5 ) )
|
|
;133: {
|
|
;134: if ( ent->client && DistanceSquared( ent->client->renderInfo.crotchPoint, point ) > 144 )
|
|
;135: {//not close enough to the pelvis to be a dismemberment hit and we don't dismember at the ankle or knee
|
|
;136: return HL_FOOT_LT;
|
|
;137: }
|
|
;138: return HL_LEG_LT;
|
|
;139: }
|
|
;140: else if ( !Q_strncmp( "r_hand", surfName, 6 ) )
|
|
;141: {
|
|
;142: return HL_HAND_RT;
|
|
;143: }
|
|
;144: else if ( !Q_strncmp( "l_hand", surfName, 6 ) )
|
|
;145: {
|
|
;146: return HL_HAND_LT;
|
|
;147: }
|
|
;148: return HL_NONE;
|
|
;149:}
|
|
;150:*/
|
|
;151:int G_GetHitLocation(gentity_t *target, vec3_t ppoint)
|
|
;152:{
|
|
line 162
|
|
;153: vec3_t point, point_dir;
|
|
;154: vec3_t forward, right, up;
|
|
;155: vec3_t tangles, tcenter;
|
|
;156: float tradius;
|
|
;157: float udot, fdot, rdot;
|
|
;158: int Vertical, Forward, Lateral;
|
|
;159: int HitLoc;
|
|
;160:
|
|
;161: // Get target forward, right and up.
|
|
;162: if(target->client)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $82
|
|
line 163
|
|
;163: {
|
|
line 165
|
|
;164: // Ignore player's pitch and roll.
|
|
;165: VectorSet(tangles, 0, target->r.currentAngles[YAW], 0);
|
|
ADDRLP4 88
|
|
CNSTF4 0
|
|
ASGNF4
|
|
ADDRLP4 88+4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 384
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 88+8
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 166
|
|
;166: }
|
|
LABELV $82
|
|
line 168
|
|
;167:
|
|
;168: AngleVectors(tangles, forward, right, up);
|
|
ADDRLP4 88
|
|
ARGP4
|
|
ADDRLP4 28
|
|
ARGP4
|
|
ADDRLP4 40
|
|
ARGP4
|
|
ADDRLP4 52
|
|
ARGP4
|
|
ADDRGP4 AngleVectors
|
|
CALLV
|
|
pop
|
|
line 171
|
|
;169:
|
|
;170: // Get center of target.
|
|
;171: VectorAdd(target->r.absmin, target->r.absmax, tcenter);
|
|
ADDRLP4 116
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 356
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 12+4
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 348
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 360
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 120
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12+8
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CNSTI4 352
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CNSTI4 364
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 172
|
|
;172: VectorScale(tcenter, 0.5, tcenter);
|
|
ADDRLP4 124
|
|
CNSTF4 1056964608
|
|
ASGNF4
|
|
ADDRLP4 12
|
|
ADDRLP4 124
|
|
INDIRF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 12+4
|
|
ADDRLP4 124
|
|
INDIRF4
|
|
ADDRLP4 12+4
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 12+8
|
|
CNSTF4 1056964608
|
|
ADDRLP4 12+8
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
line 175
|
|
;173:
|
|
;174: // Get radius width of target.
|
|
;175: tradius = (fabs(target->r.maxs[0]) + fabs(target->r.maxs[1]) + fabs(target->r.mins[0]) + fabs(target->r.mins[1]))/4;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 328
|
|
ADDP4
|
|
INDIRF4
|
|
ARGF4
|
|
ADDRLP4 128
|
|
ADDRGP4 fabs
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 332
|
|
ADDP4
|
|
INDIRF4
|
|
ARGF4
|
|
ADDRLP4 132
|
|
ADDRGP4 fabs
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 316
|
|
ADDP4
|
|
INDIRF4
|
|
ARGF4
|
|
ADDRLP4 136
|
|
ADDRGP4 fabs
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 320
|
|
ADDP4
|
|
INDIRF4
|
|
ARGF4
|
|
ADDRLP4 140
|
|
ADDRGP4 fabs
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 112
|
|
ADDRLP4 128
|
|
INDIRF4
|
|
ADDRLP4 132
|
|
INDIRF4
|
|
ADDF4
|
|
ADDRLP4 136
|
|
INDIRF4
|
|
ADDF4
|
|
ADDRLP4 140
|
|
INDIRF4
|
|
ADDF4
|
|
CNSTF4 1082130432
|
|
DIVF4
|
|
ASGNF4
|
|
line 178
|
|
;176:
|
|
;177: // Get impact point.
|
|
;178: if(ppoint && !VectorCompare(ppoint, vec3_origin))
|
|
ADDRLP4 144
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $92
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 vec3_origin
|
|
ARGP4
|
|
ADDRLP4 148
|
|
ADDRGP4 VectorCompare
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $92
|
|
line 179
|
|
;179: {
|
|
line 180
|
|
;180: VectorCopy(ppoint, point);
|
|
ADDRLP4 68
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 181
|
|
;181: }
|
|
ADDRGP4 $93
|
|
JUMPV
|
|
LABELV $92
|
|
line 183
|
|
;182: else
|
|
;183: {
|
|
line 184
|
|
;184: return HL_NONE;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $93
|
|
line 206
|
|
;185: }
|
|
;186:
|
|
;187:/*
|
|
;188://get impact dir
|
|
;189: if(pdir && !VectorCompare(pdir, vec3_origin))
|
|
;190: {
|
|
;191: VectorCopy(pdir, dir);
|
|
;192: }
|
|
;193: else
|
|
;194: {
|
|
;195: return;
|
|
;196: }
|
|
;197:
|
|
;198://put point at controlled distance from center
|
|
;199: VectorSubtract(point, tcenter, tempvec);
|
|
;200: tempvec[2] = 0;
|
|
;201: hdist = VectorLength(tempvec);
|
|
;202:
|
|
;203: VectorMA(point, hdist - tradius, dir, point);
|
|
;204: //now a point on the surface of a cylinder with a radius of tradius
|
|
;205:*/
|
|
;206: VectorSubtract(point, tcenter, point_dir);
|
|
ADDRLP4 0
|
|
ADDRLP4 68
|
|
INDIRF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 0+4
|
|
ADDRLP4 68+4
|
|
INDIRF4
|
|
ADDRLP4 12+4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 0+8
|
|
ADDRLP4 68+8
|
|
INDIRF4
|
|
ADDRLP4 12+8
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 207
|
|
;207: VectorNormalize(point_dir);
|
|
ADDRLP4 0
|
|
ARGP4
|
|
ADDRGP4 VectorNormalize
|
|
CALLF4
|
|
pop
|
|
line 210
|
|
;208:
|
|
;209: // Get bottom to top (vertical) position index
|
|
;210: udot = DotProduct(up, point_dir);
|
|
ADDRLP4 80
|
|
ADDRLP4 52
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 52+4
|
|
INDIRF4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 52+8
|
|
INDIRF4
|
|
ADDRLP4 0+8
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 211
|
|
;211: if(udot>.800)
|
|
ADDRLP4 80
|
|
INDIRF4
|
|
CNSTF4 1061997773
|
|
LEF4 $104
|
|
line 212
|
|
;212: {
|
|
line 213
|
|
;213: Vertical = 4;
|
|
ADDRLP4 100
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 214
|
|
;214: }
|
|
ADDRGP4 $105
|
|
JUMPV
|
|
LABELV $104
|
|
line 215
|
|
;215: else if(udot>.400)
|
|
ADDRLP4 80
|
|
INDIRF4
|
|
CNSTF4 1053609165
|
|
LEF4 $106
|
|
line 216
|
|
;216: {
|
|
line 217
|
|
;217: Vertical = 3;
|
|
ADDRLP4 100
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 218
|
|
;218: }
|
|
ADDRGP4 $107
|
|
JUMPV
|
|
LABELV $106
|
|
line 219
|
|
;219: else if(udot>-.333)
|
|
ADDRLP4 80
|
|
INDIRF4
|
|
CNSTF4 3198844666
|
|
LEF4 $108
|
|
line 220
|
|
;220: {
|
|
line 221
|
|
;221: Vertical = 2;
|
|
ADDRLP4 100
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 222
|
|
;222: }
|
|
ADDRGP4 $109
|
|
JUMPV
|
|
LABELV $108
|
|
line 223
|
|
;223: else if(udot>-.666)
|
|
ADDRLP4 80
|
|
INDIRF4
|
|
CNSTF4 3207233274
|
|
LEF4 $110
|
|
line 224
|
|
;224: {
|
|
line 225
|
|
;225: Vertical = 1;
|
|
ADDRLP4 100
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 226
|
|
;226: }
|
|
ADDRGP4 $111
|
|
JUMPV
|
|
LABELV $110
|
|
line 228
|
|
;227: else
|
|
;228: {
|
|
line 229
|
|
;229: Vertical = 0;
|
|
ADDRLP4 100
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 230
|
|
;230: }
|
|
LABELV $111
|
|
LABELV $109
|
|
LABELV $107
|
|
LABELV $105
|
|
line 233
|
|
;231:
|
|
;232: // Get back to front (forward) position index.
|
|
;233: fdot = DotProduct(forward, point_dir);
|
|
ADDRLP4 84
|
|
ADDRLP4 28
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 28+4
|
|
INDIRF4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 28+8
|
|
INDIRF4
|
|
ADDRLP4 0+8
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 234
|
|
;234: if(fdot>.666)
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
CNSTF4 1059749626
|
|
LEF4 $116
|
|
line 235
|
|
;235: {
|
|
line 236
|
|
;236: Forward = 4;
|
|
ADDRLP4 104
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 237
|
|
;237: }
|
|
ADDRGP4 $117
|
|
JUMPV
|
|
LABELV $116
|
|
line 238
|
|
;238: else if(fdot>.333)
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
CNSTF4 1051361018
|
|
LEF4 $118
|
|
line 239
|
|
;239: {
|
|
line 240
|
|
;240: Forward = 3;
|
|
ADDRLP4 104
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 241
|
|
;241: }
|
|
ADDRGP4 $119
|
|
JUMPV
|
|
LABELV $118
|
|
line 242
|
|
;242: else if(fdot>-.333)
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
CNSTF4 3198844666
|
|
LEF4 $120
|
|
line 243
|
|
;243: {
|
|
line 244
|
|
;244: Forward = 2;
|
|
ADDRLP4 104
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 245
|
|
;245: }
|
|
ADDRGP4 $121
|
|
JUMPV
|
|
LABELV $120
|
|
line 246
|
|
;246: else if(fdot>-.666)
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
CNSTF4 3207233274
|
|
LEF4 $122
|
|
line 247
|
|
;247: {
|
|
line 248
|
|
;248: Forward = 1;
|
|
ADDRLP4 104
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 249
|
|
;249: }
|
|
ADDRGP4 $123
|
|
JUMPV
|
|
LABELV $122
|
|
line 251
|
|
;250: else
|
|
;251: {
|
|
line 252
|
|
;252: Forward = 0;
|
|
ADDRLP4 104
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 253
|
|
;253: }
|
|
LABELV $123
|
|
LABELV $121
|
|
LABELV $119
|
|
LABELV $117
|
|
line 256
|
|
;254:
|
|
;255: // Get left to right (lateral) position index.
|
|
;256: rdot = DotProduct(right, point_dir);
|
|
ADDRLP4 64
|
|
ADDRLP4 40
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 40+4
|
|
INDIRF4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 40+8
|
|
INDIRF4
|
|
ADDRLP4 0+8
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 257
|
|
;257: if(rdot>.666)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 1059749626
|
|
LEF4 $128
|
|
line 258
|
|
;258: {
|
|
line 259
|
|
;259: Lateral = 4;
|
|
ADDRLP4 108
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 260
|
|
;260: }
|
|
ADDRGP4 $129
|
|
JUMPV
|
|
LABELV $128
|
|
line 261
|
|
;261: else if(rdot>.333)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 1051361018
|
|
LEF4 $130
|
|
line 262
|
|
;262: {
|
|
line 263
|
|
;263: Lateral = 3;
|
|
ADDRLP4 108
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 264
|
|
;264: }
|
|
ADDRGP4 $131
|
|
JUMPV
|
|
LABELV $130
|
|
line 265
|
|
;265: else if(rdot>-.333)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 3198844666
|
|
LEF4 $132
|
|
line 266
|
|
;266: {
|
|
line 267
|
|
;267: Lateral = 2;
|
|
ADDRLP4 108
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 268
|
|
;268: }
|
|
ADDRGP4 $133
|
|
JUMPV
|
|
LABELV $132
|
|
line 269
|
|
;269: else if(rdot>-.666)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 3207233274
|
|
LEF4 $134
|
|
line 270
|
|
;270: {
|
|
line 271
|
|
;271: Lateral = 1;
|
|
ADDRLP4 108
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 272
|
|
;272: }
|
|
ADDRGP4 $135
|
|
JUMPV
|
|
LABELV $134
|
|
line 274
|
|
;273: else
|
|
;274: {
|
|
line 275
|
|
;275: Lateral = 0;
|
|
ADDRLP4 108
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 276
|
|
;276: }
|
|
LABELV $135
|
|
LABELV $133
|
|
LABELV $131
|
|
LABELV $129
|
|
line 278
|
|
;277:
|
|
;278: HitLoc = Vertical * 25 + Forward * 5 + Lateral;
|
|
ADDRLP4 24
|
|
CNSTI4 25
|
|
ADDRLP4 100
|
|
INDIRI4
|
|
MULI4
|
|
CNSTI4 5
|
|
ADDRLP4 104
|
|
INDIRI4
|
|
MULI4
|
|
ADDI4
|
|
ADDRLP4 108
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 280
|
|
;279:
|
|
;280: if(HitLoc <= 10)
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 10
|
|
GTI4 $136
|
|
line 281
|
|
;281: {
|
|
line 283
|
|
;282: // Feet.
|
|
;283: if ( rdot > 0 )
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $138
|
|
line 284
|
|
;284: {
|
|
line 285
|
|
;285: return HL_FOOT_RT;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $138
|
|
line 288
|
|
;286: }
|
|
;287: else
|
|
;288: {
|
|
line 289
|
|
;289: return HL_FOOT_LT;
|
|
CNSTI4 2
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $136
|
|
line 292
|
|
;290: }
|
|
;291: }
|
|
;292: else if(HitLoc <= 50)
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 50
|
|
GTI4 $140
|
|
line 293
|
|
;293: {
|
|
line 295
|
|
;294: // Legs.
|
|
;295: if ( rdot > 0 )
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $142
|
|
line 296
|
|
;296: {
|
|
line 297
|
|
;297: return HL_LEG_RT;
|
|
CNSTI4 3
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $142
|
|
line 300
|
|
;298: }
|
|
;299: else
|
|
;300: {
|
|
line 301
|
|
;301: return HL_LEG_LT;
|
|
CNSTI4 4
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $140
|
|
line 304
|
|
;302: }
|
|
;303: }
|
|
;304: else if(HitLoc == 56||HitLoc == 60||HitLoc == 61||HitLoc == 65||HitLoc == 66||HitLoc == 70)
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 56
|
|
EQI4 $150
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 60
|
|
EQI4 $150
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 61
|
|
EQI4 $150
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 65
|
|
EQI4 $150
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 66
|
|
EQI4 $150
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 70
|
|
NEI4 $144
|
|
LABELV $150
|
|
line 305
|
|
;305: {
|
|
line 307
|
|
;306: // Hands.
|
|
;307: if ( rdot > 0 )
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $151
|
|
line 308
|
|
;308: {
|
|
line 309
|
|
;309: return HL_HAND_RT;
|
|
CNSTI4 14
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $151
|
|
line 312
|
|
;310: }
|
|
;311: else
|
|
;312: {
|
|
line 313
|
|
;313: return HL_HAND_LT;
|
|
CNSTI4 15
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $144
|
|
line 316
|
|
;314: }
|
|
;315: }
|
|
;316: else if(HitLoc == 83||HitLoc == 87||HitLoc == 88||HitLoc == 92||HitLoc == 93||HitLoc == 97)
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 83
|
|
EQI4 $159
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 87
|
|
EQI4 $159
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 88
|
|
EQI4 $159
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 92
|
|
EQI4 $159
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 93
|
|
EQI4 $159
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 97
|
|
NEI4 $153
|
|
LABELV $159
|
|
line 317
|
|
;317: {
|
|
line 319
|
|
;318: // Arms.
|
|
;319: if ( rdot > 0 )
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $160
|
|
line 320
|
|
;320: {
|
|
line 321
|
|
;321: return HL_ARM_RT;
|
|
CNSTI4 12
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $160
|
|
line 324
|
|
;322: }
|
|
;323: else
|
|
;324: {
|
|
line 325
|
|
;325: return HL_ARM_LT;
|
|
CNSTI4 13
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $153
|
|
line 328
|
|
;326: }
|
|
;327: }
|
|
;328: else if((HitLoc >= 107 && HitLoc <= 109)||(HitLoc >= 112 && HitLoc <= 114)||(HitLoc >= 117 && HitLoc <= 119))
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 107
|
|
LTI4 $165
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 109
|
|
LEI4 $166
|
|
LABELV $165
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 112
|
|
LTI4 $167
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 114
|
|
LEI4 $166
|
|
LABELV $167
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 117
|
|
LTI4 $162
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 119
|
|
GTI4 $162
|
|
LABELV $166
|
|
line 329
|
|
;329: {
|
|
line 331
|
|
;330: // Head.
|
|
;331: return HL_HEAD;
|
|
CNSTI4 16
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $162
|
|
line 334
|
|
;332: }
|
|
;333: else
|
|
;334: {
|
|
line 335
|
|
;335: if(udot < 0.3)
|
|
ADDRLP4 80
|
|
INDIRF4
|
|
CNSTF4 1050253722
|
|
GEF4 $168
|
|
line 336
|
|
;336: {
|
|
line 337
|
|
;337: return HL_WAIST;
|
|
CNSTI4 5
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $168
|
|
line 339
|
|
;338: }
|
|
;339: else if(fdot < 0)
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
CNSTF4 0
|
|
GEF4 $170
|
|
line 340
|
|
;340: {
|
|
line 341
|
|
;341: if(rdot > 0.4)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 1053609165
|
|
LEF4 $172
|
|
line 342
|
|
;342: {
|
|
line 343
|
|
;343: return HL_BACK_RT;
|
|
CNSTI4 6
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $172
|
|
line 345
|
|
;344: }
|
|
;345: else if(rdot < -0.4)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 3201092813
|
|
GEF4 $174
|
|
line 346
|
|
;346: {
|
|
line 347
|
|
;347: return HL_BACK_LT;
|
|
CNSTI4 7
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $174
|
|
line 349
|
|
;348: }
|
|
;349: else if(fdot < 0)
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
CNSTF4 0
|
|
GEF4 $171
|
|
line 350
|
|
;350: {
|
|
line 351
|
|
;351: return HL_BACK;
|
|
CNSTI4 8
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
line 353
|
|
;352: }
|
|
;353: }
|
|
LABELV $170
|
|
line 355
|
|
;354: else
|
|
;355: {
|
|
line 356
|
|
;356: if(rdot > 0.3)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 1050253722
|
|
LEF4 $178
|
|
line 357
|
|
;357: {
|
|
line 358
|
|
;358: return HL_CHEST_RT;
|
|
CNSTI4 9
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $178
|
|
line 360
|
|
;359: }
|
|
;360: else if(rdot < -0.3)
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
CNSTF4 3197737370
|
|
GEF4 $180
|
|
line 361
|
|
;361: {
|
|
line 362
|
|
;362: return HL_CHEST_LT;
|
|
CNSTI4 10
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $180
|
|
line 364
|
|
;363: }
|
|
;364: else if(fdot < 0)
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
CNSTF4 0
|
|
GEF4 $182
|
|
line 365
|
|
;365: {
|
|
line 366
|
|
;366: return HL_CHEST;
|
|
CNSTI4 11
|
|
RETI4
|
|
ADDRGP4 $81
|
|
JUMPV
|
|
LABELV $182
|
|
line 368
|
|
;367: }
|
|
;368: }
|
|
LABELV $171
|
|
line 369
|
|
;369: }
|
|
line 370
|
|
;370: return HL_NONE;
|
|
CNSTI4 0
|
|
RETI4
|
|
LABELV $81
|
|
endproc G_GetHitLocation 172 16
|
|
export ExplodeDeath
|
|
proc ExplodeDeath 40 24
|
|
line 475
|
|
;371:}
|
|
;372:
|
|
;373:/*
|
|
;374:int G_PickPainAnim( gentity_t *self, vec3_t point, int damage )
|
|
;375:{
|
|
;376: switch( G_GetHitLocation( self, point ) )
|
|
;377: {
|
|
;378: case HL_FOOT_RT:
|
|
;379: return BOTH_PAIN12;
|
|
;380: //PAIN12 = right foot
|
|
;381: break;
|
|
;382: case HL_FOOT_LT:
|
|
;383: return -1;
|
|
;384: break;
|
|
;385: case HL_LEG_RT:
|
|
;386: if ( !Q_irand( 0, 1 ) )
|
|
;387: {
|
|
;388: return BOTH_PAIN11;
|
|
;389: }
|
|
;390: else
|
|
;391: {
|
|
;392: return BOTH_PAIN13;
|
|
;393: }
|
|
;394: //PAIN11 = twitch right leg
|
|
;395: //PAIN13 = right knee
|
|
;396: break;
|
|
;397: case HL_LEG_LT:
|
|
;398: return BOTH_PAIN14;
|
|
;399: //PAIN14 = twitch left leg
|
|
;400: break;
|
|
;401: case HL_BACK_RT:
|
|
;402: return BOTH_PAIN7;
|
|
;403: //PAIN7 = med left shoulder
|
|
;404: break;
|
|
;405: case HL_BACK_LT:
|
|
;406: return Q_irand( BOTH_PAIN15, BOTH_PAIN16 );
|
|
;407: //PAIN15 = med right shoulder
|
|
;408: //PAIN16 = twitch right shoulder
|
|
;409: break;
|
|
;410: case HL_BACK:
|
|
;411: if ( !Q_irand( 0, 1 ) )
|
|
;412: {
|
|
;413: return BOTH_PAIN1;
|
|
;414: }
|
|
;415: else
|
|
;416: {
|
|
;417: return BOTH_PAIN5;
|
|
;418: }
|
|
;419: //PAIN1 = back
|
|
;420: //PAIN5 = same as 1
|
|
;421: break;
|
|
;422: case HL_CHEST_RT:
|
|
;423: return BOTH_PAIN3;
|
|
;424: //PAIN3 = long, right shoulder
|
|
;425: break;
|
|
;426: case HL_CHEST_LT:
|
|
;427: return BOTH_PAIN2;
|
|
;428: //PAIN2 = long, left shoulder
|
|
;429: break;
|
|
;430: case HL_WAIST:
|
|
;431: case HL_CHEST:
|
|
;432: if ( !Q_irand( 0, 3 ) )
|
|
;433: {
|
|
;434: return BOTH_PAIN6;
|
|
;435: }
|
|
;436: else if ( !Q_irand( 0, 2 ) )
|
|
;437: {
|
|
;438: return BOTH_PAIN8;
|
|
;439: }
|
|
;440: else if ( !Q_irand( 0, 1 ) )
|
|
;441: {
|
|
;442: return BOTH_PAIN17;
|
|
;443: }
|
|
;444: else
|
|
;445: {
|
|
;446: return BOTH_PAIN19;
|
|
;447: }
|
|
;448: //PAIN6 = gut
|
|
;449: //PAIN8 = chest
|
|
;450: //PAIN17 = twitch crotch
|
|
;451: //PAIN19 = med crotch
|
|
;452: break;
|
|
;453: case HL_ARM_RT:
|
|
;454: case HL_HAND_RT:
|
|
;455: return BOTH_PAIN9;
|
|
;456: //PAIN9 = twitch right arm
|
|
;457: break;
|
|
;458: case HL_ARM_LT:
|
|
;459: case HL_HAND_LT:
|
|
;460: return BOTH_PAIN10;
|
|
;461: //PAIN10 = twitch left arm
|
|
;462: break;
|
|
;463: case HL_HEAD:
|
|
;464: return BOTH_PAIN4;
|
|
;465: //PAIN4 = head
|
|
;466: break;
|
|
;467: default:
|
|
;468: return -1;
|
|
;469: break;
|
|
;470: }
|
|
;471:}
|
|
;472:*/
|
|
;473:
|
|
;474:void ExplodeDeath( gentity_t *self )
|
|
;475:{
|
|
line 479
|
|
;476:// gentity_t *tent;
|
|
;477: vec3_t forward;
|
|
;478:
|
|
;479: self->takedamage = qfalse;//stop chain reaction runaway loops
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 680
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 481
|
|
;480:
|
|
;481: self->s.loopSound = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 200
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 483
|
|
;482:
|
|
;483: VectorCopy( self->r.currentOrigin, self->s.pos.trBase );
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 24
|
|
ADDP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 486
|
|
;484:
|
|
;485:// tent = G_TempEntity( self->s.origin, EV_FX_EXPLOSION );
|
|
;486: AngleVectors(self->s.angles, forward, NULL, NULL);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 116
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
ARGP4
|
|
ADDRLP4 16
|
|
CNSTP4 0
|
|
ASGNP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 AngleVectors
|
|
CALLV
|
|
pop
|
|
line 496
|
|
;487:
|
|
;488:/*
|
|
;489: if ( self->fxID > 0 )
|
|
;490: {
|
|
;491: G_PlayEffect( self->fxID, self->r.currentOrigin, forward );
|
|
;492: }
|
|
;493: else
|
|
;494: */
|
|
;495:
|
|
;496: {
|
|
line 499
|
|
;497:// CG_SurfaceExplosion( self->r.currentOrigin, forward, 20.0f, 12.0f, ((self->spawnflags&4)==qfalse) ); //FIXME: This needs to be consistent to all exploders!
|
|
;498:// G_Sound(self, self->sounds );
|
|
;499: }
|
|
line 501
|
|
;500:
|
|
;501: if(self->splashDamage > 0 && self->splashRadius > 0)
|
|
ADDRLP4 20
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 24
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
CNSTI4 696
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
LEI4 $185
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
CNSTI4 700
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
LEI4 $185
|
|
line 502
|
|
;502: {
|
|
line 503
|
|
;503: gentity_t *attacker = self;
|
|
ADDRLP4 28
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
line 504
|
|
;504: if ( self->parent )
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 536
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $187
|
|
line 505
|
|
;505: {
|
|
line 506
|
|
;506: attacker = self->parent;
|
|
ADDRLP4 28
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 536
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 507
|
|
;507: }
|
|
LABELV $187
|
|
line 508
|
|
;508: G_RadiusDamage( self->r.currentOrigin, attacker, self->splashDamage, self->splashRadius,
|
|
ADDRLP4 32
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 36
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
CNSTI4 696
|
|
ADDP4
|
|
INDIRI4
|
|
CVIF4 4
|
|
ARGF4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
CNSTI4 700
|
|
ADDP4
|
|
INDIRI4
|
|
CVIF4 4
|
|
ARGF4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 G_RadiusDamage
|
|
CALLI4
|
|
pop
|
|
line 510
|
|
;509: attacker, MOD_UNKNOWN );
|
|
;510: }
|
|
LABELV $185
|
|
line 512
|
|
;511:
|
|
;512: ObjectDie( self, self, self, 20, 0 );
|
|
ADDRLP4 28
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 20
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 ObjectDie
|
|
CALLV
|
|
pop
|
|
line 513
|
|
;513:}
|
|
LABELV $184
|
|
endproc ExplodeDeath 40 24
|
|
export ScorePlum
|
|
proc ScorePlum 12 8
|
|
line 521
|
|
;514:
|
|
;515:
|
|
;516:/*
|
|
;517:============
|
|
;518:ScorePlum
|
|
;519:============
|
|
;520:*/
|
|
;521:void ScorePlum( gentity_t *ent, vec3_t origin, int score ) {
|
|
line 524
|
|
;522: gentity_t *plum;
|
|
;523:
|
|
;524: plum = G_TempEntity( origin, EV_SCOREPLUM );
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 86
|
|
ARGI4
|
|
ADDRLP4 4
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 526
|
|
;525: // only send this temp entity to a single client
|
|
;526: plum->r.svFlags |= SVF_SINGLECLIENT;
|
|
ADDRLP4 8
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 256
|
|
BORI4
|
|
ASGNI4
|
|
line 527
|
|
;527: plum->r.singleClient = ent->s.number;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 308
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 529
|
|
;528: //
|
|
;529: plum->s.otherEntityNum = ent->s.number;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 184
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 530
|
|
;530: plum->s.time = score;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 84
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
line 531
|
|
;531:}
|
|
LABELV $189
|
|
endproc ScorePlum 12 8
|
|
export AddScore
|
|
proc AddScore 8 0
|
|
line 540
|
|
;532:
|
|
;533:/*
|
|
;534:============
|
|
;535:AddScore
|
|
;536:
|
|
;537:Adds score to both the client and his team
|
|
;538:============
|
|
;539:*/
|
|
;540:void AddScore( gentity_t *ent, vec3_t origin, int score ) {
|
|
line 541
|
|
;541: if ( !ent->client ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $191
|
|
line 542
|
|
;542: return;
|
|
ADDRGP4 $190
|
|
JUMPV
|
|
LABELV $191
|
|
line 545
|
|
;543: }
|
|
;544: // no scoring during pre-match warmup
|
|
;545: if ( level.warmupTime ) {
|
|
ADDRGP4 level+16
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $193
|
|
line 546
|
|
;546: return;
|
|
ADDRGP4 $190
|
|
JUMPV
|
|
LABELV $193
|
|
line 551
|
|
;547: }
|
|
;548: // show score plum
|
|
;549: //ScorePlum(ent, origin, score);
|
|
;550: //
|
|
;551: ent->client->ps.persistant[PERS_SCORE] += score;
|
|
ADDRLP4 0
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 280
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 552
|
|
;552: if ( g_gametype.integer == GT_TEAM )
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 5
|
|
NEI4 $196
|
|
line 553
|
|
;553: level.teamScores[ ent->client->ps.persistant[PERS_TEAM] ] += score;
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 292
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 level+44
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $196
|
|
line 554
|
|
;554: CalculateRanks();
|
|
ADDRGP4 CalculateRanks
|
|
CALLV
|
|
pop
|
|
line 555
|
|
;555:}
|
|
LABELV $190
|
|
endproc AddScore 8 0
|
|
export TossClientWeapon
|
|
proc TossClientWeapon 92 12
|
|
line 565
|
|
;556:
|
|
;557:/*
|
|
;558:=================
|
|
;559:TossClientItems
|
|
;560:
|
|
;561:rww - Toss the weapon away from the player in the specified direction
|
|
;562:=================
|
|
;563:*/
|
|
;564:void TossClientWeapon(gentity_t *self, vec3_t direction, float speed)
|
|
;565:{
|
|
line 569
|
|
;566: vec3_t vel;
|
|
;567: gitem_t *item;
|
|
;568: gentity_t *launched;
|
|
;569: int weapon = self->s.weapon;
|
|
ADDRLP4 0
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 276
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 572
|
|
;570: int ammoSub;
|
|
;571:
|
|
;572: if (weapon <= WP_BRYAR_PISTOL)
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 3
|
|
GTI4 $201
|
|
line 573
|
|
;573: { //can't have this
|
|
line 574
|
|
;574: return;
|
|
ADDRGP4 $200
|
|
JUMPV
|
|
LABELV $201
|
|
line 577
|
|
;575: }
|
|
;576:
|
|
;577: if (weapon == WP_EMPLACED_GUN ||
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 14
|
|
EQI4 $205
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 15
|
|
NEI4 $203
|
|
LABELV $205
|
|
line 579
|
|
;578: weapon == WP_TURRET)
|
|
;579: {
|
|
line 580
|
|
;580: return;
|
|
ADDRGP4 $200
|
|
JUMPV
|
|
LABELV $203
|
|
line 584
|
|
;581: }
|
|
;582:
|
|
;583: // find the item type for this weapon
|
|
;584: item = BG_FindItemForWeapon( weapon );
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 32
|
|
ADDRGP4 BG_FindItemForWeapon
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 20
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
ASGNP4
|
|
line 586
|
|
;585:
|
|
;586: ammoSub = (self->client->ps.ammo[weaponData[weapon].ammoIndex] - bg_itemlist[BG_GetItemIndexByTag(weapon, IT_WEAPON)].quantity);
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 40
|
|
ADDRGP4 BG_GetItemIndexByTag
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 44
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 24
|
|
CNSTI4 56
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 weaponData
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 52
|
|
ADDRLP4 40
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 bg_itemlist+32
|
|
ADDP4
|
|
INDIRI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 588
|
|
;587:
|
|
;588: if (ammoSub < 0)
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $207
|
|
line 589
|
|
;589: {
|
|
line 590
|
|
;590: int ammoQuan = item->quantity;
|
|
ADDRLP4 48
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 591
|
|
;591: ammoQuan -= (-ammoSub);
|
|
ADDRLP4 48
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
NEGI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 593
|
|
;592:
|
|
;593: if (ammoQuan <= 0)
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GTI4 $209
|
|
line 594
|
|
;594: { //no ammo
|
|
line 595
|
|
;595: return;
|
|
ADDRGP4 $200
|
|
JUMPV
|
|
LABELV $209
|
|
line 597
|
|
;596: }
|
|
;597: }
|
|
LABELV $207
|
|
line 599
|
|
;598:
|
|
;599: vel[0] = direction[0]*speed;
|
|
ADDRLP4 8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
line 600
|
|
;600: vel[1] = direction[1]*speed;
|
|
ADDRLP4 8+4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
line 601
|
|
;601: vel[2] = direction[2]*speed;
|
|
ADDRLP4 8+8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
line 603
|
|
;602:
|
|
;603: launched = LaunchItem(item, self->client->ps.origin, vel);
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 20
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 8
|
|
ARGP4
|
|
ADDRLP4 48
|
|
ADDRGP4 LaunchItem
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 4
|
|
ADDRLP4 48
|
|
INDIRP4
|
|
ASGNP4
|
|
line 605
|
|
;604:
|
|
;605: launched->s.generic1 = self->s.number;
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 292
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 606
|
|
;606: launched->s.powerups = level.time + 1500;
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 272
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 1500
|
|
ADDI4
|
|
ASGNI4
|
|
line 608
|
|
;607:
|
|
;608: launched->count = bg_itemlist[BG_GetItemIndexByTag(weapon, IT_WEAPON)].quantity;
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 52
|
|
ADDRGP4 BG_GetItemIndexByTag
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
CNSTI4 52
|
|
ADDRLP4 52
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 bg_itemlist+32
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 610
|
|
;609:
|
|
;610: self->client->ps.ammo[weaponData[weapon].ammoIndex] -= bg_itemlist[BG_GetItemIndexByTag(weapon, IT_WEAPON)].quantity;
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 60
|
|
ADDRGP4 BG_GetItemIndexByTag
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 68
|
|
CNSTI4 56
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 weaponData
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
ADDP4
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 52
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 bg_itemlist+32
|
|
ADDP4
|
|
INDIRI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 612
|
|
;611:
|
|
;612: if (self->client->ps.ammo[weaponData[weapon].ammoIndex] < 0)
|
|
ADDRLP4 72
|
|
CNSTI4 408
|
|
ASGNI4
|
|
CNSTI4 56
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 weaponData
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 72
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 72
|
|
INDIRI4
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $216
|
|
line 613
|
|
;613: {
|
|
line 614
|
|
;614: launched->count -= (-self->client->ps.ammo[weaponData[weapon].ammoIndex]);
|
|
ADDRLP4 76
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 80
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 56
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 weaponData
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
NEGI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 615
|
|
;615: self->client->ps.ammo[weaponData[weapon].ammoIndex] = 0;
|
|
ADDRLP4 84
|
|
CNSTI4 408
|
|
ASGNI4
|
|
CNSTI4 56
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 weaponData
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 84
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 84
|
|
INDIRI4
|
|
ADDP4
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 616
|
|
;616: }
|
|
LABELV $216
|
|
line 618
|
|
;617:
|
|
;618: if ((self->client->ps.ammo[weaponData[weapon].ammoIndex] < 1 && weapon != WP_DET_PACK) ||
|
|
ADDRLP4 80
|
|
CNSTI4 408
|
|
ASGNI4
|
|
CNSTI4 56
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 weaponData
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
GEI4 $221
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 13
|
|
NEI4 $220
|
|
LABELV $221
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 11
|
|
EQI4 $218
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 13
|
|
EQI4 $218
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 12
|
|
EQI4 $218
|
|
LABELV $220
|
|
line 620
|
|
;619: (weapon != WP_THERMAL && weapon != WP_DET_PACK && weapon != WP_TRIP_MINE))
|
|
;620: {
|
|
line 621
|
|
;621: self->client->ps.stats[STAT_WEAPONS] &= ~(1 << weapon);
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 232
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
LSHI4
|
|
BCOMI4
|
|
BANDI4
|
|
ASGNI4
|
|
line 623
|
|
;622:
|
|
;623: self->s.weapon = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 276
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 624
|
|
;624: self->client->ps.weapon = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 148
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 626
|
|
;625:
|
|
;626: G_AddEvent(self, EV_NOAMMO, weapon);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 22
|
|
ARGI4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_AddEvent
|
|
CALLV
|
|
pop
|
|
line 627
|
|
;627: }
|
|
LABELV $218
|
|
line 628
|
|
;628:}
|
|
LABELV $200
|
|
endproc TossClientWeapon 92 12
|
|
export TossClientItems
|
|
proc TossClientItems 44 12
|
|
line 637
|
|
;629:
|
|
;630:/*
|
|
;631:=================
|
|
;632:TossClientItems
|
|
;633:
|
|
;634:Toss the weapon and powerups for the killed player
|
|
;635:=================
|
|
;636:*/
|
|
;637:void TossClientItems( gentity_t *self ) {
|
|
line 645
|
|
;638: gitem_t *item;
|
|
;639: int weapon;
|
|
;640: float angle;
|
|
;641: int i;
|
|
;642: gentity_t *drop;
|
|
;643:
|
|
;644: // drop the weapon if not a gauntlet or machinegun
|
|
;645: weapon = self->s.weapon;
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 276
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 651
|
|
;646:
|
|
;647: // make a special check to see if they are changing to a new
|
|
;648: // weapon that isn't the mg or gauntlet. Without this, a client
|
|
;649: // can pick up a weapon, be killed, and not drop the weapon because
|
|
;650: // their weapon change hasn't completed yet and they are still holding the MG.
|
|
;651: if ( weapon == WP_BRYAR_PISTOL) {
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $223
|
|
line 652
|
|
;652: if ( self->client->ps.weaponstate == WEAPON_DROPPING ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 152
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $225
|
|
line 653
|
|
;653: weapon = self->client->pers.cmd.weapon;
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1392
|
|
ADDP4
|
|
INDIRU1
|
|
CVUI4 1
|
|
ASGNI4
|
|
line 654
|
|
;654: }
|
|
LABELV $225
|
|
line 655
|
|
;655: if ( !( self->client->ps.stats[STAT_WEAPONS] & ( 1 << weapon ) ) ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 232
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
LSHI4
|
|
BANDI4
|
|
CNSTI4 0
|
|
NEI4 $227
|
|
line 656
|
|
;656: weapon = WP_NONE;
|
|
ADDRLP4 12
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 657
|
|
;657: }
|
|
LABELV $227
|
|
line 658
|
|
;658: }
|
|
LABELV $223
|
|
line 660
|
|
;659:
|
|
;660: self->s.bolt2 = weapon;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 144
|
|
ADDP4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ASGNI4
|
|
line 662
|
|
;661:
|
|
;662: if ( weapon > WP_BRYAR_PISTOL &&
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 3
|
|
LEI4 $229
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 14
|
|
EQI4 $229
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 15
|
|
EQI4 $229
|
|
ADDRLP4 24
|
|
CNSTI4 408
|
|
ASGNI4
|
|
CNSTI4 56
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 weaponData
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $229
|
|
line 665
|
|
;663: weapon != WP_EMPLACED_GUN &&
|
|
;664: weapon != WP_TURRET &&
|
|
;665: self->client->ps.ammo[ weaponData[weapon].ammoIndex ] ) {
|
|
line 669
|
|
;666: gentity_t *te;
|
|
;667:
|
|
;668: // find the item type for this weapon
|
|
;669: item = BG_FindItemForWeapon( weapon );
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 32
|
|
ADDRGP4 BG_FindItemForWeapon
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
ASGNP4
|
|
line 672
|
|
;670:
|
|
;671: // tell all clients to remove the weapon model on this guy until he respawns
|
|
;672: te = G_TempEntity( vec3_origin, EV_DESTROY_WEAPON_MODEL );
|
|
ADDRGP4 vec3_origin
|
|
ARGP4
|
|
CNSTI4 91
|
|
ARGI4
|
|
ADDRLP4 36
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 28
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ASGNP4
|
|
line 673
|
|
;673: te->r.svFlags |= SVF_BROADCAST;
|
|
ADDRLP4 40
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 32
|
|
BORI4
|
|
ASGNI4
|
|
line 674
|
|
;674: te->s.eventParm = self->s.number;
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 677
|
|
;675:
|
|
;676: // spawn the item
|
|
;677: Drop_Item( self, item, 0 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTF4 0
|
|
ARGF4
|
|
ADDRGP4 Drop_Item
|
|
CALLP4
|
|
pop
|
|
line 678
|
|
;678: }
|
|
LABELV $229
|
|
line 681
|
|
;679:
|
|
;680: // drop all the powerups if not in teamplay
|
|
;681: if ( g_gametype.integer != GT_TEAM ) {
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 5
|
|
EQI4 $231
|
|
line 682
|
|
;682: angle = 45;
|
|
ADDRLP4 16
|
|
CNSTF4 1110704128
|
|
ASGNF4
|
|
line 683
|
|
;683: for ( i = 1 ; i < PW_NUM_POWERUPS ; i++ ) {
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
LABELV $234
|
|
line 684
|
|
;684: if ( self->client->ps.powerups[ i ] > level.time ) {
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
LEI4 $238
|
|
line 685
|
|
;685: item = BG_FindItemForPowerup( i );
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 28
|
|
ADDRGP4 BG_FindItemForPowerup
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ASGNP4
|
|
line 686
|
|
;686: if ( !item ) {
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $241
|
|
line 687
|
|
;687: continue;
|
|
ADDRGP4 $235
|
|
JUMPV
|
|
LABELV $241
|
|
line 689
|
|
;688: }
|
|
;689: drop = Drop_Item( self, item, angle );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
ARGF4
|
|
ADDRLP4 32
|
|
ADDRGP4 Drop_Item
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
ASGNP4
|
|
line 691
|
|
;690: // decide how many seconds it has left
|
|
;691: drop->count = ( self->client->ps.powerups[ i ] - level.time ) / 1000;
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
SUBI4
|
|
CNSTI4 1000
|
|
DIVI4
|
|
ASGNI4
|
|
line 692
|
|
;692: if ( drop->count < 1 ) {
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
GEI4 $244
|
|
line 693
|
|
;693: drop->count = 1;
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 712
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 694
|
|
;694: }
|
|
LABELV $244
|
|
line 695
|
|
;695: angle += 45;
|
|
ADDRLP4 16
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
CNSTF4 1110704128
|
|
ADDF4
|
|
ASGNF4
|
|
line 696
|
|
;696: }
|
|
LABELV $238
|
|
line 697
|
|
;697: }
|
|
LABELV $235
|
|
line 683
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 16
|
|
LTI4 $234
|
|
line 698
|
|
;698: }
|
|
LABELV $231
|
|
line 699
|
|
;699:}
|
|
LABELV $222
|
|
endproc TossClientItems 44 12
|
|
export LookAtKiller
|
|
proc LookAtKiller 52 4
|
|
line 707
|
|
;700:
|
|
;701:
|
|
;702:/*
|
|
;703:==================
|
|
;704:LookAtKiller
|
|
;705:==================
|
|
;706:*/
|
|
;707:void LookAtKiller( gentity_t *self, gentity_t *inflictor, gentity_t *attacker ) {
|
|
line 711
|
|
;708: vec3_t dir;
|
|
;709: vec3_t angles;
|
|
;710:
|
|
;711: if ( attacker && attacker != self ) {
|
|
ADDRLP4 24
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 24
|
|
INDIRU4
|
|
CNSTU4 0
|
|
EQU4 $247
|
|
ADDRLP4 24
|
|
INDIRU4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $247
|
|
line 712
|
|
;712: VectorSubtract (attacker->s.pos.trBase, self->s.pos.trBase, dir);
|
|
ADDRLP4 28
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
CNSTI4 24
|
|
ASGNI4
|
|
ADDRLP4 36
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 40
|
|
CNSTI4 28
|
|
ASGNI4
|
|
ADDRLP4 0+4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ADDRLP4 40
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ADDRLP4 40
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 44
|
|
CNSTI4 32
|
|
ASGNI4
|
|
ADDRLP4 0+8
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 713
|
|
;713: } else if ( inflictor && inflictor != self ) {
|
|
ADDRGP4 $248
|
|
JUMPV
|
|
LABELV $247
|
|
ADDRLP4 28
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 28
|
|
INDIRU4
|
|
CNSTU4 0
|
|
EQU4 $251
|
|
ADDRLP4 28
|
|
INDIRU4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $251
|
|
line 714
|
|
;714: VectorSubtract (inflictor->s.pos.trBase, self->s.pos.trBase, dir);
|
|
ADDRLP4 32
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 36
|
|
CNSTI4 24
|
|
ASGNI4
|
|
ADDRLP4 40
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 44
|
|
CNSTI4 28
|
|
ASGNI4
|
|
ADDRLP4 0+4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 48
|
|
CNSTI4 32
|
|
ASGNI4
|
|
ADDRLP4 0+8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 715
|
|
;715: } else {
|
|
ADDRGP4 $252
|
|
JUMPV
|
|
LABELV $251
|
|
line 716
|
|
;716: self->client->ps.stats[STAT_DEAD_YAW] = self->s.angles[YAW];
|
|
ADDRLP4 32
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 240
|
|
ADDP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
CNSTI4 120
|
|
ADDP4
|
|
INDIRF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 717
|
|
;717: return;
|
|
ADDRGP4 $246
|
|
JUMPV
|
|
LABELV $252
|
|
LABELV $248
|
|
line 720
|
|
;718: }
|
|
;719:
|
|
;720: self->client->ps.stats[STAT_DEAD_YAW] = vectoyaw ( dir );
|
|
ADDRLP4 0
|
|
ARGP4
|
|
ADDRLP4 32
|
|
ADDRGP4 vectoyaw
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 240
|
|
ADDP4
|
|
ADDRLP4 32
|
|
INDIRF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 722
|
|
;721:
|
|
;722: angles[YAW] = vectoyaw ( dir );
|
|
ADDRLP4 0
|
|
ARGP4
|
|
ADDRLP4 36
|
|
ADDRGP4 vectoyaw
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 12+4
|
|
ADDRLP4 36
|
|
INDIRF4
|
|
ASGNF4
|
|
line 723
|
|
;723: angles[PITCH] = 0;
|
|
ADDRLP4 12
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 724
|
|
;724: angles[ROLL] = 0;
|
|
ADDRLP4 12+8
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 725
|
|
;725:}
|
|
LABELV $246
|
|
endproc LookAtKiller 52 4
|
|
export GibEntity
|
|
proc GibEntity 0 12
|
|
line 732
|
|
;726:
|
|
;727:/*
|
|
;728:==================
|
|
;729:GibEntity
|
|
;730:==================
|
|
;731:*/
|
|
;732:void GibEntity( gentity_t *self, int killer ) {
|
|
line 733
|
|
;733: G_AddEvent( self, EV_GIB_PLAYER, killer );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 85
|
|
ARGI4
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_AddEvent
|
|
CALLV
|
|
pop
|
|
line 734
|
|
;734: self->takedamage = qfalse;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 680
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 735
|
|
;735: self->s.eType = ET_INVISIBLE;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
CNSTI4 12
|
|
ASGNI4
|
|
line 736
|
|
;736: self->r.contents = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 340
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 737
|
|
;737:}
|
|
LABELV $257
|
|
endproc GibEntity 0 12
|
|
export BodyRid
|
|
proc BodyRid 0 4
|
|
line 740
|
|
;738:
|
|
;739:void BodyRid(gentity_t *ent)
|
|
;740:{
|
|
line 741
|
|
;741: trap_UnlinkEntity( ent );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 trap_UnlinkEntity
|
|
CALLV
|
|
pop
|
|
line 742
|
|
;742: ent->physicsObject = qfalse;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 500
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 743
|
|
;743:}
|
|
LABELV $258
|
|
endproc BodyRid 0 4
|
|
export body_die
|
|
proc body_die 16 0
|
|
line 750
|
|
;744:
|
|
;745:/*
|
|
;746:==================
|
|
;747:body_die
|
|
;748:==================
|
|
;749:*/
|
|
;750:void body_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int meansOfDeath ) {
|
|
line 752
|
|
;751: // NOTENOTE No gibbing right now, this is star wars.
|
|
;752: qboolean doDisint = qfalse;
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 754
|
|
;753:
|
|
;754: if (self->health < (GIB_HEALTH+1))
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 -39
|
|
GEI4 $260
|
|
line 755
|
|
;755: {
|
|
line 756
|
|
;756: self->health = GIB_HEALTH+1;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
CNSTI4 -39
|
|
ASGNI4
|
|
line 758
|
|
;757:
|
|
;758: if (self->client && (level.time - self->client->respawnTime) < 2000)
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $262
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 1672
|
|
ADDP4
|
|
INDIRI4
|
|
SUBI4
|
|
CNSTI4 2000
|
|
GEI4 $262
|
|
line 759
|
|
;759: {
|
|
line 760
|
|
;760: doDisint = qfalse;
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 761
|
|
;761: }
|
|
ADDRGP4 $263
|
|
JUMPV
|
|
LABELV $262
|
|
line 763
|
|
;762: else
|
|
;763: {
|
|
line 764
|
|
;764: doDisint = qtrue;
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 765
|
|
;765: }
|
|
LABELV $263
|
|
line 766
|
|
;766: }
|
|
LABELV $260
|
|
line 768
|
|
;767:
|
|
;768: if (self->client && (self->client->ps.eFlags & EF_DISINTEGRATION))
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $265
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 33554432
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $265
|
|
line 769
|
|
;769: {
|
|
line 770
|
|
;770: return;
|
|
ADDRGP4 $259
|
|
JUMPV
|
|
LABELV $265
|
|
line 772
|
|
;771: }
|
|
;772: else if (self->s.eFlags & EF_DISINTEGRATION)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 33554432
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $267
|
|
line 773
|
|
;773: {
|
|
line 774
|
|
;774: return;
|
|
ADDRGP4 $259
|
|
JUMPV
|
|
LABELV $267
|
|
line 777
|
|
;775: }
|
|
;776:
|
|
;777: if (doDisint)
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $269
|
|
line 778
|
|
;778: {
|
|
line 779
|
|
;779: if (self->client)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $271
|
|
line 780
|
|
;780: {
|
|
line 781
|
|
;781: self->client->ps.eFlags |= EF_DISINTEGRATION;
|
|
ADDRLP4 8
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 33554432
|
|
BORI4
|
|
ASGNI4
|
|
line 782
|
|
;782: VectorCopy(self->client->ps.origin, self->client->ps.lastHitLoc);
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 1356
|
|
ADDP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 20
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 783
|
|
;783: }
|
|
ADDRGP4 $259
|
|
JUMPV
|
|
LABELV $271
|
|
line 785
|
|
;784: else
|
|
;785: {
|
|
line 786
|
|
;786: self->s.eFlags |= EF_DISINTEGRATION;
|
|
ADDRLP4 8
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 33554432
|
|
BORI4
|
|
ASGNI4
|
|
line 787
|
|
;787: VectorCopy(self->r.currentOrigin, self->s.origin2);
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 104
|
|
ADDP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 790
|
|
;788:
|
|
;789: //since it's the corpse entity, tell it to "remove" itself
|
|
;790: self->think = BodyRid;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 636
|
|
ADDP4
|
|
ADDRGP4 BodyRid
|
|
ASGNP4
|
|
line 791
|
|
;791: self->nextthink = level.time + 1000;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 632
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 1000
|
|
ADDI4
|
|
ASGNI4
|
|
line 792
|
|
;792: }
|
|
line 793
|
|
;793: return;
|
|
LABELV $269
|
|
line 795
|
|
;794: }
|
|
;795:}
|
|
LABELV $259
|
|
endproc body_die 16 0
|
|
data
|
|
export modNames
|
|
align 4
|
|
LABELV modNames
|
|
address $274
|
|
address $275
|
|
address $276
|
|
address $277
|
|
address $278
|
|
address $279
|
|
address $280
|
|
address $281
|
|
address $282
|
|
address $283
|
|
address $284
|
|
address $285
|
|
address $286
|
|
address $287
|
|
address $288
|
|
address $289
|
|
address $290
|
|
address $291
|
|
address $292
|
|
address $293
|
|
address $294
|
|
address $295
|
|
address $296
|
|
address $297
|
|
address $298
|
|
address $299
|
|
address $300
|
|
address $301
|
|
address $302
|
|
address $303
|
|
address $304
|
|
address $305
|
|
address $306
|
|
address $307
|
|
address $308
|
|
address $309
|
|
address $310
|
|
address $311
|
|
export CheckAlmostCapture
|
|
code
|
|
proc CheckAlmostCapture 0 0
|
|
line 846
|
|
;796:
|
|
;797:
|
|
;798:// these are just for logging, the client prints its own messages
|
|
;799:char *modNames[] = {
|
|
;800: "MOD_UNKNOWN",
|
|
;801: "MOD_STUN_BATON",
|
|
;802: "MOD_MELEE",
|
|
;803: "MOD_SABER",
|
|
;804: "MOD_BRYAR_PISTOL",
|
|
;805: "MOD_BRYAR_PISTOL_ALT",
|
|
;806: "MOD_BLASTER",
|
|
;807: "MOD_DISRUPTOR",
|
|
;808: "MOD_DISRUPTOR_SPLASH",
|
|
;809: "MOD_DISRUPTOR_SNIPER",
|
|
;810: "MOD_BOWCASTER",
|
|
;811: "MOD_REPEATER",
|
|
;812: "MOD_REPEATER_ALT",
|
|
;813: "MOD_REPEATER_ALT_SPLASH",
|
|
;814: "MOD_DEMP2",
|
|
;815: "MOD_DEMP2_ALT",
|
|
;816: "MOD_FLECHETTE",
|
|
;817: "MOD_FLECHETTE_ALT_SPLASH",
|
|
;818: "MOD_ROCKET",
|
|
;819: "MOD_ROCKET_SPLASH",
|
|
;820: "MOD_ROCKET_HOMING",
|
|
;821: "MOD_ROCKET_HOMING_SPLASH",
|
|
;822: "MOD_THERMAL",
|
|
;823: "MOD_THERMAL_SPLASH",
|
|
;824: "MOD_TRIP_MINE_SPLASH",
|
|
;825: "MOD_TIMED_MINE_SPLASH",
|
|
;826: "MOD_DET_PACK_SPLASH",
|
|
;827: "MOD_FORCE_DARK",
|
|
;828: "MOD_SENTRY",
|
|
;829: "MOD_WATER",
|
|
;830: "MOD_SLIME",
|
|
;831: "MOD_LAVA",
|
|
;832: "MOD_CRUSH",
|
|
;833: "MOD_TELEFRAG",
|
|
;834: "MOD_FALLING",
|
|
;835: "MOD_SUICIDE",
|
|
;836: "MOD_TARGET_LASER",
|
|
;837: "MOD_TRIGGER_HURT"
|
|
;838:};
|
|
;839:
|
|
;840:
|
|
;841:/*
|
|
;842:==================
|
|
;843:CheckAlmostCapture
|
|
;844:==================
|
|
;845:*/
|
|
;846:void CheckAlmostCapture( gentity_t *self, gentity_t *attacker ) {
|
|
line 891
|
|
;847:#if 0
|
|
;848: gentity_t *ent;
|
|
;849: vec3_t dir;
|
|
;850: char *classname;
|
|
;851:
|
|
;852: // if this player was carrying a flag
|
|
;853: if ( self->client->ps.powerups[PW_REDFLAG] ||
|
|
;854: self->client->ps.powerups[PW_BLUEFLAG] ||
|
|
;855: self->client->ps.powerups[PW_NEUTRALFLAG] ) {
|
|
;856: // get the goal flag this player should have been going for
|
|
;857: if ( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTY ) {
|
|
;858: if ( self->client->sess.sessionTeam == TEAM_BLUE ) {
|
|
;859: classname = "team_CTF_blueflag";
|
|
;860: }
|
|
;861: else {
|
|
;862: classname = "team_CTF_redflag";
|
|
;863: }
|
|
;864: }
|
|
;865: else {
|
|
;866: if ( self->client->sess.sessionTeam == TEAM_BLUE ) {
|
|
;867: classname = "team_CTF_redflag";
|
|
;868: }
|
|
;869: else {
|
|
;870: classname = "team_CTF_blueflag";
|
|
;871: }
|
|
;872: }
|
|
;873: ent = NULL;
|
|
;874: do
|
|
;875: {
|
|
;876: ent = G_Find(ent, FOFS(classname), classname);
|
|
;877: } while (ent && (ent->flags & FL_DROPPED_ITEM));
|
|
;878: // if we found the destination flag and it's not picked up
|
|
;879: if (ent && !(ent->r.svFlags & SVF_NOCLIENT) ) {
|
|
;880: // if the player was *very* close
|
|
;881: VectorSubtract( self->client->ps.origin, ent->s.origin, dir );
|
|
;882: if ( VectorLength(dir) < 200 ) {
|
|
;883: self->client->ps.persistant[PERS_PLAYEREVENTS] ^= PLAYEREVENT_HOLYSHIT;
|
|
;884: if ( attacker->client ) {
|
|
;885: attacker->client->ps.persistant[PERS_PLAYEREVENTS] ^= PLAYEREVENT_HOLYSHIT;
|
|
;886: }
|
|
;887: }
|
|
;888: }
|
|
;889: }
|
|
;890:#endif
|
|
;891:}
|
|
LABELV $312
|
|
endproc CheckAlmostCapture 0 0
|
|
proc G_PickDeathAnim 76 8
|
|
line 894
|
|
;892:
|
|
;893:static int G_PickDeathAnim( gentity_t *self, vec3_t point, int damage, int mod, int hitLoc )
|
|
;894:{//FIXME: play dead flop anims on body if in an appropriate _DEAD anim when this func is called
|
|
line 895
|
|
;895: int deathAnim = -1;
|
|
ADDRLP4 0
|
|
CNSTI4 -1
|
|
ASGNI4
|
|
line 898
|
|
;896: int max_health;
|
|
;897:
|
|
;898: if (!self || !self->client)
|
|
ADDRLP4 8
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 12
|
|
INDIRU4
|
|
EQU4 $316
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 12
|
|
INDIRU4
|
|
NEU4 $314
|
|
LABELV $316
|
|
line 899
|
|
;899: {
|
|
line 900
|
|
;900: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $313
|
|
JUMPV
|
|
LABELV $314
|
|
line 903
|
|
;901: }
|
|
;902:
|
|
;903: max_health = self->client->ps.stats[STAT_MAX_HEALTH];
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 248
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 905
|
|
;904:
|
|
;905: if ( hitLoc == HL_NONE )
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $317
|
|
line 906
|
|
;906: {
|
|
line 907
|
|
;907: hitLoc = G_GetHitLocation( self, point );//self->hitLoc
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 16
|
|
ADDRGP4 G_GetHitLocation
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRFP4 16
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
ASGNI4
|
|
line 908
|
|
;908: }
|
|
LABELV $317
|
|
line 910
|
|
;909: //dead flops
|
|
;910: switch( self->client->ps.legsAnim&~ANIM_TOGGLEBIT )
|
|
ADDRLP4 16
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 92
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 -2049
|
|
BANDI4
|
|
ASGNI4
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 0
|
|
LTI4 $319
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 68
|
|
GTI4 $319
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 $326
|
|
ADDP4
|
|
INDIRP4
|
|
JUMPV
|
|
lit
|
|
align 4
|
|
LABELV $326
|
|
address $322
|
|
address $322
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $322
|
|
address $325
|
|
address $323
|
|
address $325
|
|
address $325
|
|
address $322
|
|
address $322
|
|
address $319
|
|
address $319
|
|
address $323
|
|
address $322
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $319
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $319
|
|
address $322
|
|
address $322
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $322
|
|
address $325
|
|
address $323
|
|
address $325
|
|
address $325
|
|
address $322
|
|
address $322
|
|
address $323
|
|
address $322
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $323
|
|
address $323
|
|
address $322
|
|
address $322
|
|
address $325
|
|
address $325
|
|
address $325
|
|
address $324
|
|
code
|
|
line 911
|
|
;911: {
|
|
LABELV $322
|
|
line 926
|
|
;912: case BOTH_DEATH1: //# First Death anim
|
|
;913: case BOTH_DEAD1:
|
|
;914: case BOTH_DEATH2: //# Second Death anim
|
|
;915: case BOTH_DEAD2:
|
|
;916: case BOTH_DEATH8: //#
|
|
;917: case BOTH_DEAD8:
|
|
;918: case BOTH_DEATH13: //#
|
|
;919: case BOTH_DEAD13:
|
|
;920: case BOTH_DEATH14: //#
|
|
;921: case BOTH_DEAD14:
|
|
;922: case BOTH_DEATH16: //#
|
|
;923: case BOTH_DEAD16:
|
|
;924: case BOTH_DEADBACKWARD1: //# First thrown backward death finished pose
|
|
;925: case BOTH_DEADBACKWARD2: //# Second thrown backward death finished pose
|
|
;926: deathAnim = -2;
|
|
ADDRLP4 0
|
|
CNSTI4 -2
|
|
ASGNI4
|
|
LABELV $323
|
|
line 947
|
|
;927: /*
|
|
;928: if ( PM_FinishedCurrentLegsAnim( self ) )
|
|
;929: {//done with the anim
|
|
;930: deathAnim = BOTH_DEADFLOP2;
|
|
;931: }
|
|
;932: else
|
|
;933: {
|
|
;934: deathAnim = -2;
|
|
;935: }
|
|
;936: break;
|
|
;937: case BOTH_DEADFLOP2:
|
|
;938: deathAnim = BOTH_DEADFLOP2;
|
|
;939: break;
|
|
;940: */
|
|
;941: case BOTH_DEATH10: //#
|
|
;942: case BOTH_DEAD10:
|
|
;943: case BOTH_DEATH15: //#
|
|
;944: case BOTH_DEAD15:
|
|
;945: case BOTH_DEADFORWARD1: //# First thrown forward death finished pose
|
|
;946: case BOTH_DEADFORWARD2: //# Second thrown forward death finished pose
|
|
;947: deathAnim = -2;
|
|
ADDRLP4 0
|
|
CNSTI4 -2
|
|
ASGNI4
|
|
LABELV $324
|
|
line 960
|
|
;948: /*
|
|
;949: if ( PM_FinishedCurrentLegsAnim( self ) )
|
|
;950: {//done with the anim
|
|
;951: deathAnim = BOTH_DEADFLOP1;
|
|
;952: }
|
|
;953: else
|
|
;954: {
|
|
;955: deathAnim = -2;
|
|
;956: }
|
|
;957: break;
|
|
;958: */
|
|
;959: case BOTH_DEADFLOP1:
|
|
;960: deathAnim = -2;
|
|
ADDRLP4 0
|
|
CNSTI4 -2
|
|
ASGNI4
|
|
line 962
|
|
;961: //deathAnim = BOTH_DEADFLOP1;
|
|
;962: break;
|
|
ADDRGP4 $320
|
|
JUMPV
|
|
LABELV $325
|
|
line 998
|
|
;963: case BOTH_DEAD3: //# Third Death finished pose
|
|
;964: case BOTH_DEAD4: //# Fourth Death finished pose
|
|
;965: case BOTH_DEAD5: //# Fifth Death finished pose
|
|
;966: case BOTH_DEAD6: //# Sixth Death finished pose
|
|
;967: case BOTH_DEAD7: //# Seventh Death finished pose
|
|
;968: case BOTH_DEAD9: //#
|
|
;969: case BOTH_DEAD11: //#
|
|
;970: case BOTH_DEAD12: //#
|
|
;971: case BOTH_DEAD17: //#
|
|
;972: case BOTH_DEAD18: //#
|
|
;973: case BOTH_DEAD19: //#
|
|
;974: case BOTH_LYINGDEAD1: //# Killed lying down death finished pose
|
|
;975: case BOTH_STUMBLEDEAD1: //# Stumble forward death finished pose
|
|
;976: case BOTH_FALLDEAD1LAND: //# Fall forward and splat death finished pose
|
|
;977: case BOTH_DEATH3: //# Third Death anim
|
|
;978: case BOTH_DEATH4: //# Fourth Death anim
|
|
;979: case BOTH_DEATH5: //# Fifth Death anim
|
|
;980: case BOTH_DEATH6: //# Sixth Death anim
|
|
;981: case BOTH_DEATH7: //# Seventh Death anim
|
|
;982: case BOTH_DEATH9: //#
|
|
;983: case BOTH_DEATH11: //#
|
|
;984: case BOTH_DEATH12: //#
|
|
;985: case BOTH_DEATH17: //#
|
|
;986: case BOTH_DEATH18: //#
|
|
;987: case BOTH_DEATH19: //#
|
|
;988: case BOTH_DEATHFORWARD1: //# First Death in which they get thrown forward
|
|
;989: case BOTH_DEATHFORWARD2: //# Second Death in which they get thrown forward
|
|
;990: case BOTH_DEATHBACKWARD1: //# First Death in which they get thrown backward
|
|
;991: case BOTH_DEATHBACKWARD2: //# Second Death in which they get thrown backward
|
|
;992: case BOTH_DEATH1IDLE: //# Idle while close to death
|
|
;993: case BOTH_LYINGDEATH1: //# Death to play when killed lying down
|
|
;994: case BOTH_STUMBLEDEATH1: //# Stumble forward and fall face first death
|
|
;995: case BOTH_FALLDEATH1: //# Fall forward off a high cliff and splat death - start
|
|
;996: case BOTH_FALLDEATH1INAIR: //# Fall forward off a high cliff and splat death - loop
|
|
;997: case BOTH_FALLDEATH1LAND: //# Fall forward off a high cliff and splat death - hit bottom
|
|
;998: deathAnim = -2;
|
|
ADDRLP4 0
|
|
CNSTI4 -2
|
|
ASGNI4
|
|
line 999
|
|
;999: break;
|
|
LABELV $319
|
|
LABELV $320
|
|
line 1001
|
|
;1000: }
|
|
;1001: if ( deathAnim == -1 )
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 -1
|
|
NEI4 $327
|
|
line 1002
|
|
;1002: {
|
|
line 1004
|
|
;1003: //death anims
|
|
;1004: switch( hitLoc )
|
|
ADDRLP4 24
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 1
|
|
LTI4 $330
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 16
|
|
GTI4 $330
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 $400-4
|
|
ADDP4
|
|
INDIRP4
|
|
JUMPV
|
|
lit
|
|
align 4
|
|
LABELV $400
|
|
address $331
|
|
address $331
|
|
address $338
|
|
address $343
|
|
address $385
|
|
address $355
|
|
address $370
|
|
address $348
|
|
address $355
|
|
address $370
|
|
address $385
|
|
address $355
|
|
address $370
|
|
address $355
|
|
address $370
|
|
address $397
|
|
code
|
|
line 1005
|
|
;1005: {
|
|
LABELV $331
|
|
line 1008
|
|
;1006: case HL_FOOT_RT:
|
|
;1007: case HL_FOOT_LT:
|
|
;1008: if ( mod == MOD_SABER && !Q_irand( 0, 2 ) )
|
|
ADDRFP4 12
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $332
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRLP4 28
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 28
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $332
|
|
line 1009
|
|
;1009: {
|
|
line 1010
|
|
;1010: return BOTH_DEATH10;//chest: back flip
|
|
CNSTI4 9
|
|
RETI4
|
|
ADDRGP4 $313
|
|
JUMPV
|
|
LABELV $332
|
|
line 1012
|
|
;1011: }
|
|
;1012: else if ( !Q_irand( 0, 2 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRLP4 32
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $334
|
|
line 1013
|
|
;1013: {
|
|
line 1014
|
|
;1014: deathAnim = BOTH_DEATH4;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 1015
|
|
;1015: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $334
|
|
line 1016
|
|
;1016: else if ( !Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 36
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $336
|
|
line 1017
|
|
;1017: {
|
|
line 1018
|
|
;1018: deathAnim = BOTH_DEATH5;//same as 4
|
|
ADDRLP4 0
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 1019
|
|
;1019: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $336
|
|
line 1021
|
|
;1020: else
|
|
;1021: {
|
|
line 1022
|
|
;1022: deathAnim = BOTH_DEATH15;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 16
|
|
ASGNI4
|
|
line 1023
|
|
;1023: }
|
|
line 1024
|
|
;1024: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $338
|
|
line 1026
|
|
;1025: case HL_LEG_RT:
|
|
;1026: if ( !Q_irand( 0, 2 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRLP4 40
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 40
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $339
|
|
line 1027
|
|
;1027: {
|
|
line 1028
|
|
;1028: deathAnim = BOTH_DEATH4;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 1029
|
|
;1029: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $339
|
|
line 1030
|
|
;1030: else if ( !Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 44
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $341
|
|
line 1031
|
|
;1031: {
|
|
line 1032
|
|
;1032: deathAnim = BOTH_DEATH5;//same as 4
|
|
ADDRLP4 0
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 1033
|
|
;1033: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $341
|
|
line 1035
|
|
;1034: else
|
|
;1035: {
|
|
line 1036
|
|
;1036: deathAnim = BOTH_DEATH15;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 16
|
|
ASGNI4
|
|
line 1037
|
|
;1037: }
|
|
line 1038
|
|
;1038: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $343
|
|
line 1040
|
|
;1039: case HL_LEG_LT:
|
|
;1040: if ( !Q_irand( 0, 2 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRLP4 48
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $344
|
|
line 1041
|
|
;1041: {
|
|
line 1042
|
|
;1042: deathAnim = BOTH_DEATH4;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 1043
|
|
;1043: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $344
|
|
line 1044
|
|
;1044: else if ( !Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 52
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 52
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $346
|
|
line 1045
|
|
;1045: {
|
|
line 1046
|
|
;1046: deathAnim = BOTH_DEATH5;//same as 4
|
|
ADDRLP4 0
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 1047
|
|
;1047: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $346
|
|
line 1049
|
|
;1048: else
|
|
;1049: {
|
|
line 1050
|
|
;1050: deathAnim = BOTH_DEATH15;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 16
|
|
ASGNI4
|
|
line 1051
|
|
;1051: }
|
|
line 1052
|
|
;1052: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $348
|
|
line 1054
|
|
;1053: case HL_BACK:
|
|
;1054: if ( !VectorLengthSquared( self->client->ps.velocity ) )
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 56
|
|
ADDRGP4 VectorLengthSquared
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 56
|
|
INDIRF4
|
|
CNSTF4 0
|
|
NEF4 $349
|
|
line 1055
|
|
;1055: {
|
|
line 1056
|
|
;1056: deathAnim = BOTH_DEATH17;//head/back: croak
|
|
ADDRLP4 0
|
|
CNSTI4 18
|
|
ASGNI4
|
|
line 1057
|
|
;1057: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $349
|
|
line 1059
|
|
;1058: else
|
|
;1059: {
|
|
line 1060
|
|
;1060: if ( !Q_irand( 0, 2 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRLP4 60
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $351
|
|
line 1061
|
|
;1061: {
|
|
line 1062
|
|
;1062: deathAnim = BOTH_DEATH4;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 3
|
|
ASGNI4
|
|
line 1063
|
|
;1063: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $351
|
|
line 1064
|
|
;1064: else if ( !Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 64
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $353
|
|
line 1065
|
|
;1065: {
|
|
line 1066
|
|
;1066: deathAnim = BOTH_DEATH5;//same as 4
|
|
ADDRLP4 0
|
|
CNSTI4 4
|
|
ASGNI4
|
|
line 1067
|
|
;1067: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $353
|
|
line 1069
|
|
;1068: else
|
|
;1069: {
|
|
line 1070
|
|
;1070: deathAnim = BOTH_DEATH15;//back: forward
|
|
ADDRLP4 0
|
|
CNSTI4 16
|
|
ASGNI4
|
|
line 1071
|
|
;1071: }
|
|
line 1072
|
|
;1072: }
|
|
line 1073
|
|
;1073: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $355
|
|
line 1078
|
|
;1074: case HL_CHEST_RT:
|
|
;1075: case HL_ARM_RT:
|
|
;1076: case HL_HAND_RT:
|
|
;1077: case HL_BACK_RT:
|
|
;1078: if ( damage <= max_health*0.25 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1048576000
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $356
|
|
line 1079
|
|
;1079: {
|
|
line 1080
|
|
;1080: deathAnim = BOTH_DEATH9;//chest right: snap, fall forward
|
|
ADDRLP4 0
|
|
CNSTI4 8
|
|
ASGNI4
|
|
line 1081
|
|
;1081: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $356
|
|
line 1082
|
|
;1082: else if ( damage <= max_health*0.5 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1056964608
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $358
|
|
line 1083
|
|
;1083: {
|
|
line 1084
|
|
;1084: deathAnim = BOTH_DEATH3;//chest right: back
|
|
ADDRLP4 0
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 1085
|
|
;1085: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $358
|
|
line 1086
|
|
;1086: else if ( damage <= max_health*0.75 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1061158912
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $360
|
|
line 1087
|
|
;1087: {
|
|
line 1088
|
|
;1088: deathAnim = BOTH_DEATH6;//chest right: spin
|
|
ADDRLP4 0
|
|
CNSTI4 5
|
|
ASGNI4
|
|
line 1089
|
|
;1089: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $360
|
|
line 1091
|
|
;1090: else
|
|
;1091: {
|
|
line 1093
|
|
;1092: //TEMP HACK: play spinny deaths less often
|
|
;1093: if ( Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 60
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $362
|
|
line 1094
|
|
;1094: {
|
|
line 1095
|
|
;1095: deathAnim = BOTH_DEATH8;//chest right: spin high
|
|
ADDRLP4 0
|
|
CNSTI4 7
|
|
ASGNI4
|
|
line 1096
|
|
;1096: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $362
|
|
line 1098
|
|
;1097: else
|
|
;1098: {
|
|
line 1099
|
|
;1099: switch ( Q_irand( 0, 2 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRLP4 68
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
ADDRLP4 68
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $367
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $368
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $369
|
|
ADDRGP4 $364
|
|
JUMPV
|
|
line 1100
|
|
;1100: {
|
|
LABELV $364
|
|
LABELV $367
|
|
line 1103
|
|
;1101: default:
|
|
;1102: case 0:
|
|
;1103: deathAnim = BOTH_DEATH9;//chest right: snap, fall forward
|
|
ADDRLP4 0
|
|
CNSTI4 8
|
|
ASGNI4
|
|
line 1104
|
|
;1104: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $368
|
|
line 1106
|
|
;1105: case 1:
|
|
;1106: deathAnim = BOTH_DEATH3;//chest right: back
|
|
ADDRLP4 0
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 1107
|
|
;1107: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $369
|
|
line 1109
|
|
;1108: case 2:
|
|
;1109: deathAnim = BOTH_DEATH6;//chest right: spin
|
|
ADDRLP4 0
|
|
CNSTI4 5
|
|
ASGNI4
|
|
line 1110
|
|
;1110: break;
|
|
line 1112
|
|
;1111: }
|
|
;1112: }
|
|
line 1113
|
|
;1113: }
|
|
line 1114
|
|
;1114: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $370
|
|
line 1119
|
|
;1115: case HL_CHEST_LT:
|
|
;1116: case HL_ARM_LT:
|
|
;1117: case HL_HAND_LT:
|
|
;1118: case HL_BACK_LT:
|
|
;1119: if ( damage <= max_health*0.25 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1048576000
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $371
|
|
line 1120
|
|
;1120: {
|
|
line 1121
|
|
;1121: deathAnim = BOTH_DEATH11;//chest left: snap, fall forward
|
|
ADDRLP4 0
|
|
CNSTI4 10
|
|
ASGNI4
|
|
line 1122
|
|
;1122: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $371
|
|
line 1123
|
|
;1123: else if ( damage <= max_health*0.5 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1056964608
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $373
|
|
line 1124
|
|
;1124: {
|
|
line 1125
|
|
;1125: deathAnim = BOTH_DEATH7;//chest left: back
|
|
ADDRLP4 0
|
|
CNSTI4 6
|
|
ASGNI4
|
|
line 1126
|
|
;1126: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $373
|
|
line 1127
|
|
;1127: else if ( damage <= max_health*0.75 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1061158912
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $375
|
|
line 1128
|
|
;1128: {
|
|
line 1129
|
|
;1129: deathAnim = BOTH_DEATH12;//chest left: spin
|
|
ADDRLP4 0
|
|
CNSTI4 11
|
|
ASGNI4
|
|
line 1130
|
|
;1130: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $375
|
|
line 1132
|
|
;1131: else
|
|
;1132: {
|
|
line 1134
|
|
;1133: //TEMP HACK: play spinny deaths less often
|
|
;1134: if ( Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 60
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $377
|
|
line 1135
|
|
;1135: {
|
|
line 1136
|
|
;1136: deathAnim = BOTH_DEATH14;//chest left: spin high
|
|
ADDRLP4 0
|
|
CNSTI4 13
|
|
ASGNI4
|
|
line 1137
|
|
;1137: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $377
|
|
line 1139
|
|
;1138: else
|
|
;1139: {
|
|
line 1140
|
|
;1140: switch ( Q_irand( 0, 2 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRLP4 68
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
ADDRLP4 68
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $382
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $383
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $384
|
|
ADDRGP4 $379
|
|
JUMPV
|
|
line 1141
|
|
;1141: {
|
|
LABELV $379
|
|
LABELV $382
|
|
line 1144
|
|
;1142: default:
|
|
;1143: case 0:
|
|
;1144: deathAnim = BOTH_DEATH11;//chest left: snap, fall forward
|
|
ADDRLP4 0
|
|
CNSTI4 10
|
|
ASGNI4
|
|
line 1145
|
|
;1145: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $383
|
|
line 1147
|
|
;1146: case 1:
|
|
;1147: deathAnim = BOTH_DEATH7;//chest left: back
|
|
ADDRLP4 0
|
|
CNSTI4 6
|
|
ASGNI4
|
|
line 1148
|
|
;1148: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $384
|
|
line 1150
|
|
;1149: case 2:
|
|
;1150: deathAnim = BOTH_DEATH12;//chest left: spin
|
|
ADDRLP4 0
|
|
CNSTI4 11
|
|
ASGNI4
|
|
line 1151
|
|
;1151: break;
|
|
line 1153
|
|
;1152: }
|
|
;1153: }
|
|
line 1154
|
|
;1154: }
|
|
line 1155
|
|
;1155: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $385
|
|
line 1158
|
|
;1156: case HL_CHEST:
|
|
;1157: case HL_WAIST:
|
|
;1158: if ( damage <= max_health*0.25 || !VectorLengthSquared( self->client->ps.velocity ) )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1048576000
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
LEF4 $388
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 60
|
|
ADDRGP4 VectorLengthSquared
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 60
|
|
INDIRF4
|
|
CNSTF4 0
|
|
NEF4 $386
|
|
LABELV $388
|
|
line 1159
|
|
;1159: {
|
|
line 1160
|
|
;1160: if ( !Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 64
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $389
|
|
line 1161
|
|
;1161: {
|
|
line 1162
|
|
;1162: deathAnim = BOTH_DEATH18;//gut: fall right
|
|
ADDRLP4 0
|
|
CNSTI4 19
|
|
ASGNI4
|
|
line 1163
|
|
;1163: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $389
|
|
line 1165
|
|
;1164: else
|
|
;1165: {
|
|
line 1166
|
|
;1166: deathAnim = BOTH_DEATH19;//gut: fall left
|
|
ADDRLP4 0
|
|
CNSTI4 20
|
|
ASGNI4
|
|
line 1167
|
|
;1167: }
|
|
line 1168
|
|
;1168: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $386
|
|
line 1169
|
|
;1169: else if ( damage <= max_health*0.5 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1056964608
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $391
|
|
line 1170
|
|
;1170: {
|
|
line 1171
|
|
;1171: deathAnim = BOTH_DEATH2;//chest: backward short
|
|
ADDRLP4 0
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1172
|
|
;1172: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $391
|
|
line 1173
|
|
;1173: else if ( damage <= max_health*0.75 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1061158912
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $393
|
|
line 1174
|
|
;1174: {
|
|
line 1175
|
|
;1175: if ( !Q_irand( 0, 1 ) )
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRLP4 64
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $395
|
|
line 1176
|
|
;1176: {
|
|
line 1177
|
|
;1177: deathAnim = BOTH_DEATH1;//chest: backward med
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1178
|
|
;1178: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $395
|
|
line 1180
|
|
;1179: else
|
|
;1180: {
|
|
line 1181
|
|
;1181: deathAnim = BOTH_DEATH16;//same as 1
|
|
ADDRLP4 0
|
|
CNSTI4 17
|
|
ASGNI4
|
|
line 1182
|
|
;1182: }
|
|
line 1183
|
|
;1183: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $393
|
|
line 1185
|
|
;1184: else
|
|
;1185: {
|
|
line 1186
|
|
;1186: deathAnim = BOTH_DEATH10;//chest: back flip
|
|
ADDRLP4 0
|
|
CNSTI4 9
|
|
ASGNI4
|
|
line 1187
|
|
;1187: }
|
|
line 1188
|
|
;1188: break;
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $397
|
|
line 1190
|
|
;1189: case HL_HEAD:
|
|
;1190: if ( damage <= max_health*0.5 )
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
CNSTF4 1056964608
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
GTF4 $398
|
|
line 1191
|
|
;1191: {
|
|
line 1192
|
|
;1192: deathAnim = BOTH_DEATH17;//head/back: croak
|
|
ADDRLP4 0
|
|
CNSTI4 18
|
|
ASGNI4
|
|
line 1193
|
|
;1193: }
|
|
ADDRGP4 $330
|
|
JUMPV
|
|
LABELV $398
|
|
line 1195
|
|
;1194: else
|
|
;1195: {
|
|
line 1196
|
|
;1196: deathAnim = BOTH_DEATH13;//head: stumble, fall back
|
|
ADDRLP4 0
|
|
CNSTI4 12
|
|
ASGNI4
|
|
line 1197
|
|
;1197: }
|
|
line 1198
|
|
;1198: break;
|
|
line 1200
|
|
;1199: default:
|
|
;1200: break;
|
|
LABELV $330
|
|
line 1202
|
|
;1201: }
|
|
;1202: }
|
|
LABELV $327
|
|
line 1203
|
|
;1203: return deathAnim;
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
RETI4
|
|
LABELV $313
|
|
endproc G_PickDeathAnim 76 8
|
|
export G_GetJediMaster
|
|
proc G_GetJediMaster 24 0
|
|
line 1209
|
|
;1204:}
|
|
;1205:
|
|
;1206:void G_CheckForDismemberment(gentity_t *ent, vec3_t point, int damage, int deathAnim);
|
|
;1207:
|
|
;1208:gentity_t *G_GetJediMaster(void)
|
|
;1209:{
|
|
line 1210
|
|
;1210: int i = 0;
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $404
|
|
JUMPV
|
|
LABELV $403
|
|
line 1214
|
|
;1211: gentity_t *ent;
|
|
;1212:
|
|
;1213: while (i < MAX_CLIENTS)
|
|
;1214: {
|
|
line 1215
|
|
;1215: ent = &g_entities[i];
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 1217
|
|
;1216:
|
|
;1217: if (ent && ent->inuse && ent->client && ent->client->ps.isJediMaster)
|
|
ADDRLP4 12
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 12
|
|
INDIRU4
|
|
EQU4 $406
|
|
ADDRLP4 16
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
EQI4 $406
|
|
ADDRLP4 20
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 12
|
|
INDIRU4
|
|
EQU4 $406
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
EQI4 $406
|
|
line 1218
|
|
;1218: {
|
|
line 1219
|
|
;1219: return ent;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
RETP4
|
|
ADDRGP4 $402
|
|
JUMPV
|
|
LABELV $406
|
|
line 1222
|
|
;1220: }
|
|
;1221:
|
|
;1222: i++;
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 1223
|
|
;1223: }
|
|
LABELV $404
|
|
line 1213
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 32
|
|
LTI4 $403
|
|
line 1225
|
|
;1224:
|
|
;1225: return NULL;
|
|
CNSTP4 0
|
|
RETP4
|
|
LABELV $402
|
|
endproc G_GetJediMaster 24 0
|
|
bss
|
|
align 4
|
|
LABELV $536
|
|
skip 4
|
|
export player_die
|
|
code
|
|
proc player_die 152 28
|
|
line 1233
|
|
;1226:}
|
|
;1227:
|
|
;1228:/*
|
|
;1229:==================
|
|
;1230:player_die
|
|
;1231:==================
|
|
;1232:*/
|
|
;1233:void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int meansOfDeath ) {
|
|
line 1240
|
|
;1234: gentity_t *ent;
|
|
;1235: int anim;
|
|
;1236: int contents;
|
|
;1237: int killer;
|
|
;1238: int i;
|
|
;1239: char *killerName, *obit;
|
|
;1240: qboolean wasJediMaster = qfalse;
|
|
ADDRLP4 16
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1242
|
|
;1241:
|
|
;1242: if ( self->client->ps.pm_type == PM_DEAD ) {
|
|
ADDRLP4 32
|
|
CNSTI4 4
|
|
ASGNI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
NEI4 $409
|
|
line 1243
|
|
;1243: return;
|
|
ADDRGP4 $408
|
|
JUMPV
|
|
LABELV $409
|
|
line 1246
|
|
;1244: }
|
|
;1245:
|
|
;1246: if ( level.intermissiontime ) {
|
|
ADDRGP4 level+9008
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $411
|
|
line 1247
|
|
;1247: return;
|
|
ADDRGP4 $408
|
|
JUMPV
|
|
LABELV $411
|
|
line 1250
|
|
;1248: }
|
|
;1249:
|
|
;1250: if (inflictor && inflictor->activator && !inflictor->client && !attacker->client &&
|
|
ADDRLP4 36
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 40
|
|
INDIRU4
|
|
EQU4 $414
|
|
ADDRLP4 44
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
CNSTI4 732
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 40
|
|
INDIRU4
|
|
EQU4 $414
|
|
ADDRLP4 48
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 40
|
|
INDIRU4
|
|
NEU4 $414
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 40
|
|
INDIRU4
|
|
NEU4 $414
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 40
|
|
INDIRU4
|
|
EQU4 $414
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $414
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
CNSTI4 276
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 15
|
|
NEI4 $414
|
|
line 1253
|
|
;1251: inflictor->activator->client && inflictor->activator->inuse &&
|
|
;1252: inflictor->s.weapon == WP_TURRET)
|
|
;1253: {
|
|
line 1254
|
|
;1254: attacker = inflictor->activator;
|
|
ADDRFP4 8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 732
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1255
|
|
;1255: }
|
|
LABELV $414
|
|
line 1257
|
|
;1256:
|
|
;1257: if (self->client && self->client->ps.isJediMaster)
|
|
ADDRLP4 52
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $416
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $416
|
|
line 1258
|
|
;1258: {
|
|
line 1259
|
|
;1259: wasJediMaster = qtrue;
|
|
ADDRLP4 16
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1260
|
|
;1260: }
|
|
LABELV $416
|
|
line 1263
|
|
;1261:
|
|
;1262: //if he was charging or anything else, kill the sound
|
|
;1263: G_MuteSound(self->s.number, CHAN_WEAPON);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRGP4 G_MuteSound
|
|
CALLV
|
|
pop
|
|
line 1265
|
|
;1264:
|
|
;1265: BlowDetpacks(self); //blow detpacks if they're planted
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 BlowDetpacks
|
|
CALLV
|
|
pop
|
|
line 1267
|
|
;1266:
|
|
;1267: self->client->ps.fd.forceDeactivateAll = 1;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1184
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1269
|
|
;1268:
|
|
;1269: if ((self == attacker || !attacker->client) &&
|
|
ADDRLP4 56
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $421
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $418
|
|
LABELV $421
|
|
ADDRLP4 60
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 32
|
|
EQI4 $424
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 34
|
|
EQI4 $424
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 37
|
|
EQI4 $424
|
|
ADDRLP4 60
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $418
|
|
LABELV $424
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 752
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
LEI4 $418
|
|
line 1272
|
|
;1270: (meansOfDeath == MOD_CRUSH || meansOfDeath == MOD_FALLING || meansOfDeath == MOD_TRIGGER_HURT || meansOfDeath == MOD_UNKNOWN) &&
|
|
;1271: self->client->ps.otherKillerTime > level.time)
|
|
;1272: {
|
|
line 1273
|
|
;1273: attacker = &g_entities[self->client->ps.otherKiller];
|
|
ADDRFP4 8
|
|
CNSTI4 828
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 748
|
|
ADDP4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 1274
|
|
;1274: }
|
|
LABELV $418
|
|
line 1277
|
|
;1275:
|
|
;1276: // check for an almost capture
|
|
;1277: CheckAlmostCapture( self, attacker );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 CheckAlmostCapture
|
|
CALLV
|
|
pop
|
|
line 1279
|
|
;1278:
|
|
;1279: self->client->ps.pm_type = PM_DEAD;
|
|
ADDRLP4 64
|
|
CNSTI4 4
|
|
ASGNI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
ADDP4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1281
|
|
;1280:
|
|
;1281: if ( attacker ) {
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $425
|
|
line 1282
|
|
;1282: killer = attacker->s.number;
|
|
ADDRLP4 4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1283
|
|
;1283: if ( attacker->client ) {
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $427
|
|
line 1284
|
|
;1284: killerName = attacker->client->pers.netname;
|
|
ADDRLP4 20
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1416
|
|
ADDP4
|
|
ASGNP4
|
|
line 1285
|
|
;1285: } else {
|
|
ADDRGP4 $426
|
|
JUMPV
|
|
LABELV $427
|
|
line 1286
|
|
;1286: killerName = "<non-client>";
|
|
ADDRLP4 20
|
|
ADDRGP4 $429
|
|
ASGNP4
|
|
line 1287
|
|
;1287: }
|
|
line 1288
|
|
;1288: } else {
|
|
ADDRGP4 $426
|
|
JUMPV
|
|
LABELV $425
|
|
line 1289
|
|
;1289: killer = ENTITYNUM_WORLD;
|
|
ADDRLP4 4
|
|
CNSTI4 1022
|
|
ASGNI4
|
|
line 1290
|
|
;1290: killerName = "<world>";
|
|
ADDRLP4 20
|
|
ADDRGP4 $430
|
|
ASGNP4
|
|
line 1291
|
|
;1291: }
|
|
LABELV $426
|
|
line 1293
|
|
;1292:
|
|
;1293: if ( killer < 0 || killer >= MAX_CLIENTS ) {
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
LTI4 $433
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 32
|
|
LTI4 $431
|
|
LABELV $433
|
|
line 1294
|
|
;1294: killer = ENTITYNUM_WORLD;
|
|
ADDRLP4 4
|
|
CNSTI4 1022
|
|
ASGNI4
|
|
line 1295
|
|
;1295: killerName = "<world>";
|
|
ADDRLP4 20
|
|
ADDRGP4 $430
|
|
ASGNP4
|
|
line 1296
|
|
;1296: }
|
|
LABELV $431
|
|
line 1298
|
|
;1297:
|
|
;1298: if ( meansOfDeath < 0 || meansOfDeath >= sizeof( modNames ) / sizeof( modNames[0] ) ) {
|
|
ADDRLP4 72
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 72
|
|
INDIRI4
|
|
CNSTI4 0
|
|
LTI4 $436
|
|
ADDRLP4 72
|
|
INDIRI4
|
|
CVIU4 4
|
|
CNSTU4 38
|
|
LTU4 $434
|
|
LABELV $436
|
|
line 1299
|
|
;1299: obit = "<bad obituary>";
|
|
ADDRLP4 28
|
|
ADDRGP4 $437
|
|
ASGNP4
|
|
line 1300
|
|
;1300: } else {
|
|
ADDRGP4 $435
|
|
JUMPV
|
|
LABELV $434
|
|
line 1301
|
|
;1301: obit = modNames[ meansOfDeath ];
|
|
ADDRLP4 28
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 modNames
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1302
|
|
;1302: }
|
|
LABELV $435
|
|
line 1304
|
|
;1303:
|
|
;1304: G_LogPrintf("Kill: %i %i %i: %s killed %s by %s\n",
|
|
ADDRGP4 $438
|
|
ARGP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 76
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1416
|
|
ADDP4
|
|
ARGP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 G_LogPrintf
|
|
CALLV
|
|
pop
|
|
line 1308
|
|
;1305: killer, self->s.number, meansOfDeath, killerName,
|
|
;1306: self->client->pers.netname, obit );
|
|
;1307:
|
|
;1308: G_LogWeaponKill(killer, meansOfDeath);
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_LogWeaponKill
|
|
CALLV
|
|
pop
|
|
line 1309
|
|
;1309: G_LogWeaponDeath(self->s.number, self->s.weapon);
|
|
ADDRLP4 80
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 80
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 80
|
|
INDIRP4
|
|
CNSTI4 276
|
|
ADDP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_LogWeaponDeath
|
|
CALLV
|
|
pop
|
|
line 1310
|
|
;1310: if (attacker && attacker->client && attacker->inuse)
|
|
ADDRLP4 84
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 88
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 84
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 88
|
|
INDIRU4
|
|
EQU4 $439
|
|
ADDRLP4 84
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 88
|
|
INDIRU4
|
|
EQU4 $439
|
|
ADDRLP4 84
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $439
|
|
line 1311
|
|
;1311: {
|
|
line 1312
|
|
;1312: G_LogWeaponFrag(killer, self->s.number);
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_LogWeaponFrag
|
|
CALLV
|
|
pop
|
|
line 1313
|
|
;1313: }
|
|
LABELV $439
|
|
line 1316
|
|
;1314:
|
|
;1315: // broadcast the death event to everyone
|
|
;1316: ent = G_TempEntity( self->r.currentOrigin, EV_OBITUARY );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 81
|
|
ARGI4
|
|
ADDRLP4 92
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
ADDRLP4 92
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1317
|
|
;1317: ent->s.eventParm = meansOfDeath;
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1318
|
|
;1318: ent->s.otherEntityNum = self->s.number;
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 184
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1319
|
|
;1319: ent->s.otherEntityNum2 = killer;
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 188
|
|
ADDP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1320
|
|
;1320: ent->r.svFlags = SVF_BROADCAST; // send to everyone
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
CNSTI4 32
|
|
ASGNI4
|
|
line 1321
|
|
;1321: ent->s.isJediMaster = wasJediMaster;
|
|
ADDRLP4 8
|
|
INDIRP4
|
|
CNSTI4 244
|
|
ADDP4
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1323
|
|
;1322:
|
|
;1323: self->enemy = attacker;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 728
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1325
|
|
;1324:
|
|
;1325: self->client->ps.persistant[PERS_KILLED]++;
|
|
ADDRLP4 96
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 312
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 96
|
|
INDIRP4
|
|
ADDRLP4 96
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 1327
|
|
;1326:
|
|
;1327: if (self == attacker)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
NEU4 $441
|
|
line 1328
|
|
;1328: {
|
|
line 1329
|
|
;1329: self->client->ps.fd.suicides++;
|
|
ADDRLP4 100
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1224
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 1330
|
|
;1330: }
|
|
LABELV $441
|
|
line 1332
|
|
;1331:
|
|
;1332: if (attacker && attacker->client) {
|
|
ADDRLP4 100
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 104
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 104
|
|
INDIRU4
|
|
EQU4 $443
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 104
|
|
INDIRU4
|
|
EQU4 $443
|
|
line 1333
|
|
;1333: attacker->client->lastkilled_client = self->s.number;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1660
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1335
|
|
;1334:
|
|
;1335: if ( attacker == self || OnSameTeam (self, attacker ) ) {
|
|
ADDRLP4 108
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 112
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $447
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 116
|
|
ADDRGP4 OnSameTeam
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 116
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $445
|
|
LABELV $447
|
|
line 1336
|
|
;1336: if (g_gametype.integer == GT_TOURNAMENT)
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $448
|
|
line 1337
|
|
;1337: { //in duel, if you kill yourself, the person you are dueling against gets a kill for it
|
|
line 1338
|
|
;1338: int otherClNum = -1;
|
|
ADDRLP4 120
|
|
CNSTI4 -1
|
|
ASGNI4
|
|
line 1339
|
|
;1339: if (level.sortedClients[0] == self->s.number)
|
|
ADDRGP4 level+84
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
NEI4 $451
|
|
line 1340
|
|
;1340: {
|
|
line 1341
|
|
;1341: otherClNum = level.sortedClients[1];
|
|
ADDRLP4 120
|
|
ADDRGP4 level+84+4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1342
|
|
;1342: }
|
|
ADDRGP4 $452
|
|
JUMPV
|
|
LABELV $451
|
|
line 1343
|
|
;1343: else if (level.sortedClients[1] == self->s.number)
|
|
ADDRGP4 level+84+4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
NEI4 $456
|
|
line 1344
|
|
;1344: {
|
|
line 1345
|
|
;1345: otherClNum = level.sortedClients[0];
|
|
ADDRLP4 120
|
|
ADDRGP4 level+84
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1346
|
|
;1346: }
|
|
LABELV $456
|
|
LABELV $452
|
|
line 1348
|
|
;1347:
|
|
;1348: if (otherClNum >= 0 && otherClNum < MAX_CLIENTS &&
|
|
ADDRLP4 124
|
|
ADDRLP4 120
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 128
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
LTI4 $461
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
CNSTI4 32
|
|
GEI4 $461
|
|
ADDRLP4 132
|
|
CNSTI4 828
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
MULI4
|
|
ASGNI4
|
|
ADDRLP4 132
|
|
INDIRI4
|
|
ADDRGP4 g_entities+412
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
EQI4 $461
|
|
ADDRLP4 132
|
|
INDIRI4
|
|
ADDRGP4 g_entities+408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $461
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
EQI4 $461
|
|
line 1351
|
|
;1349: g_entities[otherClNum].inuse && g_entities[otherClNum].client &&
|
|
;1350: otherClNum != attacker->s.number)
|
|
;1351: {
|
|
line 1352
|
|
;1352: AddScore( &g_entities[otherClNum], self->r.currentOrigin, 1 );
|
|
CNSTI4 828
|
|
ADDRLP4 120
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1353
|
|
;1353: }
|
|
ADDRGP4 $449
|
|
JUMPV
|
|
LABELV $461
|
|
line 1355
|
|
;1354: else
|
|
;1355: {
|
|
line 1356
|
|
;1356: AddScore( attacker, self->r.currentOrigin, -1 );
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 -1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1357
|
|
;1357: }
|
|
line 1358
|
|
;1358: }
|
|
ADDRGP4 $449
|
|
JUMPV
|
|
LABELV $448
|
|
line 1360
|
|
;1359: else
|
|
;1360: {
|
|
line 1361
|
|
;1361: AddScore( attacker, self->r.currentOrigin, -1 );
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 -1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1362
|
|
;1362: }
|
|
LABELV $449
|
|
line 1363
|
|
;1363: if (g_gametype.integer == GT_JEDIMASTER)
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $444
|
|
line 1364
|
|
;1364: {
|
|
line 1365
|
|
;1365: if (self->client && self->client->ps.isJediMaster)
|
|
ADDRLP4 120
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $444
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $444
|
|
line 1366
|
|
;1366: { //killed ourself so return the saber to the original position
|
|
line 1369
|
|
;1367: //(to avoid people jumping off ledges and making the saber
|
|
;1368: //unreachable for 60 seconds)
|
|
;1369: ThrowSaberToAttacker(self, NULL);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTP4 0
|
|
ARGP4
|
|
ADDRGP4 ThrowSaberToAttacker
|
|
CALLV
|
|
pop
|
|
line 1370
|
|
;1370: self->client->ps.isJediMaster = qfalse;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1371
|
|
;1371: }
|
|
line 1372
|
|
;1372: }
|
|
line 1373
|
|
;1373: } else {
|
|
ADDRGP4 $444
|
|
JUMPV
|
|
LABELV $445
|
|
line 1374
|
|
;1374: if (g_gametype.integer == GT_JEDIMASTER)
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $470
|
|
line 1375
|
|
;1375: {
|
|
line 1376
|
|
;1376: if ((attacker->client && attacker->client->ps.isJediMaster) ||
|
|
ADDRLP4 120
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $476
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $475
|
|
LABELV $476
|
|
ADDRLP4 124
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $473
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $473
|
|
LABELV $475
|
|
line 1378
|
|
;1377: (self->client && self->client->ps.isJediMaster))
|
|
;1378: {
|
|
line 1379
|
|
;1379: AddScore( attacker, self->r.currentOrigin, 1 );
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1381
|
|
;1380:
|
|
;1381: if (self->client && self->client->ps.isJediMaster)
|
|
ADDRLP4 128
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $471
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $471
|
|
line 1382
|
|
;1382: {
|
|
line 1383
|
|
;1383: ThrowSaberToAttacker(self, attacker);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 ThrowSaberToAttacker
|
|
CALLV
|
|
pop
|
|
line 1384
|
|
;1384: self->client->ps.isJediMaster = qfalse;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1385
|
|
;1385: }
|
|
line 1386
|
|
;1386: }
|
|
ADDRGP4 $471
|
|
JUMPV
|
|
LABELV $473
|
|
line 1388
|
|
;1387: else
|
|
;1388: {
|
|
line 1389
|
|
;1389: gentity_t *jmEnt = G_GetJediMaster();
|
|
ADDRLP4 132
|
|
ADDRGP4 G_GetJediMaster
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 128
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1391
|
|
;1390:
|
|
;1391: if (jmEnt && jmEnt->client)
|
|
ADDRLP4 136
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 140
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 140
|
|
INDIRU4
|
|
EQU4 $471
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 140
|
|
INDIRU4
|
|
EQU4 $471
|
|
line 1392
|
|
;1392: {
|
|
line 1393
|
|
;1393: AddScore( jmEnt, self->r.currentOrigin, 1 );
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1394
|
|
;1394: }
|
|
line 1395
|
|
;1395: }
|
|
line 1396
|
|
;1396: }
|
|
ADDRGP4 $471
|
|
JUMPV
|
|
LABELV $470
|
|
line 1398
|
|
;1397: else
|
|
;1398: {
|
|
line 1399
|
|
;1399: AddScore( attacker, self->r.currentOrigin, 1 );
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1400
|
|
;1400: }
|
|
LABELV $471
|
|
line 1402
|
|
;1401:
|
|
;1402: if( meansOfDeath == MOD_STUN_BATON ) {
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $481
|
|
line 1405
|
|
;1403:
|
|
;1404: // play humiliation on player
|
|
;1405: attacker->client->ps.persistant[PERS_GAUNTLET_FRAG_COUNT]++;
|
|
ADDRLP4 120
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 332
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 1408
|
|
;1406:
|
|
;1407: // add the sprite over the player's head
|
|
;1408: attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 124
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 1409
|
|
;1409: attacker->client->ps.eFlags |= EF_AWARD_GAUNTLET;
|
|
ADDRLP4 128
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 64
|
|
BORI4
|
|
ASGNI4
|
|
line 1410
|
|
;1410: attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 1413
|
|
;1411:
|
|
;1412: // also play humiliation on target
|
|
;1413: self->client->ps.persistant[PERS_PLAYEREVENTS] ^= PLAYEREVENT_GAUNTLETREWARD;
|
|
ADDRLP4 132
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 300
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
BXORI4
|
|
ASGNI4
|
|
line 1414
|
|
;1414: }
|
|
LABELV $481
|
|
line 1418
|
|
;1415:
|
|
;1416: // check for two kills in a short amount of time
|
|
;1417: // if this is close enough to the last kill, give a reward sound
|
|
;1418: if ( level.time - attacker->client->lastKillTime < CARNAGE_REWARD_TIME ) {
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1692
|
|
ADDP4
|
|
INDIRI4
|
|
SUBI4
|
|
CNSTI4 3000
|
|
GEI4 $484
|
|
line 1420
|
|
;1419: // play excellent on player
|
|
;1420: attacker->client->ps.persistant[PERS_EXCELLENT_COUNT]++;
|
|
ADDRLP4 120
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 320
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 1423
|
|
;1421:
|
|
;1422: // add the sprite over the player's head
|
|
;1423: attacker->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP );
|
|
ADDRLP4 124
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -231497
|
|
BANDI4
|
|
ASGNI4
|
|
line 1424
|
|
;1424: attacker->client->ps.eFlags |= EF_AWARD_EXCELLENT;
|
|
ADDRLP4 128
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 8
|
|
BORI4
|
|
ASGNI4
|
|
line 1425
|
|
;1425: attacker->client->rewardTime = level.time + REWARD_SPRITE_TIME;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1684
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 2000
|
|
ADDI4
|
|
ASGNI4
|
|
line 1426
|
|
;1426: }
|
|
LABELV $484
|
|
line 1427
|
|
;1427: attacker->client->lastKillTime = level.time;
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1692
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1429
|
|
;1428:
|
|
;1429: }
|
|
line 1430
|
|
;1430: } else {
|
|
ADDRGP4 $444
|
|
JUMPV
|
|
LABELV $443
|
|
line 1431
|
|
;1431: if (self->client && self->client->ps.isJediMaster)
|
|
ADDRLP4 108
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $489
|
|
ADDRLP4 108
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $489
|
|
line 1432
|
|
;1432: { //killed ourself so return the saber to the original position
|
|
line 1435
|
|
;1433: //(to avoid people jumping off ledges and making the saber
|
|
;1434: //unreachable for 60 seconds)
|
|
;1435: ThrowSaberToAttacker(self, NULL);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTP4 0
|
|
ARGP4
|
|
ADDRGP4 ThrowSaberToAttacker
|
|
CALLV
|
|
pop
|
|
line 1436
|
|
;1436: self->client->ps.isJediMaster = qfalse;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1437
|
|
;1437: }
|
|
LABELV $489
|
|
line 1439
|
|
;1438:
|
|
;1439: if (g_gametype.integer == GT_TOURNAMENT)
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $491
|
|
line 1440
|
|
;1440: { //in duel, if you kill yourself, the person you are dueling against gets a kill for it
|
|
line 1441
|
|
;1441: int otherClNum = -1;
|
|
ADDRLP4 112
|
|
CNSTI4 -1
|
|
ASGNI4
|
|
line 1442
|
|
;1442: if (level.sortedClients[0] == self->s.number)
|
|
ADDRGP4 level+84
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
NEI4 $494
|
|
line 1443
|
|
;1443: {
|
|
line 1444
|
|
;1444: otherClNum = level.sortedClients[1];
|
|
ADDRLP4 112
|
|
ADDRGP4 level+84+4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1445
|
|
;1445: }
|
|
ADDRGP4 $495
|
|
JUMPV
|
|
LABELV $494
|
|
line 1446
|
|
;1446: else if (level.sortedClients[1] == self->s.number)
|
|
ADDRGP4 level+84+4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
NEI4 $499
|
|
line 1447
|
|
;1447: {
|
|
line 1448
|
|
;1448: otherClNum = level.sortedClients[0];
|
|
ADDRLP4 112
|
|
ADDRGP4 level+84
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1449
|
|
;1449: }
|
|
LABELV $499
|
|
LABELV $495
|
|
line 1451
|
|
;1450:
|
|
;1451: if (otherClNum >= 0 && otherClNum < MAX_CLIENTS &&
|
|
ADDRLP4 116
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 120
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 116
|
|
INDIRI4
|
|
ADDRLP4 120
|
|
INDIRI4
|
|
LTI4 $504
|
|
ADDRLP4 116
|
|
INDIRI4
|
|
CNSTI4 32
|
|
GEI4 $504
|
|
ADDRLP4 124
|
|
CNSTI4 828
|
|
ADDRLP4 116
|
|
INDIRI4
|
|
MULI4
|
|
ASGNI4
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
ADDRGP4 g_entities+412
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 120
|
|
INDIRI4
|
|
EQI4 $504
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
ADDRGP4 g_entities+408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $504
|
|
ADDRLP4 116
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
EQI4 $504
|
|
line 1454
|
|
;1452: g_entities[otherClNum].inuse && g_entities[otherClNum].client &&
|
|
;1453: otherClNum != self->s.number)
|
|
;1454: {
|
|
line 1455
|
|
;1455: AddScore( &g_entities[otherClNum], self->r.currentOrigin, 1 );
|
|
CNSTI4 828
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1456
|
|
;1456: }
|
|
ADDRGP4 $492
|
|
JUMPV
|
|
LABELV $504
|
|
line 1458
|
|
;1457: else
|
|
;1458: {
|
|
line 1459
|
|
;1459: AddScore( self, self->r.currentOrigin, -1 );
|
|
ADDRLP4 128
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 -1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1460
|
|
;1460: }
|
|
line 1461
|
|
;1461: }
|
|
ADDRGP4 $492
|
|
JUMPV
|
|
LABELV $491
|
|
line 1463
|
|
;1462: else
|
|
;1463: {
|
|
line 1464
|
|
;1464: AddScore( self, self->r.currentOrigin, -1 );
|
|
ADDRLP4 112
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 -1
|
|
ARGI4
|
|
ADDRGP4 AddScore
|
|
CALLV
|
|
pop
|
|
line 1465
|
|
;1465: }
|
|
LABELV $492
|
|
line 1466
|
|
;1466: }
|
|
LABELV $444
|
|
line 1469
|
|
;1467:
|
|
;1468: // Add team bonuses
|
|
;1469: Team_FragBonuses(self, inflictor, attacker);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 Team_FragBonuses
|
|
CALLV
|
|
pop
|
|
line 1472
|
|
;1470:
|
|
;1471: // if I committed suicide, the flag does not fall, it returns.
|
|
;1472: if (meansOfDeath == MOD_SUICIDE) {
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
CNSTI4 35
|
|
NEI4 $508
|
|
line 1473
|
|
;1473: if ( self->client->ps.powerups[PW_NEUTRALFLAG] ) { // only happens in One Flag CTF
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $510
|
|
line 1474
|
|
;1474: Team_ReturnFlag( TEAM_FREE );
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 1475
|
|
;1475: self->client->ps.powerups[PW_NEUTRALFLAG] = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1476
|
|
;1476: }
|
|
ADDRGP4 $511
|
|
JUMPV
|
|
LABELV $510
|
|
line 1477
|
|
;1477: else if ( self->client->ps.powerups[PW_REDFLAG] ) { // only happens in standard CTF
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 360
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $512
|
|
line 1478
|
|
;1478: Team_ReturnFlag( TEAM_RED );
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 1479
|
|
;1479: self->client->ps.powerups[PW_REDFLAG] = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 360
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1480
|
|
;1480: }
|
|
ADDRGP4 $513
|
|
JUMPV
|
|
LABELV $512
|
|
line 1481
|
|
;1481: else if ( self->client->ps.powerups[PW_BLUEFLAG] ) { // only happens in standard CTF
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 364
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $514
|
|
line 1482
|
|
;1482: Team_ReturnFlag( TEAM_BLUE );
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 1483
|
|
;1483: self->client->ps.powerups[PW_BLUEFLAG] = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 364
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1484
|
|
;1484: }
|
|
LABELV $514
|
|
LABELV $513
|
|
LABELV $511
|
|
line 1485
|
|
;1485: }
|
|
LABELV $508
|
|
line 1488
|
|
;1486:
|
|
;1487: // if client is in a nodrop area, don't drop anything (but return CTF flags!)
|
|
;1488: contents = trap_PointContents( self->r.currentOrigin, -1 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 -1
|
|
ARGI4
|
|
ADDRLP4 108
|
|
ADDRGP4 trap_PointContents
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 24
|
|
ADDRLP4 108
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1489
|
|
;1489: if ( !( contents & CONTENTS_NODROP ) && !self->client->ps.fallingToDeath) {
|
|
ADDRLP4 112
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
CNSTI4 2048
|
|
BANDI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
NEI4 $516
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1340
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
NEI4 $516
|
|
line 1490
|
|
;1490: TossClientItems( self );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 TossClientItems
|
|
CALLV
|
|
pop
|
|
line 1491
|
|
;1491: }
|
|
ADDRGP4 $517
|
|
JUMPV
|
|
LABELV $516
|
|
line 1492
|
|
;1492: else {
|
|
line 1493
|
|
;1493: if ( self->client->ps.powerups[PW_NEUTRALFLAG] ) { // only happens in One Flag CTF
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $518
|
|
line 1494
|
|
;1494: Team_ReturnFlag( TEAM_FREE );
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 1495
|
|
;1495: }
|
|
ADDRGP4 $519
|
|
JUMPV
|
|
LABELV $518
|
|
line 1496
|
|
;1496: else if ( self->client->ps.powerups[PW_REDFLAG] ) { // only happens in standard CTF
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 360
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $520
|
|
line 1497
|
|
;1497: Team_ReturnFlag( TEAM_RED );
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 1498
|
|
;1498: }
|
|
ADDRGP4 $521
|
|
JUMPV
|
|
LABELV $520
|
|
line 1499
|
|
;1499: else if ( self->client->ps.powerups[PW_BLUEFLAG] ) { // only happens in standard CTF
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 364
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $522
|
|
line 1500
|
|
;1500: Team_ReturnFlag( TEAM_BLUE );
|
|
CNSTI4 2
|
|
ARGI4
|
|
ADDRGP4 Team_ReturnFlag
|
|
CALLV
|
|
pop
|
|
line 1501
|
|
;1501: }
|
|
LABELV $522
|
|
LABELV $521
|
|
LABELV $519
|
|
line 1502
|
|
;1502: }
|
|
LABELV $517
|
|
line 1504
|
|
;1503:
|
|
;1504: Cmd_Score_f( self ); // show scores
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 Cmd_Score_f
|
|
CALLV
|
|
pop
|
|
line 1507
|
|
;1505: // send updated scores to any clients that are following this one,
|
|
;1506: // or they would get stale scoreboards
|
|
;1507: for ( i = 0 ; i < level.maxclients ; i++ ) {
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $527
|
|
JUMPV
|
|
LABELV $524
|
|
line 1510
|
|
;1508: gclient_t *client;
|
|
;1509:
|
|
;1510: client = &level.clients[i];
|
|
ADDRLP4 116
|
|
CNSTI4 1756
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 level
|
|
INDIRP4
|
|
ADDP4
|
|
ASGNP4
|
|
line 1511
|
|
;1511: if ( client->pers.connected != CON_CONNECTED ) {
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 1368
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $529
|
|
line 1512
|
|
;1512: continue;
|
|
ADDRGP4 $525
|
|
JUMPV
|
|
LABELV $529
|
|
line 1514
|
|
;1513: }
|
|
;1514: if ( client->sess.sessionTeam != TEAM_SPECTATOR ) {
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 3
|
|
EQI4 $531
|
|
line 1515
|
|
;1515: continue;
|
|
ADDRGP4 $525
|
|
JUMPV
|
|
LABELV $531
|
|
line 1517
|
|
;1516: }
|
|
;1517: if ( client->sess.spectatorClient == self->s.number ) {
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 1532
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
NEI4 $533
|
|
line 1518
|
|
;1518: Cmd_Score_f( g_entities + i );
|
|
CNSTI4 828
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ARGP4
|
|
ADDRGP4 Cmd_Score_f
|
|
CALLV
|
|
pop
|
|
line 1519
|
|
;1519: }
|
|
LABELV $533
|
|
line 1520
|
|
;1520: }
|
|
LABELV $525
|
|
line 1507
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $527
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDRGP4 level+24
|
|
INDIRI4
|
|
LTI4 $524
|
|
line 1522
|
|
;1521:
|
|
;1522: self->takedamage = qtrue; // can still be gibbed
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 680
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1524
|
|
;1523:
|
|
;1524: self->s.weapon = WP_NONE;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 276
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1525
|
|
;1525: self->s.powerups = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 272
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1526
|
|
;1526: self->r.contents = CONTENTS_CORPSE;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 340
|
|
ADDP4
|
|
CNSTI4 512
|
|
ASGNI4
|
|
line 1527
|
|
;1527: self->client->ps.zoomMode = 0; // Turn off zooming when we die
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1320
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1529
|
|
;1528:
|
|
;1529: self->s.angles[0] = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 116
|
|
ADDP4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 1530
|
|
;1530: self->s.angles[2] = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 124
|
|
ADDP4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 1531
|
|
;1531: LookAtKiller (self, inflictor, attacker);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 LookAtKiller
|
|
CALLV
|
|
pop
|
|
line 1533
|
|
;1532:
|
|
;1533: VectorCopy( self->s.angles, self->client->ps.viewangles );
|
|
ADDRLP4 116
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 156
|
|
ADDP4
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 116
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1535
|
|
;1534:
|
|
;1535: self->s.loopSound = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 200
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1537
|
|
;1536:
|
|
;1537: self->r.maxs[2] = -8;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 336
|
|
ADDP4
|
|
CNSTF4 3238002688
|
|
ASGNF4
|
|
line 1541
|
|
;1538:
|
|
;1539: // don't allow respawn until the death anim is done
|
|
;1540: // g_forcerespawn may force spawning at some later time
|
|
;1541: self->client->respawnTime = level.time + 1700;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1672
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 1700
|
|
ADDI4
|
|
ASGNI4
|
|
line 1544
|
|
;1542:
|
|
;1543: // remove powerups
|
|
;1544: memset( self->client->ps.powerups, 0, sizeof(self->client->ps.powerups) );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 64
|
|
ARGI4
|
|
ADDRGP4 memset
|
|
CALLP4
|
|
pop
|
|
line 1556
|
|
;1545:
|
|
;1546: // NOTENOTE No gib deaths right now, this is star wars.
|
|
;1547: /*
|
|
;1548: // never gib in a nodrop
|
|
;1549: if ( (self->health <= GIB_HEALTH && !(contents & CONTENTS_NODROP) && g_blood.integer) || meansOfDeath == MOD_SUICIDE)
|
|
;1550: {
|
|
;1551: // gib death
|
|
;1552: GibEntity( self, killer );
|
|
;1553: }
|
|
;1554: else
|
|
;1555: */
|
|
;1556: {
|
|
line 1561
|
|
;1557: // normal death
|
|
;1558:
|
|
;1559: static int i;
|
|
;1560:
|
|
;1561: switch ( i ) {
|
|
ADDRLP4 120
|
|
ADDRGP4 $536
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 120
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $539
|
|
ADDRLP4 120
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $540
|
|
ADDRLP4 120
|
|
INDIRI4
|
|
CNSTI4 2
|
|
EQI4 $541
|
|
ADDRGP4 $537
|
|
JUMPV
|
|
LABELV $539
|
|
line 1563
|
|
;1562: case 0:
|
|
;1563: anim = BOTH_DEATH1;
|
|
ADDRLP4 12
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1564
|
|
;1564: break;
|
|
ADDRGP4 $538
|
|
JUMPV
|
|
LABELV $540
|
|
line 1566
|
|
;1565: case 1:
|
|
;1566: anim = BOTH_DEATH2;
|
|
ADDRLP4 12
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1567
|
|
;1567: break;
|
|
ADDRGP4 $538
|
|
JUMPV
|
|
LABELV $541
|
|
LABELV $537
|
|
line 1570
|
|
;1568: case 2:
|
|
;1569: default:
|
|
;1570: anim = BOTH_DEATH3;
|
|
ADDRLP4 12
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 1571
|
|
;1571: break;
|
|
LABELV $538
|
|
line 1574
|
|
;1572: }
|
|
;1573:
|
|
;1574: anim = G_PickDeathAnim(self, self->pos1, damage, meansOfDeath, HL_NONE);
|
|
ADDRLP4 124
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 124
|
|
INDIRP4
|
|
CNSTI4 548
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 12
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRLP4 128
|
|
ADDRGP4 G_PickDeathAnim
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 12
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1576
|
|
;1575:
|
|
;1576: if (anim < 1)
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 1
|
|
GEI4 $542
|
|
line 1577
|
|
;1577: {
|
|
line 1578
|
|
;1578: anim = BOTH_DEATH1;
|
|
ADDRLP4 12
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1579
|
|
;1579: }
|
|
LABELV $542
|
|
line 1581
|
|
;1580:
|
|
;1581: if (meansOfDeath == MOD_SABER)
|
|
ADDRFP4 16
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $544
|
|
line 1582
|
|
;1582: {
|
|
line 1583
|
|
;1583: G_CheckForDismemberment(self, self->pos1, damage, anim);
|
|
ADDRLP4 132
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
CNSTI4 548
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 12
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_CheckForDismemberment
|
|
CALLV
|
|
pop
|
|
line 1584
|
|
;1584: }
|
|
LABELV $544
|
|
line 1588
|
|
;1585:
|
|
;1586: // for the no-blood option, we need to prevent the health
|
|
;1587: // from going to gib level
|
|
;1588: if ( self->health <= GIB_HEALTH ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 -40
|
|
GTI4 $546
|
|
line 1589
|
|
;1589: self->health = GIB_HEALTH+1;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
CNSTI4 -39
|
|
ASGNI4
|
|
line 1590
|
|
;1590: }
|
|
LABELV $546
|
|
line 1592
|
|
;1591:
|
|
;1592: self->client->respawnTime = level.time + 1000;//((self->client->animations[anim].numFrames*40)/(50.0f / self->client->animations[anim].frameLerp))+300;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1672
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 1000
|
|
ADDI4
|
|
ASGNI4
|
|
line 1594
|
|
;1593:
|
|
;1594: self->client->ps.legsAnim =
|
|
ADDRLP4 132
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 92
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 136
|
|
CNSTI4 2048
|
|
ASGNI4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRLP4 136
|
|
INDIRI4
|
|
BANDI4
|
|
ADDRLP4 136
|
|
INDIRI4
|
|
BXORI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
BORI4
|
|
ASGNI4
|
|
line 1596
|
|
;1595: ( ( self->client->ps.legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim;
|
|
;1596: self->client->ps.torsoAnim =
|
|
ADDRLP4 140
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 100
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 144
|
|
CNSTI4 2048
|
|
ASGNI4
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRLP4 144
|
|
INDIRI4
|
|
BANDI4
|
|
ADDRLP4 144
|
|
INDIRI4
|
|
BXORI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
BORI4
|
|
ASGNI4
|
|
line 1604
|
|
;1597: ( ( self->client->ps.torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim;
|
|
;1598:// self->client->ps.pm_flags |= PMF_UPDATE_ANIM; // Make sure the pmove sets up the GHOUL2 anims.
|
|
;1599:
|
|
;1600: //rww - do this on respawn, not death
|
|
;1601: //CopyToBodyQue (self);
|
|
;1602:
|
|
;1603: //G_AddEvent( self, EV_DEATH1 + i, killer );
|
|
;1604: if (wasJediMaster)
|
|
ADDRLP4 16
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $549
|
|
line 1605
|
|
;1605: {
|
|
line 1606
|
|
;1606: G_AddEvent( self, EV_DEATH1 + i, 1 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 $536
|
|
INDIRI4
|
|
CNSTI4 78
|
|
ADDI4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 G_AddEvent
|
|
CALLV
|
|
pop
|
|
line 1607
|
|
;1607: }
|
|
ADDRGP4 $550
|
|
JUMPV
|
|
LABELV $549
|
|
line 1609
|
|
;1608: else
|
|
;1609: {
|
|
line 1610
|
|
;1610: G_AddEvent( self, EV_DEATH1 + i, 0 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 $536
|
|
INDIRI4
|
|
CNSTI4 78
|
|
ADDI4
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 G_AddEvent
|
|
CALLV
|
|
pop
|
|
line 1611
|
|
;1611: }
|
|
LABELV $550
|
|
line 1614
|
|
;1612:
|
|
;1613: // the body can still be gibbed
|
|
;1614: self->die = body_die;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 660
|
|
ADDP4
|
|
ADDRGP4 body_die
|
|
ASGNP4
|
|
line 1617
|
|
;1615:
|
|
;1616: //It won't gib, it will disintegrate (because this is Star Wars).
|
|
;1617: self->takedamage = qtrue;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 680
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1620
|
|
;1618:
|
|
;1619: // globally cycle through the different death animations
|
|
;1620: i = ( i + 1 ) % 3;
|
|
ADDRLP4 148
|
|
ADDRGP4 $536
|
|
ASGNP4
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
CNSTI4 3
|
|
MODI4
|
|
ASGNI4
|
|
line 1621
|
|
;1621: }
|
|
line 1623
|
|
;1622:
|
|
;1623: trap_LinkEntity (self);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 trap_LinkEntity
|
|
CALLV
|
|
pop
|
|
line 1625
|
|
;1624:
|
|
;1625:}
|
|
LABELV $408
|
|
endproc player_die 152 28
|
|
export CheckArmor
|
|
proc CheckArmor 16 4
|
|
line 1634
|
|
;1626:
|
|
;1627:
|
|
;1628:/*
|
|
;1629:================
|
|
;1630:CheckArmor
|
|
;1631:================
|
|
;1632:*/
|
|
;1633:int CheckArmor (gentity_t *ent, int damage, int dflags)
|
|
;1634:{
|
|
line 1639
|
|
;1635: gclient_t *client;
|
|
;1636: int save;
|
|
;1637: int count;
|
|
;1638:
|
|
;1639: if (!damage)
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $552
|
|
line 1640
|
|
;1640: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $551
|
|
JUMPV
|
|
LABELV $552
|
|
line 1642
|
|
;1641:
|
|
;1642: client = ent->client;
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1644
|
|
;1643:
|
|
;1644: if (!client)
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $554
|
|
line 1645
|
|
;1645: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $551
|
|
JUMPV
|
|
LABELV $554
|
|
line 1647
|
|
;1646:
|
|
;1647: if (dflags & DAMAGE_NO_ARMOR)
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 2
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $556
|
|
line 1648
|
|
;1648: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $551
|
|
JUMPV
|
|
LABELV $556
|
|
line 1651
|
|
;1649:
|
|
;1650: // armor
|
|
;1651: count = client->ps.stats[STAT_ARMOR];
|
|
ADDRLP4 8
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 236
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1653
|
|
;1652:
|
|
;1653: if (dflags & DAMAGE_HALF_ABSORB)
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 1024
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $558
|
|
line 1654
|
|
;1654: { // Half the damage gets absorbed by the shields, rather than 100%
|
|
line 1655
|
|
;1655: save = ceil( damage * ARMOR_PROTECTION );
|
|
CNSTF4 1056964608
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
ARGF4
|
|
ADDRLP4 12
|
|
ADDRGP4 ceil
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 1656
|
|
;1656: }
|
|
ADDRGP4 $559
|
|
JUMPV
|
|
LABELV $558
|
|
line 1658
|
|
;1657: else
|
|
;1658: { // All the damage gets absorbed by the shields.
|
|
line 1659
|
|
;1659: save = damage;
|
|
ADDRLP4 0
|
|
ADDRFP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1660
|
|
;1660: }
|
|
LABELV $559
|
|
line 1663
|
|
;1661:
|
|
;1662: // save is the most damage that the armor is elibigle to protect, of course, but it's limited by the total armor.
|
|
;1663: if (save >= count)
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
LTI4 $560
|
|
line 1664
|
|
;1664: save = count;
|
|
ADDRLP4 0
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
LABELV $560
|
|
line 1666
|
|
;1665:
|
|
;1666: if (!save)
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $562
|
|
line 1667
|
|
;1667: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
ADDRGP4 $551
|
|
JUMPV
|
|
LABELV $562
|
|
line 1669
|
|
;1668:
|
|
;1669: if (dflags & DAMAGE_HALF_ARMOR_REDUCTION) // Armor isn't whittled so easily by sniper shots.
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 2048
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $564
|
|
line 1670
|
|
;1670: {
|
|
line 1671
|
|
;1671: client->ps.stats[STAT_ARMOR] -= (int)(save*ARMOR_REDUCTION_FACTOR);
|
|
ADDRLP4 12
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 236
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTF4 1056964608
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
CVFI4 4
|
|
SUBI4
|
|
ASGNI4
|
|
line 1672
|
|
;1672: }
|
|
ADDRGP4 $565
|
|
JUMPV
|
|
LABELV $564
|
|
line 1674
|
|
;1673: else
|
|
;1674: {
|
|
line 1675
|
|
;1675: client->ps.stats[STAT_ARMOR] -= save;
|
|
ADDRLP4 12
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 236
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
ADDRLP4 12
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 1676
|
|
;1676: }
|
|
LABELV $565
|
|
line 1678
|
|
;1677:
|
|
;1678: return save;
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
RETI4
|
|
LABELV $551
|
|
endproc CheckArmor 16 4
|
|
export G_ApplyKnockback
|
|
proc G_ApplyKnockback 48 0
|
|
line 1683
|
|
;1679:}
|
|
;1680:
|
|
;1681:
|
|
;1682:void G_ApplyKnockback( gentity_t *targ, vec3_t newDir, float knockback )
|
|
;1683:{
|
|
line 1687
|
|
;1684: vec3_t kvel;
|
|
;1685: float mass;
|
|
;1686:
|
|
;1687: if (targ && targ->client && targ->client->ps.usingATST)
|
|
ADDRLP4 16
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 20
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 20
|
|
INDIRU4
|
|
EQU4 $567
|
|
ADDRLP4 24
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 20
|
|
INDIRU4
|
|
EQU4 $567
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
CNSTI4 1304
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $567
|
|
line 1688
|
|
;1688: {
|
|
line 1689
|
|
;1689: return;
|
|
ADDRGP4 $566
|
|
JUMPV
|
|
LABELV $567
|
|
line 1692
|
|
;1690: }
|
|
;1691:
|
|
;1692: if ( targ->physicsBounce > 0 ) //overide the mass
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 504
|
|
ADDP4
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $569
|
|
line 1693
|
|
;1693: mass = targ->physicsBounce;
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 504
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRGP4 $570
|
|
JUMPV
|
|
LABELV $569
|
|
line 1695
|
|
;1694: else
|
|
;1695: mass = 200;
|
|
ADDRLP4 12
|
|
CNSTF4 1128792064
|
|
ASGNF4
|
|
LABELV $570
|
|
line 1697
|
|
;1696:
|
|
;1697: if ( g_gravity.value > 0 )
|
|
ADDRGP4 g_gravity+8
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $571
|
|
line 1698
|
|
;1698: {
|
|
line 1699
|
|
;1699: VectorScale( newDir, g_knockback.value * (float)knockback / mass * 0.8, kvel );
|
|
ADDRLP4 28
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
CNSTF4 1061997773
|
|
ASGNF4
|
|
ADDRLP4 36
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 32
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRLP4 36
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 0+4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 32
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRLP4 36
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 0+8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
CNSTF4 1061997773
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
MULF4
|
|
ASGNF4
|
|
line 1700
|
|
;1700: kvel[2] = newDir[2] * g_knockback.value * (float)knockback / mass * 1.5;
|
|
ADDRLP4 0+8
|
|
CNSTF4 1069547520
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
MULF4
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
ASGNF4
|
|
line 1701
|
|
;1701: }
|
|
ADDRGP4 $572
|
|
JUMPV
|
|
LABELV $571
|
|
line 1703
|
|
;1702: else
|
|
;1703: {
|
|
line 1704
|
|
;1704: VectorScale( newDir, g_knockback.value * (float)knockback / mass, kvel );
|
|
ADDRLP4 28
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRLP4 32
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 0+4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRLP4 32
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 0+8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
ASGNF4
|
|
line 1705
|
|
;1705: }
|
|
LABELV $572
|
|
line 1707
|
|
;1706:
|
|
;1707: if ( targ->client )
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $586
|
|
line 1708
|
|
;1708: {
|
|
line 1709
|
|
;1709: VectorAdd( targ->client->ps.velocity, kvel, targ->client->ps.velocity );
|
|
ADDRLP4 28
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
ADDRLP4 28
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 32
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 36
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0+8
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1710
|
|
;1710: }
|
|
ADDRGP4 $587
|
|
JUMPV
|
|
LABELV $586
|
|
line 1711
|
|
;1711: else if ( targ->s.pos.trType != TR_STATIONARY && targ->s.pos.trType != TR_LINEAR_STOP )
|
|
ADDRLP4 28
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 12
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 28
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $590
|
|
ADDRLP4 28
|
|
INDIRI4
|
|
CNSTI4 3
|
|
EQI4 $590
|
|
line 1712
|
|
;1712: {
|
|
line 1713
|
|
;1713: VectorAdd( targ->s.pos.trDelta, kvel, targ->s.pos.trDelta );
|
|
ADDRLP4 32
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 36
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 40
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 44
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0+8
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1714
|
|
;1714: VectorCopy( targ->r.currentOrigin, targ->s.pos.trBase );
|
|
ADDRLP4 44
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
CNSTI4 24
|
|
ADDP4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1715
|
|
;1715: targ->s.pos.trTime = level.time;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 16
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1716
|
|
;1716: }
|
|
LABELV $590
|
|
LABELV $587
|
|
line 1720
|
|
;1717:
|
|
;1718: // set the timer so that the other client can't cancel
|
|
;1719: // out the movement immediately
|
|
;1720: if ( targ->client && !targ->client->ps.pm_time )
|
|
ADDRLP4 32
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $595
|
|
ADDRLP4 32
|
|
INDIRP4
|
|
CNSTI4 16
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $595
|
|
line 1721
|
|
;1721: {
|
|
line 1724
|
|
;1722: int t;
|
|
;1723:
|
|
;1724: t = knockback * 2;
|
|
ADDRLP4 36
|
|
CNSTF4 1073741824
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
MULF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 1725
|
|
;1725: if ( t < 50 ) {
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
CNSTI4 50
|
|
GEI4 $597
|
|
line 1726
|
|
;1726: t = 50;
|
|
ADDRLP4 36
|
|
CNSTI4 50
|
|
ASGNI4
|
|
line 1727
|
|
;1727: }
|
|
LABELV $597
|
|
line 1728
|
|
;1728: if ( t > 200 ) {
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
CNSTI4 200
|
|
LEI4 $599
|
|
line 1729
|
|
;1729: t = 200;
|
|
ADDRLP4 36
|
|
CNSTI4 200
|
|
ASGNI4
|
|
line 1730
|
|
;1730: }
|
|
LABELV $599
|
|
line 1731
|
|
;1731: targ->client->ps.pm_time = t;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 16
|
|
ADDP4
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1732
|
|
;1732: targ->client->ps.pm_flags |= PMF_TIME_KNOCKBACK;
|
|
ADDRLP4 40
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 12
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 64
|
|
BORI4
|
|
ASGNI4
|
|
line 1733
|
|
;1733: }
|
|
LABELV $595
|
|
line 1734
|
|
;1734:}
|
|
LABELV $566
|
|
endproc G_ApplyKnockback 48 0
|
|
export RaySphereIntersections
|
|
proc RaySphereIntersections 96 4
|
|
line 1741
|
|
;1735:
|
|
;1736:/*
|
|
;1737:================
|
|
;1738:RaySphereIntersections
|
|
;1739:================
|
|
;1740:*/
|
|
;1741:int RaySphereIntersections( vec3_t origin, float radius, vec3_t point, vec3_t dir, vec3_t intersections[2] ) {
|
|
line 1750
|
|
;1742: float b, c, d, t;
|
|
;1743:
|
|
;1744: // | origin - (point + t * dir) | = radius
|
|
;1745: // a = dir[0]^2 + dir[1]^2 + dir[2]^2;
|
|
;1746: // b = 2 * (dir[0] * (point[0] - origin[0]) + dir[1] * (point[1] - origin[1]) + dir[2] * (point[2] - origin[2]));
|
|
;1747: // c = (point[0] - origin[0])^2 + (point[1] - origin[1])^2 + (point[2] - origin[2])^2 - radius^2;
|
|
;1748:
|
|
;1749: // normalize dir so a = 1
|
|
;1750: VectorNormalize(dir);
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 VectorNormalize
|
|
CALLF4
|
|
pop
|
|
line 1751
|
|
;1751: b = 2 * (dir[0] * (point[0] - origin[0]) + dir[1] * (point[1] - origin[1]) + dir[2] * (point[2] - origin[2]));
|
|
ADDRLP4 16
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 20
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 24
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 28
|
|
CNSTI4 4
|
|
ASGNI4
|
|
ADDRLP4 32
|
|
CNSTI4 8
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
CNSTF4 1073741824
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
INDIRF4
|
|
SUBF4
|
|
MULF4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ADDRLP4 28
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
ADDRLP4 28
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
ADDRLP4 28
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 20
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 24
|
|
INDIRP4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
MULF4
|
|
ADDF4
|
|
MULF4
|
|
ASGNF4
|
|
line 1752
|
|
;1752: c = (point[0] - origin[0]) * (point[0] - origin[0]) +
|
|
ADDRLP4 36
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 44
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 48
|
|
CNSTI4 4
|
|
ASGNI4
|
|
ADDRLP4 52
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 56
|
|
CNSTI4 8
|
|
ASGNI4
|
|
ADDRLP4 60
|
|
ADDRLP4 36
|
|
INDIRP4
|
|
ADDRLP4 56
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ADDRLP4 56
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 64
|
|
ADDRFP4 4
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 12
|
|
ADDRLP4 44
|
|
INDIRF4
|
|
ADDRLP4 44
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 52
|
|
INDIRF4
|
|
ADDRLP4 52
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 60
|
|
INDIRF4
|
|
ADDRLP4 60
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
MULF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 1757
|
|
;1753: (point[1] - origin[1]) * (point[1] - origin[1]) +
|
|
;1754: (point[2] - origin[2]) * (point[2] - origin[2]) -
|
|
;1755: radius * radius;
|
|
;1756:
|
|
;1757: d = b * b - 4 * c;
|
|
ADDRLP4 8
|
|
ADDRLP4 4
|
|
INDIRF4
|
|
ADDRLP4 4
|
|
INDIRF4
|
|
MULF4
|
|
CNSTF4 1082130432
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
MULF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 1758
|
|
;1758: if (d > 0) {
|
|
ADDRLP4 8
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $602
|
|
line 1759
|
|
;1759: t = (- b + sqrt(d)) / 2;
|
|
ADDRLP4 8
|
|
INDIRF4
|
|
ARGF4
|
|
ADDRLP4 72
|
|
ADDRGP4 sqrt
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRF4
|
|
NEGF4
|
|
ADDRLP4 72
|
|
INDIRF4
|
|
ADDF4
|
|
CNSTF4 1073741824
|
|
DIVF4
|
|
ASGNF4
|
|
line 1760
|
|
;1760: VectorMA(point, t, dir, intersections[0]);
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 76
|
|
CNSTI4 4
|
|
ASGNI4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 80
|
|
CNSTI4 8
|
|
ASGNI4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1761
|
|
;1761: t = (- b - sqrt(d)) / 2;
|
|
ADDRLP4 8
|
|
INDIRF4
|
|
ARGF4
|
|
ADDRLP4 84
|
|
ADDRGP4 sqrt
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRF4
|
|
NEGF4
|
|
ADDRLP4 84
|
|
INDIRF4
|
|
SUBF4
|
|
CNSTF4 1073741824
|
|
DIVF4
|
|
ASGNF4
|
|
line 1762
|
|
;1762: VectorMA(point, t, dir, intersections[1]);
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
CNSTI4 12
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 88
|
|
CNSTI4 4
|
|
ASGNI4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
CNSTI4 16
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 88
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 88
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 92
|
|
CNSTI4 8
|
|
ASGNI4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
CNSTI4 20
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 92
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 92
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1763
|
|
;1763: return 2;
|
|
CNSTI4 2
|
|
RETI4
|
|
ADDRGP4 $601
|
|
JUMPV
|
|
LABELV $602
|
|
line 1765
|
|
;1764: }
|
|
;1765: else if (d == 0) {
|
|
ADDRLP4 8
|
|
INDIRF4
|
|
CNSTF4 0
|
|
NEF4 $604
|
|
line 1766
|
|
;1766: t = (- b ) / 2;
|
|
ADDRLP4 0
|
|
ADDRLP4 4
|
|
INDIRF4
|
|
NEGF4
|
|
CNSTF4 1073741824
|
|
DIVF4
|
|
ASGNF4
|
|
line 1767
|
|
;1767: VectorMA(point, t, dir, intersections[0]);
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 72
|
|
CNSTI4 4
|
|
ASGNI4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
ADDRLP4 72
|
|
INDIRI4
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 72
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 72
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 76
|
|
CNSTI4 8
|
|
ASGNI4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1768
|
|
;1768: return 1;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $601
|
|
JUMPV
|
|
LABELV $604
|
|
line 1770
|
|
;1769: }
|
|
;1770: return 0;
|
|
CNSTI4 0
|
|
RETI4
|
|
LABELV $601
|
|
endproc RaySphereIntersections 96 4
|
|
export LimbTouch
|
|
proc LimbTouch 0 0
|
|
line 1774
|
|
;1771:}
|
|
;1772:
|
|
;1773:void LimbTouch( gentity_t *self, gentity_t *other, trace_t *trace )
|
|
;1774:{
|
|
line 1775
|
|
;1775:}
|
|
LABELV $606
|
|
endproc LimbTouch 0 0
|
|
export LimbThink
|
|
proc LimbThink 12 4
|
|
line 1778
|
|
;1776:
|
|
;1777:void LimbThink( gentity_t *ent )
|
|
;1778:{
|
|
line 1779
|
|
;1779: if (ent->speed < level.time)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 608
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
GEF4 $608
|
|
line 1780
|
|
;1780: {
|
|
line 1781
|
|
;1781: ent->think = G_FreeEntity;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 636
|
|
ADDP4
|
|
ADDRGP4 G_FreeEntity
|
|
ASGNP4
|
|
line 1782
|
|
;1782: ent->nextthink = level.time;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 632
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1783
|
|
;1783: return;
|
|
ADDRGP4 $607
|
|
JUMPV
|
|
LABELV $608
|
|
line 1786
|
|
;1784: }
|
|
;1785:
|
|
;1786: if (ent->s.pos.trType != TR_GRAVITY)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 12
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 5
|
|
EQI4 $612
|
|
line 1787
|
|
;1787: {
|
|
line 1788
|
|
;1788: int addamt = (ent->speed - level.time);
|
|
ADDRLP4 0
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 608
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CVIF4 4
|
|
SUBF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 1790
|
|
;1789:
|
|
;1790: if (addamt > 5000)
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 5000
|
|
LEI4 $615
|
|
line 1791
|
|
;1791: {
|
|
line 1792
|
|
;1792: addamt = 5000;
|
|
ADDRLP4 0
|
|
CNSTI4 5000
|
|
ASGNI4
|
|
line 1793
|
|
;1793: }
|
|
LABELV $615
|
|
line 1794
|
|
;1794: if (addamt < 0)
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $617
|
|
line 1795
|
|
;1795: {
|
|
line 1796
|
|
;1796: addamt = 0;
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1797
|
|
;1797: }
|
|
LABELV $617
|
|
line 1799
|
|
;1798:
|
|
;1799: VectorClear(ent->s.pos.trDelta);
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 8
|
|
CNSTF4 0
|
|
ASGNF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 44
|
|
ADDP4
|
|
ADDRLP4 8
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
ADDRLP4 8
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
ADDRLP4 8
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1800
|
|
;1800: ent->think = G_FreeEntity;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 636
|
|
ADDP4
|
|
ADDRGP4 G_FreeEntity
|
|
ASGNP4
|
|
line 1801
|
|
;1801: ent->nextthink = level.time + addamt;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 632
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 1802
|
|
;1802: return;
|
|
ADDRGP4 $607
|
|
JUMPV
|
|
LABELV $612
|
|
line 1805
|
|
;1803: }
|
|
;1804:
|
|
;1805: G_RunMissile(ent);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 G_RunMissile
|
|
CALLV
|
|
pop
|
|
line 1807
|
|
;1806:
|
|
;1807: G_RunObject(ent);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 G_RunObject
|
|
CALLV
|
|
pop
|
|
line 1808
|
|
;1808:}
|
|
LABELV $607
|
|
endproc LimbThink 12 4
|
|
export G_GetDismemberBolt
|
|
proc G_GetDismemberBolt 132 36
|
|
line 1813
|
|
;1809:
|
|
;1810:void G_G2PlayerAngles( gentity_t *ent, vec3_t legs[3], vec3_t legsAngles);
|
|
;1811:
|
|
;1812:void G_GetDismemberBolt(gentity_t *self, vec3_t boltPoint, int limbType)
|
|
;1813:{
|
|
line 1814
|
|
;1814: int useBolt = self->bolt_Head;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 784
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1818
|
|
;1815: vec3_t properOrigin, properAngles, addVel;
|
|
;1816: vec3_t legAxis[3];
|
|
;1817: mdxaBone_t boltMatrix;
|
|
;1818: float fVSpeed = 0;
|
|
ADDRLP4 0
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 1820
|
|
;1819:
|
|
;1820: switch (limbType)
|
|
ADDRLP4 128
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
CNSTI4 10
|
|
LTI4 $621
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
CNSTI4 15
|
|
GTI4 $621
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 $629-40
|
|
ADDP4
|
|
INDIRP4
|
|
JUMPV
|
|
lit
|
|
align 4
|
|
LABELV $629
|
|
address $623
|
|
address $624
|
|
address $625
|
|
address $626
|
|
address $627
|
|
address $628
|
|
code
|
|
line 1821
|
|
;1821: {
|
|
LABELV $623
|
|
line 1823
|
|
;1822: case G2_MODELPART_HEAD:
|
|
;1823: useBolt = self->bolt_Head;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 784
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1824
|
|
;1824: break;
|
|
ADDRGP4 $622
|
|
JUMPV
|
|
LABELV $624
|
|
line 1826
|
|
;1825: case G2_MODELPART_WAIST:
|
|
;1826: useBolt = self->bolt_Waist;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 804
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1827
|
|
;1827: break;
|
|
ADDRGP4 $622
|
|
JUMPV
|
|
LABELV $625
|
|
line 1829
|
|
;1828: case G2_MODELPART_LARM:
|
|
;1829: useBolt = self->bolt_LArm;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 788
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1830
|
|
;1830: break;
|
|
ADDRGP4 $622
|
|
JUMPV
|
|
LABELV $626
|
|
line 1832
|
|
;1831: case G2_MODELPART_RARM:
|
|
;1832: useBolt = self->bolt_RArm;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 792
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1833
|
|
;1833: break;
|
|
ADDRGP4 $622
|
|
JUMPV
|
|
LABELV $627
|
|
line 1835
|
|
;1834: case G2_MODELPART_LLEG:
|
|
;1835: useBolt = self->bolt_LLeg;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 796
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1836
|
|
;1836: break;
|
|
ADDRGP4 $622
|
|
JUMPV
|
|
LABELV $628
|
|
line 1838
|
|
;1837: case G2_MODELPART_RLEG:
|
|
;1838: useBolt = self->bolt_RLeg;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 800
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1839
|
|
;1839: break;
|
|
ADDRGP4 $622
|
|
JUMPV
|
|
LABELV $621
|
|
line 1841
|
|
;1840: default:
|
|
;1841: useBolt = self->bolt_Head;
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 784
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1842
|
|
;1842: break;
|
|
LABELV $622
|
|
line 1845
|
|
;1843: }
|
|
;1844:
|
|
;1845: VectorCopy(self->client->ps.origin, properOrigin);
|
|
ADDRLP4 16
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 20
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1846
|
|
;1846: VectorCopy(self->client->ps.viewangles, properAngles);
|
|
ADDRLP4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 156
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1849
|
|
;1847:
|
|
;1848: //try to predict the origin based on velocity so it's more like what the client is seeing
|
|
;1849: VectorCopy(self->client->ps.velocity, addVel);
|
|
ADDRLP4 28
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1850
|
|
;1850: VectorNormalize(addVel);
|
|
ADDRLP4 28
|
|
ARGP4
|
|
ADDRGP4 VectorNormalize
|
|
CALLF4
|
|
pop
|
|
line 1852
|
|
;1851:
|
|
;1852: if (self->client->ps.velocity[0] < 0)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
INDIRF4
|
|
CNSTF4 0
|
|
GEF4 $631
|
|
line 1853
|
|
;1853: {
|
|
line 1854
|
|
;1854: fVSpeed += (-self->client->ps.velocity[0]);
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
INDIRF4
|
|
NEGF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1855
|
|
;1855: }
|
|
ADDRGP4 $632
|
|
JUMPV
|
|
LABELV $631
|
|
line 1857
|
|
;1856: else
|
|
;1857: {
|
|
line 1858
|
|
;1858: fVSpeed += self->client->ps.velocity[0];
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1859
|
|
;1859: }
|
|
LABELV $632
|
|
line 1860
|
|
;1860: if (self->client->ps.velocity[1] < 0)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
INDIRF4
|
|
CNSTF4 0
|
|
GEF4 $633
|
|
line 1861
|
|
;1861: {
|
|
line 1862
|
|
;1862: fVSpeed += (-self->client->ps.velocity[1]);
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
INDIRF4
|
|
NEGF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1863
|
|
;1863: }
|
|
ADDRGP4 $634
|
|
JUMPV
|
|
LABELV $633
|
|
line 1865
|
|
;1864: else
|
|
;1865: {
|
|
line 1866
|
|
;1866: fVSpeed += self->client->ps.velocity[1];
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1867
|
|
;1867: }
|
|
LABELV $634
|
|
line 1868
|
|
;1868: if (self->client->ps.velocity[2] < 0)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRF4
|
|
CNSTF4 0
|
|
GEF4 $635
|
|
line 1869
|
|
;1869: {
|
|
line 1870
|
|
;1870: fVSpeed += (-self->client->ps.velocity[2]);
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRF4
|
|
NEGF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1871
|
|
;1871: }
|
|
ADDRGP4 $636
|
|
JUMPV
|
|
LABELV $635
|
|
line 1873
|
|
;1872: else
|
|
;1873: {
|
|
line 1874
|
|
;1874: fVSpeed += self->client->ps.velocity[2];
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1875
|
|
;1875: }
|
|
LABELV $636
|
|
line 1877
|
|
;1876:
|
|
;1877: fVSpeed *= 0.08;
|
|
ADDRLP4 0
|
|
CNSTF4 1034147594
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
line 1879
|
|
;1878:
|
|
;1879: properOrigin[0] += addVel[0]*fVSpeed;
|
|
ADDRLP4 16
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
ADDRLP4 28
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1880
|
|
;1880: properOrigin[1] += addVel[1]*fVSpeed;
|
|
ADDRLP4 16+4
|
|
ADDRLP4 16+4
|
|
INDIRF4
|
|
ADDRLP4 28+4
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1881
|
|
;1881: properOrigin[2] += addVel[2]*fVSpeed;
|
|
ADDRLP4 16+8
|
|
ADDRLP4 16+8
|
|
INDIRF4
|
|
ADDRLP4 28+8
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1883
|
|
;1882:
|
|
;1883: properAngles[0] = 0;
|
|
ADDRLP4 4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 1884
|
|
;1884: properAngles[1] = self->client->ps.viewangles[YAW];
|
|
ADDRLP4 4+4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 160
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1885
|
|
;1885: properAngles[2] = 0;
|
|
ADDRLP4 4+8
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 1887
|
|
;1886:
|
|
;1887: AnglesToAxis( properAngles, legAxis );
|
|
ADDRLP4 4
|
|
ARGP4
|
|
ADDRLP4 92
|
|
ARGP4
|
|
ADDRGP4 AnglesToAxis
|
|
CALLV
|
|
pop
|
|
line 1888
|
|
;1888: G_G2PlayerAngles( self, legAxis, properAngles );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 92
|
|
ARGP4
|
|
ADDRLP4 4
|
|
ARGP4
|
|
ADDRGP4 G_G2PlayerAngles
|
|
CALLV
|
|
pop
|
|
line 1890
|
|
;1889:
|
|
;1890: trap_G2API_GetBoltMatrix(self->client->ghoul2, 0, useBolt, &boltMatrix, properAngles, properOrigin, level.time, NULL, vec3_origin);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1716
|
|
ADDP4
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRLP4 88
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 40
|
|
ARGP4
|
|
ADDRLP4 4
|
|
ARGP4
|
|
ADDRLP4 16
|
|
ARGP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTP4 0
|
|
ARGP4
|
|
ADDRGP4 vec3_origin
|
|
ARGP4
|
|
ADDRGP4 trap_G2API_GetBoltMatrix
|
|
CALLI4
|
|
pop
|
|
line 1892
|
|
;1891:
|
|
;1892: boltPoint[0] = boltMatrix.matrix[0][3];
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 40+12
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1893
|
|
;1893: boltPoint[1] = boltMatrix.matrix[1][3];
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
ADDRLP4 40+16+12
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1894
|
|
;1894: boltPoint[2] = boltMatrix.matrix[2][3];
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
ADDRLP4 40+32+12
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1895
|
|
;1895:}
|
|
LABELV $620
|
|
endproc G_GetDismemberBolt 132 36
|
|
export G_Dismember
|
|
proc G_Dismember 100 8
|
|
line 1898
|
|
;1896:
|
|
;1897:void G_Dismember( gentity_t *ent, vec3_t point, int limbType, float limbRollBase, float limbPitchBase, int deathAnim )
|
|
;1898:{
|
|
line 1902
|
|
;1899: vec3_t dir, newPoint, vel;
|
|
;1900: gentity_t *limb;
|
|
;1901:
|
|
;1902: VectorCopy( point, newPoint );
|
|
ADDRLP4 28
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1903
|
|
;1903: limb = G_Spawn();
|
|
ADDRLP4 40
|
|
ADDRGP4 G_Spawn
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
ASGNP4
|
|
line 1904
|
|
;1904: limb->classname = "playerlimb";
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 416
|
|
ADDP4
|
|
ADDRGP4 $650
|
|
ASGNP4
|
|
line 1905
|
|
;1905: G_SetOrigin( limb, newPoint );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 28
|
|
ARGP4
|
|
ADDRGP4 G_SetOrigin
|
|
CALLV
|
|
pop
|
|
line 1906
|
|
;1906: VectorCopy( newPoint, limb->s.pos.trBase );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 24
|
|
ADDP4
|
|
ADDRLP4 28
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1907
|
|
;1907: limb->think = LimbThink;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 636
|
|
ADDP4
|
|
ADDRGP4 LimbThink
|
|
ASGNP4
|
|
line 1908
|
|
;1908: limb->touch = LimbTouch;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 648
|
|
ADDP4
|
|
ADDRGP4 LimbTouch
|
|
ASGNP4
|
|
line 1909
|
|
;1909: limb->speed = level.time + Q_irand(4000, 8000);
|
|
CNSTI4 4000
|
|
ARGI4
|
|
CNSTI4 8000
|
|
ARGI4
|
|
ADDRLP4 44
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 608
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ADDRLP4 44
|
|
INDIRI4
|
|
ADDI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 1910
|
|
;1910: limb->nextthink = level.time + FRAMETIME;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 632
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 100
|
|
ADDI4
|
|
ASGNI4
|
|
line 1913
|
|
;1911:
|
|
;1912: //need size, contents, clipmask
|
|
;1913: limb->r.svFlags = SVF_USE_CURRENT_ORIGIN;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
CNSTI4 128
|
|
ASGNI4
|
|
line 1914
|
|
;1914: limb->clipmask = MASK_SOLID;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 508
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1915
|
|
;1915: limb->r.contents = CONTENTS_TRIGGER;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 340
|
|
ADDP4
|
|
CNSTI4 1024
|
|
ASGNI4
|
|
line 1916
|
|
;1916: VectorSet( limb->r.mins, -3.0f, -3.0f, -3.0f );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 316
|
|
ADDP4
|
|
CNSTF4 3225419776
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 320
|
|
ADDP4
|
|
CNSTF4 3225419776
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 324
|
|
ADDP4
|
|
CNSTF4 3225419776
|
|
ASGNF4
|
|
line 1917
|
|
;1917: VectorSet( limb->r.maxs, 3.0f, 3.0f, 3.0f );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 328
|
|
ADDP4
|
|
CNSTF4 1077936128
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 332
|
|
ADDP4
|
|
CNSTF4 1077936128
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 336
|
|
ADDP4
|
|
CNSTF4 1077936128
|
|
ASGNF4
|
|
line 1922
|
|
;1918:// VectorClear(limb->r.mins);
|
|
;1919:// VectorClear(limb->r.maxs);
|
|
;1920:
|
|
;1921: //move it
|
|
;1922: limb->s.eType = ET_GENERAL;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 1923
|
|
;1923: limb->s.weapon = G2_MODEL_PART;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 276
|
|
ADDP4
|
|
CNSTI4 50
|
|
ASGNI4
|
|
line 1925
|
|
;1924:
|
|
;1925: if (limbType == G2_MODELPART_HEAD)
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 10
|
|
NEI4 $653
|
|
line 1926
|
|
;1926: {
|
|
line 1927
|
|
;1927: limb->bounceCount = 2;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 716
|
|
ADDP4
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 1928
|
|
;1928: }
|
|
ADDRGP4 $654
|
|
JUMPV
|
|
LABELV $653
|
|
line 1930
|
|
;1929: else
|
|
;1930: {
|
|
line 1931
|
|
;1931: limb->bounceCount = 1;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 716
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 1932
|
|
;1932: }
|
|
LABELV $654
|
|
line 1933
|
|
;1933: limb->s.pos.trType = TR_GRAVITY;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 12
|
|
ADDP4
|
|
CNSTI4 5
|
|
ASGNI4
|
|
line 1934
|
|
;1934: limb->s.pos.trTime = level.time; // move a bit on the very first frame
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 16
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1935
|
|
;1935: VectorSubtract( point, ent->r.currentOrigin, dir );
|
|
ADDRLP4 48
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 52
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 4
|
|
ADDRLP4 48
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 4+4
|
|
ADDRLP4 48
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
CNSTI4 372
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 4+8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 376
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 1936
|
|
;1936: VectorNormalize( dir );
|
|
ADDRLP4 4
|
|
ARGP4
|
|
ADDRGP4 VectorNormalize
|
|
CALLF4
|
|
pop
|
|
line 1937
|
|
;1937: VectorCopy(ent->client->ps.velocity, vel);
|
|
ADDRLP4 16
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1938
|
|
;1938: VectorMA( vel, 100, dir, limb->s.pos.trDelta );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
CNSTF4 1120403456
|
|
ADDRLP4 4
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
ADDRLP4 16+4
|
|
INDIRF4
|
|
CNSTF4 1120403456
|
|
ADDRLP4 4+4
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 44
|
|
ADDP4
|
|
ADDRLP4 16+8
|
|
INDIRF4
|
|
CNSTF4 1120403456
|
|
ADDRLP4 4+8
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 1941
|
|
;1939:
|
|
;1940: //make it bounce some
|
|
;1941: limb->s.eFlags |= EF_BOUNCE_HALF;
|
|
ADDRLP4 56
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 32
|
|
BORI4
|
|
ASGNI4
|
|
line 1944
|
|
;1942: //no trDuration?
|
|
;1943: //spin it
|
|
;1944: VectorClear( limb->s.apos.trBase );
|
|
ADDRLP4 64
|
|
CNSTF4 0
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 68
|
|
ADDP4
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 64
|
|
ADDP4
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 60
|
|
ADDP4
|
|
ADDRLP4 64
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1945
|
|
;1945: limb->s.apos.trBase[0] = limbPitchBase;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 60
|
|
ADDP4
|
|
ADDRFP4 16
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1946
|
|
;1946: limb->s.apos.trBase[1] = ent->client->ps.viewangles[1];
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 64
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 160
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1947
|
|
;1947: limb->s.apos.trBase[2] = limbRollBase;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 68
|
|
ADDP4
|
|
ADDRFP4 12
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1949
|
|
;1948:
|
|
;1949: VectorClear( limb->s.apos.trDelta );
|
|
ADDRLP4 72
|
|
CNSTF4 0
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 80
|
|
ADDP4
|
|
ADDRLP4 72
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 76
|
|
ADDP4
|
|
ADDRLP4 72
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 72
|
|
ADDP4
|
|
ADDRLP4 72
|
|
INDIRF4
|
|
ASGNF4
|
|
line 1951
|
|
;1950:
|
|
;1951: limb->s.apos.trDelta[0] = Q_irand( -300, 300 );
|
|
CNSTI4 -300
|
|
ARGI4
|
|
CNSTI4 300
|
|
ARGI4
|
|
ADDRLP4 76
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 72
|
|
ADDP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 1952
|
|
;1952: limb->s.apos.trDelta[2] = Q_irand( -300, 300 );
|
|
CNSTI4 -300
|
|
ARGI4
|
|
CNSTI4 300
|
|
ARGI4
|
|
ADDRLP4 80
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 80
|
|
ADDP4
|
|
ADDRLP4 80
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 1953
|
|
;1953: limb->s.apos.trDelta[1] = Q_irand( -300, 300 );
|
|
CNSTI4 -300
|
|
ARGI4
|
|
CNSTI4 300
|
|
ARGI4
|
|
ADDRLP4 84
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 76
|
|
ADDP4
|
|
ADDRLP4 84
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 1955
|
|
;1954:
|
|
;1955: if (limbType == G2_MODELPART_WAIST)
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 11
|
|
NEI4 $662
|
|
line 1956
|
|
;1956: {
|
|
line 1957
|
|
;1957: limb->s.apos.trDelta[0] = Q_irand( -60, 60 );
|
|
CNSTI4 -60
|
|
ARGI4
|
|
CNSTI4 60
|
|
ARGI4
|
|
ADDRLP4 88
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 72
|
|
ADDP4
|
|
ADDRLP4 88
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 1958
|
|
;1958: limb->s.apos.trDelta[2] = Q_irand( -60, 60 );
|
|
CNSTI4 -60
|
|
ARGI4
|
|
CNSTI4 60
|
|
ARGI4
|
|
ADDRLP4 92
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 80
|
|
ADDP4
|
|
ADDRLP4 92
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 1959
|
|
;1959: limb->s.apos.trDelta[1] = Q_irand( -60, 60 );
|
|
CNSTI4 -60
|
|
ARGI4
|
|
CNSTI4 60
|
|
ARGI4
|
|
ADDRLP4 96
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 76
|
|
ADDP4
|
|
ADDRLP4 96
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 1960
|
|
;1960: }
|
|
LABELV $662
|
|
line 1962
|
|
;1961:
|
|
;1962: limb->s.apos.trTime = level.time;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 52
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1963
|
|
;1963: limb->s.apos.trType = TR_LINEAR;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 48
|
|
ADDP4
|
|
CNSTI4 2
|
|
ASGNI4
|
|
line 1965
|
|
;1964:
|
|
;1965: limb->s.modelGhoul2 = limbType;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 204
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1966
|
|
;1966: limb->s.g2radius = 200;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 208
|
|
ADDP4
|
|
CNSTI4 200
|
|
ASGNI4
|
|
line 1967
|
|
;1967: limb->s.modelindex = ent->s.number;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 212
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1968
|
|
;1968: limb->s.modelindex2 = deathAnim;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 216
|
|
ADDP4
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
ASGNI4
|
|
line 1970
|
|
;1969:
|
|
;1970: trap_LinkEntity( limb );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 trap_LinkEntity
|
|
CALLV
|
|
pop
|
|
line 1971
|
|
;1971:}
|
|
LABELV $649
|
|
endproc G_Dismember 100 8
|
|
lit
|
|
align 4
|
|
LABELV $666
|
|
byte 4 0
|
|
byte 4 0
|
|
byte 4 0
|
|
export G_GetHitQuad
|
|
code
|
|
proc G_GetHitQuad 68 16
|
|
line 1991
|
|
;1972:
|
|
;1973:/*
|
|
;1974:void DismembermentTest(gentity_t *self)
|
|
;1975:{
|
|
;1976: int sect = G2_MODELPART_HEAD;
|
|
;1977: vec3_t boltPoint;
|
|
;1978: char *sectc = ConcatArgs( 1 );
|
|
;1979:
|
|
;1980: if (sectc && sectc[0])
|
|
;1981: {
|
|
;1982: sect = atoi(sectc)+G2_MODELPART_HEAD;
|
|
;1983: }
|
|
;1984:
|
|
;1985: G_GetDismemberBolt(self, boltPoint, sect);
|
|
;1986: G_Dismember( self, boltPoint, sect, 90, 0 );
|
|
;1987:}
|
|
;1988:*/
|
|
;1989:
|
|
;1990:int G_GetHitQuad( gentity_t *self, vec3_t hitloc )
|
|
;1991:{
|
|
line 1992
|
|
;1992: vec3_t diff, fwdangles={0,0,0}, right;
|
|
ADDRLP4 36
|
|
ADDRGP4 $666
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1996
|
|
;1993: vec3_t clEye;
|
|
;1994: float rightdot;
|
|
;1995: float zdiff;
|
|
;1996: int hitLoc = -1;
|
|
ADDRLP4 48
|
|
CNSTI4 -1
|
|
ASGNI4
|
|
line 1998
|
|
;1997:
|
|
;1998: VectorCopy(self->client->ps.origin, clEye);
|
|
ADDRLP4 12
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 20
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 1999
|
|
;1999: clEye[2] += self->client->ps.viewheight;
|
|
ADDRLP4 12+8
|
|
ADDRLP4 12+8
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 168
|
|
ADDP4
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDF4
|
|
ASGNF4
|
|
line 2001
|
|
;2000:
|
|
;2001: VectorSubtract( hitloc, clEye, diff );
|
|
ADDRLP4 60
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 0
|
|
ADDRLP4 60
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 0+4
|
|
ADDRLP4 60
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 12+4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 0+8
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 12+8
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 2002
|
|
;2002: diff[2] = 0;
|
|
ADDRLP4 0+8
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 2003
|
|
;2003: VectorNormalize( diff );
|
|
ADDRLP4 0
|
|
ARGP4
|
|
ADDRGP4 VectorNormalize
|
|
CALLF4
|
|
pop
|
|
line 2005
|
|
;2004:
|
|
;2005: fwdangles[1] = self->client->ps.viewangles[1];
|
|
ADDRLP4 36+4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 160
|
|
ADDP4
|
|
INDIRF4
|
|
ASGNF4
|
|
line 2007
|
|
;2006: // Ultimately we might care if the shot was ahead or behind, but for now, just quadrant is fine.
|
|
;2007: AngleVectors( fwdangles, NULL, right, NULL );
|
|
ADDRLP4 36
|
|
ARGP4
|
|
ADDRLP4 64
|
|
CNSTP4 0
|
|
ASGNP4
|
|
ADDRLP4 64
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 24
|
|
ARGP4
|
|
ADDRLP4 64
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 AngleVectors
|
|
CALLV
|
|
pop
|
|
line 2009
|
|
;2008:
|
|
;2009: rightdot = DotProduct(right, diff);
|
|
ADDRLP4 56
|
|
ADDRLP4 24
|
|
INDIRF4
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 24+4
|
|
INDIRF4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ADDRLP4 24+8
|
|
INDIRF4
|
|
ADDRLP4 0+8
|
|
INDIRF4
|
|
MULF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 2010
|
|
;2010: zdiff = hitloc[2] - clEye[2];
|
|
ADDRLP4 52
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 12+8
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 2012
|
|
;2011:
|
|
;2012: if ( zdiff > 0 )
|
|
ADDRLP4 52
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LEF4 $679
|
|
line 2013
|
|
;2013: {
|
|
line 2014
|
|
;2014: if ( rightdot > 0.3 )
|
|
ADDRLP4 56
|
|
INDIRF4
|
|
CNSTF4 1050253722
|
|
LEF4 $681
|
|
line 2015
|
|
;2015: {
|
|
line 2016
|
|
;2016: hitLoc = G2_MODELPART_RARM;
|
|
ADDRLP4 48
|
|
CNSTI4 13
|
|
ASGNI4
|
|
line 2017
|
|
;2017: }
|
|
ADDRGP4 $680
|
|
JUMPV
|
|
LABELV $681
|
|
line 2018
|
|
;2018: else if ( rightdot < -0.3 )
|
|
ADDRLP4 56
|
|
INDIRF4
|
|
CNSTF4 3197737370
|
|
GEF4 $683
|
|
line 2019
|
|
;2019: {
|
|
line 2020
|
|
;2020: hitLoc = G2_MODELPART_LARM;
|
|
ADDRLP4 48
|
|
CNSTI4 12
|
|
ASGNI4
|
|
line 2021
|
|
;2021: }
|
|
ADDRGP4 $680
|
|
JUMPV
|
|
LABELV $683
|
|
line 2023
|
|
;2022: else
|
|
;2023: {
|
|
line 2024
|
|
;2024: hitLoc = G2_MODELPART_HEAD;
|
|
ADDRLP4 48
|
|
CNSTI4 10
|
|
ASGNI4
|
|
line 2025
|
|
;2025: }
|
|
line 2026
|
|
;2026: }
|
|
ADDRGP4 $680
|
|
JUMPV
|
|
LABELV $679
|
|
line 2027
|
|
;2027: else if ( zdiff > -20 )
|
|
ADDRLP4 52
|
|
INDIRF4
|
|
CNSTF4 3248488448
|
|
LEF4 $685
|
|
line 2028
|
|
;2028: {
|
|
line 2029
|
|
;2029: if ( rightdot > 0.1 )
|
|
ADDRLP4 56
|
|
INDIRF4
|
|
CNSTF4 1036831949
|
|
LEF4 $687
|
|
line 2030
|
|
;2030: {
|
|
line 2031
|
|
;2031: hitLoc = G2_MODELPART_RARM;
|
|
ADDRLP4 48
|
|
CNSTI4 13
|
|
ASGNI4
|
|
line 2032
|
|
;2032: }
|
|
ADDRGP4 $686
|
|
JUMPV
|
|
LABELV $687
|
|
line 2033
|
|
;2033: else if ( rightdot < -0.1 )
|
|
ADDRLP4 56
|
|
INDIRF4
|
|
CNSTF4 3184315597
|
|
GEF4 $689
|
|
line 2034
|
|
;2034: {
|
|
line 2035
|
|
;2035: hitLoc = G2_MODELPART_LARM;
|
|
ADDRLP4 48
|
|
CNSTI4 12
|
|
ASGNI4
|
|
line 2036
|
|
;2036: }
|
|
ADDRGP4 $686
|
|
JUMPV
|
|
LABELV $689
|
|
line 2038
|
|
;2037: else
|
|
;2038: {
|
|
line 2039
|
|
;2039: hitLoc = G2_MODELPART_HEAD;
|
|
ADDRLP4 48
|
|
CNSTI4 10
|
|
ASGNI4
|
|
line 2040
|
|
;2040: }
|
|
line 2041
|
|
;2041: }
|
|
ADDRGP4 $686
|
|
JUMPV
|
|
LABELV $685
|
|
line 2043
|
|
;2042: else
|
|
;2043: {
|
|
line 2044
|
|
;2044: if ( rightdot >= 0 )
|
|
ADDRLP4 56
|
|
INDIRF4
|
|
CNSTF4 0
|
|
LTF4 $691
|
|
line 2045
|
|
;2045: {
|
|
line 2046
|
|
;2046: hitLoc = G2_MODELPART_RLEG;
|
|
ADDRLP4 48
|
|
CNSTI4 15
|
|
ASGNI4
|
|
line 2047
|
|
;2047: }
|
|
ADDRGP4 $692
|
|
JUMPV
|
|
LABELV $691
|
|
line 2049
|
|
;2048: else
|
|
;2049: {
|
|
line 2050
|
|
;2050: hitLoc = G2_MODELPART_LLEG;
|
|
ADDRLP4 48
|
|
CNSTI4 14
|
|
ASGNI4
|
|
line 2051
|
|
;2051: }
|
|
LABELV $692
|
|
line 2052
|
|
;2052: }
|
|
LABELV $686
|
|
LABELV $680
|
|
line 2054
|
|
;2053:
|
|
;2054: return hitLoc;
|
|
ADDRLP4 48
|
|
INDIRI4
|
|
RETI4
|
|
LABELV $665
|
|
endproc G_GetHitQuad 68 16
|
|
export G_CheckForDismemberment
|
|
proc G_CheckForDismemberment 40 24
|
|
line 2058
|
|
;2055:}
|
|
;2056:
|
|
;2057:void G_CheckForDismemberment(gentity_t *ent, vec3_t point, int damage, int deathAnim)
|
|
;2058:{
|
|
line 2059
|
|
;2059: int hitLoc, hitLocUse = -1;
|
|
ADDRLP4 0
|
|
CNSTI4 -1
|
|
ASGNI4
|
|
line 2061
|
|
;2060: vec3_t boltPoint;
|
|
;2061: int dismember = g_dismember.integer;
|
|
ADDRLP4 4
|
|
ADDRGP4 g_dismember+12
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2063
|
|
;2062:
|
|
;2063: if (!dismember)
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $695
|
|
line 2064
|
|
;2064: {
|
|
line 2065
|
|
;2065: return;
|
|
ADDRGP4 $693
|
|
JUMPV
|
|
LABELV $695
|
|
line 2068
|
|
;2066: }
|
|
;2067:
|
|
;2068: if (Q_irand(0, 100) > dismember)
|
|
CNSTI4 0
|
|
ARGI4
|
|
CNSTI4 100
|
|
ARGI4
|
|
ADDRLP4 24
|
|
ADDRGP4 Q_irand
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 24
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
LEI4 $697
|
|
line 2069
|
|
;2069: {
|
|
line 2070
|
|
;2070: return;
|
|
ADDRGP4 $693
|
|
JUMPV
|
|
LABELV $697
|
|
line 2073
|
|
;2071: }
|
|
;2072:
|
|
;2073: if (damage < 20)
|
|
ADDRFP4 8
|
|
INDIRI4
|
|
CNSTI4 20
|
|
GEI4 $699
|
|
line 2074
|
|
;2074: {
|
|
line 2075
|
|
;2075: return;
|
|
ADDRGP4 $693
|
|
JUMPV
|
|
LABELV $699
|
|
line 2078
|
|
;2076: }
|
|
;2077:
|
|
;2078: hitLoc = G_GetHitLocation( ent, point );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 28
|
|
ADDRGP4 G_GetHitLocation
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 8
|
|
ADDRLP4 28
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2080
|
|
;2079:
|
|
;2080: switch(hitLoc)
|
|
ADDRLP4 32
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
CNSTI4 1
|
|
LTI4 $701
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
CNSTI4 16
|
|
GTI4 $701
|
|
ADDRLP4 32
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRGP4 $709-4
|
|
ADDP4
|
|
INDIRP4
|
|
JUMPV
|
|
lit
|
|
align 4
|
|
LABELV $709
|
|
address $703
|
|
address $704
|
|
address $703
|
|
address $704
|
|
address $705
|
|
address $701
|
|
address $701
|
|
address $701
|
|
address $701
|
|
address $701
|
|
address $701
|
|
address $706
|
|
address $707
|
|
address $706
|
|
address $707
|
|
address $708
|
|
code
|
|
line 2081
|
|
;2081: {
|
|
LABELV $703
|
|
line 2084
|
|
;2082: case HL_FOOT_RT:
|
|
;2083: case HL_LEG_RT:
|
|
;2084: hitLocUse = G2_MODELPART_RLEG;
|
|
ADDRLP4 0
|
|
CNSTI4 15
|
|
ASGNI4
|
|
line 2085
|
|
;2085: break;
|
|
ADDRGP4 $702
|
|
JUMPV
|
|
LABELV $704
|
|
line 2088
|
|
;2086: case HL_FOOT_LT:
|
|
;2087: case HL_LEG_LT:
|
|
;2088: hitLocUse = G2_MODELPART_LLEG;
|
|
ADDRLP4 0
|
|
CNSTI4 14
|
|
ASGNI4
|
|
LABELV $705
|
|
line 2091
|
|
;2089:
|
|
;2090: case HL_WAIST:
|
|
;2091: hitLocUse = G2_MODELPART_WAIST;
|
|
ADDRLP4 0
|
|
CNSTI4 11
|
|
ASGNI4
|
|
line 2092
|
|
;2092: break;
|
|
ADDRGP4 $702
|
|
JUMPV
|
|
LABELV $706
|
|
line 2104
|
|
;2093: /*
|
|
;2094: case HL_BACK_RT:
|
|
;2095: case HL_BACK_LT:
|
|
;2096: case HL_BACK:
|
|
;2097: case HL_CHEST_RT:
|
|
;2098: case HL_CHEST_LT:
|
|
;2099: case HL_CHEST:
|
|
;2100: break;
|
|
;2101: */
|
|
;2102: case HL_ARM_RT:
|
|
;2103: case HL_HAND_RT:
|
|
;2104: hitLocUse = G2_MODELPART_RARM;
|
|
ADDRLP4 0
|
|
CNSTI4 13
|
|
ASGNI4
|
|
line 2105
|
|
;2105: break;
|
|
ADDRGP4 $702
|
|
JUMPV
|
|
LABELV $707
|
|
line 2108
|
|
;2106: case HL_ARM_LT:
|
|
;2107: case HL_HAND_LT:
|
|
;2108: hitLocUse = G2_MODELPART_LARM;
|
|
ADDRLP4 0
|
|
CNSTI4 12
|
|
ASGNI4
|
|
line 2109
|
|
;2109: break;
|
|
ADDRGP4 $702
|
|
JUMPV
|
|
LABELV $708
|
|
line 2111
|
|
;2110: case HL_HEAD:
|
|
;2111: hitLocUse = G2_MODELPART_HEAD;
|
|
ADDRLP4 0
|
|
CNSTI4 10
|
|
ASGNI4
|
|
LABELV $701
|
|
line 2113
|
|
;2112: default:
|
|
;2113: hitLocUse = G_GetHitQuad(ent, point);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 36
|
|
ADDRGP4 G_GetHitQuad
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2114
|
|
;2114: break;
|
|
LABELV $702
|
|
line 2117
|
|
;2115: }
|
|
;2116:
|
|
;2117: if (hitLocUse == -1)
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 -1
|
|
NEI4 $711
|
|
line 2118
|
|
;2118: {
|
|
line 2119
|
|
;2119: return;
|
|
ADDRGP4 $693
|
|
JUMPV
|
|
LABELV $711
|
|
line 2122
|
|
;2120: }
|
|
;2121:
|
|
;2122: G_GetDismemberBolt(ent, boltPoint, hitLocUse);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 12
|
|
ARGP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_GetDismemberBolt
|
|
CALLV
|
|
pop
|
|
line 2123
|
|
;2123: G_Dismember(ent, boltPoint, hitLocUse, 90, 0, deathAnim);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 12
|
|
ARGP4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
ARGI4
|
|
CNSTF4 1119092736
|
|
ARGF4
|
|
CNSTF4 0
|
|
ARGF4
|
|
ADDRFP4 12
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_Dismember
|
|
CALLV
|
|
pop
|
|
line 2124
|
|
;2124:}
|
|
LABELV $693
|
|
endproc G_CheckForDismemberment 40 24
|
|
export G_ThereIsAMaster
|
|
proc G_ThereIsAMaster 20 0
|
|
line 2127
|
|
;2125:
|
|
;2126:qboolean G_ThereIsAMaster(void)
|
|
;2127:{
|
|
line 2128
|
|
;2128: int i = 0;
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $715
|
|
JUMPV
|
|
LABELV $714
|
|
line 2132
|
|
;2129: gentity_t *ent;
|
|
;2130:
|
|
;2131: while (i < MAX_CLIENTS)
|
|
;2132: {
|
|
line 2133
|
|
;2133: ent = &g_entities[i];
|
|
ADDRLP4 0
|
|
CNSTI4 828
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 2135
|
|
;2134:
|
|
;2135: if (ent && ent->client && ent->client->ps.isJediMaster)
|
|
ADDRLP4 12
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 12
|
|
INDIRU4
|
|
EQU4 $717
|
|
ADDRLP4 16
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 12
|
|
INDIRU4
|
|
EQU4 $717
|
|
ADDRLP4 16
|
|
INDIRP4
|
|
CNSTI4 604
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $717
|
|
line 2136
|
|
;2136: {
|
|
line 2137
|
|
;2137: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $713
|
|
JUMPV
|
|
LABELV $717
|
|
line 2140
|
|
;2138: }
|
|
;2139:
|
|
;2140: i++;
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 2141
|
|
;2141: }
|
|
LABELV $715
|
|
line 2131
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 32
|
|
LTI4 $714
|
|
line 2143
|
|
;2142:
|
|
;2143: return qfalse;
|
|
CNSTI4 0
|
|
RETI4
|
|
LABELV $713
|
|
endproc G_ThereIsAMaster 20 0
|
|
export G_Damage
|
|
proc G_Damage 212 32
|
|
line 2173
|
|
;2144:}
|
|
;2145:
|
|
;2146:/*
|
|
;2147:============
|
|
;2148:T_Damage
|
|
;2149:
|
|
;2150:targ entity that is being damaged
|
|
;2151:inflictor entity that is causing the damage
|
|
;2152:attacker entity that caused the inflictor to damage targ
|
|
;2153: example: targ=monster, inflictor=rocket, attacker=player
|
|
;2154:
|
|
;2155:dir direction of the attack for knockback
|
|
;2156:point point at which the damage is being inflicted, used for headshots
|
|
;2157:damage amount of damage being inflicted
|
|
;2158:knockback force to be applied against targ as a result of the damage
|
|
;2159:
|
|
;2160:inflictor, attacker, dir, and point can be NULL for environmental effects
|
|
;2161:
|
|
;2162:dflags these flags are used to control how T_Damage works
|
|
;2163: DAMAGE_RADIUS damage was indirect (from a nearby explosion)
|
|
;2164: DAMAGE_NO_ARMOR armor does not protect from this damage
|
|
;2165: DAMAGE_NO_KNOCKBACK do not affect velocity, just view angles
|
|
;2166: DAMAGE_NO_PROTECTION kills godmode, armor, everything
|
|
;2167: DAMAGE_HALF_ABSORB half shields, half health
|
|
;2168: DAMAGE_HALF_ARMOR_REDUCTION Any damage that shields incur is halved
|
|
;2169:============
|
|
;2170:*/
|
|
;2171:
|
|
;2172:void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker,
|
|
;2173: vec3_t dir, vec3_t point, int damage, int dflags, int mod ) {
|
|
line 2180
|
|
;2174: gclient_t *client;
|
|
;2175: int take;
|
|
;2176: int save;
|
|
;2177: int asave;
|
|
;2178: int knockback;
|
|
;2179: int max;
|
|
;2180: int subamt = 0;
|
|
ADDRLP4 20
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2181
|
|
;2181: float famt = 0;
|
|
ADDRLP4 24
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 2182
|
|
;2182: float hamt = 0;
|
|
ADDRLP4 28
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 2183
|
|
;2183: float shieldAbsorbed = 0;
|
|
ADDRLP4 16
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 2185
|
|
;2184:
|
|
;2185: if (targ && targ->damageRedirect)
|
|
ADDRLP4 40
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $720
|
|
ADDRLP4 40
|
|
INDIRP4
|
|
CNSTI4 816
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $720
|
|
line 2186
|
|
;2186: {
|
|
line 2187
|
|
;2187: G_Damage(&g_entities[targ->damageRedirectTo], inflictor, attacker, dir, point, damage, dflags, mod);
|
|
CNSTI4 828
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 820
|
|
ADDP4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 24
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_Damage
|
|
CALLV
|
|
pop
|
|
line 2188
|
|
;2188: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $720
|
|
line 2191
|
|
;2189: }
|
|
;2190:
|
|
;2191: if (!targ->takedamage) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 680
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $722
|
|
line 2192
|
|
;2192: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $722
|
|
line 2195
|
|
;2193: }
|
|
;2194:
|
|
;2195: if (targ && targ->client && targ->client->ps.duelInProgress)
|
|
ADDRLP4 44
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 48
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 48
|
|
INDIRU4
|
|
EQU4 $724
|
|
ADDRLP4 52
|
|
ADDRLP4 44
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 48
|
|
INDIRU4
|
|
EQU4 $724
|
|
ADDRLP4 52
|
|
INDIRP4
|
|
CNSTI4 1292
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $724
|
|
line 2196
|
|
;2196: {
|
|
line 2197
|
|
;2197: if (attacker && attacker->client && attacker->s.number != targ->client->ps.duelIndex)
|
|
ADDRLP4 56
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 60
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 60
|
|
INDIRU4
|
|
EQU4 $726
|
|
ADDRLP4 64
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 60
|
|
INDIRU4
|
|
EQU4 $726
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 64
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1284
|
|
ADDP4
|
|
INDIRI4
|
|
EQI4 $726
|
|
line 2198
|
|
;2198: {
|
|
line 2199
|
|
;2199: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $726
|
|
line 2201
|
|
;2200: }
|
|
;2201: else if (attacker && attacker->client && mod != MOD_SABER)
|
|
ADDRLP4 68
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 72
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $728
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $728
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
CNSTI4 3
|
|
EQI4 $728
|
|
line 2202
|
|
;2202: {
|
|
line 2203
|
|
;2203: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $728
|
|
line 2205
|
|
;2204: }
|
|
;2205: }
|
|
LABELV $724
|
|
line 2206
|
|
;2206: if (attacker && attacker->client && attacker->client->ps.duelInProgress)
|
|
ADDRLP4 56
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 60
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 60
|
|
INDIRU4
|
|
EQU4 $730
|
|
ADDRLP4 64
|
|
ADDRLP4 56
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 64
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 60
|
|
INDIRU4
|
|
EQU4 $730
|
|
ADDRLP4 64
|
|
INDIRP4
|
|
CNSTI4 1292
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $730
|
|
line 2207
|
|
;2207: {
|
|
line 2208
|
|
;2208: if (targ && targ->client && targ->s.number != attacker->client->ps.duelIndex)
|
|
ADDRLP4 68
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 72
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $732
|
|
ADDRLP4 76
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $732
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 76
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1284
|
|
ADDP4
|
|
INDIRI4
|
|
EQI4 $732
|
|
line 2209
|
|
;2209: {
|
|
line 2210
|
|
;2210: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $732
|
|
line 2212
|
|
;2211: }
|
|
;2212: else if (targ && targ->client && mod != MOD_SABER)
|
|
ADDRLP4 80
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 84
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 80
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 84
|
|
INDIRU4
|
|
EQU4 $734
|
|
ADDRLP4 80
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 84
|
|
INDIRU4
|
|
EQU4 $734
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
CNSTI4 3
|
|
EQI4 $734
|
|
line 2213
|
|
;2213: {
|
|
line 2214
|
|
;2214: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $734
|
|
line 2216
|
|
;2215: }
|
|
;2216: }
|
|
LABELV $730
|
|
line 2218
|
|
;2217:
|
|
;2218: if (targ && targ->client && (targ->client->ps.fd.forcePowersActive & (1 << FP_RAGE)))
|
|
ADDRLP4 68
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 72
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $736
|
|
ADDRLP4 76
|
|
ADDRLP4 68
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 72
|
|
INDIRU4
|
|
EQU4 $736
|
|
ADDRLP4 76
|
|
INDIRP4
|
|
CNSTI4 836
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 256
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $736
|
|
line 2219
|
|
;2219: {
|
|
line 2220
|
|
;2220: damage *= 0.5;
|
|
ADDRFP4 20
|
|
CNSTF4 1056964608
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 2221
|
|
;2221: }
|
|
LABELV $736
|
|
line 2225
|
|
;2222:
|
|
;2223: // the intermission has allready been qualified for, so don't
|
|
;2224: // allow any extra scoring
|
|
;2225: if ( level.intermissionQueued ) {
|
|
ADDRGP4 level+9004
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $738
|
|
line 2226
|
|
;2226: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $738
|
|
line 2228
|
|
;2227: }
|
|
;2228: if ( !inflictor ) {
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $741
|
|
line 2229
|
|
;2229: inflictor = &g_entities[ENTITYNUM_WORLD];
|
|
ADDRFP4 4
|
|
ADDRGP4 g_entities+846216
|
|
ASGNP4
|
|
line 2230
|
|
;2230: }
|
|
LABELV $741
|
|
line 2231
|
|
;2231: if ( !attacker ) {
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $744
|
|
line 2232
|
|
;2232: attacker = &g_entities[ENTITYNUM_WORLD];
|
|
ADDRFP4 8
|
|
ADDRGP4 g_entities+846216
|
|
ASGNP4
|
|
line 2233
|
|
;2233: }
|
|
LABELV $744
|
|
line 2238
|
|
;2234:
|
|
;2235: // shootable doors / buttons don't actually have any health
|
|
;2236:
|
|
;2237: //if boltpoint4 == 1 then it's glass or a breakable and those do have health
|
|
;2238: if ( targ->s.eType == ET_MOVER && targ->boltpoint4 != 1 ) {
|
|
ADDRLP4 80
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 80
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 6
|
|
NEI4 $747
|
|
ADDRLP4 80
|
|
INDIRP4
|
|
CNSTI4 780
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
EQI4 $747
|
|
line 2239
|
|
;2239: if ( targ->use && targ->moverState == MOVER_POS1 ) {
|
|
ADDRLP4 84
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 84
|
|
INDIRP4
|
|
CNSTI4 652
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $719
|
|
ADDRLP4 84
|
|
INDIRP4
|
|
CNSTI4 512
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $719
|
|
line 2240
|
|
;2240: targ->use( targ, inflictor, attacker );
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
CNSTI4 652
|
|
ADDP4
|
|
INDIRP4
|
|
CALLV
|
|
pop
|
|
line 2241
|
|
;2241: }
|
|
line 2242
|
|
;2242: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $747
|
|
line 2246
|
|
;2243: }
|
|
;2244: // reduce damage by the attacker's handicap value
|
|
;2245: // unless they are rocket jumping
|
|
;2246: if ( attacker->client && attacker != targ ) {
|
|
ADDRLP4 84
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 84
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $751
|
|
ADDRLP4 84
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $751
|
|
line 2247
|
|
;2247: max = attacker->client->ps.stats[STAT_MAX_HEALTH];
|
|
ADDRLP4 36
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 248
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2248
|
|
;2248: damage = damage * max / 100;
|
|
ADDRFP4 20
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
ADDRLP4 36
|
|
INDIRI4
|
|
MULI4
|
|
CNSTI4 100
|
|
DIVI4
|
|
ASGNI4
|
|
line 2249
|
|
;2249: }
|
|
LABELV $751
|
|
line 2251
|
|
;2250:
|
|
;2251: client = targ->client;
|
|
ADDRLP4 0
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
line 2253
|
|
;2252:
|
|
;2253: if ( client ) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $753
|
|
line 2254
|
|
;2254: if ( client->noclip ) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1576
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $755
|
|
line 2255
|
|
;2255: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $755
|
|
line 2257
|
|
;2256: }
|
|
;2257: }
|
|
LABELV $753
|
|
line 2259
|
|
;2258:
|
|
;2259: if ( !dir ) {
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
NEU4 $757
|
|
line 2260
|
|
;2260: dflags |= DAMAGE_NO_KNOCKBACK;
|
|
ADDRFP4 24
|
|
ADDRFP4 24
|
|
INDIRI4
|
|
CNSTI4 4
|
|
BORI4
|
|
ASGNI4
|
|
line 2261
|
|
;2261: } else {
|
|
ADDRGP4 $758
|
|
JUMPV
|
|
LABELV $757
|
|
line 2262
|
|
;2262: VectorNormalize(dir);
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 VectorNormalize
|
|
CALLF4
|
|
pop
|
|
line 2263
|
|
;2263: }
|
|
LABELV $758
|
|
line 2265
|
|
;2264:
|
|
;2265: knockback = damage;
|
|
ADDRLP4 8
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2266
|
|
;2266: if ( knockback > 200 ) {
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CNSTI4 200
|
|
LEI4 $759
|
|
line 2267
|
|
;2267: knockback = 200;
|
|
ADDRLP4 8
|
|
CNSTI4 200
|
|
ASGNI4
|
|
line 2268
|
|
;2268: }
|
|
LABELV $759
|
|
line 2269
|
|
;2269: if ( targ->flags & FL_NO_KNOCKBACK ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2048
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $761
|
|
line 2270
|
|
;2270: knockback = 0;
|
|
ADDRLP4 8
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2271
|
|
;2271: }
|
|
LABELV $761
|
|
line 2272
|
|
;2272: if ( dflags & DAMAGE_NO_KNOCKBACK ) {
|
|
ADDRFP4 24
|
|
INDIRI4
|
|
CNSTI4 4
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $763
|
|
line 2273
|
|
;2273: knockback = 0;
|
|
ADDRLP4 8
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2274
|
|
;2274: }
|
|
LABELV $763
|
|
line 2276
|
|
;2275:
|
|
;2276: if (targ && targ->client && targ->client->ps.usingATST)
|
|
ADDRLP4 88
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 92
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 92
|
|
INDIRU4
|
|
EQU4 $765
|
|
ADDRLP4 96
|
|
ADDRLP4 88
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 96
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 92
|
|
INDIRU4
|
|
EQU4 $765
|
|
ADDRLP4 96
|
|
INDIRP4
|
|
CNSTI4 1304
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $765
|
|
line 2277
|
|
;2277: {
|
|
line 2278
|
|
;2278: knockback = 0;
|
|
ADDRLP4 8
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2279
|
|
;2279: }
|
|
LABELV $765
|
|
line 2282
|
|
;2280:
|
|
;2281: // figure momentum add, even if the damage won't be taken
|
|
;2282: if ( knockback && targ->client ) {
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $767
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $767
|
|
line 2286
|
|
;2283: vec3_t kvel;
|
|
;2284: float mass;
|
|
;2285:
|
|
;2286: mass = 200;
|
|
ADDRLP4 112
|
|
CNSTF4 1128792064
|
|
ASGNF4
|
|
line 2288
|
|
;2287:
|
|
;2288: VectorScale (dir, g_knockback.value * (float)knockback / mass, kvel);
|
|
ADDRLP4 116
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 120
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
ADDRLP4 124
|
|
ADDRLP4 112
|
|
INDIRF4
|
|
ASGNF4
|
|
ADDRLP4 100
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRLP4 120
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 124
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 100+4
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRLP4 120
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 124
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 100+8
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRGP4 g_knockback+8
|
|
INDIRF4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
ADDRLP4 112
|
|
INDIRF4
|
|
DIVF4
|
|
MULF4
|
|
ASGNF4
|
|
line 2289
|
|
;2289: VectorAdd (targ->client->ps.velocity, kvel, targ->client->ps.velocity);
|
|
ADDRLP4 128
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 32
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
ADDRLP4 128
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 100
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 132
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 36
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 100+4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 136
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 40
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
INDIRF4
|
|
ADDRLP4 100+8
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 2291
|
|
;2290:
|
|
;2291: if (attacker && attacker->client && attacker != targ)
|
|
ADDRLP4 140
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 144
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 148
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 144
|
|
INDIRU4
|
|
ADDRLP4 148
|
|
INDIRU4
|
|
EQU4 $776
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 148
|
|
INDIRU4
|
|
EQU4 $776
|
|
ADDRLP4 144
|
|
INDIRU4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $776
|
|
line 2292
|
|
;2292: {
|
|
line 2293
|
|
;2293: targ->client->ps.otherKiller = attacker->s.number;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 748
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2294
|
|
;2294: targ->client->ps.otherKillerTime = level.time + 5000;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 752
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 5000
|
|
ADDI4
|
|
ASGNI4
|
|
line 2295
|
|
;2295: targ->client->ps.otherKillerDebounceTime = level.time + 100;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 756
|
|
ADDP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
CNSTI4 100
|
|
ADDI4
|
|
ASGNI4
|
|
line 2296
|
|
;2296: }
|
|
LABELV $776
|
|
line 2299
|
|
;2297: // set the timer so that the other client can't cancel
|
|
;2298: // out the movement immediately
|
|
;2299: if ( !targ->client->ps.pm_time ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 16
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $780
|
|
line 2302
|
|
;2300: int t;
|
|
;2301:
|
|
;2302: t = knockback * 2;
|
|
ADDRLP4 152
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
CNSTI4 1
|
|
LSHI4
|
|
ASGNI4
|
|
line 2303
|
|
;2303: if ( t < 50 ) {
|
|
ADDRLP4 152
|
|
INDIRI4
|
|
CNSTI4 50
|
|
GEI4 $782
|
|
line 2304
|
|
;2304: t = 50;
|
|
ADDRLP4 152
|
|
CNSTI4 50
|
|
ASGNI4
|
|
line 2305
|
|
;2305: }
|
|
LABELV $782
|
|
line 2306
|
|
;2306: if ( t > 200 ) {
|
|
ADDRLP4 152
|
|
INDIRI4
|
|
CNSTI4 200
|
|
LEI4 $784
|
|
line 2307
|
|
;2307: t = 200;
|
|
ADDRLP4 152
|
|
CNSTI4 200
|
|
ASGNI4
|
|
line 2308
|
|
;2308: }
|
|
LABELV $784
|
|
line 2309
|
|
;2309: targ->client->ps.pm_time = t;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 16
|
|
ADDP4
|
|
ADDRLP4 152
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2310
|
|
;2310: targ->client->ps.pm_flags |= PMF_TIME_KNOCKBACK;
|
|
ADDRLP4 156
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 12
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 156
|
|
INDIRP4
|
|
ADDRLP4 156
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 64
|
|
BORI4
|
|
ASGNI4
|
|
line 2311
|
|
;2311: }
|
|
LABELV $780
|
|
line 2312
|
|
;2312: }
|
|
LABELV $767
|
|
line 2315
|
|
;2313:
|
|
;2314: // check for completely getting out of the damage
|
|
;2315: if ( !(dflags & DAMAGE_NO_PROTECTION) ) {
|
|
ADDRFP4 24
|
|
INDIRI4
|
|
CNSTI4 8
|
|
BANDI4
|
|
CNSTI4 0
|
|
NEI4 $786
|
|
line 2319
|
|
;2316:
|
|
;2317: // if TF_NO_FRIENDLY_FIRE is set, don't do damage to the target
|
|
;2318: // if the attacker was on the same team
|
|
;2319: if ( targ != attacker && OnSameTeam (targ, attacker) ) {
|
|
ADDRLP4 100
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 104
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 104
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $788
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 104
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 108
|
|
ADDRGP4 OnSameTeam
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 108
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $788
|
|
line 2320
|
|
;2320: if ( !g_friendlyFire.integer ) {
|
|
ADDRGP4 g_friendlyFire+12
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $790
|
|
line 2321
|
|
;2321: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $790
|
|
line 2323
|
|
;2322: }
|
|
;2323: }
|
|
LABELV $788
|
|
line 2325
|
|
;2324:
|
|
;2325: if (g_gametype.integer == GT_JEDIMASTER && !g_friendlyFire.integer &&
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $793
|
|
ADDRLP4 112
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 g_friendlyFire+12
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
NEI4 $793
|
|
ADDRLP4 116
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 120
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 124
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 120
|
|
INDIRU4
|
|
ADDRLP4 124
|
|
INDIRU4
|
|
EQU4 $793
|
|
ADDRLP4 128
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 132
|
|
ADDRLP4 116
|
|
INDIRP4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 124
|
|
INDIRU4
|
|
EQU4 $793
|
|
ADDRLP4 136
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 140
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 140
|
|
INDIRU4
|
|
ADDRLP4 124
|
|
INDIRU4
|
|
EQU4 $793
|
|
ADDRLP4 144
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 124
|
|
INDIRU4
|
|
EQU4 $793
|
|
ADDRLP4 120
|
|
INDIRU4
|
|
ADDRLP4 140
|
|
INDIRU4
|
|
EQU4 $793
|
|
ADDRLP4 148
|
|
CNSTI4 604
|
|
ASGNI4
|
|
ADDRLP4 132
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
NEI4 $793
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
NEI4 $793
|
|
ADDRLP4 152
|
|
ADDRGP4 G_ThereIsAMaster
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 152
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $793
|
|
line 2329
|
|
;2326: targ && targ->client && attacker && attacker->client &&
|
|
;2327: targ != attacker && !targ->client->ps.isJediMaster && !attacker->client->ps.isJediMaster &&
|
|
;2328: G_ThereIsAMaster())
|
|
;2329: {
|
|
line 2330
|
|
;2330: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $793
|
|
line 2333
|
|
;2331: }
|
|
;2332:
|
|
;2333: if (targ->client && targ->s.shouldtarget && targ->s.teamowner &&
|
|
ADDRLP4 156
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 160
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 164
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 156
|
|
INDIRP4
|
|
ADDRLP4 160
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 164
|
|
INDIRU4
|
|
EQU4 $797
|
|
ADDRLP4 168
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 156
|
|
INDIRP4
|
|
CNSTI4 268
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 168
|
|
INDIRI4
|
|
EQI4 $797
|
|
ADDRLP4 156
|
|
INDIRP4
|
|
CNSTI4 264
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 168
|
|
INDIRI4
|
|
EQI4 $797
|
|
ADDRLP4 172
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 172
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 164
|
|
INDIRU4
|
|
EQU4 $797
|
|
ADDRLP4 172
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 168
|
|
INDIRI4
|
|
EQI4 $797
|
|
ADDRLP4 172
|
|
INDIRP4
|
|
ADDRLP4 160
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 164
|
|
INDIRU4
|
|
EQU4 $797
|
|
ADDRLP4 176
|
|
ADDRLP4 156
|
|
INDIRP4
|
|
CNSTI4 260
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 176
|
|
INDIRI4
|
|
ADDRLP4 168
|
|
INDIRI4
|
|
LTI4 $797
|
|
ADDRLP4 176
|
|
INDIRI4
|
|
CNSTI4 32
|
|
GEI4 $797
|
|
line 2335
|
|
;2334: attacker && attacker->inuse && attacker->client && targ->s.owner >= 0 && targ->s.owner < MAX_CLIENTS)
|
|
;2335: {
|
|
line 2336
|
|
;2336: gentity_t *targown = &g_entities[targ->s.owner];
|
|
ADDRLP4 180
|
|
CNSTI4 828
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 260
|
|
ADDP4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 2338
|
|
;2337:
|
|
;2338: if (targown && targown->inuse && targown->client && OnSameTeam(targown, attacker))
|
|
ADDRLP4 184
|
|
ADDRLP4 180
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 188
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 184
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 188
|
|
INDIRU4
|
|
EQU4 $799
|
|
ADDRLP4 184
|
|
INDIRP4
|
|
CNSTI4 412
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $799
|
|
ADDRLP4 184
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 188
|
|
INDIRU4
|
|
EQU4 $799
|
|
ADDRLP4 184
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 192
|
|
ADDRGP4 OnSameTeam
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 192
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $799
|
|
line 2339
|
|
;2339: {
|
|
line 2340
|
|
;2340: if (!g_friendlyFire.integer)
|
|
ADDRGP4 g_friendlyFire+12
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $801
|
|
line 2341
|
|
;2341: {
|
|
line 2342
|
|
;2342: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $801
|
|
line 2344
|
|
;2343: }
|
|
;2344: }
|
|
LABELV $799
|
|
line 2345
|
|
;2345: }
|
|
LABELV $797
|
|
line 2348
|
|
;2346:
|
|
;2347: // check for godmode
|
|
;2348: if ( targ->flags & FL_GODMODE ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 16
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $804
|
|
line 2349
|
|
;2349: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $804
|
|
line 2352
|
|
;2350: }
|
|
;2351:
|
|
;2352: if (targ && targ->client && (targ->client->ps.eFlags & EF_INVULNERABLE) &&
|
|
ADDRLP4 180
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 184
|
|
ADDRLP4 180
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 188
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 184
|
|
INDIRU4
|
|
ADDRLP4 188
|
|
INDIRU4
|
|
EQU4 $806
|
|
ADDRLP4 192
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 196
|
|
ADDRLP4 180
|
|
INDIRP4
|
|
ADDRLP4 192
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 196
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 188
|
|
INDIRU4
|
|
EQU4 $806
|
|
ADDRLP4 196
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 67108864
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $806
|
|
ADDRLP4 200
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 204
|
|
ADDRLP4 200
|
|
INDIRP4
|
|
CVPU4 4
|
|
ASGNU4
|
|
ADDRLP4 204
|
|
INDIRU4
|
|
ADDRLP4 188
|
|
INDIRU4
|
|
EQU4 $806
|
|
ADDRLP4 200
|
|
INDIRP4
|
|
ADDRLP4 192
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 188
|
|
INDIRU4
|
|
EQU4 $806
|
|
ADDRLP4 184
|
|
INDIRU4
|
|
ADDRLP4 204
|
|
INDIRU4
|
|
EQU4 $806
|
|
line 2354
|
|
;2353: attacker && attacker->client && targ != attacker)
|
|
;2354: {
|
|
line 2355
|
|
;2355: if (targ->client->invulnerableTimer <= level.time)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1564
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
GTI4 $719
|
|
line 2356
|
|
;2356: {
|
|
line 2357
|
|
;2357: targ->client->ps.eFlags &= ~EF_INVULNERABLE;
|
|
ADDRLP4 208
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 108
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 208
|
|
INDIRP4
|
|
ADDRLP4 208
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 -67108865
|
|
BANDI4
|
|
ASGNI4
|
|
line 2358
|
|
;2358: }
|
|
line 2360
|
|
;2359: else
|
|
;2360: {
|
|
line 2361
|
|
;2361: return;
|
|
LABELV $809
|
|
line 2363
|
|
;2362: }
|
|
;2363: }
|
|
LABELV $806
|
|
line 2364
|
|
;2364: }
|
|
LABELV $786
|
|
line 2366
|
|
;2365:
|
|
;2366: if (attacker && attacker->client)
|
|
ADDRLP4 100
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 104
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 104
|
|
INDIRU4
|
|
EQU4 $811
|
|
ADDRLP4 100
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 104
|
|
INDIRU4
|
|
EQU4 $811
|
|
line 2367
|
|
;2367: {
|
|
line 2368
|
|
;2368: if (targ->teamnodmg &&
|
|
ADDRLP4 108
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 424
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 112
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 108
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
EQI4 $813
|
|
ADDRLP4 108
|
|
INDIRI4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1520
|
|
ADDP4
|
|
INDIRI4
|
|
NEI4 $813
|
|
ADDRGP4 g_ff_objectives+12
|
|
INDIRI4
|
|
ADDRLP4 112
|
|
INDIRI4
|
|
NEI4 $813
|
|
line 2371
|
|
;2369: targ->teamnodmg == attacker->client->sess.sessionTeam &&
|
|
;2370: !g_ff_objectives.integer)
|
|
;2371: {
|
|
line 2372
|
|
;2372: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $813
|
|
line 2374
|
|
;2373: }
|
|
;2374: }
|
|
LABELV $811
|
|
line 2378
|
|
;2375:
|
|
;2376: // battlesuit protects from all radius damage (but takes knockback)
|
|
;2377: // and protects 50% against all damage
|
|
;2378: if ( client && client->ps.powerups[PW_BATTLESUIT] ) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $816
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 352
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $816
|
|
line 2379
|
|
;2379: G_AddEvent( targ, EV_POWERUP_BATTLESUIT, 0 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTI4 83
|
|
ARGI4
|
|
CNSTI4 0
|
|
ARGI4
|
|
ADDRGP4 G_AddEvent
|
|
CALLV
|
|
pop
|
|
line 2380
|
|
;2380: if ( ( dflags & DAMAGE_RADIUS ) || ( mod == MOD_FALLING ) ) {
|
|
ADDRFP4 24
|
|
INDIRI4
|
|
CNSTI4 1
|
|
BANDI4
|
|
CNSTI4 0
|
|
NEI4 $820
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
CNSTI4 34
|
|
NEI4 $818
|
|
LABELV $820
|
|
line 2381
|
|
;2381: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $818
|
|
line 2383
|
|
;2382: }
|
|
;2383: damage *= 0.5;
|
|
ADDRFP4 20
|
|
CNSTF4 1056964608
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 2384
|
|
;2384: }
|
|
LABELV $816
|
|
line 2387
|
|
;2385:
|
|
;2386: // add to the attacker's hit counter (if the target isn't a general entity like a prox mine)
|
|
;2387: if ( attacker->client && targ != attacker && targ->health > 0
|
|
ADDRLP4 112
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 116
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 116
|
|
INDIRU4
|
|
EQU4 $821
|
|
ADDRLP4 120
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 112
|
|
INDIRP4
|
|
CVPU4 4
|
|
EQU4 $821
|
|
ADDRLP4 124
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
LEI4 $821
|
|
ADDRLP4 128
|
|
ADDRLP4 120
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
CNSTI4 3
|
|
EQI4 $821
|
|
ADDRLP4 128
|
|
INDIRI4
|
|
ADDRLP4 124
|
|
INDIRI4
|
|
EQI4 $821
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 116
|
|
INDIRU4
|
|
EQU4 $821
|
|
line 2390
|
|
;2388: && targ->s.eType != ET_MISSILE
|
|
;2389: && targ->s.eType != ET_GENERAL
|
|
;2390: && client) {
|
|
line 2391
|
|
;2391: if ( OnSameTeam( targ, attacker ) ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 132
|
|
ADDRGP4 OnSameTeam
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 132
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $823
|
|
line 2392
|
|
;2392: attacker->client->ps.persistant[PERS_HITS]--;
|
|
ADDRLP4 136
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 284
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
SUBI4
|
|
ASGNI4
|
|
line 2393
|
|
;2393: } else {
|
|
ADDRGP4 $824
|
|
JUMPV
|
|
LABELV $823
|
|
line 2394
|
|
;2394: attacker->client->ps.persistant[PERS_HITS]++;
|
|
ADDRLP4 136
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 284
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
ADDRLP4 136
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
line 2395
|
|
;2395: }
|
|
LABELV $824
|
|
line 2396
|
|
;2396: attacker->client->ps.persistant[PERS_ATTACKEE_ARMOR] = (targ->health<<8)|(client->ps.stats[STAT_ARMOR]);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 308
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 8
|
|
LSHI4
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 236
|
|
ADDP4
|
|
INDIRI4
|
|
BORI4
|
|
ASGNI4
|
|
line 2397
|
|
;2397: }
|
|
LABELV $821
|
|
line 2401
|
|
;2398:
|
|
;2399: // always give half damage if hurting self
|
|
;2400: // calculated after knockback, so rocket jumping works
|
|
;2401: if ( targ == attacker) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
NEU4 $825
|
|
line 2402
|
|
;2402: damage *= 0.5;
|
|
ADDRFP4 20
|
|
CNSTF4 1056964608
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
CVIF4 4
|
|
MULF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 2403
|
|
;2403: }
|
|
LABELV $825
|
|
line 2405
|
|
;2404:
|
|
;2405: if ( damage < 1 ) {
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
CNSTI4 1
|
|
GEI4 $827
|
|
line 2406
|
|
;2406: damage = 1;
|
|
ADDRFP4 20
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 2407
|
|
;2407: }
|
|
LABELV $827
|
|
line 2408
|
|
;2408: take = damage;
|
|
ADDRLP4 4
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2409
|
|
;2409: save = 0;
|
|
ADDRLP4 32
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2412
|
|
;2410:
|
|
;2411: // save some from armor
|
|
;2412: asave = CheckArmor (targ, take, dflags);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 24
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 132
|
|
ADDRGP4 CheckArmor
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 12
|
|
ADDRLP4 132
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2414
|
|
;2413:
|
|
;2414: if (asave)
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $829
|
|
line 2415
|
|
;2415: {
|
|
line 2416
|
|
;2416: shieldAbsorbed = asave;
|
|
ADDRLP4 16
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
CVIF4 4
|
|
ASGNF4
|
|
line 2417
|
|
;2417: }
|
|
LABELV $829
|
|
line 2419
|
|
;2418:
|
|
;2419: take -= asave;
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 2421
|
|
;2420:
|
|
;2421: if (mod == MOD_DEMP2 || mod == MOD_DEMP2_ALT)
|
|
ADDRLP4 136
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 136
|
|
INDIRI4
|
|
CNSTI4 14
|
|
EQI4 $833
|
|
ADDRLP4 136
|
|
INDIRI4
|
|
CNSTI4 15
|
|
NEI4 $831
|
|
LABELV $833
|
|
line 2422
|
|
;2422: { //demp2 does full damage to shields, but only 1/3 normal damage to health
|
|
line 2423
|
|
;2423: if (take > 0)
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
LEI4 $834
|
|
line 2424
|
|
;2424: {
|
|
line 2425
|
|
;2425: take /= 3;
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 3
|
|
DIVI4
|
|
ASGNI4
|
|
line 2426
|
|
;2426: if (take < 1)
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
GEI4 $836
|
|
line 2427
|
|
;2427: {
|
|
line 2428
|
|
;2428: take = 1;
|
|
ADDRLP4 4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 2429
|
|
;2429: }
|
|
LABELV $836
|
|
line 2430
|
|
;2430: }
|
|
LABELV $834
|
|
line 2431
|
|
;2431: }
|
|
LABELV $831
|
|
line 2433
|
|
;2432:
|
|
;2433: if ( g_debugDamage.integer ) {
|
|
ADDRGP4 g_debugDamage+12
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $838
|
|
line 2434
|
|
;2434: G_Printf( "%i: client:%i health:%i damage:%i armor:%i\n", level.time, targ->s.number,
|
|
ADDRGP4 $841
|
|
ARGP4
|
|
ADDRGP4 level+32
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 140
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_Printf
|
|
CALLV
|
|
pop
|
|
line 2436
|
|
;2435: targ->health, take, asave );
|
|
;2436: }
|
|
LABELV $838
|
|
line 2441
|
|
;2437:
|
|
;2438: // add to the damage inflicted on a player this frame
|
|
;2439: // the total will be turned into screen blends and view angle kicks
|
|
;2440: // at the end of the frame
|
|
;2441: if ( client ) {
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $843
|
|
line 2442
|
|
;2442: if ( attacker ) {
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $845
|
|
line 2443
|
|
;2443: client->ps.persistant[PERS_ATTACKER] = attacker->s.number;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2444
|
|
;2444: } else {
|
|
ADDRGP4 $846
|
|
JUMPV
|
|
LABELV $845
|
|
line 2445
|
|
;2445: client->ps.persistant[PERS_ATTACKER] = ENTITYNUM_WORLD;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
CNSTI4 1022
|
|
ASGNI4
|
|
line 2446
|
|
;2446: }
|
|
LABELV $846
|
|
line 2447
|
|
;2447: client->damage_armor += asave;
|
|
ADDRLP4 140
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1608
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
ADDRLP4 140
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRLP4 12
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 2448
|
|
;2448: client->damage_blood += take;
|
|
ADDRLP4 144
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1612
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 2449
|
|
;2449: client->damage_knockback += knockback;
|
|
ADDRLP4 148
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1616
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRLP4 8
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 2450
|
|
;2450: if ( dir ) {
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $847
|
|
line 2451
|
|
;2451: VectorCopy ( dir, client->damage_from );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1620
|
|
ADDP4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2452
|
|
;2452: client->damage_fromWorld = qfalse;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1632
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2453
|
|
;2453: } else {
|
|
ADDRGP4 $848
|
|
JUMPV
|
|
LABELV $847
|
|
line 2454
|
|
;2454: VectorCopy ( targ->r.currentOrigin, client->damage_from );
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1620
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2455
|
|
;2455: client->damage_fromWorld = qtrue;
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CNSTI4 1632
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 2456
|
|
;2456: }
|
|
LABELV $848
|
|
line 2458
|
|
;2457:
|
|
;2458: if (attacker && attacker->client)
|
|
ADDRLP4 152
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 156
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 156
|
|
INDIRU4
|
|
EQU4 $849
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 156
|
|
INDIRU4
|
|
EQU4 $849
|
|
line 2459
|
|
;2459: {
|
|
line 2460
|
|
;2460: BotDamageNotification(client, attacker);
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 BotDamageNotification
|
|
CALLV
|
|
pop
|
|
line 2461
|
|
;2461: }
|
|
ADDRGP4 $850
|
|
JUMPV
|
|
LABELV $849
|
|
line 2462
|
|
;2462: else if (inflictor && inflictor->client)
|
|
ADDRLP4 160
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 164
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 160
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 164
|
|
INDIRU4
|
|
EQU4 $851
|
|
ADDRLP4 160
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 164
|
|
INDIRU4
|
|
EQU4 $851
|
|
line 2463
|
|
;2463: {
|
|
line 2464
|
|
;2464: BotDamageNotification(client, inflictor);
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 BotDamageNotification
|
|
CALLV
|
|
pop
|
|
line 2465
|
|
;2465: }
|
|
LABELV $851
|
|
LABELV $850
|
|
line 2466
|
|
;2466: }
|
|
LABELV $843
|
|
line 2469
|
|
;2467:
|
|
;2468: // See if it's the player hurting the emeny flag carrier
|
|
;2469: if( g_gametype.integer == GT_CTF || g_gametype.integer == GT_CTY) {
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 7
|
|
EQI4 $857
|
|
ADDRGP4 g_gametype+12
|
|
INDIRI4
|
|
CNSTI4 8
|
|
NEI4 $853
|
|
LABELV $857
|
|
line 2470
|
|
;2470: Team_CheckHurtCarrier(targ, attacker);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRGP4 Team_CheckHurtCarrier
|
|
CALLV
|
|
pop
|
|
line 2471
|
|
;2471: }
|
|
LABELV $853
|
|
line 2473
|
|
;2472:
|
|
;2473: if (targ->client) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $858
|
|
line 2475
|
|
;2474: // set the last client who damaged the target
|
|
;2475: targ->client->lasthurt_client = attacker->s.number;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1664
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2476
|
|
;2476: targ->client->lasthurt_mod = mod;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 1668
|
|
ADDP4
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2477
|
|
;2477: }
|
|
LABELV $858
|
|
line 2479
|
|
;2478:
|
|
;2479: if (take && targ->client && (targ->client->ps.fd.forcePowersActive & (1 << FP_PROTECT)))
|
|
ADDRLP4 140
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRLP4 140
|
|
INDIRI4
|
|
EQI4 $860
|
|
ADDRLP4 144
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $860
|
|
ADDRLP4 144
|
|
INDIRP4
|
|
CNSTI4 836
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 512
|
|
BANDI4
|
|
ADDRLP4 140
|
|
INDIRI4
|
|
EQI4 $860
|
|
line 2480
|
|
;2480: {
|
|
line 2481
|
|
;2481: if (targ->client->ps.fd.forcePower)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 920
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $862
|
|
line 2482
|
|
;2482: {
|
|
line 2483
|
|
;2483: int maxtake = take;
|
|
ADDRLP4 148
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2486
|
|
;2484:
|
|
;2485: //G_Sound(targ, CHAN_AUTO, protectHitSound);
|
|
;2486: G_PreDefSound(targ->client->ps.origin, PDSOUND_PROTECTHIT);
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 20
|
|
ADDP4
|
|
ARGP4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 G_PreDefSound
|
|
CALLV
|
|
pop
|
|
line 2488
|
|
;2487:
|
|
;2488: if (targ->client->ps.fd.forcePowerLevel[FP_PROTECT] == FORCE_LEVEL_1)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 968
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
NEI4 $864
|
|
line 2489
|
|
;2489: {
|
|
line 2490
|
|
;2490: famt = 1;
|
|
ADDRLP4 24
|
|
CNSTF4 1065353216
|
|
ASGNF4
|
|
line 2491
|
|
;2491: hamt = 0.40;
|
|
ADDRLP4 28
|
|
CNSTF4 1053609165
|
|
ASGNF4
|
|
line 2493
|
|
;2492:
|
|
;2493: if (maxtake > 100)
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
CNSTI4 100
|
|
LEI4 $865
|
|
line 2494
|
|
;2494: {
|
|
line 2495
|
|
;2495: maxtake = 100;
|
|
ADDRLP4 148
|
|
CNSTI4 100
|
|
ASGNI4
|
|
line 2496
|
|
;2496: }
|
|
line 2497
|
|
;2497: }
|
|
ADDRGP4 $865
|
|
JUMPV
|
|
LABELV $864
|
|
line 2498
|
|
;2498: else if (targ->client->ps.fd.forcePowerLevel[FP_PROTECT] == FORCE_LEVEL_2)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 968
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 2
|
|
NEI4 $868
|
|
line 2499
|
|
;2499: {
|
|
line 2500
|
|
;2500: famt = 0.5;
|
|
ADDRLP4 24
|
|
CNSTF4 1056964608
|
|
ASGNF4
|
|
line 2501
|
|
;2501: hamt = 0.60;
|
|
ADDRLP4 28
|
|
CNSTF4 1058642330
|
|
ASGNF4
|
|
line 2503
|
|
;2502:
|
|
;2503: if (maxtake > 200)
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
CNSTI4 200
|
|
LEI4 $869
|
|
line 2504
|
|
;2504: {
|
|
line 2505
|
|
;2505: maxtake = 200;
|
|
ADDRLP4 148
|
|
CNSTI4 200
|
|
ASGNI4
|
|
line 2506
|
|
;2506: }
|
|
line 2507
|
|
;2507: }
|
|
ADDRGP4 $869
|
|
JUMPV
|
|
LABELV $868
|
|
line 2508
|
|
;2508: else if (targ->client->ps.fd.forcePowerLevel[FP_PROTECT] == FORCE_LEVEL_3)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 968
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 3
|
|
NEI4 $872
|
|
line 2509
|
|
;2509: {
|
|
line 2510
|
|
;2510: famt = 0.25;
|
|
ADDRLP4 24
|
|
CNSTF4 1048576000
|
|
ASGNF4
|
|
line 2511
|
|
;2511: hamt = 0.80;
|
|
ADDRLP4 28
|
|
CNSTF4 1061997773
|
|
ASGNF4
|
|
line 2513
|
|
;2512:
|
|
;2513: if (maxtake > 400)
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
CNSTI4 400
|
|
LEI4 $874
|
|
line 2514
|
|
;2514: {
|
|
line 2515
|
|
;2515: maxtake = 400;
|
|
ADDRLP4 148
|
|
CNSTI4 400
|
|
ASGNI4
|
|
line 2516
|
|
;2516: }
|
|
LABELV $874
|
|
line 2517
|
|
;2517: }
|
|
LABELV $872
|
|
LABELV $869
|
|
LABELV $865
|
|
line 2519
|
|
;2518:
|
|
;2519: if (!targ->client->ps.powerups[PW_FORCE_BOON])
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 400
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $876
|
|
line 2520
|
|
;2520: {
|
|
line 2521
|
|
;2521: targ->client->ps.fd.forcePower -= maxtake*famt;
|
|
ADDRLP4 152
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 920
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDRLP4 24
|
|
INDIRF4
|
|
MULF4
|
|
SUBF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 2522
|
|
;2522: }
|
|
ADDRGP4 $877
|
|
JUMPV
|
|
LABELV $876
|
|
line 2524
|
|
;2523: else
|
|
;2524: {
|
|
line 2525
|
|
;2525: targ->client->ps.fd.forcePower -= (maxtake*famt)/2;
|
|
ADDRLP4 152
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 920
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDRLP4 24
|
|
INDIRF4
|
|
MULF4
|
|
CNSTF4 1073741824
|
|
DIVF4
|
|
SUBF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 2526
|
|
;2526: }
|
|
LABELV $877
|
|
line 2527
|
|
;2527: subamt = (maxtake*hamt)+(take-maxtake);
|
|
ADDRLP4 152
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ASGNI4
|
|
ADDRLP4 20
|
|
ADDRLP4 152
|
|
INDIRI4
|
|
CVIF4 4
|
|
ADDRLP4 28
|
|
INDIRF4
|
|
MULF4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRLP4 152
|
|
INDIRI4
|
|
SUBI4
|
|
CVIF4 4
|
|
ADDF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 2528
|
|
;2528: if (targ->client->ps.fd.forcePower < 0)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 920
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $878
|
|
line 2529
|
|
;2529: {
|
|
line 2530
|
|
;2530: subamt += targ->client->ps.fd.forcePower;
|
|
ADDRLP4 20
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 920
|
|
ADDP4
|
|
INDIRI4
|
|
ADDI4
|
|
ASGNI4
|
|
line 2531
|
|
;2531: targ->client->ps.fd.forcePower = 0;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 920
|
|
ADDP4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2532
|
|
;2532: }
|
|
LABELV $878
|
|
line 2533
|
|
;2533: if (subamt)
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $880
|
|
line 2534
|
|
;2534: {
|
|
line 2535
|
|
;2535: take -= subamt;
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 2537
|
|
;2536:
|
|
;2537: if (take < 0)
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GEI4 $882
|
|
line 2538
|
|
;2538: {
|
|
line 2539
|
|
;2539: take = 0;
|
|
ADDRLP4 4
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2540
|
|
;2540: }
|
|
LABELV $882
|
|
line 2541
|
|
;2541: }
|
|
LABELV $880
|
|
line 2542
|
|
;2542: }
|
|
LABELV $862
|
|
line 2543
|
|
;2543: }
|
|
LABELV $860
|
|
line 2545
|
|
;2544:
|
|
;2545: if (shieldAbsorbed)
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
CNSTF4 0
|
|
EQF4 $884
|
|
line 2546
|
|
;2546: {
|
|
line 2550
|
|
;2547: gentity_t *evEnt;
|
|
;2548:
|
|
;2549: // Send off an event to show a shield shell on the player, pointing in the right direction.
|
|
;2550: evEnt = G_TempEntity(vec3_origin, EV_SHIELD_HIT);
|
|
ADDRGP4 vec3_origin
|
|
ARGP4
|
|
CNSTI4 97
|
|
ARGI4
|
|
ADDRLP4 152
|
|
ADDRGP4 G_TempEntity
|
|
CALLP4
|
|
ASGNP4
|
|
ADDRLP4 148
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
ASGNP4
|
|
line 2551
|
|
;2551: evEnt->s.otherEntityNum = targ->s.number;
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
CNSTI4 184
|
|
ADDP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2552
|
|
;2552: evEnt->s.eventParm = DirToByte(dir);
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 156
|
|
ADDRGP4 DirToByte
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
CNSTI4 256
|
|
ADDP4
|
|
ADDRLP4 156
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2553
|
|
;2553: evEnt->s.time2=shieldAbsorbed;
|
|
ADDRLP4 148
|
|
INDIRP4
|
|
CNSTI4 88
|
|
ADDP4
|
|
ADDRLP4 16
|
|
INDIRF4
|
|
CVFI4 4
|
|
ASGNI4
|
|
line 2575
|
|
;2554:/*
|
|
;2555: shieldAbsorbed *= 20;
|
|
;2556:
|
|
;2557: if (shieldAbsorbed > 1500)
|
|
;2558: {
|
|
;2559: shieldAbsorbed = 1500;
|
|
;2560: }
|
|
;2561: if (shieldAbsorbed < 200)
|
|
;2562: {
|
|
;2563: shieldAbsorbed = 200;
|
|
;2564: }
|
|
;2565:
|
|
;2566: if (targ->client->ps.powerups[PW_SHIELDHIT] < (level.time + shieldAbsorbed))
|
|
;2567: {
|
|
;2568: targ->client->ps.powerups[PW_SHIELDHIT] = level.time + shieldAbsorbed;
|
|
;2569: }
|
|
;2570: //flicker for as many ms as damage was absorbed (*20)
|
|
;2571: //therefore 10 damage causes 1/5 of a seond of flickering, whereas
|
|
;2572: //a full 100 causes 2 seconds (but is reduced to 1.5 seconds due to the max)
|
|
;2573:
|
|
;2574:*/
|
|
;2575: }
|
|
LABELV $884
|
|
line 2578
|
|
;2576:
|
|
;2577: // do the damage
|
|
;2578: if (take) {
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $886
|
|
line 2579
|
|
;2579: if (targ->client && (targ->client->ps.fd.forcePowersActive & (1 << FP_RAGE)) && (inflictor->client || attacker->client))
|
|
ADDRLP4 148
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 152
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 156
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 156
|
|
INDIRU4
|
|
EQU4 $888
|
|
ADDRLP4 152
|
|
INDIRP4
|
|
CNSTI4 836
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 256
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $888
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 156
|
|
INDIRU4
|
|
NEU4 $890
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 148
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 156
|
|
INDIRU4
|
|
EQU4 $888
|
|
LABELV $890
|
|
line 2580
|
|
;2580: {
|
|
line 2581
|
|
;2581: take /= (targ->client->ps.fd.forcePowerLevel[FP_RAGE]+1);
|
|
ADDRLP4 4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 964
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
DIVI4
|
|
ASGNI4
|
|
line 2582
|
|
;2582: }
|
|
LABELV $888
|
|
line 2583
|
|
;2583: targ->health = targ->health - take;
|
|
ADDRLP4 160
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 160
|
|
INDIRP4
|
|
ADDRLP4 160
|
|
INDIRP4
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
SUBI4
|
|
ASGNI4
|
|
line 2584
|
|
;2584: if ( targ->client ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $891
|
|
line 2585
|
|
;2585: targ->client->ps.stats[STAT_HEALTH] = targ->health;
|
|
ADDRLP4 164
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 164
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 216
|
|
ADDP4
|
|
ADDRLP4 164
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2586
|
|
;2586: }
|
|
LABELV $891
|
|
line 2588
|
|
;2587:
|
|
;2588: if (targ->client && (targ->client->ps.fd.forcePowersActive & (1 << FP_RAGE)) && (inflictor->client || attacker->client))
|
|
ADDRLP4 164
|
|
CNSTI4 408
|
|
ASGNI4
|
|
ADDRLP4 168
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDRLP4 164
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 172
|
|
CNSTU4 0
|
|
ASGNU4
|
|
ADDRLP4 168
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 172
|
|
INDIRU4
|
|
EQU4 $893
|
|
ADDRLP4 168
|
|
INDIRP4
|
|
CNSTI4 836
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 256
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $893
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ADDRLP4 164
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 172
|
|
INDIRU4
|
|
NEU4 $895
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ADDRLP4 164
|
|
INDIRI4
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRLP4 172
|
|
INDIRU4
|
|
EQU4 $893
|
|
LABELV $895
|
|
line 2589
|
|
;2589: {
|
|
line 2590
|
|
;2590: if (targ->health <= 0)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GTI4 $896
|
|
line 2591
|
|
;2591: {
|
|
line 2592
|
|
;2592: targ->health = 1;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 2593
|
|
;2593: }
|
|
LABELV $896
|
|
line 2594
|
|
;2594: if (targ->client->ps.stats[STAT_HEALTH] <= 0)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 216
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GTI4 $898
|
|
line 2595
|
|
;2595: {
|
|
line 2596
|
|
;2596: targ->client->ps.stats[STAT_HEALTH] = 1;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 216
|
|
ADDP4
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 2597
|
|
;2597: }
|
|
LABELV $898
|
|
line 2598
|
|
;2598: }
|
|
LABELV $893
|
|
line 2600
|
|
;2599:
|
|
;2600: if ( targ->health <= 0 ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
GTI4 $900
|
|
line 2601
|
|
;2601: if ( client )
|
|
ADDRLP4 0
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $902
|
|
line 2602
|
|
;2602: {
|
|
line 2603
|
|
;2603: targ->flags |= FL_NO_KNOCKBACK;
|
|
ADDRLP4 176
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 472
|
|
ADDP4
|
|
ASGNP4
|
|
ADDRLP4 176
|
|
INDIRP4
|
|
ADDRLP4 176
|
|
INDIRP4
|
|
INDIRI4
|
|
CNSTI4 2048
|
|
BORI4
|
|
ASGNI4
|
|
line 2605
|
|
;2604:
|
|
;2605: if (point)
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $904
|
|
line 2606
|
|
;2606: {
|
|
line 2607
|
|
;2607: VectorCopy( point, targ->pos1 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 548
|
|
ADDP4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2608
|
|
;2608: }
|
|
ADDRGP4 $905
|
|
JUMPV
|
|
LABELV $904
|
|
line 2610
|
|
;2609: else
|
|
;2610: {
|
|
line 2611
|
|
;2611: VectorCopy(targ->client->ps.origin, targ->pos1);
|
|
ADDRLP4 180
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 180
|
|
INDIRP4
|
|
CNSTI4 548
|
|
ADDP4
|
|
ADDRLP4 180
|
|
INDIRP4
|
|
CNSTI4 408
|
|
ADDP4
|
|
INDIRP4
|
|
CNSTI4 20
|
|
ADDP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2612
|
|
;2612: }
|
|
LABELV $905
|
|
line 2613
|
|
;2613: }
|
|
LABELV $902
|
|
line 2615
|
|
;2614:
|
|
;2615: if (targ->health < -999)
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 -999
|
|
GEI4 $906
|
|
line 2616
|
|
;2616: targ->health = -999;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 676
|
|
ADDP4
|
|
CNSTI4 -999
|
|
ASGNI4
|
|
LABELV $906
|
|
line 2619
|
|
;2617:
|
|
;2618: // If we are a breaking glass brush, store the damage point so we can do cool things with it.
|
|
;2619: if ( targ->r.svFlags & SVF_GLASS_BRUSH )
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 304
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 134217728
|
|
BANDI4
|
|
CNSTI4 0
|
|
EQI4 $908
|
|
line 2620
|
|
;2620: {
|
|
line 2621
|
|
;2621: VectorCopy( point, targ->pos1 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 548
|
|
ADDP4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2622
|
|
;2622: VectorCopy( dir, targ->pos2 );
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 560
|
|
ADDP4
|
|
ADDRFP4 12
|
|
INDIRP4
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2623
|
|
;2623: }
|
|
LABELV $908
|
|
line 2625
|
|
;2624:
|
|
;2625: targ->enemy = attacker;
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 728
|
|
ADDP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ASGNP4
|
|
line 2626
|
|
;2626: targ->die (targ, inflictor, attacker, take, mod);
|
|
ADDRLP4 176
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 176
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 176
|
|
INDIRP4
|
|
CNSTI4 660
|
|
ADDP4
|
|
INDIRP4
|
|
CALLV
|
|
pop
|
|
line 2627
|
|
;2627: return;
|
|
ADDRGP4 $719
|
|
JUMPV
|
|
LABELV $900
|
|
line 2628
|
|
;2628: } else if ( targ->pain ) {
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 656
|
|
ADDP4
|
|
INDIRP4
|
|
CVPU4 4
|
|
CNSTU4 0
|
|
EQU4 $910
|
|
line 2629
|
|
;2629: targ->pain (targ, attacker, take);
|
|
ADDRLP4 176
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 176
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 176
|
|
INDIRP4
|
|
CNSTI4 656
|
|
ADDP4
|
|
INDIRP4
|
|
CALLV
|
|
pop
|
|
line 2630
|
|
;2630: }
|
|
LABELV $910
|
|
line 2632
|
|
;2631:
|
|
;2632: G_LogWeaponDamage(attacker->s.number, mod, take);
|
|
ADDRFP4 8
|
|
INDIRP4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRFP4 28
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRLP4 4
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_LogWeaponDamage
|
|
CALLV
|
|
pop
|
|
line 2633
|
|
;2633: }
|
|
LABELV $886
|
|
line 2635
|
|
;2634:
|
|
;2635:}
|
|
LABELV $719
|
|
endproc G_Damage 212 32
|
|
export CanDamage
|
|
proc CanDamage 1136 28
|
|
line 2646
|
|
;2636:
|
|
;2637:
|
|
;2638:/*
|
|
;2639:============
|
|
;2640:CanDamage
|
|
;2641:
|
|
;2642:Returns qtrue if the inflictor can directly damage the target. Used for
|
|
;2643:explosions and melee attacks.
|
|
;2644:============
|
|
;2645:*/
|
|
;2646:qboolean CanDamage (gentity_t *targ, vec3_t origin) {
|
|
line 2653
|
|
;2647: vec3_t dest;
|
|
;2648: trace_t tr;
|
|
;2649: vec3_t midpoint;
|
|
;2650:
|
|
;2651: // use the midpoint of the bounds instead of the origin, because
|
|
;2652: // bmodels may have their origin is 0,0,0
|
|
;2653: VectorAdd (targ->r.absmin, targ->r.absmax, midpoint);
|
|
ADDRLP4 1104
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12
|
|
ADDRLP4 1104
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 1104
|
|
INDIRP4
|
|
CNSTI4 356
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 12+4
|
|
ADDRLP4 1104
|
|
INDIRP4
|
|
CNSTI4 348
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 1104
|
|
INDIRP4
|
|
CNSTI4 360
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
ADDRLP4 1108
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 12+8
|
|
ADDRLP4 1108
|
|
INDIRP4
|
|
CNSTI4 352
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 1108
|
|
INDIRP4
|
|
CNSTI4 364
|
|
ADDP4
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 2654
|
|
;2654: VectorScale (midpoint, 0.5, midpoint);
|
|
ADDRLP4 1112
|
|
CNSTF4 1056964608
|
|
ASGNF4
|
|
ADDRLP4 12
|
|
ADDRLP4 1112
|
|
INDIRF4
|
|
ADDRLP4 12
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 12+4
|
|
ADDRLP4 1112
|
|
INDIRF4
|
|
ADDRLP4 12+4
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
ADDRLP4 12+8
|
|
CNSTF4 1056964608
|
|
ADDRLP4 12+8
|
|
INDIRF4
|
|
MULF4
|
|
ASGNF4
|
|
line 2656
|
|
;2655:
|
|
;2656: VectorCopy (midpoint, dest);
|
|
ADDRLP4 0
|
|
ADDRLP4 12
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2657
|
|
;2657: trap_Trace ( &tr, origin, vec3_origin, vec3_origin, dest, ENTITYNUM_NONE, MASK_SOLID);
|
|
ADDRLP4 24
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1116
|
|
ADDRGP4 vec3_origin
|
|
ASGNP4
|
|
ADDRLP4 1116
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1116
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
ARGP4
|
|
CNSTI4 1023
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 trap_Trace
|
|
CALLV
|
|
pop
|
|
line 2658
|
|
;2658: if (tr.fraction == 1.0 || tr.entityNum == targ->s.number)
|
|
ADDRLP4 24+8
|
|
INDIRF4
|
|
CNSTF4 1065353216
|
|
EQF4 $923
|
|
ADDRLP4 24+52
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
INDIRI4
|
|
NEI4 $919
|
|
LABELV $923
|
|
line 2659
|
|
;2659: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $912
|
|
JUMPV
|
|
LABELV $919
|
|
line 2663
|
|
;2660:
|
|
;2661: // this should probably check in the plane of projection,
|
|
;2662: // rather than in world coordinate, and also include Z
|
|
;2663: VectorCopy (midpoint, dest);
|
|
ADDRLP4 0
|
|
ADDRLP4 12
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2664
|
|
;2664: dest[0] += 15.0;
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
ADDF4
|
|
ASGNF4
|
|
line 2665
|
|
;2665: dest[1] += 15.0;
|
|
ADDRLP4 0+4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
ADDF4
|
|
ASGNF4
|
|
line 2666
|
|
;2666: trap_Trace ( &tr, origin, vec3_origin, vec3_origin, dest, ENTITYNUM_NONE, MASK_SOLID);
|
|
ADDRLP4 24
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1120
|
|
ADDRGP4 vec3_origin
|
|
ASGNP4
|
|
ADDRLP4 1120
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1120
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
ARGP4
|
|
CNSTI4 1023
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 trap_Trace
|
|
CALLV
|
|
pop
|
|
line 2667
|
|
;2667: if (tr.fraction == 1.0)
|
|
ADDRLP4 24+8
|
|
INDIRF4
|
|
CNSTF4 1065353216
|
|
NEF4 $925
|
|
line 2668
|
|
;2668: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $912
|
|
JUMPV
|
|
LABELV $925
|
|
line 2670
|
|
;2669:
|
|
;2670: VectorCopy (midpoint, dest);
|
|
ADDRLP4 0
|
|
ADDRLP4 12
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2671
|
|
;2671: dest[0] += 15.0;
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
ADDF4
|
|
ASGNF4
|
|
line 2672
|
|
;2672: dest[1] -= 15.0;
|
|
ADDRLP4 0+4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
SUBF4
|
|
ASGNF4
|
|
line 2673
|
|
;2673: trap_Trace ( &tr, origin, vec3_origin, vec3_origin, dest, ENTITYNUM_NONE, MASK_SOLID);
|
|
ADDRLP4 24
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1124
|
|
ADDRGP4 vec3_origin
|
|
ASGNP4
|
|
ADDRLP4 1124
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1124
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
ARGP4
|
|
CNSTI4 1023
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 trap_Trace
|
|
CALLV
|
|
pop
|
|
line 2674
|
|
;2674: if (tr.fraction == 1.0)
|
|
ADDRLP4 24+8
|
|
INDIRF4
|
|
CNSTF4 1065353216
|
|
NEF4 $929
|
|
line 2675
|
|
;2675: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $912
|
|
JUMPV
|
|
LABELV $929
|
|
line 2677
|
|
;2676:
|
|
;2677: VectorCopy (midpoint, dest);
|
|
ADDRLP4 0
|
|
ADDRLP4 12
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2678
|
|
;2678: dest[0] -= 15.0;
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
SUBF4
|
|
ASGNF4
|
|
line 2679
|
|
;2679: dest[1] += 15.0;
|
|
ADDRLP4 0+4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
ADDF4
|
|
ASGNF4
|
|
line 2680
|
|
;2680: trap_Trace ( &tr, origin, vec3_origin, vec3_origin, dest, ENTITYNUM_NONE, MASK_SOLID);
|
|
ADDRLP4 24
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1128
|
|
ADDRGP4 vec3_origin
|
|
ASGNP4
|
|
ADDRLP4 1128
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1128
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
ARGP4
|
|
CNSTI4 1023
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 trap_Trace
|
|
CALLV
|
|
pop
|
|
line 2681
|
|
;2681: if (tr.fraction == 1.0)
|
|
ADDRLP4 24+8
|
|
INDIRF4
|
|
CNSTF4 1065353216
|
|
NEF4 $933
|
|
line 2682
|
|
;2682: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $912
|
|
JUMPV
|
|
LABELV $933
|
|
line 2684
|
|
;2683:
|
|
;2684: VectorCopy (midpoint, dest);
|
|
ADDRLP4 0
|
|
ADDRLP4 12
|
|
INDIRB
|
|
ASGNB 12
|
|
line 2685
|
|
;2685: dest[0] -= 15.0;
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
SUBF4
|
|
ASGNF4
|
|
line 2686
|
|
;2686: dest[1] -= 15.0;
|
|
ADDRLP4 0+4
|
|
ADDRLP4 0+4
|
|
INDIRF4
|
|
CNSTF4 1097859072
|
|
SUBF4
|
|
ASGNF4
|
|
line 2687
|
|
;2687: trap_Trace ( &tr, origin, vec3_origin, vec3_origin, dest, ENTITYNUM_NONE, MASK_SOLID);
|
|
ADDRLP4 24
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1132
|
|
ADDRGP4 vec3_origin
|
|
ASGNP4
|
|
ADDRLP4 1132
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 1132
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 0
|
|
ARGP4
|
|
CNSTI4 1023
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRGP4 trap_Trace
|
|
CALLV
|
|
pop
|
|
line 2688
|
|
;2688: if (tr.fraction == 1.0)
|
|
ADDRLP4 24+8
|
|
INDIRF4
|
|
CNSTF4 1065353216
|
|
NEF4 $937
|
|
line 2689
|
|
;2689: return qtrue;
|
|
CNSTI4 1
|
|
RETI4
|
|
ADDRGP4 $912
|
|
JUMPV
|
|
LABELV $937
|
|
line 2692
|
|
;2690:
|
|
;2691:
|
|
;2692: return qfalse;
|
|
CNSTI4 0
|
|
RETI4
|
|
LABELV $912
|
|
endproc CanDamage 1136 28
|
|
export G_RadiusDamage
|
|
proc G_RadiusDamage 4196 32
|
|
line 2702
|
|
;2693:}
|
|
;2694:
|
|
;2695:
|
|
;2696:/*
|
|
;2697:============
|
|
;2698:G_RadiusDamage
|
|
;2699:============
|
|
;2700:*/
|
|
;2701:qboolean G_RadiusDamage ( vec3_t origin, gentity_t *attacker, float damage, float radius,
|
|
;2702: gentity_t *ignore, int mod) {
|
|
line 2711
|
|
;2703: float points, dist;
|
|
;2704: gentity_t *ent;
|
|
;2705: int entityList[MAX_GENTITIES];
|
|
;2706: int numListedEntities;
|
|
;2707: vec3_t mins, maxs;
|
|
;2708: vec3_t v;
|
|
;2709: vec3_t dir;
|
|
;2710: int i, e;
|
|
;2711: qboolean hitClient = qfalse;
|
|
ADDRLP4 4168
|
|
CNSTI4 0
|
|
ASGNI4
|
|
line 2713
|
|
;2712:
|
|
;2713: if ( radius < 1 ) {
|
|
ADDRFP4 12
|
|
INDIRF4
|
|
CNSTF4 1065353216
|
|
GEF4 $941
|
|
line 2714
|
|
;2714: radius = 1;
|
|
ADDRFP4 12
|
|
CNSTF4 1065353216
|
|
ASGNF4
|
|
line 2715
|
|
;2715: }
|
|
LABELV $941
|
|
line 2717
|
|
;2716:
|
|
;2717: for ( i = 0 ; i < 3 ; i++ ) {
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
LABELV $943
|
|
line 2718
|
|
;2718: mins[i] = origin[i] - radius;
|
|
ADDRLP4 4172
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ASGNI4
|
|
ADDRLP4 4172
|
|
INDIRI4
|
|
ADDRLP4 4144
|
|
ADDP4
|
|
ADDRLP4 4172
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 2719
|
|
;2719: maxs[i] = origin[i] + radius;
|
|
ADDRLP4 4176
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ASGNI4
|
|
ADDRLP4 4176
|
|
INDIRI4
|
|
ADDRLP4 4156
|
|
ADDP4
|
|
ADDRLP4 4176
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRF4
|
|
ADDF4
|
|
ASGNF4
|
|
line 2720
|
|
;2720: }
|
|
LABELV $944
|
|
line 2717
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 3
|
|
LTI4 $943
|
|
line 2722
|
|
;2721:
|
|
;2722: numListedEntities = trap_EntitiesInBox( mins, maxs, entityList, MAX_GENTITIES );
|
|
ADDRLP4 4144
|
|
ARGP4
|
|
ADDRLP4 4156
|
|
ARGP4
|
|
ADDRLP4 44
|
|
ARGP4
|
|
CNSTI4 1024
|
|
ARGI4
|
|
ADDRLP4 4172
|
|
ADDRGP4 trap_EntitiesInBox
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 4140
|
|
ADDRLP4 4172
|
|
INDIRI4
|
|
ASGNI4
|
|
line 2724
|
|
;2723:
|
|
;2724: for ( e = 0 ; e < numListedEntities ; e++ ) {
|
|
ADDRLP4 20
|
|
CNSTI4 0
|
|
ASGNI4
|
|
ADDRGP4 $950
|
|
JUMPV
|
|
LABELV $947
|
|
line 2725
|
|
;2725: ent = &g_entities[entityList[ e ]];
|
|
ADDRLP4 4
|
|
CNSTI4 828
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 44
|
|
ADDP4
|
|
INDIRI4
|
|
MULI4
|
|
ADDRGP4 g_entities
|
|
ADDP4
|
|
ASGNP4
|
|
line 2727
|
|
;2726:
|
|
;2727: if (ent == ignore)
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CVPU4 4
|
|
ADDRFP4 16
|
|
INDIRP4
|
|
CVPU4 4
|
|
NEU4 $951
|
|
line 2728
|
|
;2728: continue;
|
|
ADDRGP4 $948
|
|
JUMPV
|
|
LABELV $951
|
|
line 2729
|
|
;2729: if (!ent->takedamage)
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 680
|
|
ADDP4
|
|
INDIRI4
|
|
CNSTI4 0
|
|
NEI4 $953
|
|
line 2730
|
|
;2730: continue;
|
|
ADDRGP4 $948
|
|
JUMPV
|
|
LABELV $953
|
|
line 2733
|
|
;2731:
|
|
;2732: // find the distance from the edge of the bounding box
|
|
;2733: for ( i = 0 ; i < 3 ; i++ ) {
|
|
ADDRLP4 0
|
|
CNSTI4 0
|
|
ASGNI4
|
|
LABELV $955
|
|
line 2734
|
|
;2734: if ( origin[i] < ent->r.absmin[i] ) {
|
|
ADDRLP4 4176
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ASGNI4
|
|
ADDRLP4 4176
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4176
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRF4
|
|
GEF4 $959
|
|
line 2735
|
|
;2735: v[i] = ent->r.absmin[i] - origin[i];
|
|
ADDRLP4 4180
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ASGNI4
|
|
ADDRLP4 4180
|
|
INDIRI4
|
|
ADDRLP4 8
|
|
ADDP4
|
|
ADDRLP4 4180
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 344
|
|
ADDP4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4180
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 2736
|
|
;2736: } else if ( origin[i] > ent->r.absmax[i] ) {
|
|
ADDRGP4 $960
|
|
JUMPV
|
|
LABELV $959
|
|
ADDRLP4 4180
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ASGNI4
|
|
ADDRLP4 4180
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4180
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 356
|
|
ADDP4
|
|
ADDP4
|
|
INDIRF4
|
|
LEF4 $961
|
|
line 2737
|
|
;2737: v[i] = origin[i] - ent->r.absmax[i];
|
|
ADDRLP4 4184
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ASGNI4
|
|
ADDRLP4 4184
|
|
INDIRI4
|
|
ADDRLP4 8
|
|
ADDP4
|
|
ADDRLP4 4184
|
|
INDIRI4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4184
|
|
INDIRI4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 356
|
|
ADDP4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 2738
|
|
;2738: } else {
|
|
ADDRGP4 $962
|
|
JUMPV
|
|
LABELV $961
|
|
line 2739
|
|
;2739: v[i] = 0;
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 2
|
|
LSHI4
|
|
ADDRLP4 8
|
|
ADDP4
|
|
CNSTF4 0
|
|
ASGNF4
|
|
line 2740
|
|
;2740: }
|
|
LABELV $962
|
|
LABELV $960
|
|
line 2741
|
|
;2741: }
|
|
LABELV $956
|
|
line 2733
|
|
ADDRLP4 0
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
ADDRLP4 0
|
|
INDIRI4
|
|
CNSTI4 3
|
|
LTI4 $955
|
|
line 2743
|
|
;2742:
|
|
;2743: dist = VectorLength( v );
|
|
ADDRLP4 8
|
|
ARGP4
|
|
ADDRLP4 4176
|
|
ADDRGP4 VectorLength
|
|
CALLF4
|
|
ASGNF4
|
|
ADDRLP4 24
|
|
ADDRLP4 4176
|
|
INDIRF4
|
|
ASGNF4
|
|
line 2744
|
|
;2744: if ( dist >= radius ) {
|
|
ADDRLP4 24
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRF4
|
|
LTF4 $963
|
|
line 2745
|
|
;2745: continue;
|
|
ADDRGP4 $948
|
|
JUMPV
|
|
LABELV $963
|
|
line 2748
|
|
;2746: }
|
|
;2747:
|
|
;2748: points = damage * ( 1.0 - dist / radius );
|
|
ADDRLP4 40
|
|
ADDRFP4 8
|
|
INDIRF4
|
|
CNSTF4 1065353216
|
|
ADDRLP4 24
|
|
INDIRF4
|
|
ADDRFP4 12
|
|
INDIRF4
|
|
DIVF4
|
|
SUBF4
|
|
MULF4
|
|
ASGNF4
|
|
line 2750
|
|
;2749:
|
|
;2750: if( CanDamage (ent, origin) ) {
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 4180
|
|
ADDRGP4 CanDamage
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 4180
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $965
|
|
line 2751
|
|
;2751: if( LogAccuracyHit( ent, attacker ) ) {
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 4184
|
|
ADDRGP4 LogAccuracyHit
|
|
CALLI4
|
|
ASGNI4
|
|
ADDRLP4 4184
|
|
INDIRI4
|
|
CNSTI4 0
|
|
EQI4 $967
|
|
line 2752
|
|
;2752: hitClient = qtrue;
|
|
ADDRLP4 4168
|
|
CNSTI4 1
|
|
ASGNI4
|
|
line 2753
|
|
;2753: }
|
|
LABELV $967
|
|
line 2754
|
|
;2754: VectorSubtract (ent->r.currentOrigin, origin, dir);
|
|
ADDRLP4 4192
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ASGNP4
|
|
ADDRLP4 28
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 368
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4192
|
|
INDIRP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 28+4
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 372
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRLP4 4192
|
|
INDIRP4
|
|
CNSTI4 4
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
ADDRLP4 28+8
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
CNSTI4 376
|
|
ADDP4
|
|
INDIRF4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
CNSTI4 8
|
|
ADDP4
|
|
INDIRF4
|
|
SUBF4
|
|
ASGNF4
|
|
line 2757
|
|
;2755: // push the center of mass higher than the origin so players
|
|
;2756: // get knocked into the air more
|
|
;2757: dir[2] += 24;
|
|
ADDRLP4 28+8
|
|
ADDRLP4 28+8
|
|
INDIRF4
|
|
CNSTF4 1103101952
|
|
ADDF4
|
|
ASGNF4
|
|
line 2758
|
|
;2758: G_Damage (ent, NULL, attacker, dir, origin, (int)points, DAMAGE_RADIUS, mod);
|
|
ADDRLP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
CNSTP4 0
|
|
ARGP4
|
|
ADDRFP4 4
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 28
|
|
ARGP4
|
|
ADDRFP4 0
|
|
INDIRP4
|
|
ARGP4
|
|
ADDRLP4 40
|
|
INDIRF4
|
|
CVFI4 4
|
|
ARGI4
|
|
CNSTI4 1
|
|
ARGI4
|
|
ADDRFP4 20
|
|
INDIRI4
|
|
ARGI4
|
|
ADDRGP4 G_Damage
|
|
CALLV
|
|
pop
|
|
line 2759
|
|
;2759: }
|
|
LABELV $965
|
|
line 2760
|
|
;2760: }
|
|
LABELV $948
|
|
line 2724
|
|
ADDRLP4 20
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
CNSTI4 1
|
|
ADDI4
|
|
ASGNI4
|
|
LABELV $950
|
|
ADDRLP4 20
|
|
INDIRI4
|
|
ADDRLP4 4140
|
|
INDIRI4
|
|
LTI4 $947
|
|
line 2762
|
|
;2761:
|
|
;2762: return hitClient;
|
|
ADDRLP4 4168
|
|
INDIRI4
|
|
RETI4
|
|
LABELV $940
|
|
endproc G_RadiusDamage 4196 32
|
|
import G_G2PlayerAngles
|
|
import ThrowSaberToAttacker
|
|
import BotDamageNotification
|
|
import trap_ROFF_Purge_Ent
|
|
import trap_ROFF_Play
|
|
import trap_ROFF_Cache
|
|
import trap_ROFF_UpdateEntities
|
|
import trap_ROFF_Clean
|
|
import trap_SP_GetStringTextString
|
|
import trap_SP_Register
|
|
import trap_SP_RegisterServer
|
|
import trap_SnapVector
|
|
import trap_GeneticParentsAndChildSelection
|
|
import trap_BotResetWeaponState
|
|
import trap_BotFreeWeaponState
|
|
import trap_BotAllocWeaponState
|
|
import trap_BotLoadWeaponWeights
|
|
import trap_BotGetWeaponInfo
|
|
import trap_BotChooseBestFightWeapon
|
|
import trap_BotAddAvoidSpot
|
|
import trap_BotInitMoveState
|
|
import trap_BotFreeMoveState
|
|
import trap_BotAllocMoveState
|
|
import trap_BotPredictVisiblePosition
|
|
import trap_BotMovementViewTarget
|
|
import trap_BotReachabilityArea
|
|
import trap_BotResetLastAvoidReach
|
|
import trap_BotResetAvoidReach
|
|
import trap_BotMoveInDirection
|
|
import trap_BotMoveToGoal
|
|
import trap_BotResetMoveState
|
|
import trap_BotFreeGoalState
|
|
import trap_BotAllocGoalState
|
|
import trap_BotMutateGoalFuzzyLogic
|
|
import trap_BotSaveGoalFuzzyLogic
|
|
import trap_BotInterbreedGoalFuzzyLogic
|
|
import trap_BotFreeItemWeights
|
|
import trap_BotLoadItemWeights
|
|
import trap_BotUpdateEntityItems
|
|
import trap_BotInitLevelItems
|
|
import trap_BotSetAvoidGoalTime
|
|
import trap_BotAvoidGoalTime
|
|
import trap_BotGetLevelItemGoal
|
|
import trap_BotGetMapLocationGoal
|
|
import trap_BotGetNextCampSpotGoal
|
|
import trap_BotItemGoalInVisButNotVisible
|
|
import trap_BotTouchingGoal
|
|
import trap_BotChooseNBGItem
|
|
import trap_BotChooseLTGItem
|
|
import trap_BotGetSecondGoal
|
|
import trap_BotGetTopGoal
|
|
import trap_BotGoalName
|
|
import trap_BotDumpGoalStack
|
|
import trap_BotDumpAvoidGoals
|
|
import trap_BotEmptyGoalStack
|
|
import trap_BotPopGoal
|
|
import trap_BotPushGoal
|
|
import trap_BotResetAvoidGoals
|
|
import trap_BotRemoveFromAvoidGoals
|
|
import trap_BotResetGoalState
|
|
import trap_BotSetChatName
|
|
import trap_BotSetChatGender
|
|
import trap_BotLoadChatFile
|
|
import trap_BotReplaceSynonyms
|
|
import trap_UnifyWhiteSpaces
|
|
import trap_BotMatchVariable
|
|
import trap_BotFindMatch
|
|
import trap_StringContains
|
|
import trap_BotGetChatMessage
|
|
import trap_BotEnterChat
|
|
import trap_BotChatLength
|
|
import trap_BotReplyChat
|
|
import trap_BotNumInitialChats
|
|
import trap_BotInitialChat
|
|
import trap_BotNumConsoleMessages
|
|
import trap_BotNextConsoleMessage
|
|
import trap_BotRemoveConsoleMessage
|
|
import trap_BotQueueConsoleMessage
|
|
import trap_BotFreeChatState
|
|
import trap_BotAllocChatState
|
|
import trap_Characteristic_String
|
|
import trap_Characteristic_BInteger
|
|
import trap_Characteristic_Integer
|
|
import trap_Characteristic_BFloat
|
|
import trap_Characteristic_Float
|
|
import trap_BotFreeCharacter
|
|
import trap_BotLoadCharacter
|
|
import trap_EA_ResetInput
|
|
import trap_EA_GetInput
|
|
import trap_EA_EndRegular
|
|
import trap_EA_ForcePower
|
|
import trap_EA_Alt_Attack
|
|
import trap_EA_View
|
|
import trap_EA_Move
|
|
import trap_EA_DelayedJump
|
|
import trap_EA_Jump
|
|
import trap_EA_SelectWeapon
|
|
import trap_EA_MoveRight
|
|
import trap_EA_MoveLeft
|
|
import trap_EA_MoveBack
|
|
import trap_EA_MoveForward
|
|
import trap_EA_MoveDown
|
|
import trap_EA_MoveUp
|
|
import trap_EA_Crouch
|
|
import trap_EA_Respawn
|
|
import trap_EA_Use
|
|
import trap_EA_Attack
|
|
import trap_EA_Talk
|
|
import trap_EA_Gesture
|
|
import trap_EA_Action
|
|
import trap_EA_Command
|
|
import trap_EA_SayTeam
|
|
import trap_EA_Say
|
|
import trap_AAS_PredictClientMovement
|
|
import trap_AAS_Swimming
|
|
import trap_AAS_AlternativeRouteGoals
|
|
import trap_AAS_PredictRoute
|
|
import trap_AAS_EnableRoutingArea
|
|
import trap_AAS_AreaTravelTimeToGoalArea
|
|
import trap_AAS_AreaReachability
|
|
import trap_AAS_IntForBSPEpairKey
|
|
import trap_AAS_FloatForBSPEpairKey
|
|
import trap_AAS_VectorForBSPEpairKey
|
|
import trap_AAS_ValueForBSPEpairKey
|
|
import trap_AAS_NextBSPEntity
|
|
import trap_AAS_PointContents
|
|
import trap_AAS_TraceAreas
|
|
import trap_AAS_PointReachabilityAreaIndex
|
|
import trap_AAS_PointAreaNum
|
|
import trap_AAS_Time
|
|
import trap_AAS_PresenceTypeBoundingBox
|
|
import trap_AAS_Initialized
|
|
import trap_AAS_EntityInfo
|
|
import trap_AAS_AreaInfo
|
|
import trap_AAS_BBoxAreas
|
|
import trap_BotUserCommand
|
|
import trap_BotGetServerCommand
|
|
import trap_BotGetSnapshotEntity
|
|
import trap_BotLibTest
|
|
import trap_BotLibUpdateEntity
|
|
import trap_BotLibLoadMap
|
|
import trap_BotLibStartFrame
|
|
import trap_BotLibDefine
|
|
import trap_BotLibVarGet
|
|
import trap_BotLibVarSet
|
|
import trap_BotLibShutdown
|
|
import trap_BotLibSetup
|
|
import trap_DebugPolygonDelete
|
|
import trap_DebugPolygonCreate
|
|
import trap_GetEntityToken
|
|
import trap_GetUsercmd
|
|
import trap_BotFreeClient
|
|
import trap_BotAllocateClient
|
|
import trap_EntityContact
|
|
import trap_EntitiesInBox
|
|
import trap_UnlinkEntity
|
|
import trap_LinkEntity
|
|
import trap_AreasConnected
|
|
import trap_AdjustAreaPortalState
|
|
import trap_InPVSIgnorePortals
|
|
import trap_InPVS
|
|
import trap_PointContents
|
|
import trap_Trace
|
|
import trap_SetBrushModel
|
|
import trap_GetServerinfo
|
|
import trap_SetUserinfo
|
|
import trap_GetUserinfo
|
|
import trap_GetConfigstring
|
|
import trap_SetConfigstring
|
|
import trap_SendServerCommand
|
|
import trap_DropClient
|
|
import trap_LocateGameData
|
|
import trap_Cvar_VariableStringBuffer
|
|
import trap_Cvar_VariableValue
|
|
import trap_Cvar_VariableIntegerValue
|
|
import trap_Cvar_Set
|
|
import trap_Cvar_Update
|
|
import trap_Cvar_Register
|
|
import trap_SendConsoleCommand
|
|
import trap_FS_GetFileList
|
|
import trap_FS_FCloseFile
|
|
import trap_FS_Write
|
|
import trap_FS_Read
|
|
import trap_FS_FOpenFile
|
|
import trap_Args
|
|
import trap_Argv
|
|
import trap_Argc
|
|
import trap_Milliseconds
|
|
import trap_Error
|
|
import trap_Printf
|
|
import g_timeouttospec
|
|
import g_forceDodge
|
|
import g_dismember
|
|
import g_singlePlayer
|
|
import g_enableBreath
|
|
import g_enableDust
|
|
import g_rankings
|
|
import pmove_msec
|
|
import pmove_fixed
|
|
import g_smoothClients
|
|
import g_blueteam
|
|
import g_redteam
|
|
import g_debugUp
|
|
import g_debugRight
|
|
import g_debugForward
|
|
import g_filterBan
|
|
import g_banIPs
|
|
import g_teamForceBalance
|
|
import g_teamAutoJoin
|
|
import g_allowVote
|
|
import g_blood
|
|
import g_doWarmup
|
|
import g_warmup
|
|
import g_motd
|
|
import g_synchronousClients
|
|
import g_adaptRespawn
|
|
import g_weaponTeamRespawn
|
|
import g_weaponRespawn
|
|
import g_debugDamage
|
|
import g_debugAlloc
|
|
import g_debugMove
|
|
import g_inactivity
|
|
import g_forcerespawn
|
|
import g_quadfactor
|
|
import g_knockback
|
|
import g_speed
|
|
import g_gravity
|
|
import g_needpass
|
|
import g_password
|
|
import g_friendlySaber
|
|
import g_friendlyFire
|
|
import g_saberInterpolate
|
|
import g_capturelimit
|
|
import g_timelimit
|
|
import g_duel_fraglimit
|
|
import g_fraglimit
|
|
import g_duelWeaponDisable
|
|
import g_weaponDisable
|
|
import g_forcePowerDisable
|
|
import g_spawnInvulnerability
|
|
import g_forceRegenTime
|
|
import g_saberLocking
|
|
import g_privateDuel
|
|
import g_forceBasedTeams
|
|
import g_maxForceRank
|
|
import g_dmflags
|
|
import g_autoMapCycle
|
|
import g_restarted
|
|
import g_maxGameClients
|
|
import g_maxclients
|
|
import g_cheats
|
|
import g_dedicated
|
|
import g_gametype
|
|
import g_entities
|
|
import level
|
|
import Pickup_Team
|
|
import CheckTeamStatus
|
|
import TeamplayInfoMessage
|
|
import Team_GetLocationMsg
|
|
import Team_GetLocation
|
|
import SelectSagaSpawnPoint
|
|
import SelectCTFSpawnPoint
|
|
import Team_FreeEntity
|
|
import Team_ReturnFlag
|
|
import Team_InitGame
|
|
import Team_CheckHurtCarrier
|
|
import Team_FragBonuses
|
|
import Team_DroppedFlagThink
|
|
import AddTeamScore
|
|
import TeamColorString
|
|
import OtherTeamName
|
|
import TeamName
|
|
import OtherTeam
|
|
import BotAIStartFrame
|
|
import BotAIShutdownClient
|
|
import BotAISetupClient
|
|
import BotAILoadMap
|
|
import BotAIShutdown
|
|
import BotAISetup
|
|
import B_CleanupAlloc
|
|
import B_InitAlloc
|
|
import InFieldOfVision
|
|
import BotOrder
|
|
import OrgVisible
|
|
import InitSagaMode
|
|
import G_ClearClientLog
|
|
import G_LogExit
|
|
import G_LogWeaponOutput
|
|
import G_LogWeaponInit
|
|
import G_LogWeaponItem
|
|
import G_LogWeaponPowerup
|
|
import G_LogWeaponFrag
|
|
import G_LogWeaponDeath
|
|
import G_LogWeaponKill
|
|
import G_LogWeaponDamage
|
|
import G_LogWeaponFire
|
|
import G_LogWeaponPickup
|
|
import Jedi_DodgeEvasion
|
|
import ForceTelepathy
|
|
import ForceThrow
|
|
import ForceSeeing
|
|
import ForceTeamForceReplenish
|
|
import ForceTeamHeal
|
|
import ForceAbsorb
|
|
import ForceProtect
|
|
import ForceGrip
|
|
import ForceRage
|
|
import ForceSpeed
|
|
import ForceHeal
|
|
import ForcePowerUsableOn
|
|
import WP_ForcePowersUpdate
|
|
import WP_SpawnInitForcePowers
|
|
import WP_InitForcePowers
|
|
import WP_SaberInitBladeData
|
|
import WP_SaberCanBlock
|
|
import WP_SaberPositionUpdate
|
|
import WP_ForcePowerStop
|
|
import HasSetSaberOnly
|
|
import G_PreDefSound
|
|
import G_RefreshNextMap
|
|
import G_DoesMapSupportGametype
|
|
import BotInterbreedEndMatch
|
|
import Svcmd_BotList_f
|
|
import Svcmd_AddBot_f
|
|
import G_BotConnect
|
|
import G_RemoveQueuedBotBegin
|
|
import G_CheckBotSpawn
|
|
import G_GetBotInfoByName
|
|
import G_GetBotInfoByNumber
|
|
import G_InitBots
|
|
import UpdateTournamentInfo
|
|
import G_WriteSessionData
|
|
import G_InitWorldSession
|
|
import G_InitSessionData
|
|
import G_ReadSessionData
|
|
import Svcmd_GameMem_f
|
|
import G_InitMemory
|
|
import G_Alloc
|
|
import Team_CheckDroppedItem
|
|
import OnSameTeam
|
|
import G_RunClient
|
|
import ClientEndFrame
|
|
import ClientThink
|
|
import G_CheckClientTimeouts
|
|
import ClientCommand
|
|
import ClientBegin
|
|
import ClientDisconnect
|
|
import ClientUserinfoChanged
|
|
import ClientConnect
|
|
import G_GetStripEdString
|
|
import G_Error
|
|
import G_Printf
|
|
import SendScoreboardMessageToAllClients
|
|
import G_LogPrintf
|
|
import G_RunThink
|
|
import CheckTeamLeader
|
|
import SetLeader
|
|
import FindIntermissionPoint
|
|
import g_ff_objectives
|
|
import DeathmatchScoreboardMessage
|
|
import G_SetStats
|
|
import MoveClientToIntermission
|
|
import BlowDetpacks
|
|
import FireWeapon
|
|
import G_FilterPacket
|
|
import G_ProcessIPBans
|
|
import ConsoleCommand
|
|
import gJMSaberEnt
|
|
import SpotWouldTelefrag
|
|
import CalculateRanks
|
|
import ClientSpawn
|
|
import InitBodyQue
|
|
import BeginIntermission
|
|
import respawn
|
|
import CopyToBodyQue
|
|
import SelectSpawnPoint
|
|
import SetClientViewAngle
|
|
import PickTeam
|
|
import TeamLeader
|
|
import TeamCount
|
|
import CheckGauntletAttack
|
|
import SnapVectorTowards
|
|
import CalcMuzzlePoint
|
|
import LogAccuracyHit
|
|
import WP_FireGenericBlasterMissile
|
|
import WP_FireTurretMissile
|
|
import G_PlayerBecomeATST
|
|
import ATST_ManageDamageBoxes
|
|
import TeleportPlayer
|
|
import trigger_teleporter_touch
|
|
import Touch_DoorTrigger
|
|
import G_RunMover
|
|
import WP_FireBlasterMissile
|
|
import G_ExplodeMissile
|
|
import G_BounceProjectile
|
|
import CreateMissile
|
|
import G_RunMissile
|
|
import G_ReflectMissile
|
|
import TossClientCubes
|
|
import trap_G2API_SetBoneAnim
|
|
import trap_G2API_GetGLAName
|
|
import trap_G2API_SetBoneAngles
|
|
import trap_G2API_CleanGhoul2Models
|
|
import trap_G2API_RemoveGhoul2Model
|
|
import trap_G2API_HasGhoul2ModelOnIndex
|
|
import trap_G2API_DuplicateGhoul2Instance
|
|
import trap_G2API_CopySpecificGhoul2Model
|
|
import trap_G2API_CopyGhoul2Instance
|
|
import trap_G2API_SetBoltInfo
|
|
import trap_G2API_AddBolt
|
|
import trap_G2API_InitGhoul2Model
|
|
import trap_G2API_GetBoltMatrix_NoReconstruct
|
|
import trap_G2API_GetBoltMatrix
|
|
import trap_G2_HaveWeGhoul2Models
|
|
import trap_G2_SetGhoul2ModelIndexes
|
|
import trap_G2_ListModelBones
|
|
import trap_G2_ListModelSurfaces
|
|
import G_SkinIndex
|
|
import BuildShaderStateConfig
|
|
import AddRemap
|
|
import G_SetOrigin
|
|
import G_AddEvent
|
|
import G_AddPredictableEvent
|
|
import vtos
|
|
import tv
|
|
import G_RunObject
|
|
import G_TouchSolids
|
|
import G_TouchTriggers
|
|
import G_EntitiesFree
|
|
import G_FreeEntity
|
|
import G_KillG2Queue
|
|
import G_SendG2KillQueue
|
|
import TryUse
|
|
import G_EntitySound
|
|
import G_SoundAtLoc
|
|
import G_Sound
|
|
import G_MuteSound
|
|
import G_ScreenShake
|
|
import G_PlayEffect
|
|
import G_TempEntity
|
|
import G_Spawn
|
|
import G_InitGentity
|
|
import G_SetAngles
|
|
import G_SetMovedir
|
|
import G_UseTargets
|
|
import G_PickTarget
|
|
import G_RadiusList
|
|
import G_Find
|
|
import G_KillBox
|
|
import G_TeamCommand
|
|
import G_EffectIndex
|
|
import G_SoundIndex
|
|
import G_ModelIndex
|
|
import SaveRegisteredItems
|
|
import RegisterItem
|
|
import ClearRegisteredItems
|
|
import Touch_Item
|
|
import Add_Ammo
|
|
import ArmorIndex
|
|
import Think_Weapon
|
|
import FinishSpawningItem
|
|
import G_SpawnItem
|
|
import SetRespawn
|
|
import LaunchItem
|
|
import Drop_Item
|
|
import PrecacheItem
|
|
import UseHoldableItem
|
|
import RespawnItem
|
|
import G_RunItem
|
|
import G_CheckTeamItems
|
|
import ItemUse_MedPack
|
|
import ItemUse_Seeker
|
|
import ItemUse_Sentry
|
|
import ItemUse_Shield
|
|
import ItemUse_Binoculars
|
|
import G_GetDuelWinner
|
|
import Cmd_EngageDuel_f
|
|
import Cmd_ToggleSaber_f
|
|
import G_ItemUsable
|
|
import Cmd_SaberAttackCycle_f
|
|
import Cmd_FollowCycle_f
|
|
import SetTeam
|
|
import BroadcastTeamChange
|
|
import StopFollowing
|
|
import Cmd_Score_f
|
|
import G_NewString
|
|
import G_SpawnEntitiesFromString
|
|
import G_SpawnVector
|
|
import G_SpawnInt
|
|
import G_SpawnFloat
|
|
import G_SpawnString
|
|
import g2SaberInstance
|
|
import precachedKyle
|
|
import forcePowerDarkLight
|
|
import WeaponAttackAnim
|
|
import WeaponReadyAnim
|
|
import BG_OutOfMemory
|
|
import BG_StringAlloc
|
|
import BG_TempFree
|
|
import BG_TempAlloc
|
|
import BG_AllocUnaligned
|
|
import BG_Alloc
|
|
import BG_CanUseFPNow
|
|
import BG_HasYsalamiri
|
|
import BG_GetItemIndexByTag
|
|
import BG_ParseAnimationFile
|
|
import BG_PlayerTouchesItem
|
|
import BG_G2PlayerAngles
|
|
import BG_PlayerStateToEntityStateExtraPolate
|
|
import BG_PlayerStateToEntityState
|
|
import BG_TouchJumpPad
|
|
import BG_AddPredictableEventToPlayerstate
|
|
import BG_EvaluateTrajectoryDelta
|
|
import BG_EvaluateTrajectory
|
|
import BG_ForcePowerDrain
|
|
import BG_SaberStartTransAnim
|
|
import BG_InDeathAnim
|
|
import BG_InRoll
|
|
import BG_SaberInSpecialAttack
|
|
import BG_SpinningSaberAnim
|
|
import BG_FlippingAnim
|
|
import BG_SaberInIdle
|
|
import BG_SaberInSpecial
|
|
import BG_SaberInAttack
|
|
import BG_DirectFlippingAnim
|
|
import BG_InSaberStandAnim
|
|
import BG_InSpecialJump
|
|
import BG_LegalizedForcePowers
|
|
import saberMoveData
|
|
import BG_CanItemBeGrabbed
|
|
import BG_FindItemForHoldable
|
|
import BG_FindItemForPowerup
|
|
import BG_FindItemForWeapon
|
|
import BG_FindItem
|
|
import vectoyaw
|
|
import bg_numItems
|
|
import bg_itemlist
|
|
import Pmove
|
|
import PM_UpdateViewAngles
|
|
import pm
|
|
import bgForcePowerCost
|
|
import forceMasteryPoints
|
|
import forceMasteryLevels
|
|
import bgGlobalAnimations
|
|
import BGPAFtextLoaded
|
|
import forcePowerSorted
|
|
import WP_MuzzlePoint
|
|
import ammoData
|
|
import weaponData
|
|
import GetStringForID
|
|
import GetIDForString
|
|
import Q_irand
|
|
import irand
|
|
import flrand
|
|
import Rand_Init
|
|
import Com_Printf
|
|
import Com_Error
|
|
import Info_NextPair
|
|
import Info_Validate
|
|
import Info_SetValueForKey_Big
|
|
import Info_SetValueForKey
|
|
import Info_RemoveKey_big
|
|
import Info_RemoveKey
|
|
import Info_ValueForKey
|
|
import va
|
|
import Q_CleanStr
|
|
import Q_PrintStrlen
|
|
import Q_strcat
|
|
import Q_strncpyz
|
|
import Q_strrchr
|
|
import Q_strupr
|
|
import Q_strlwr
|
|
import Q_stricmpn
|
|
import Q_strncmp
|
|
import Q_stricmp
|
|
import Q_isalpha
|
|
import Q_isupper
|
|
import Q_islower
|
|
import Q_isprint
|
|
import Com_sprintf
|
|
import Parse3DMatrix
|
|
import Parse2DMatrix
|
|
import Parse1DMatrix
|
|
import SkipRestOfLine
|
|
import SkipBracedSection
|
|
import COM_MatchToken
|
|
import COM_ParseWarning
|
|
import COM_ParseError
|
|
import COM_Compress
|
|
import COM_ParseExt
|
|
import COM_Parse
|
|
import SkipWhitespace
|
|
import COM_GetCurrentParseLine
|
|
import COM_BeginParseSession
|
|
import COM_DefaultExtension
|
|
import COM_StripExtension
|
|
import COM_SkipPath
|
|
import Com_Clamp
|
|
import PerpendicularVector
|
|
import AngleVectors
|
|
import MatrixMultiply
|
|
import MakeNormalVectors
|
|
import RotateAroundDirection
|
|
import RotatePointAroundVector
|
|
import ProjectPointOnPlane
|
|
import PlaneFromPoints
|
|
import AngleDelta
|
|
import AngleNormalize180
|
|
import AngleNormalize360
|
|
import AnglesSubtract
|
|
import AngleSubtract
|
|
import LerpAngle
|
|
import AngleMod
|
|
import BoxOnPlaneSide
|
|
import SetPlaneSignbits
|
|
import AxisCopy
|
|
import AxisClear
|
|
import AnglesToAxis
|
|
import vectoangles
|
|
import Q_crandom
|
|
import Q_random
|
|
import Q_rand
|
|
import Q_acos
|
|
import Q_log2
|
|
import VectorRotate
|
|
import Vector4Scale
|
|
import VectorNormalize2
|
|
import VectorNormalize
|
|
import CrossProduct
|
|
import VectorInverse
|
|
import VectorNormalizeFast
|
|
import DistanceSquared
|
|
import Distance
|
|
import VectorLengthSquared
|
|
import VectorLength
|
|
import VectorCompare
|
|
import AddPointToBounds
|
|
import ClearBounds
|
|
import RadiusFromBounds
|
|
import NormalizeColor
|
|
import ColorBytes4
|
|
import ColorBytes3
|
|
import _VectorMA
|
|
import _VectorScale
|
|
import _VectorCopy
|
|
import _VectorAdd
|
|
import _VectorSubtract
|
|
import _DotProduct
|
|
import ByteToDir
|
|
import DirToByte
|
|
import powf
|
|
import ClampShort
|
|
import ClampChar
|
|
import Q_rsqrt
|
|
import Q_fabs
|
|
import axisDefault
|
|
import vec3_origin
|
|
import g_color_table
|
|
import colorDkBlue
|
|
import colorLtBlue
|
|
import colorDkGrey
|
|
import colorMdGrey
|
|
import colorLtGrey
|
|
import colorWhite
|
|
import colorCyan
|
|
import colorMagenta
|
|
import colorYellow
|
|
import colorBlue
|
|
import colorGreen
|
|
import colorRed
|
|
import colorBlack
|
|
import colorTable
|
|
import bytedirs
|
|
import Com_Memcpy
|
|
import Com_Memset
|
|
import Hunk_Alloc
|
|
import forceSpeedLevels
|
|
import FloatSwap
|
|
import LongSwap
|
|
import ShortSwap
|
|
import acos
|
|
import fabs
|
|
import abs
|
|
import tan
|
|
import atan2
|
|
import cos
|
|
import sin
|
|
import sqrt
|
|
import floor
|
|
import ceil
|
|
import memcpy
|
|
import memset
|
|
import memmove
|
|
import sscanf
|
|
import vsprintf
|
|
import _atoi
|
|
import atoi
|
|
import _atof
|
|
import atof
|
|
import toupper
|
|
import tolower
|
|
import strncpy
|
|
import strstr
|
|
import strchr
|
|
import strcmp
|
|
import strcpy
|
|
import strcat
|
|
import strlen
|
|
import rand
|
|
import srand
|
|
import qsort
|
|
lit
|
|
align 1
|
|
LABELV $841
|
|
char 1 37
|
|
char 1 105
|
|
char 1 58
|
|
char 1 32
|
|
char 1 99
|
|
char 1 108
|
|
char 1 105
|
|
char 1 101
|
|
char 1 110
|
|
char 1 116
|
|
char 1 58
|
|
char 1 37
|
|
char 1 105
|
|
char 1 32
|
|
char 1 104
|
|
char 1 101
|
|
char 1 97
|
|
char 1 108
|
|
char 1 116
|
|
char 1 104
|
|
char 1 58
|
|
char 1 37
|
|
char 1 105
|
|
char 1 32
|
|
char 1 100
|
|
char 1 97
|
|
char 1 109
|
|
char 1 97
|
|
char 1 103
|
|
char 1 101
|
|
char 1 58
|
|
char 1 37
|
|
char 1 105
|
|
char 1 32
|
|
char 1 97
|
|
char 1 114
|
|
char 1 109
|
|
char 1 111
|
|
char 1 114
|
|
char 1 58
|
|
char 1 37
|
|
char 1 105
|
|
char 1 10
|
|
char 1 0
|
|
align 1
|
|
LABELV $650
|
|
char 1 112
|
|
char 1 108
|
|
char 1 97
|
|
char 1 121
|
|
char 1 101
|
|
char 1 114
|
|
char 1 108
|
|
char 1 105
|
|
char 1 109
|
|
char 1 98
|
|
char 1 0
|
|
align 1
|
|
LABELV $438
|
|
char 1 75
|
|
char 1 105
|
|
char 1 108
|
|
char 1 108
|
|
char 1 58
|
|
char 1 32
|
|
char 1 37
|
|
char 1 105
|
|
char 1 32
|
|
char 1 37
|
|
char 1 105
|
|
char 1 32
|
|
char 1 37
|
|
char 1 105
|
|
char 1 58
|
|
char 1 32
|
|
char 1 37
|
|
char 1 115
|
|
char 1 32
|
|
char 1 107
|
|
char 1 105
|
|
char 1 108
|
|
char 1 108
|
|
char 1 101
|
|
char 1 100
|
|
char 1 32
|
|
char 1 37
|
|
char 1 115
|
|
char 1 32
|
|
char 1 98
|
|
char 1 121
|
|
char 1 32
|
|
char 1 37
|
|
char 1 115
|
|
char 1 10
|
|
char 1 0
|
|
align 1
|
|
LABELV $437
|
|
char 1 60
|
|
char 1 98
|
|
char 1 97
|
|
char 1 100
|
|
char 1 32
|
|
char 1 111
|
|
char 1 98
|
|
char 1 105
|
|
char 1 116
|
|
char 1 117
|
|
char 1 97
|
|
char 1 114
|
|
char 1 121
|
|
char 1 62
|
|
char 1 0
|
|
align 1
|
|
LABELV $430
|
|
char 1 60
|
|
char 1 119
|
|
char 1 111
|
|
char 1 114
|
|
char 1 108
|
|
char 1 100
|
|
char 1 62
|
|
char 1 0
|
|
align 1
|
|
LABELV $429
|
|
char 1 60
|
|
char 1 110
|
|
char 1 111
|
|
char 1 110
|
|
char 1 45
|
|
char 1 99
|
|
char 1 108
|
|
char 1 105
|
|
char 1 101
|
|
char 1 110
|
|
char 1 116
|
|
char 1 62
|
|
char 1 0
|
|
align 1
|
|
LABELV $311
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 84
|
|
char 1 82
|
|
char 1 73
|
|
char 1 71
|
|
char 1 71
|
|
char 1 69
|
|
char 1 82
|
|
char 1 95
|
|
char 1 72
|
|
char 1 85
|
|
char 1 82
|
|
char 1 84
|
|
char 1 0
|
|
align 1
|
|
LABELV $310
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 84
|
|
char 1 65
|
|
char 1 82
|
|
char 1 71
|
|
char 1 69
|
|
char 1 84
|
|
char 1 95
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 69
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $309
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 83
|
|
char 1 85
|
|
char 1 73
|
|
char 1 67
|
|
char 1 73
|
|
char 1 68
|
|
char 1 69
|
|
char 1 0
|
|
align 1
|
|
LABELV $308
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 70
|
|
char 1 65
|
|
char 1 76
|
|
char 1 76
|
|
char 1 73
|
|
char 1 78
|
|
char 1 71
|
|
char 1 0
|
|
align 1
|
|
LABELV $307
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 84
|
|
char 1 69
|
|
char 1 76
|
|
char 1 69
|
|
char 1 70
|
|
char 1 82
|
|
char 1 65
|
|
char 1 71
|
|
char 1 0
|
|
align 1
|
|
LABELV $306
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 67
|
|
char 1 82
|
|
char 1 85
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $305
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 76
|
|
char 1 65
|
|
char 1 86
|
|
char 1 65
|
|
char 1 0
|
|
align 1
|
|
LABELV $304
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 83
|
|
char 1 76
|
|
char 1 73
|
|
char 1 77
|
|
char 1 69
|
|
char 1 0
|
|
align 1
|
|
LABELV $303
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 87
|
|
char 1 65
|
|
char 1 84
|
|
char 1 69
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $302
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 83
|
|
char 1 69
|
|
char 1 78
|
|
char 1 84
|
|
char 1 82
|
|
char 1 89
|
|
char 1 0
|
|
align 1
|
|
LABELV $301
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 70
|
|
char 1 79
|
|
char 1 82
|
|
char 1 67
|
|
char 1 69
|
|
char 1 95
|
|
char 1 68
|
|
char 1 65
|
|
char 1 82
|
|
char 1 75
|
|
char 1 0
|
|
align 1
|
|
LABELV $300
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 68
|
|
char 1 69
|
|
char 1 84
|
|
char 1 95
|
|
char 1 80
|
|
char 1 65
|
|
char 1 67
|
|
char 1 75
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $299
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 84
|
|
char 1 73
|
|
char 1 77
|
|
char 1 69
|
|
char 1 68
|
|
char 1 95
|
|
char 1 77
|
|
char 1 73
|
|
char 1 78
|
|
char 1 69
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $298
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 84
|
|
char 1 82
|
|
char 1 73
|
|
char 1 80
|
|
char 1 95
|
|
char 1 77
|
|
char 1 73
|
|
char 1 78
|
|
char 1 69
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $297
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 84
|
|
char 1 72
|
|
char 1 69
|
|
char 1 82
|
|
char 1 77
|
|
char 1 65
|
|
char 1 76
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $296
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 84
|
|
char 1 72
|
|
char 1 69
|
|
char 1 82
|
|
char 1 77
|
|
char 1 65
|
|
char 1 76
|
|
char 1 0
|
|
align 1
|
|
LABELV $295
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 82
|
|
char 1 79
|
|
char 1 67
|
|
char 1 75
|
|
char 1 69
|
|
char 1 84
|
|
char 1 95
|
|
char 1 72
|
|
char 1 79
|
|
char 1 77
|
|
char 1 73
|
|
char 1 78
|
|
char 1 71
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $294
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 82
|
|
char 1 79
|
|
char 1 67
|
|
char 1 75
|
|
char 1 69
|
|
char 1 84
|
|
char 1 95
|
|
char 1 72
|
|
char 1 79
|
|
char 1 77
|
|
char 1 73
|
|
char 1 78
|
|
char 1 71
|
|
char 1 0
|
|
align 1
|
|
LABELV $293
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 82
|
|
char 1 79
|
|
char 1 67
|
|
char 1 75
|
|
char 1 69
|
|
char 1 84
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $292
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 82
|
|
char 1 79
|
|
char 1 67
|
|
char 1 75
|
|
char 1 69
|
|
char 1 84
|
|
char 1 0
|
|
align 1
|
|
LABELV $291
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 70
|
|
char 1 76
|
|
char 1 69
|
|
char 1 67
|
|
char 1 72
|
|
char 1 69
|
|
char 1 84
|
|
char 1 84
|
|
char 1 69
|
|
char 1 95
|
|
char 1 65
|
|
char 1 76
|
|
char 1 84
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $290
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 70
|
|
char 1 76
|
|
char 1 69
|
|
char 1 67
|
|
char 1 72
|
|
char 1 69
|
|
char 1 84
|
|
char 1 84
|
|
char 1 69
|
|
char 1 0
|
|
align 1
|
|
LABELV $289
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 68
|
|
char 1 69
|
|
char 1 77
|
|
char 1 80
|
|
char 1 50
|
|
char 1 95
|
|
char 1 65
|
|
char 1 76
|
|
char 1 84
|
|
char 1 0
|
|
align 1
|
|
LABELV $288
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 68
|
|
char 1 69
|
|
char 1 77
|
|
char 1 80
|
|
char 1 50
|
|
char 1 0
|
|
align 1
|
|
LABELV $287
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 82
|
|
char 1 69
|
|
char 1 80
|
|
char 1 69
|
|
char 1 65
|
|
char 1 84
|
|
char 1 69
|
|
char 1 82
|
|
char 1 95
|
|
char 1 65
|
|
char 1 76
|
|
char 1 84
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $286
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 82
|
|
char 1 69
|
|
char 1 80
|
|
char 1 69
|
|
char 1 65
|
|
char 1 84
|
|
char 1 69
|
|
char 1 82
|
|
char 1 95
|
|
char 1 65
|
|
char 1 76
|
|
char 1 84
|
|
char 1 0
|
|
align 1
|
|
LABELV $285
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 82
|
|
char 1 69
|
|
char 1 80
|
|
char 1 69
|
|
char 1 65
|
|
char 1 84
|
|
char 1 69
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $284
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 66
|
|
char 1 79
|
|
char 1 87
|
|
char 1 67
|
|
char 1 65
|
|
char 1 83
|
|
char 1 84
|
|
char 1 69
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $283
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 68
|
|
char 1 73
|
|
char 1 83
|
|
char 1 82
|
|
char 1 85
|
|
char 1 80
|
|
char 1 84
|
|
char 1 79
|
|
char 1 82
|
|
char 1 95
|
|
char 1 83
|
|
char 1 78
|
|
char 1 73
|
|
char 1 80
|
|
char 1 69
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $282
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 68
|
|
char 1 73
|
|
char 1 83
|
|
char 1 82
|
|
char 1 85
|
|
char 1 80
|
|
char 1 84
|
|
char 1 79
|
|
char 1 82
|
|
char 1 95
|
|
char 1 83
|
|
char 1 80
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 72
|
|
char 1 0
|
|
align 1
|
|
LABELV $281
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 68
|
|
char 1 73
|
|
char 1 83
|
|
char 1 82
|
|
char 1 85
|
|
char 1 80
|
|
char 1 84
|
|
char 1 79
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $280
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 66
|
|
char 1 76
|
|
char 1 65
|
|
char 1 83
|
|
char 1 84
|
|
char 1 69
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $279
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 66
|
|
char 1 82
|
|
char 1 89
|
|
char 1 65
|
|
char 1 82
|
|
char 1 95
|
|
char 1 80
|
|
char 1 73
|
|
char 1 83
|
|
char 1 84
|
|
char 1 79
|
|
char 1 76
|
|
char 1 95
|
|
char 1 65
|
|
char 1 76
|
|
char 1 84
|
|
char 1 0
|
|
align 1
|
|
LABELV $278
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 66
|
|
char 1 82
|
|
char 1 89
|
|
char 1 65
|
|
char 1 82
|
|
char 1 95
|
|
char 1 80
|
|
char 1 73
|
|
char 1 83
|
|
char 1 84
|
|
char 1 79
|
|
char 1 76
|
|
char 1 0
|
|
align 1
|
|
LABELV $277
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 83
|
|
char 1 65
|
|
char 1 66
|
|
char 1 69
|
|
char 1 82
|
|
char 1 0
|
|
align 1
|
|
LABELV $276
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 77
|
|
char 1 69
|
|
char 1 76
|
|
char 1 69
|
|
char 1 69
|
|
char 1 0
|
|
align 1
|
|
LABELV $275
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 83
|
|
char 1 84
|
|
char 1 85
|
|
char 1 78
|
|
char 1 95
|
|
char 1 66
|
|
char 1 65
|
|
char 1 84
|
|
char 1 79
|
|
char 1 78
|
|
char 1 0
|
|
align 1
|
|
LABELV $274
|
|
char 1 77
|
|
char 1 79
|
|
char 1 68
|
|
char 1 95
|
|
char 1 85
|
|
char 1 78
|
|
char 1 75
|
|
char 1 78
|
|
char 1 79
|
|
char 1 87
|
|
char 1 78
|
|
char 1 0
|