export G_ReflectMissile code proc G_ReflectMissile 92 8 file "../g_missile.c" line 18 ;1:// Copyright (C) 1999-2000 Id Software, Inc. ;2:// ;3:#include "g_local.h" ;4: ;5:#define MISSILE_PRESTEP_TIME 50 ;6: ;7:extern void laserTrapStick( gentity_t *ent, vec3_t endpos, vec3_t normal ); ;8: ;9:/* ;10:================ ;11:G_ReflectMissile ;12: ;13: Reflect the missile roughly back at it's owner ;14:================ ;15:*/ ;16:float RandFloat(float min, float max); ;17:void G_ReflectMissile( gentity_t *ent, gentity_t *missile, vec3_t forward ) ;18:{ line 22 ;19: vec3_t bounce_dir; ;20: int i; ;21: float speed; ;22: gentity_t *owner = ent; ADDRLP4 24 ADDRFP4 0 INDIRP4 ASGNP4 line 23 ;23: int isowner = 0; ADDRLP4 20 CNSTI4 0 ASGNI4 line 25 ;24: ;25: if ( ent->r.ownerNum ) ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 CNSTI4 0 EQI4 $79 line 26 ;26: { line 27 ;27: owner = &g_entities[ent->r.ownerNum]; ADDRLP4 24 CNSTI4 828 ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ASGNP4 line 28 ;28: } LABELV $79 line 30 ;29: ;30: if (missile->r.ownerNum == ent->s.number) ADDRFP4 4 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 ADDRFP4 0 INDIRP4 INDIRI4 NEI4 $81 line 31 ;31: { //the original owner is bouncing the missile, so don't try to bounce it back at him line 32 ;32: isowner = 1; ADDRLP4 20 CNSTI4 1 ASGNI4 line 33 ;33: } LABELV $81 line 36 ;34: ;35: //save the original speed ;36: speed = VectorNormalize( missile->s.pos.trDelta ); ADDRFP4 4 INDIRP4 CNSTI4 36 ADDP4 ARGP4 ADDRLP4 28 ADDRGP4 VectorNormalize CALLF4 ASGNF4 ADDRLP4 16 ADDRLP4 28 INDIRF4 ASGNF4 line 39 ;37: ;38: //if ( ent && owner && owner->NPC && owner->enemy && Q_stricmp( "Tavion", owner->NPC_type ) == 0 && Q_irand( 0, 3 ) ) ;39: if ( &g_entities[missile->r.ownerNum] && missile->s.weapon != WP_SABER && missile->s.weapon != G2_MODEL_PART && !isowner ) ADDRLP4 32 ADDRFP4 4 INDIRP4 ASGNP4 CNSTI4 828 ADDRLP4 32 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 CVPU4 4 CNSTU4 0 EQU4 $83 ADDRLP4 36 ADDRLP4 32 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 ASGNI4 ADDRLP4 36 INDIRI4 CNSTI4 2 EQI4 $83 ADDRLP4 36 INDIRI4 CNSTI4 50 EQI4 $83 ADDRLP4 20 INDIRI4 CNSTI4 0 NEI4 $83 line 40 ;40: {//bounce back at them if you can line 41 ;41: VectorSubtract( g_entities[missile->r.ownerNum].r.currentOrigin, missile->r.currentOrigin, bounce_dir ); ADDRLP4 40 CNSTI4 828 ASGNI4 ADDRLP4 44 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 48 ADDRLP4 44 INDIRP4 CNSTI4 396 ADDP4 ASGNP4 ADDRLP4 4 ADDRLP4 40 INDIRI4 ADDRLP4 48 INDIRP4 INDIRI4 MULI4 ADDRGP4 g_entities+296+72 ADDP4 INDIRF4 ADDRLP4 44 INDIRP4 CNSTI4 368 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 4+4 ADDRLP4 40 INDIRI4 ADDRLP4 48 INDIRP4 INDIRI4 MULI4 ADDRGP4 g_entities+296+72+4 ADDP4 INDIRF4 ADDRLP4 44 INDIRP4 CNSTI4 372 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 52 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 4+8 CNSTI4 828 ADDRLP4 52 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities+296+72+8 ADDP4 INDIRF4 ADDRLP4 52 INDIRP4 CNSTI4 376 ADDP4 INDIRF4 SUBF4 ASGNF4 line 42 ;42: VectorNormalize( bounce_dir ); ADDRLP4 4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 43 ;43: } ADDRGP4 $84 JUMPV LABELV $83 line 44 ;44: else if (isowner) ADDRLP4 20 INDIRI4 CNSTI4 0 EQI4 $95 line 45 ;45: { //in this case, actually push the missile away from me, and since we're giving boost to our own missile by pushing it, up the velocity line 48 ;46: vec3_t missile_dir; ;47: ;48: speed *= 1.5; ADDRLP4 16 CNSTF4 1069547520 ADDRLP4 16 INDIRF4 MULF4 ASGNF4 line 50 ;49: ;50: VectorSubtract( missile->r.currentOrigin, ent->r.currentOrigin, missile_dir ); ADDRLP4 52 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 56 CNSTI4 368 ASGNI4 ADDRLP4 60 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 40 ADDRLP4 52 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 INDIRF4 ADDRLP4 60 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 64 CNSTI4 372 ASGNI4 ADDRLP4 40+4 ADDRLP4 52 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 ADDRLP4 60 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 68 CNSTI4 376 ASGNI4 ADDRLP4 40+8 ADDRFP4 4 INDIRP4 ADDRLP4 68 INDIRI4 ADDP4 INDIRF4 ADDRFP4 0 INDIRP4 ADDRLP4 68 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 line 51 ;51: VectorCopy( missile->s.pos.trDelta, bounce_dir ); ADDRLP4 4 ADDRFP4 4 INDIRP4 CNSTI4 36 ADDP4 INDIRB ASGNB 12 line 52 ;52: VectorScale( bounce_dir, DotProduct( forward, missile_dir ), bounce_dir ); ADDRLP4 72 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 76 ADDRLP4 40 INDIRF4 ASGNF4 ADDRLP4 80 ADDRLP4 72 INDIRP4 CNSTI4 4 ADDP4 ASGNP4 ADDRLP4 84 ADDRLP4 72 INDIRP4 CNSTI4 8 ADDP4 ASGNP4 ADDRLP4 4 ADDRLP4 4 INDIRF4 ADDRLP4 72 INDIRP4 INDIRF4 ADDRLP4 76 INDIRF4 MULF4 ADDRLP4 80 INDIRP4 INDIRF4 ADDRLP4 40+4 INDIRF4 MULF4 ADDF4 ADDRLP4 84 INDIRP4 INDIRF4 ADDRLP4 40+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 ADDRLP4 4+4 ADDRLP4 4+4 INDIRF4 ADDRLP4 72 INDIRP4 INDIRF4 ADDRLP4 76 INDIRF4 MULF4 ADDRLP4 80 INDIRP4 INDIRF4 ADDRLP4 40+4 INDIRF4 MULF4 ADDF4 ADDRLP4 84 INDIRP4 INDIRF4 ADDRLP4 40+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 ADDRLP4 88 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 4+8 ADDRLP4 4+8 INDIRF4 ADDRLP4 88 INDIRP4 INDIRF4 ADDRLP4 40 INDIRF4 MULF4 ADDRLP4 88 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 ADDRLP4 40+4 INDIRF4 MULF4 ADDF4 ADDRLP4 88 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 ADDRLP4 40+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 line 53 ;53: VectorNormalize( bounce_dir ); ADDRLP4 4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 54 ;54: } ADDRGP4 $96 JUMPV LABELV $95 line 56 ;55: else ;56: { line 59 ;57: vec3_t missile_dir; ;58: ;59: VectorSubtract( ent->r.currentOrigin, missile->r.currentOrigin, missile_dir ); ADDRLP4 52 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 56 CNSTI4 368 ASGNI4 ADDRLP4 60 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 40 ADDRLP4 52 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 INDIRF4 ADDRLP4 60 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 64 CNSTI4 372 ASGNI4 ADDRLP4 40+4 ADDRLP4 52 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 ADDRLP4 60 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 68 CNSTI4 376 ASGNI4 ADDRLP4 40+8 ADDRFP4 0 INDIRP4 ADDRLP4 68 INDIRI4 ADDP4 INDIRF4 ADDRFP4 4 INDIRP4 ADDRLP4 68 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 line 60 ;60: VectorCopy( missile->s.pos.trDelta, bounce_dir ); ADDRLP4 4 ADDRFP4 4 INDIRP4 CNSTI4 36 ADDP4 INDIRB ASGNB 12 line 61 ;61: VectorScale( bounce_dir, DotProduct( forward, missile_dir ), bounce_dir ); ADDRLP4 72 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 76 ADDRLP4 40 INDIRF4 ASGNF4 ADDRLP4 80 ADDRLP4 72 INDIRP4 CNSTI4 4 ADDP4 ASGNP4 ADDRLP4 84 ADDRLP4 72 INDIRP4 CNSTI4 8 ADDP4 ASGNP4 ADDRLP4 4 ADDRLP4 4 INDIRF4 ADDRLP4 72 INDIRP4 INDIRF4 ADDRLP4 76 INDIRF4 MULF4 ADDRLP4 80 INDIRP4 INDIRF4 ADDRLP4 40+4 INDIRF4 MULF4 ADDF4 ADDRLP4 84 INDIRP4 INDIRF4 ADDRLP4 40+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 ADDRLP4 4+4 ADDRLP4 4+4 INDIRF4 ADDRLP4 72 INDIRP4 INDIRF4 ADDRLP4 76 INDIRF4 MULF4 ADDRLP4 80 INDIRP4 INDIRF4 ADDRLP4 40+4 INDIRF4 MULF4 ADDF4 ADDRLP4 84 INDIRP4 INDIRF4 ADDRLP4 40+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 ADDRLP4 88 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 4+8 ADDRLP4 4+8 INDIRF4 ADDRLP4 88 INDIRP4 INDIRF4 ADDRLP4 40 INDIRF4 MULF4 ADDRLP4 88 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 ADDRLP4 40+4 INDIRF4 MULF4 ADDF4 ADDRLP4 88 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 ADDRLP4 40+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 line 62 ;62: VectorNormalize( bounce_dir ); ADDRLP4 4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 63 ;63: } LABELV $96 LABELV $84 line 64 ;64: for ( i = 0; i < 3; i++ ) ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $121 line 65 ;65: { line 66 ;66: bounce_dir[i] += RandFloat( -0.2f, 0.2f ); CNSTF4 3192704205 ARGF4 CNSTF4 1045220557 ARGF4 ADDRLP4 40 ADDRGP4 RandFloat CALLF4 ASGNF4 ADDRLP4 44 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 ASGNP4 ADDRLP4 44 INDIRP4 ADDRLP4 44 INDIRP4 INDIRF4 ADDRLP4 40 INDIRF4 ADDF4 ASGNF4 line 67 ;67: } LABELV $122 line 64 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $121 line 69 ;68: ;69: VectorNormalize( bounce_dir ); ADDRLP4 4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 70 ;70: VectorScale( bounce_dir, speed, missile->s.pos.trDelta ); ADDRFP4 4 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 4 INDIRF4 ADDRLP4 16 INDIRF4 MULF4 ASGNF4 ADDRFP4 4 INDIRP4 CNSTI4 40 ADDP4 ADDRLP4 4+4 INDIRF4 ADDRLP4 16 INDIRF4 MULF4 ASGNF4 ADDRFP4 4 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 4+8 INDIRF4 ADDRLP4 16 INDIRF4 MULF4 ASGNF4 line 71 ;71: missile->s.pos.trTime = level.time; // move a bit on the very first frame ADDRFP4 4 INDIRP4 CNSTI4 16 ADDP4 ADDRGP4 level+32 INDIRI4 ASGNI4 line 72 ;72: VectorCopy( missile->r.currentOrigin, missile->s.pos.trBase ); ADDRLP4 40 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 40 INDIRP4 CNSTI4 24 ADDP4 ADDRLP4 40 INDIRP4 CNSTI4 368 ADDP4 INDIRB ASGNB 12 line 73 ;73: if ( missile->s.weapon != WP_SABER && missile->s.weapon != G2_MODEL_PART ) ADDRLP4 44 ADDRFP4 4 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 ASGNI4 ADDRLP4 44 INDIRI4 CNSTI4 2 EQI4 $128 ADDRLP4 44 INDIRI4 CNSTI4 50 EQI4 $128 line 74 ;74: {//you are mine, now! line 75 ;75: missile->r.ownerNum = ent->s.number; ADDRFP4 4 INDIRP4 CNSTI4 396 ADDP4 ADDRFP4 0 INDIRP4 INDIRI4 ASGNI4 line 76 ;76: } LABELV $128 line 77 ;77: if ( missile->s.weapon == WP_ROCKET_LAUNCHER ) ADDRFP4 4 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 10 NEI4 $130 line 78 ;78: {//stop homing line 79 ;79: missile->think = 0; ADDRFP4 4 INDIRP4 CNSTI4 636 ADDP4 CNSTP4 0 ASGNP4 line 80 ;80: missile->nextthink = 0; ADDRFP4 4 INDIRP4 CNSTI4 632 ADDP4 CNSTI4 0 ASGNI4 line 81 ;81: } LABELV $130 line 82 ;82:} LABELV $78 endproc G_ReflectMissile 92 8 export G_DeflectMissile proc G_DeflectMissile 72 16 line 85 ;83: ;84:void G_DeflectMissile( gentity_t *ent, gentity_t *missile, vec3_t forward ) ;85:{ line 89 ;86: vec3_t bounce_dir; ;87: int i; ;88: float speed; ;89: int isowner = 0; ADDRLP4 32 CNSTI4 0 ASGNI4 line 92 ;90: vec3_t missile_dir; ;91: ;92: if (missile->r.ownerNum == ent->s.number) ADDRFP4 4 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 ADDRFP4 0 INDIRP4 INDIRI4 NEI4 $133 line 93 ;93: { //the original owner is bouncing the missile, so don't try to bounce it back at him line 94 ;94: isowner = 1; ADDRLP4 32 CNSTI4 1 ASGNI4 line 95 ;95: } LABELV $133 line 98 ;96: ;97: //save the original speed ;98: speed = VectorNormalize( missile->s.pos.trDelta ); ADDRFP4 4 INDIRP4 CNSTI4 36 ADDP4 ARGP4 ADDRLP4 36 ADDRGP4 VectorNormalize CALLF4 ASGNF4 ADDRLP4 28 ADDRLP4 36 INDIRF4 ASGNF4 line 101 ;99: ;100: //VectorSubtract( ent->r.currentOrigin, missile->r.currentOrigin, missile_dir ); ;101: AngleVectors(ent->client->ps.viewangles, missile_dir, 0, 0); ADDRFP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 156 ADDP4 ARGP4 ADDRLP4 16 ARGP4 ADDRLP4 40 CNSTP4 0 ASGNP4 ADDRLP4 40 INDIRP4 ARGP4 ADDRLP4 40 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 102 ;102: VectorCopy(missile_dir, bounce_dir); ADDRLP4 4 ADDRLP4 16 INDIRB ASGNB 12 line 104 ;103: //VectorCopy( missile->s.pos.trDelta, bounce_dir ); ;104: VectorScale( bounce_dir, DotProduct( forward, missile_dir ), bounce_dir ); ADDRLP4 44 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 48 ADDRLP4 16 INDIRF4 ASGNF4 ADDRLP4 52 ADDRLP4 44 INDIRP4 CNSTI4 4 ADDP4 ASGNP4 ADDRLP4 56 ADDRLP4 44 INDIRP4 CNSTI4 8 ADDP4 ASGNP4 ADDRLP4 4 ADDRLP4 4 INDIRF4 ADDRLP4 44 INDIRP4 INDIRF4 ADDRLP4 48 INDIRF4 MULF4 ADDRLP4 52 INDIRP4 INDIRF4 ADDRLP4 16+4 INDIRF4 MULF4 ADDF4 ADDRLP4 56 INDIRP4 INDIRF4 ADDRLP4 16+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 ADDRLP4 4+4 ADDRLP4 4+4 INDIRF4 ADDRLP4 44 INDIRP4 INDIRF4 ADDRLP4 48 INDIRF4 MULF4 ADDRLP4 52 INDIRP4 INDIRF4 ADDRLP4 16+4 INDIRF4 MULF4 ADDF4 ADDRLP4 56 INDIRP4 INDIRF4 ADDRLP4 16+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 ADDRLP4 60 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 4+8 ADDRLP4 4+8 INDIRF4 ADDRLP4 60 INDIRP4 INDIRF4 ADDRLP4 16 INDIRF4 MULF4 ADDRLP4 60 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 ADDRLP4 16+4 INDIRF4 MULF4 ADDF4 ADDRLP4 60 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 ADDRLP4 16+8 INDIRF4 MULF4 ADDF4 MULF4 ASGNF4 line 105 ;105: VectorNormalize( bounce_dir ); ADDRLP4 4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 107 ;106: ;107: for ( i = 0; i < 3; i++ ) ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $145 line 108 ;108: { line 109 ;109: bounce_dir[i] += RandFloat( -1.0f, 1.0f ); CNSTF4 3212836864 ARGF4 CNSTF4 1065353216 ARGF4 ADDRLP4 64 ADDRGP4 RandFloat CALLF4 ASGNF4 ADDRLP4 68 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 ASGNP4 ADDRLP4 68 INDIRP4 ADDRLP4 68 INDIRP4 INDIRF4 ADDRLP4 64 INDIRF4 ADDF4 ASGNF4 line 110 ;110: } LABELV $146 line 107 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $145 line 112 ;111: ;112: VectorNormalize( bounce_dir ); ADDRLP4 4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 113 ;113: VectorScale( bounce_dir, speed, missile->s.pos.trDelta ); ADDRFP4 4 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 ADDRFP4 4 INDIRP4 CNSTI4 40 ADDP4 ADDRLP4 4+4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 ADDRFP4 4 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 4+8 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 line 114 ;114: missile->s.pos.trTime = level.time; // move a bit on the very first frame ADDRFP4 4 INDIRP4 CNSTI4 16 ADDP4 ADDRGP4 level+32 INDIRI4 ASGNI4 line 115 ;115: VectorCopy( missile->r.currentOrigin, missile->s.pos.trBase ); ADDRLP4 64 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 64 INDIRP4 CNSTI4 24 ADDP4 ADDRLP4 64 INDIRP4 CNSTI4 368 ADDP4 INDIRB ASGNB 12 line 116 ;116: if ( missile->s.weapon != WP_SABER && missile->s.weapon != G2_MODEL_PART ) ADDRLP4 68 ADDRFP4 4 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 ASGNI4 ADDRLP4 68 INDIRI4 CNSTI4 2 EQI4 $152 ADDRLP4 68 INDIRI4 CNSTI4 50 EQI4 $152 line 117 ;117: {//you are mine, now! line 118 ;118: missile->r.ownerNum = ent->s.number; ADDRFP4 4 INDIRP4 CNSTI4 396 ADDP4 ADDRFP4 0 INDIRP4 INDIRI4 ASGNI4 line 119 ;119: } LABELV $152 line 120 ;120: if ( missile->s.weapon == WP_ROCKET_LAUNCHER ) ADDRFP4 4 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 10 NEI4 $154 line 121 ;121: {//stop homing line 122 ;122: missile->think = 0; ADDRFP4 4 INDIRP4 CNSTI4 636 ADDP4 CNSTP4 0 ASGNP4 line 123 ;123: missile->nextthink = 0; ADDRFP4 4 INDIRP4 CNSTI4 632 ADDP4 CNSTI4 0 ASGNI4 line 124 ;124: } LABELV $154 line 125 ;125:} LABELV $132 endproc G_DeflectMissile 72 16 export G_BounceMissile proc G_BounceMissile 44 12 line 133 ;126: ;127:/* ;128:================ ;129:G_BounceMissile ;130: ;131:================ ;132:*/ ;133:void G_BounceMissile( gentity_t *ent, trace_t *trace ) { line 139 ;134: vec3_t velocity; ;135: float dot; ;136: int hitTime; ;137: ;138: // reflect the velocity on the trace plane ;139: hitTime = level.previousTime + ( level.time - level.previousTime ) * trace->fraction; ADDRLP4 16 ADDRGP4 level+36 INDIRI4 CVIF4 4 ADDRGP4 level+32 INDIRI4 ADDRGP4 level+36 INDIRI4 SUBI4 CVIF4 4 ADDRFP4 4 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 MULF4 ADDF4 CVFI4 4 ASGNI4 line 140 ;140: BG_EvaluateTrajectoryDelta( &ent->s.pos, hitTime, velocity ); ADDRFP4 0 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRLP4 16 INDIRI4 ARGI4 ADDRLP4 0 ARGP4 ADDRGP4 BG_EvaluateTrajectoryDelta CALLV pop line 141 ;141: dot = DotProduct( velocity, trace->plane.normal ); ADDRLP4 20 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 12 ADDRLP4 0 INDIRF4 ADDRLP4 20 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 MULF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 20 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 MULF4 ADDF4 ADDRLP4 0+8 INDIRF4 ADDRLP4 20 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 line 142 ;142: VectorMA( velocity, -2*dot, trace->plane.normal, ent->s.pos.trDelta ); ADDRFP4 0 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 0 INDIRF4 ADDRFP4 4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 CNSTF4 3221225472 ADDRLP4 12 INDIRF4 MULF4 MULF4 ADDF4 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 ADDRLP4 0+4 INDIRF4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 3221225472 ADDRLP4 12 INDIRF4 MULF4 MULF4 ADDF4 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 0+8 INDIRF4 ADDRFP4 4 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 CNSTF4 3221225472 ADDRLP4 12 INDIRF4 MULF4 MULF4 ADDF4 ASGNF4 line 145 ;143: ;144: ;145: if ( ent->s.eFlags & EF_BOUNCE_SHRAPNEL ) ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 2 BANDI4 CNSTI4 0 EQI4 $164 line 146 ;146: { line 147 ;147: VectorScale( ent->s.pos.trDelta, 0.25f, ent->s.pos.trDelta ); ADDRLP4 24 ADDRFP4 0 INDIRP4 CNSTI4 36 ADDP4 ASGNP4 ADDRLP4 24 INDIRP4 CNSTF4 1048576000 ADDRLP4 24 INDIRP4 INDIRF4 MULF4 ASGNF4 ADDRLP4 28 ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 28 INDIRP4 CNSTF4 1048576000 ADDRLP4 28 INDIRP4 INDIRF4 MULF4 ASGNF4 ADDRLP4 32 ADDRFP4 0 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 32 INDIRP4 CNSTF4 1048576000 ADDRLP4 32 INDIRP4 INDIRF4 MULF4 ASGNF4 line 148 ;148: ent->s.pos.trType = TR_GRAVITY; ADDRFP4 0 INDIRP4 CNSTI4 12 ADDP4 CNSTI4 5 ASGNI4 line 151 ;149: ;150: // check for stop ;151: if ( trace->plane.normal[2] > 0.7 && ent->s.pos.trDelta[2] < 40 ) //this can happen even on very slightly sloped walls, so changed it from > 0 to > 0.7 ADDRFP4 4 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 CNSTF4 1060320051 LEF4 $165 ADDRFP4 0 INDIRP4 CNSTI4 44 ADDP4 INDIRF4 CNSTF4 1109393408 GEF4 $165 line 152 ;152: { line 153 ;153: G_SetOrigin( ent, trace->endpos ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRGP4 G_SetOrigin CALLV pop line 154 ;154: ent->nextthink = level.time + 100; ADDRFP4 0 INDIRP4 CNSTI4 632 ADDP4 ADDRGP4 level+32 INDIRI4 CNSTI4 100 ADDI4 ASGNI4 line 155 ;155: return; ADDRGP4 $156 JUMPV line 157 ;156: } ;157: } LABELV $164 line 158 ;158: else if ( ent->s.eFlags & EF_BOUNCE_HALF ) ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 32 BANDI4 CNSTI4 0 EQI4 $169 line 159 ;159: { line 160 ;160: VectorScale( ent->s.pos.trDelta, 0.65, ent->s.pos.trDelta ); ADDRLP4 24 ADDRFP4 0 INDIRP4 CNSTI4 36 ADDP4 ASGNP4 ADDRLP4 24 INDIRP4 CNSTF4 1059481190 ADDRLP4 24 INDIRP4 INDIRF4 MULF4 ASGNF4 ADDRLP4 28 ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 28 INDIRP4 CNSTF4 1059481190 ADDRLP4 28 INDIRP4 INDIRF4 MULF4 ASGNF4 ADDRLP4 32 ADDRFP4 0 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 32 INDIRP4 CNSTF4 1059481190 ADDRLP4 32 INDIRP4 INDIRF4 MULF4 ASGNF4 line 162 ;161: // check for stop ;162: if ( trace->plane.normal[2] > 0.2 && VectorLength( ent->s.pos.trDelta ) < 40 ) ADDRFP4 4 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 CNSTF4 1045220557 LEF4 $171 ADDRFP4 0 INDIRP4 CNSTI4 36 ADDP4 ARGP4 ADDRLP4 36 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 36 INDIRF4 CNSTF4 1109393408 GEF4 $171 line 163 ;163: { line 164 ;164: G_SetOrigin( ent, trace->endpos ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRGP4 G_SetOrigin CALLV pop line 165 ;165: return; ADDRGP4 $156 JUMPV LABELV $171 line 167 ;166: } ;167: } LABELV $169 LABELV $165 line 169 ;168: ;169: if (ent->s.weapon == WP_THERMAL) ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 11 NEI4 $173 line 170 ;170: { //slight hack for hit sound line 171 ;171: G_Sound(ent, CHAN_BODY, G_SoundIndex(va("sound/weapons/thermal/bounce%i.wav", Q_irand(1, 2)))); CNSTI4 1 ARGI4 CNSTI4 2 ARGI4 ADDRLP4 24 ADDRGP4 Q_irand CALLI4 ASGNI4 ADDRGP4 $175 ARGP4 ADDRLP4 24 INDIRI4 ARGI4 ADDRLP4 28 ADDRGP4 va CALLP4 ASGNP4 ADDRLP4 28 INDIRP4 ARGP4 ADDRLP4 32 ADDRGP4 G_SoundIndex CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 5 ARGI4 ADDRLP4 32 INDIRI4 ARGI4 ADDRGP4 G_Sound CALLV pop line 172 ;172: } ADDRGP4 $174 JUMPV LABELV $173 line 173 ;173: else if (ent->s.weapon == WP_SABER) ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 2 NEI4 $176 line 174 ;174: { line 175 ;175: G_Sound(ent, CHAN_BODY, G_SoundIndex(va("sound/weapons/saber/bounce%i.wav", Q_irand(1, 3)))); CNSTI4 1 ARGI4 CNSTI4 3 ARGI4 ADDRLP4 24 ADDRGP4 Q_irand CALLI4 ASGNI4 ADDRGP4 $178 ARGP4 ADDRLP4 24 INDIRI4 ARGI4 ADDRLP4 28 ADDRGP4 va CALLP4 ASGNP4 ADDRLP4 28 INDIRP4 ARGP4 ADDRLP4 32 ADDRGP4 G_SoundIndex CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 5 ARGI4 ADDRLP4 32 INDIRI4 ARGI4 ADDRGP4 G_Sound CALLV pop line 176 ;176: } ADDRGP4 $177 JUMPV LABELV $176 line 177 ;177: else if (ent->s.weapon == G2_MODEL_PART) ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 50 NEI4 $179 line 178 ;178: { line 180 ;179: //Limb bounce sound? ;180: } LABELV $179 LABELV $177 LABELV $174 line 182 ;181: ;182: VectorAdd( ent->r.currentOrigin, trace->plane.normal, ent->r.currentOrigin); ADDRLP4 24 ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 ASGNP4 ADDRLP4 24 INDIRP4 ADDRLP4 24 INDIRP4 INDIRF4 ADDRFP4 4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 ADDF4 ASGNF4 ADDRLP4 28 ADDRFP4 0 INDIRP4 CNSTI4 372 ADDP4 ASGNP4 ADDRLP4 28 INDIRP4 ADDRLP4 28 INDIRP4 INDIRF4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 ADDF4 ASGNF4 ADDRLP4 32 ADDRFP4 0 INDIRP4 CNSTI4 376 ADDP4 ASGNP4 ADDRLP4 32 INDIRP4 ADDRLP4 32 INDIRP4 INDIRF4 ADDRFP4 4 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 ADDF4 ASGNF4 line 183 ;183: VectorCopy( ent->r.currentOrigin, ent->s.pos.trBase ); ADDRLP4 36 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 36 INDIRP4 CNSTI4 24 ADDP4 ADDRLP4 36 INDIRP4 CNSTI4 368 ADDP4 INDIRB ASGNB 12 line 184 ;184: ent->s.pos.trTime = level.time; ADDRFP4 0 INDIRP4 CNSTI4 16 ADDP4 ADDRGP4 level+32 INDIRI4 ASGNI4 line 186 ;185: ;186: if (ent->bounceCount != -5) ADDRFP4 0 INDIRP4 CNSTI4 716 ADDP4 INDIRI4 CNSTI4 -5 EQI4 $182 line 187 ;187: { line 188 ;188: ent->bounceCount--; ADDRLP4 40 ADDRFP4 0 INDIRP4 CNSTI4 716 ADDP4 ASGNP4 ADDRLP4 40 INDIRP4 ADDRLP4 40 INDIRP4 INDIRI4 CNSTI4 1 SUBI4 ASGNI4 line 189 ;189: } LABELV $182 line 190 ;190:} LABELV $156 endproc G_BounceMissile 44 12 export G_ExplodeMissile proc G_ExplodeMissile 44 24 line 200 ;191: ;192: ;193:/* ;194:================ ;195:G_ExplodeMissile ;196: ;197:Explode a missile without an impact ;198:================ ;199:*/ ;200:void G_ExplodeMissile( gentity_t *ent ) { line 204 ;201: vec3_t dir; ;202: vec3_t origin; ;203: ;204: BG_EvaluateTrajectory( &ent->s.pos, level.time, origin ); ADDRFP4 0 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRGP4 level+32 INDIRI4 ARGI4 ADDRLP4 0 ARGP4 ADDRGP4 BG_EvaluateTrajectory CALLV pop line 205 ;205: SnapVector( origin ); ADDRLP4 0 ADDRLP4 0 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 ADDRLP4 0+4 ADDRLP4 0+4 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 ADDRLP4 0+8 ADDRLP4 0+8 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 line 206 ;206: G_SetOrigin( ent, origin ); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 0 ARGP4 ADDRGP4 G_SetOrigin CALLV pop line 209 ;207: ;208: // we don't have a valid direction, so just point straight up ;209: dir[0] = dir[1] = 0; ADDRLP4 24 CNSTF4 0 ASGNF4 ADDRLP4 12+4 ADDRLP4 24 INDIRF4 ASGNF4 ADDRLP4 12 ADDRLP4 24 INDIRF4 ASGNF4 line 210 ;210: dir[2] = 1; ADDRLP4 12+8 CNSTF4 1065353216 ASGNF4 line 212 ;211: ;212: ent->s.eType = ET_GENERAL; ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 CNSTI4 0 ASGNI4 line 213 ;213: G_AddEvent( ent, EV_MISSILE_MISS, DirToByte( dir ) ); ADDRLP4 12 ARGP4 ADDRLP4 28 ADDRGP4 DirToByte CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 74 ARGI4 ADDRLP4 28 INDIRI4 ARGI4 ADDRGP4 G_AddEvent CALLV pop line 215 ;214: ;215: ent->freeAfterEvent = qtrue; ADDRFP4 0 INDIRP4 CNSTI4 492 ADDP4 CNSTI4 1 ASGNI4 line 218 ;216: ;217: // splash damage ;218: if ( ent->splashDamage ) { ADDRFP4 0 INDIRP4 CNSTI4 696 ADDP4 INDIRI4 CNSTI4 0 EQI4 $192 line 219 ;219: if( G_RadiusDamage( ent->r.currentOrigin, ent->parent, ent->splashDamage, ent->splashRadius, ent, ADDRLP4 32 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 32 INDIRP4 CNSTI4 368 ADDP4 ARGP4 ADDRLP4 32 INDIRP4 CNSTI4 536 ADDP4 INDIRP4 ARGP4 ADDRLP4 32 INDIRP4 CNSTI4 696 ADDP4 INDIRI4 CVIF4 4 ARGF4 ADDRLP4 32 INDIRP4 CNSTI4 700 ADDP4 INDIRI4 CVIF4 4 ARGF4 ADDRLP4 32 INDIRP4 ARGP4 ADDRLP4 32 INDIRP4 CNSTI4 708 ADDP4 INDIRI4 ARGI4 ADDRLP4 36 ADDRGP4 G_RadiusDamage CALLI4 ASGNI4 ADDRLP4 36 INDIRI4 CNSTI4 0 EQI4 $194 line 221 ;220: ent->splashMethodOfDeath ) ) ;221: { line 222 ;222: if (ent->parent) ADDRFP4 0 INDIRP4 CNSTI4 536 ADDP4 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $196 line 223 ;223: { line 224 ;224: g_entities[ent->parent->s.number].client->accuracy_hits++; ADDRLP4 40 CNSTI4 828 ADDRFP4 0 INDIRP4 CNSTI4 536 ADDP4 INDIRP4 INDIRI4 MULI4 ADDRGP4 g_entities+408 ADDP4 INDIRP4 CNSTI4 1656 ADDP4 ASGNP4 ADDRLP4 40 INDIRP4 ADDRLP4 40 INDIRP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 225 ;225: } ADDRGP4 $197 JUMPV LABELV $196 line 226 ;226: else if (ent->activator) ADDRFP4 0 INDIRP4 CNSTI4 732 ADDP4 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $199 line 227 ;227: { line 228 ;228: g_entities[ent->activator->s.number].client->accuracy_hits++; ADDRLP4 40 CNSTI4 828 ADDRFP4 0 INDIRP4 CNSTI4 732 ADDP4 INDIRP4 INDIRI4 MULI4 ADDRGP4 g_entities+408 ADDP4 INDIRP4 CNSTI4 1656 ADDP4 ASGNP4 ADDRLP4 40 INDIRP4 ADDRLP4 40 INDIRP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 229 ;229: } LABELV $199 LABELV $197 line 230 ;230: } LABELV $194 line 231 ;231: } LABELV $192 line 233 ;232: ;233: trap_LinkEntity( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 trap_LinkEntity CALLV pop line 234 ;234:} LABELV $184 endproc G_ExplodeMissile 44 24 export G_RunStuckMissile proc G_RunStuckMissile 32 32 line 237 ;235: ;236:void G_RunStuckMissile( gentity_t *ent ) ;237:{ line 238 ;238: if ( ent->takedamage ) ADDRFP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 CNSTI4 0 EQI4 $203 line 239 ;239: { line 240 ;240: if ( ent->s.groundEntityNum >= 0 && ent->s.groundEntityNum < ENTITYNUM_WORLD ) ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 192 ADDP4 INDIRI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 0 LTI4 $205 ADDRLP4 0 INDIRI4 CNSTI4 1022 GEI4 $205 line 241 ;241: { line 242 ;242: gentity_t *other = &g_entities[ent->s.groundEntityNum]; ADDRLP4 4 CNSTI4 828 ADDRFP4 0 INDIRP4 CNSTI4 192 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ASGNP4 line 244 ;243: ;244: if ( (!VectorCompare( vec3_origin, other->s.pos.trDelta ) && other->s.pos.trType != TR_STATIONARY) || ADDRGP4 vec3_origin ARGP4 ADDRLP4 4 INDIRP4 CNSTI4 36 ADDP4 ARGP4 ADDRLP4 8 ADDRGP4 VectorCompare CALLI4 ASGNI4 ADDRLP4 12 CNSTI4 0 ASGNI4 ADDRLP4 8 INDIRI4 ADDRLP4 12 INDIRI4 NEI4 $210 ADDRLP4 4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ADDRLP4 12 INDIRI4 NEI4 $209 LABELV $210 ADDRGP4 vec3_origin ARGP4 ADDRLP4 4 INDIRP4 CNSTI4 72 ADDP4 ARGP4 ADDRLP4 16 ADDRGP4 VectorCompare CALLI4 ASGNI4 ADDRLP4 20 CNSTI4 0 ASGNI4 ADDRLP4 16 INDIRI4 ADDRLP4 20 INDIRI4 NEI4 $207 ADDRLP4 4 INDIRP4 CNSTI4 48 ADDP4 INDIRI4 ADDRLP4 20 INDIRI4 EQI4 $207 LABELV $209 line 246 ;245: (!VectorCompare( vec3_origin, other->s.apos.trDelta ) && other->s.apos.trType != TR_STATIONARY) ) ;246: {//thing I stuck to is moving or rotating now, kill me line 247 ;247: G_Damage( ent, other, other, NULL, NULL, 99999, 0, MOD_CRUSH ); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 24 ADDRLP4 4 INDIRP4 ASGNP4 ADDRLP4 24 INDIRP4 ARGP4 ADDRLP4 24 INDIRP4 ARGP4 ADDRLP4 28 CNSTP4 0 ASGNP4 ADDRLP4 28 INDIRP4 ARGP4 ADDRLP4 28 INDIRP4 ARGP4 CNSTI4 99999 ARGI4 CNSTI4 0 ARGI4 CNSTI4 32 ARGI4 ADDRGP4 G_Damage CALLV pop line 248 ;248: return; ADDRGP4 $202 JUMPV LABELV $207 line 250 ;249: } ;250: } LABELV $205 line 251 ;251: } LABELV $203 line 253 ;252: // check think function ;253: G_RunThink( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 G_RunThink CALLV pop line 254 ;254:} LABELV $202 endproc G_RunStuckMissile 32 32 export G_BounceProjectile proc G_BounceProjectile 64 4 line 261 ;255: ;256:/* ;257:================ ;258:G_BounceProjectile ;259:================ ;260:*/ ;261:void G_BounceProjectile( vec3_t start, vec3_t impact, vec3_t dir, vec3_t endout ) { line 265 ;262: vec3_t v, newv; ;263: float dot; ;264: ;265: VectorSubtract( impact, start, v ); ADDRLP4 28 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 32 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 0 ADDRLP4 28 INDIRP4 INDIRF4 ADDRLP4 32 INDIRP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 36 CNSTI4 4 ASGNI4 ADDRLP4 0+4 ADDRLP4 28 INDIRP4 ADDRLP4 36 INDIRI4 ADDP4 INDIRF4 ADDRLP4 32 INDIRP4 ADDRLP4 36 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 40 CNSTI4 8 ASGNI4 ADDRLP4 0+8 ADDRFP4 4 INDIRP4 ADDRLP4 40 INDIRI4 ADDP4 INDIRF4 ADDRFP4 0 INDIRP4 ADDRLP4 40 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 line 266 ;266: dot = DotProduct( v, dir ); ADDRLP4 44 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 24 ADDRLP4 0 INDIRF4 ADDRLP4 44 INDIRP4 INDIRF4 MULF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 44 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 MULF4 ADDF4 ADDRLP4 0+8 INDIRF4 ADDRLP4 44 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 line 267 ;267: VectorMA( v, -2*dot, dir, newv ); ADDRLP4 48 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 52 CNSTF4 3221225472 ADDRLP4 24 INDIRF4 MULF4 ASGNF4 ADDRLP4 12 ADDRLP4 0 INDIRF4 ADDRLP4 48 INDIRP4 INDIRF4 ADDRLP4 52 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 12+4 ADDRLP4 0+4 INDIRF4 ADDRLP4 48 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 ADDRLP4 52 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 12+8 ADDRLP4 0+8 INDIRF4 ADDRFP4 8 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 CNSTF4 3221225472 ADDRLP4 24 INDIRF4 MULF4 MULF4 ADDF4 ASGNF4 line 269 ;268: ;269: VectorNormalize(newv); ADDRLP4 12 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 270 ;270: VectorMA(impact, 8192, newv, endout); ADDRFP4 12 INDIRP4 ADDRFP4 4 INDIRP4 INDIRF4 CNSTF4 1174405120 ADDRLP4 12 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 56 CNSTI4 4 ASGNI4 ADDRFP4 12 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 ADDRFP4 4 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 INDIRF4 CNSTF4 1174405120 ADDRLP4 12+4 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 60 CNSTI4 8 ASGNI4 ADDRFP4 12 INDIRP4 ADDRLP4 60 INDIRI4 ADDP4 ADDRFP4 4 INDIRP4 ADDRLP4 60 INDIRI4 ADDP4 INDIRF4 CNSTF4 1174405120 ADDRLP4 12+8 INDIRF4 MULF4 ADDF4 ASGNF4 line 271 ;271:} LABELV $211 endproc G_BounceProjectile 64 4 export CreateMissile proc CreateMissile 20 0 line 278 ;272: ;273: ;274://----------------------------------------------------------------------------- ;275:gentity_t *CreateMissile( vec3_t org, vec3_t dir, float vel, int life, ;276: gentity_t *owner, qboolean altFire) ;277://----------------------------------------------------------------------------- ;278:{ line 281 ;279: gentity_t *missile; ;280: ;281: missile = G_Spawn(); ADDRLP4 4 ADDRGP4 G_Spawn CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 4 INDIRP4 ASGNP4 line 283 ;282: ;283: missile->nextthink = level.time + life; ADDRLP4 0 INDIRP4 CNSTI4 632 ADDP4 ADDRGP4 level+32 INDIRI4 ADDRFP4 12 INDIRI4 ADDI4 ASGNI4 line 284 ;284: missile->think = G_FreeEntity; ADDRLP4 0 INDIRP4 CNSTI4 636 ADDP4 ADDRGP4 G_FreeEntity ASGNP4 line 285 ;285: missile->s.eType = ET_MISSILE; ADDRLP4 0 INDIRP4 CNSTI4 4 ADDP4 CNSTI4 3 ASGNI4 line 286 ;286: missile->r.svFlags = SVF_USE_CURRENT_ORIGIN; ADDRLP4 0 INDIRP4 CNSTI4 304 ADDP4 CNSTI4 128 ASGNI4 line 287 ;287: missile->parent = owner; ADDRLP4 0 INDIRP4 CNSTI4 536 ADDP4 ADDRFP4 16 INDIRP4 ASGNP4 line 288 ;288: missile->r.ownerNum = owner->s.number; ADDRLP4 0 INDIRP4 CNSTI4 396 ADDP4 ADDRFP4 16 INDIRP4 INDIRI4 ASGNI4 line 290 ;289: ;290: if (altFire) ADDRFP4 20 INDIRI4 CNSTI4 0 EQI4 $224 line 291 ;291: { line 292 ;292: missile->s.eFlags |= EF_ALT_FIRING; ADDRLP4 8 ADDRLP4 0 INDIRP4 CNSTI4 8 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRI4 CNSTI4 512 BORI4 ASGNI4 line 293 ;293: } LABELV $224 line 295 ;294: ;295: missile->s.pos.trType = TR_LINEAR; ADDRLP4 0 INDIRP4 CNSTI4 12 ADDP4 CNSTI4 2 ASGNI4 line 296 ;296: missile->s.pos.trTime = level.time;// - MISSILE_PRESTEP_TIME; // NOTENOTE This is a Quake 3 addition over JK2 ADDRLP4 0 INDIRP4 CNSTI4 16 ADDP4 ADDRGP4 level+32 INDIRI4 ASGNI4 line 297 ;297: missile->target_ent = NULL; ADDRLP4 0 INDIRP4 CNSTI4 604 ADDP4 CNSTP4 0 ASGNP4 line 299 ;298: ;299: SnapVector(org); ADDRLP4 8 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 ADDRLP4 12 ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 ADDRLP4 16 ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 ASGNP4 ADDRLP4 16 INDIRP4 ADDRLP4 16 INDIRP4 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 line 300 ;300: VectorCopy( org, missile->s.pos.trBase ); ADDRLP4 0 INDIRP4 CNSTI4 24 ADDP4 ADDRFP4 0 INDIRP4 INDIRB ASGNB 12 line 301 ;301: VectorScale( dir, vel, missile->s.pos.trDelta ); ADDRLP4 0 INDIRP4 CNSTI4 36 ADDP4 ADDRFP4 4 INDIRP4 INDIRF4 ADDRFP4 8 INDIRF4 MULF4 ASGNF4 ADDRLP4 0 INDIRP4 CNSTI4 40 ADDP4 ADDRFP4 4 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 ADDRFP4 8 INDIRF4 MULF4 ASGNF4 ADDRLP4 0 INDIRP4 CNSTI4 44 ADDP4 ADDRFP4 4 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 ADDRFP4 8 INDIRF4 MULF4 ASGNF4 line 302 ;302: VectorCopy( org, missile->r.currentOrigin); ADDRLP4 0 INDIRP4 CNSTI4 368 ADDP4 ADDRFP4 0 INDIRP4 INDIRB ASGNB 12 line 303 ;303: SnapVector(missile->s.pos.trDelta); ADDRLP4 8 ADDRLP4 0 INDIRP4 CNSTI4 36 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 ADDRLP4 12 ADDRLP4 0 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 ADDRLP4 16 ADDRLP4 0 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 16 INDIRP4 ADDRLP4 16 INDIRP4 INDIRF4 CVFI4 4 CVIF4 4 ASGNF4 line 305 ;304: ;305: return missile; ADDRLP4 0 INDIRP4 RETP4 LABELV $222 endproc CreateMissile 20 0 export G_MissileImpact proc G_MissileImpact 128 32 line 314 ;306:} ;307: ;308: ;309:/* ;310:================ ;311:G_MissileImpact ;312:================ ;313:*/ ;314:void G_MissileImpact( gentity_t *ent, trace_t *trace ) { line 316 ;315: gentity_t *other; ;316: qboolean hitClient = qfalse; ADDRLP4 4 CNSTI4 0 ASGNI4 line 317 ;317: other = &g_entities[trace->entityNum]; ADDRLP4 0 CNSTI4 828 ADDRFP4 4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ASGNP4 line 320 ;318: ;319: // check for bounce ;320: if ( !other->takedamage && ADDRLP4 8 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 ADDRLP4 8 INDIRI4 NEI4 $228 ADDRLP4 12 ADDRFP4 0 INDIRP4 CNSTI4 716 ADDP4 INDIRI4 ASGNI4 ADDRLP4 12 INDIRI4 ADDRLP4 8 INDIRI4 GTI4 $230 ADDRLP4 12 INDIRI4 CNSTI4 -5 NEI4 $228 LABELV $230 ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 48 BANDI4 CNSTI4 0 EQI4 $228 line 322 ;321: (ent->bounceCount > 0 || ent->bounceCount == -5) && ;322: ( ent->s.eFlags & ( EF_BOUNCE | EF_BOUNCE_HALF ) ) ) { line 323 ;323: G_BounceMissile( ent, trace ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRGP4 G_BounceMissile CALLV pop line 324 ;324: G_AddEvent( ent, EV_GRENADE_BOUNCE, 0 ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 61 ARGI4 CNSTI4 0 ARGI4 ADDRGP4 G_AddEvent CALLV pop line 325 ;325: return; ADDRGP4 $227 JUMPV LABELV $228 line 329 ;326: } ;327: ;328: // I would glom onto the EF_BOUNCE code section above, but don't feel like risking breaking something else ;329: if ( (!other->takedamage && (ent->bounceCount > 0 || ent->bounceCount == -5) && ( ent->s.eFlags&(EF_BOUNCE_SHRAPNEL) ) ) || ((trace->surfaceFlags&SURF_FORCEFIELD)&&!ent->splashDamage&&!ent->splashRadius&&(ent->bounceCount > 0 || ent->bounceCount == -5)) ) ADDRLP4 16 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 ADDRLP4 16 INDIRI4 NEI4 $235 ADDRLP4 20 ADDRFP4 0 INDIRP4 CNSTI4 716 ADDP4 INDIRI4 ASGNI4 ADDRLP4 20 INDIRI4 ADDRLP4 16 INDIRI4 GTI4 $236 ADDRLP4 20 INDIRI4 CNSTI4 -5 NEI4 $235 LABELV $236 ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 2 BANDI4 CNSTI4 0 NEI4 $237 LABELV $235 ADDRLP4 24 CNSTI4 0 ASGNI4 ADDRFP4 4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 65536 BANDI4 ADDRLP4 24 INDIRI4 EQI4 $231 ADDRLP4 28 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 28 INDIRP4 CNSTI4 696 ADDP4 INDIRI4 ADDRLP4 24 INDIRI4 NEI4 $231 ADDRLP4 28 INDIRP4 CNSTI4 700 ADDP4 INDIRI4 ADDRLP4 24 INDIRI4 NEI4 $231 ADDRLP4 32 ADDRLP4 28 INDIRP4 CNSTI4 716 ADDP4 INDIRI4 ASGNI4 ADDRLP4 32 INDIRI4 ADDRLP4 24 INDIRI4 GTI4 $237 ADDRLP4 32 INDIRI4 CNSTI4 -5 NEI4 $231 LABELV $237 line 330 ;330: { line 331 ;331: G_BounceMissile( ent, trace ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRGP4 G_BounceMissile CALLV pop line 333 ;332: ;333: if ( ent->bounceCount < 1 ) ADDRFP4 0 INDIRP4 CNSTI4 716 ADDP4 INDIRI4 CNSTI4 1 GEI4 $227 line 334 ;334: { line 335 ;335: ent->s.eFlags &= ~EF_BOUNCE_SHRAPNEL; ADDRLP4 36 ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 ASGNP4 ADDRLP4 36 INDIRP4 ADDRLP4 36 INDIRP4 INDIRI4 CNSTI4 -3 BANDI4 ASGNI4 line 336 ;336: } line 337 ;337: return; ADDRGP4 $227 JUMPV LABELV $231 line 353 ;338: } ;339: ;340: /* ;341: if ( !other->takedamage && ent->s.weapon == WP_THERMAL && !ent->alt_fire ) ;342: {//rolling thermal det - FIXME: make this an eFlag like bounce & stick!!! ;343: //G_BounceRollMissile( ent, trace ); ;344: if ( ent->owner && ent->owner->s.number == 0 ) ;345: { ;346: G_MissileAddAlerts( ent ); ;347: } ;348: //gi.linkentity( ent ); ;349: return; ;350: } ;351: */ ;352: ;353: if (other->r.contents & CONTENTS_LIGHTSABER) ADDRLP4 0 INDIRP4 CNSTI4 340 ADDP4 INDIRI4 CNSTI4 262144 BANDI4 CNSTI4 0 EQI4 $240 line 354 ;354: { //hit this person's saber, so.. line 355 ;355: gentity_t *otherOwner = &g_entities[other->r.ownerNum]; ADDRLP4 36 CNSTI4 828 ADDRLP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ASGNP4 line 357 ;356: ;357: if (otherOwner->takedamage && otherOwner->client && otherOwner->client->ps.duelInProgress && ADDRLP4 44 CNSTI4 0 ASGNI4 ADDRLP4 36 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 ADDRLP4 44 INDIRI4 EQI4 $241 ADDRLP4 48 ADDRLP4 36 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 ASGNP4 ADDRLP4 48 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $241 ADDRLP4 48 INDIRP4 CNSTI4 1292 ADDP4 INDIRI4 ADDRLP4 44 INDIRI4 EQI4 $241 ADDRLP4 48 INDIRP4 CNSTI4 1284 ADDP4 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 EQI4 $241 line 359 ;358: otherOwner->client->ps.duelIndex != ent->r.ownerNum) ;359: { line 360 ;360: goto killProj; ADDRGP4 $244 JUMPV line 362 ;361: } ;362: } LABELV $240 line 364 ;363: else ;364: { line 365 ;365: if (other->takedamage && other->client && other->client->ps.duelInProgress && ADDRLP4 40 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 EQI4 $245 ADDRLP4 44 ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 ASGNP4 ADDRLP4 44 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $245 ADDRLP4 44 INDIRP4 CNSTI4 1292 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 EQI4 $245 ADDRLP4 44 INDIRP4 CNSTI4 1284 ADDP4 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 EQI4 $245 line 367 ;366: other->client->ps.duelIndex != ent->r.ownerNum) ;367: { line 368 ;368: goto killProj; ADDRGP4 $244 JUMPV LABELV $245 line 370 ;369: } ;370: } LABELV $241 line 372 ;371: ;372: if (other->takedamage && other->client && ADDRLP4 40 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 EQI4 $247 ADDRLP4 44 ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 ASGNP4 ADDRLP4 44 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $247 ADDRLP4 48 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 52 ADDRLP4 48 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 ASGNI4 ADDRLP4 52 INDIRI4 CNSTI4 10 EQI4 $247 ADDRLP4 52 INDIRI4 CNSTI4 11 EQI4 $247 ADDRLP4 56 CNSTI4 12 ASGNI4 ADDRLP4 52 INDIRI4 ADDRLP4 56 INDIRI4 EQI4 $247 ADDRLP4 52 INDIRI4 CNSTI4 13 EQI4 $247 ADDRLP4 52 INDIRI4 CNSTI4 8 EQI4 $247 ADDRLP4 60 ADDRLP4 48 INDIRP4 CNSTI4 704 ADDP4 INDIRI4 ASGNI4 ADDRLP4 60 INDIRI4 ADDRLP4 56 INDIRI4 EQI4 $247 ADDRLP4 60 INDIRI4 CNSTI4 17 EQI4 $247 ADDRLP4 44 INDIRP4 CNSTI4 744 ADDP4 INDIRI4 ADDRGP4 level+32 INDIRI4 GEI4 $247 ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 48 INDIRP4 CNSTI4 368 ADDP4 ARGP4 ADDRLP4 40 INDIRI4 ARGI4 ADDRLP4 40 INDIRI4 ARGI4 CNSTI4 1 ARGI4 ADDRLP4 40 INDIRI4 ARGI4 ADDRLP4 64 ADDRGP4 WP_SaberCanBlock CALLI4 ASGNI4 ADDRLP4 64 INDIRI4 CNSTI4 0 EQI4 $247 line 382 ;373: ent->s.weapon != WP_ROCKET_LAUNCHER && ;374: ent->s.weapon != WP_THERMAL && ;375: ent->s.weapon != WP_TRIP_MINE && ;376: ent->s.weapon != WP_DET_PACK && ;377: ent->s.weapon != WP_DEMP2 && ;378: ent->methodOfDeath != MOD_REPEATER_ALT && ;379: ent->methodOfDeath != MOD_FLECHETTE_ALT_SPLASH && ;380: other->client->ps.saberBlockTime < level.time && ;381: WP_SaberCanBlock(other, ent->r.currentOrigin, 0, 0, qtrue, 0)) ;382: { //only block one projectile per 200ms (to prevent giant swarms of projectiles being blocked) line 385 ;383: vec3_t fwd; ;384: gentity_t *te; ;385: int otherDefLevel = other->client->ps.fd.forcePowerLevel[FP_SABERDEFEND]; ADDRLP4 68 ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 996 ADDP4 INDIRI4 ASGNI4 line 387 ;386: ;387: te = G_TempEntity( ent->r.currentOrigin, EV_SABER_BLOCK ); ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 ARGP4 CNSTI4 28 ARGI4 ADDRLP4 88 ADDRGP4 G_TempEntity CALLP4 ASGNP4 ADDRLP4 72 ADDRLP4 88 INDIRP4 ASGNP4 line 388 ;388: VectorCopy(ent->r.currentOrigin, te->s.origin); ADDRLP4 72 INDIRP4 CNSTI4 92 ADDP4 ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 INDIRB ASGNB 12 line 389 ;389: VectorCopy(trace->plane.normal, te->s.angles); ADDRLP4 72 INDIRP4 CNSTI4 116 ADDP4 ADDRFP4 4 INDIRP4 CNSTI4 24 ADDP4 INDIRB ASGNB 12 line 390 ;390: te->s.eventParm = 0; ADDRLP4 72 INDIRP4 CNSTI4 256 ADDP4 CNSTI4 0 ASGNI4 line 396 ;391: ;392: /*if (other->client->ps.velocity[2] > 0 || ;393: other->client->pers.cmd.forwardmove || ;394: other->client->pers.cmd.rightmove) ;395: */ ;396: if (other->client->ps.velocity[2] > 0 || ADDRLP4 92 ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 ASGNP4 ADDRLP4 92 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 0 GTF4 $252 ADDRLP4 92 INDIRP4 CNSTI4 1396 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $250 LABELV $252 line 398 ;397: other->client->pers.cmd.forwardmove < 0) //now we only do it if jumping or running backward. Should be able to full-on charge. ;398: { line 399 ;399: otherDefLevel -= 1; ADDRLP4 68 ADDRLP4 68 INDIRI4 CNSTI4 1 SUBI4 ASGNI4 line 400 ;400: if (otherDefLevel < 0) ADDRLP4 68 INDIRI4 CNSTI4 0 GEI4 $253 line 401 ;401: { line 402 ;402: otherDefLevel = 0; ADDRLP4 68 CNSTI4 0 ASGNI4 line 403 ;403: } LABELV $253 line 404 ;404: } LABELV $250 line 406 ;405: ;406: AngleVectors(other->client->ps.viewangles, fwd, NULL, NULL); ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 156 ADDP4 ARGP4 ADDRLP4 76 ARGP4 ADDRLP4 96 CNSTP4 0 ASGNP4 ADDRLP4 96 INDIRP4 ARGP4 ADDRLP4 96 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 407 ;407: if (otherDefLevel == FORCE_LEVEL_1) ADDRLP4 68 INDIRI4 CNSTI4 1 NEI4 $255 line 408 ;408: { line 410 ;409: //if def is only level 1, instead of deflecting the shot it should just die here ;410: } ADDRGP4 $256 JUMPV LABELV $255 line 411 ;411: else if (otherDefLevel == FORCE_LEVEL_2) ADDRLP4 68 INDIRI4 CNSTI4 2 NEI4 $257 line 412 ;412: { line 413 ;413: G_DeflectMissile(other, ent, fwd); ADDRLP4 0 INDIRP4 ARGP4 ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 76 ARGP4 ADDRGP4 G_DeflectMissile CALLV pop line 414 ;414: } ADDRGP4 $258 JUMPV LABELV $257 line 416 ;415: else ;416: { line 417 ;417: G_ReflectMissile(other, ent, fwd); ADDRLP4 0 INDIRP4 ARGP4 ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 76 ARGP4 ADDRGP4 G_ReflectMissile CALLV pop line 418 ;418: } LABELV $258 LABELV $256 line 419 ;419: other->client->ps.saberBlockTime = level.time + (350 - (otherDefLevel*100)); //200; ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 744 ADDP4 ADDRGP4 level+32 INDIRI4 CNSTI4 350 CNSTI4 100 ADDRLP4 68 INDIRI4 MULI4 SUBI4 ADDI4 ASGNI4 line 421 ;420: ;421: if (otherDefLevel == FORCE_LEVEL_3) ADDRLP4 68 INDIRI4 CNSTI4 3 NEI4 $260 line 422 ;422: { line 423 ;423: other->client->ps.saberBlockTime = 0; //^_^ ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 744 ADDP4 CNSTI4 0 ASGNI4 line 424 ;424: } LABELV $260 line 426 ;425: ;426: if (otherDefLevel == FORCE_LEVEL_1) ADDRLP4 68 INDIRI4 CNSTI4 1 NEI4 $227 line 427 ;427: { line 428 ;428: goto killProj; ADDRGP4 $244 JUMPV line 430 ;429: } ;430: return; LABELV $247 line 432 ;431: } ;432: else if (other->r.contents & CONTENTS_LIGHTSABER) ADDRLP4 0 INDIRP4 CNSTI4 340 ADDP4 INDIRI4 CNSTI4 262144 BANDI4 CNSTI4 0 EQI4 $264 line 433 ;433: { //hit this person's saber, so.. line 434 ;434: gentity_t *otherOwner = &g_entities[other->r.ownerNum]; ADDRLP4 68 CNSTI4 828 ADDRLP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ASGNP4 line 436 ;435: ;436: if (otherOwner->takedamage && otherOwner->client && ADDRLP4 72 ADDRLP4 68 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 CNSTI4 0 EQI4 $266 ADDRLP4 72 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $266 ADDRLP4 76 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 80 ADDRLP4 76 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 ASGNI4 ADDRLP4 80 INDIRI4 CNSTI4 10 EQI4 $266 ADDRLP4 80 INDIRI4 CNSTI4 11 EQI4 $266 ADDRLP4 84 CNSTI4 12 ASGNI4 ADDRLP4 80 INDIRI4 ADDRLP4 84 INDIRI4 EQI4 $266 ADDRLP4 80 INDIRI4 CNSTI4 13 EQI4 $266 ADDRLP4 80 INDIRI4 CNSTI4 8 EQI4 $266 ADDRLP4 88 ADDRLP4 76 INDIRP4 CNSTI4 704 ADDP4 INDIRI4 ASGNI4 ADDRLP4 88 INDIRI4 ADDRLP4 84 INDIRI4 EQI4 $266 ADDRLP4 88 INDIRI4 CNSTI4 17 EQI4 $266 line 445 ;437: ent->s.weapon != WP_ROCKET_LAUNCHER && ;438: ent->s.weapon != WP_THERMAL && ;439: ent->s.weapon != WP_TRIP_MINE && ;440: ent->s.weapon != WP_DET_PACK && ;441: ent->s.weapon != WP_DEMP2 && ;442: ent->methodOfDeath != MOD_REPEATER_ALT && ;443: ent->methodOfDeath != MOD_FLECHETTE_ALT_SPLASH /*&& ;444: otherOwner->client->ps.saberBlockTime < level.time*/) ;445: { //for now still deflect even if saberBlockTime >= level.time because it hit the actual saber line 448 ;446: vec3_t fwd; ;447: gentity_t *te; ;448: int otherDefLevel = otherOwner->client->ps.fd.forcePowerLevel[FP_SABERDEFEND]; ADDRLP4 92 ADDRLP4 68 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 996 ADDP4 INDIRI4 ASGNI4 line 451 ;449: ;450: //in this case, deflect it even if we can't actually block it because it hit our saber ;451: WP_SaberCanBlock(otherOwner, ent->r.currentOrigin, 0, 0, qtrue, 0); ADDRLP4 68 INDIRP4 ARGP4 ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 ARGP4 ADDRLP4 112 CNSTI4 0 ASGNI4 ADDRLP4 112 INDIRI4 ARGI4 ADDRLP4 112 INDIRI4 ARGI4 CNSTI4 1 ARGI4 ADDRLP4 112 INDIRI4 ARGI4 ADDRGP4 WP_SaberCanBlock CALLI4 pop line 453 ;452: ;453: te = G_TempEntity( ent->r.currentOrigin, EV_SABER_BLOCK ); ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 ARGP4 CNSTI4 28 ARGI4 ADDRLP4 116 ADDRGP4 G_TempEntity CALLP4 ASGNP4 ADDRLP4 96 ADDRLP4 116 INDIRP4 ASGNP4 line 454 ;454: VectorCopy(ent->r.currentOrigin, te->s.origin); ADDRLP4 96 INDIRP4 CNSTI4 92 ADDP4 ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 INDIRB ASGNB 12 line 455 ;455: VectorCopy(trace->plane.normal, te->s.angles); ADDRLP4 96 INDIRP4 CNSTI4 116 ADDP4 ADDRFP4 4 INDIRP4 CNSTI4 24 ADDP4 INDIRB ASGNB 12 line 456 ;456: te->s.eventParm = 0; ADDRLP4 96 INDIRP4 CNSTI4 256 ADDP4 CNSTI4 0 ASGNI4 line 461 ;457: ;458: /*if (otherOwner->client->ps.velocity[2] > 0 || ;459: otherOwner->client->pers.cmd.forwardmove || ;460: otherOwner->client->pers.cmd.rightmove)*/ ;461: if (otherOwner->client->ps.velocity[2] > 0 || ADDRLP4 120 ADDRLP4 68 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 ASGNP4 ADDRLP4 120 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 0 GTF4 $270 ADDRLP4 120 INDIRP4 CNSTI4 1396 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $268 LABELV $270 line 463 ;462: otherOwner->client->pers.cmd.forwardmove < 0) //now we only do it if jumping or running backward. Should be able to full-on charge. ;463: { line 464 ;464: otherDefLevel -= 1; ADDRLP4 92 ADDRLP4 92 INDIRI4 CNSTI4 1 SUBI4 ASGNI4 line 465 ;465: if (otherDefLevel < 0) ADDRLP4 92 INDIRI4 CNSTI4 0 GEI4 $271 line 466 ;466: { line 467 ;467: otherDefLevel = 0; ADDRLP4 92 CNSTI4 0 ASGNI4 line 468 ;468: } LABELV $271 line 469 ;469: } LABELV $268 line 471 ;470: ;471: AngleVectors(otherOwner->client->ps.viewangles, fwd, NULL, NULL); ADDRLP4 68 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 156 ADDP4 ARGP4 ADDRLP4 100 ARGP4 ADDRLP4 124 CNSTP4 0 ASGNP4 ADDRLP4 124 INDIRP4 ARGP4 ADDRLP4 124 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 473 ;472: ;473: if (otherDefLevel == FORCE_LEVEL_1) ADDRLP4 92 INDIRI4 CNSTI4 1 NEI4 $273 line 474 ;474: { line 476 ;475: //if def is only level 1, instead of deflecting the shot it should just die here ;476: } ADDRGP4 $274 JUMPV LABELV $273 line 477 ;477: else if (otherDefLevel == FORCE_LEVEL_2) ADDRLP4 92 INDIRI4 CNSTI4 2 NEI4 $275 line 478 ;478: { line 479 ;479: G_DeflectMissile(otherOwner, ent, fwd); ADDRLP4 68 INDIRP4 ARGP4 ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 100 ARGP4 ADDRGP4 G_DeflectMissile CALLV pop line 480 ;480: } ADDRGP4 $276 JUMPV LABELV $275 line 482 ;481: else ;482: { line 483 ;483: G_ReflectMissile(otherOwner, ent, fwd); ADDRLP4 68 INDIRP4 ARGP4 ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 100 ARGP4 ADDRGP4 G_ReflectMissile CALLV pop line 484 ;484: } LABELV $276 LABELV $274 line 485 ;485: otherOwner->client->ps.saberBlockTime = level.time + (350 - (otherDefLevel*100));//200; ADDRLP4 68 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 744 ADDP4 ADDRGP4 level+32 INDIRI4 CNSTI4 350 CNSTI4 100 ADDRLP4 92 INDIRI4 MULI4 SUBI4 ADDI4 ASGNI4 line 487 ;486: ;487: if (otherDefLevel == FORCE_LEVEL_3) ADDRLP4 92 INDIRI4 CNSTI4 3 NEI4 $278 line 488 ;488: { line 489 ;489: otherOwner->client->ps.saberBlockTime = 0; //^_^ ADDRLP4 68 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 744 ADDP4 CNSTI4 0 ASGNI4 line 490 ;490: } LABELV $278 line 492 ;491: ;492: if (otherDefLevel == FORCE_LEVEL_1) ADDRLP4 92 INDIRI4 CNSTI4 1 NEI4 $227 line 493 ;493: { line 494 ;494: goto killProj; ADDRGP4 $244 JUMPV line 496 ;495: } ;496: return; LABELV $266 line 498 ;497: } ;498: } LABELV $264 line 501 ;499: ;500: // check for sticking ;501: if ( !other->takedamage && ( ent->s.eFlags & EF_MISSILE_STICK ) ) ADDRLP4 68 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 ADDRLP4 68 INDIRI4 NEI4 $282 ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 2097152 BANDI4 ADDRLP4 68 INDIRI4 EQI4 $282 line 502 ;502: { line 503 ;503: laserTrapStick( ent, trace->endpos, trace->plane.normal ); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 72 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRLP4 72 INDIRP4 CNSTI4 24 ADDP4 ARGP4 ADDRGP4 laserTrapStick CALLV pop line 504 ;504: G_AddEvent( ent, EV_MISSILE_STICK, 0 ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 62 ARGI4 CNSTI4 0 ARGI4 ADDRGP4 G_AddEvent CALLV pop line 505 ;505: return; ADDRGP4 $227 JUMPV LABELV $282 line 509 ;506: } ;507: ;508: // impact damage ;509: if (other->takedamage) { ADDRLP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 CNSTI4 0 EQI4 $284 line 511 ;510: // FIXME: wrong damage direction? ;511: if ( ent->damage ) { ADDRFP4 0 INDIRP4 CNSTI4 688 ADDP4 INDIRI4 CNSTI4 0 EQI4 $286 line 514 ;512: vec3_t velocity; ;513: ;514: if( LogAccuracyHit( other, &g_entities[ent->r.ownerNum] ) ) { ADDRLP4 0 INDIRP4 ARGP4 CNSTI4 828 ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ARGP4 ADDRLP4 84 ADDRGP4 LogAccuracyHit CALLI4 ASGNI4 ADDRLP4 84 INDIRI4 CNSTI4 0 EQI4 $288 line 515 ;515: g_entities[ent->r.ownerNum].client->accuracy_hits++; ADDRLP4 88 CNSTI4 828 ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities+408 ADDP4 INDIRP4 CNSTI4 1656 ADDP4 ASGNP4 ADDRLP4 88 INDIRP4 ADDRLP4 88 INDIRP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 516 ;516: hitClient = qtrue; ADDRLP4 4 CNSTI4 1 ASGNI4 line 517 ;517: } LABELV $288 line 518 ;518: BG_EvaluateTrajectoryDelta( &ent->s.pos, level.time, velocity ); ADDRFP4 0 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRGP4 level+32 INDIRI4 ARGI4 ADDRLP4 72 ARGP4 ADDRGP4 BG_EvaluateTrajectoryDelta CALLV pop line 519 ;519: if ( VectorLength( velocity ) == 0 ) { ADDRLP4 72 ARGP4 ADDRLP4 88 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 88 INDIRF4 CNSTF4 0 NEF4 $292 line 520 ;520: velocity[2] = 1; // stepped on a grenade ADDRLP4 72+8 CNSTF4 1065353216 ASGNF4 line 521 ;521: } LABELV $292 line 523 ;522: ;523: if (ent->s.weapon == WP_BOWCASTER || ent->s.weapon == WP_FLECHETTE || ADDRLP4 92 ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 ASGNI4 ADDRLP4 92 INDIRI4 CNSTI4 6 EQI4 $298 ADDRLP4 92 INDIRI4 CNSTI4 9 EQI4 $298 ADDRLP4 92 INDIRI4 CNSTI4 10 NEI4 $295 LABELV $298 line 525 ;524: ent->s.weapon == WP_ROCKET_LAUNCHER) ;525: { line 526 ;526: if (ent->s.weapon == WP_FLECHETTE && (ent->s.eFlags & EF_ALT_FIRING)) ADDRLP4 96 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 96 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 9 NEI4 $299 ADDRLP4 96 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 512 BANDI4 CNSTI4 0 EQI4 $299 line 527 ;527: { line 528 ;528: ent->think(ent); ADDRLP4 100 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 100 INDIRP4 ARGP4 ADDRLP4 100 INDIRP4 CNSTI4 636 ADDP4 INDIRP4 CALLV pop line 529 ;529: } ADDRGP4 $296 JUMPV LABELV $299 line 531 ;530: else ;531: { line 532 ;532: G_Damage (other, ent, &g_entities[ent->r.ownerNum], velocity, ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 100 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 100 INDIRP4 ARGP4 CNSTI4 828 ADDRLP4 100 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ARGP4 ADDRLP4 72 ARGP4 ADDRLP4 100 INDIRP4 CNSTI4 368 ADDP4 ARGP4 ADDRLP4 100 INDIRP4 CNSTI4 688 ADDP4 INDIRI4 ARGI4 CNSTI4 1024 ARGI4 ADDRLP4 100 INDIRP4 CNSTI4 704 ADDP4 INDIRI4 ARGI4 ADDRGP4 G_Damage CALLV pop line 535 ;533: /*ent->s.origin*/ent->r.currentOrigin, ent->damage, ;534: DAMAGE_HALF_ABSORB, ent->methodOfDeath); ;535: } line 536 ;536: } ADDRGP4 $296 JUMPV LABELV $295 line 538 ;537: else ;538: { line 539 ;539: G_Damage (other, ent, &g_entities[ent->r.ownerNum], velocity, ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 96 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 96 INDIRP4 ARGP4 CNSTI4 828 ADDRLP4 96 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities ADDP4 ARGP4 ADDRLP4 72 ARGP4 ADDRLP4 96 INDIRP4 CNSTI4 368 ADDP4 ARGP4 ADDRLP4 96 INDIRP4 CNSTI4 688 ADDP4 INDIRI4 ARGI4 CNSTI4 0 ARGI4 ADDRLP4 96 INDIRP4 CNSTI4 704 ADDP4 INDIRI4 ARGI4 ADDRGP4 G_Damage CALLV pop line 542 ;540: /*ent->s.origin*/ent->r.currentOrigin, ent->damage, ;541: 0, ent->methodOfDeath); ;542: } LABELV $296 line 543 ;543: } LABELV $286 line 544 ;544: } LABELV $284 LABELV $244 line 549 ;545:killProj: ;546: // is it cheaper in bandwidth to just remove this ent and create a new ;547: // one, rather than changing the missile into the explosion? ;548: ;549: if ( other->takedamage && other->client ) { ADDRLP4 0 INDIRP4 CNSTI4 680 ADDP4 INDIRI4 CNSTI4 0 EQI4 $301 ADDRLP4 0 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $301 line 550 ;550: G_AddEvent( ent, EV_MISSILE_HIT, DirToByte( trace->plane.normal ) ); ADDRFP4 4 INDIRP4 CNSTI4 24 ADDP4 ARGP4 ADDRLP4 76 ADDRGP4 DirToByte CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 73 ARGI4 ADDRLP4 76 INDIRI4 ARGI4 ADDRGP4 G_AddEvent CALLV pop line 551 ;551: ent->s.otherEntityNum = other->s.number; ADDRFP4 0 INDIRP4 CNSTI4 184 ADDP4 ADDRLP4 0 INDIRP4 INDIRI4 ASGNI4 line 552 ;552: } else if( trace->surfaceFlags & SURF_METALSTEPS ) { ADDRGP4 $302 JUMPV LABELV $301 ADDRFP4 4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 32768 BANDI4 CNSTI4 0 EQI4 $303 line 553 ;553: G_AddEvent( ent, EV_MISSILE_MISS_METAL, DirToByte( trace->plane.normal ) ); ADDRFP4 4 INDIRP4 CNSTI4 24 ADDP4 ARGP4 ADDRLP4 76 ADDRGP4 DirToByte CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 75 ARGI4 ADDRLP4 76 INDIRI4 ARGI4 ADDRGP4 G_AddEvent CALLV pop line 554 ;554: } else if (ent->s.weapon != G2_MODEL_PART) { ADDRGP4 $304 JUMPV LABELV $303 ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 50 EQI4 $305 line 555 ;555: G_AddEvent( ent, EV_MISSILE_MISS, DirToByte( trace->plane.normal ) ); ADDRFP4 4 INDIRP4 CNSTI4 24 ADDP4 ARGP4 ADDRLP4 76 ADDRGP4 DirToByte CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 74 ARGI4 ADDRLP4 76 INDIRI4 ARGI4 ADDRGP4 G_AddEvent CALLV pop line 556 ;556: } LABELV $305 LABELV $304 LABELV $302 line 558 ;557: ;558: ent->freeAfterEvent = qtrue; ADDRFP4 0 INDIRP4 CNSTI4 492 ADDP4 CNSTI4 1 ASGNI4 line 561 ;559: ;560: // change over to a normal entity right at the point of impact ;561: ent->s.eType = ET_GENERAL; ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 CNSTI4 0 ASGNI4 line 563 ;562: ;563: SnapVectorTowards( trace->endpos, ent->s.pos.trBase ); // save net bandwidth ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 ARGP4 ADDRGP4 SnapVectorTowards CALLV pop line 565 ;564: ;565: G_SetOrigin( ent, trace->endpos ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRGP4 G_SetOrigin CALLV pop line 568 ;566: ;567: // splash damage (doesn't apply to person directly hit) ;568: if ( ent->splashDamage ) { ADDRFP4 0 INDIRP4 CNSTI4 696 ADDP4 INDIRI4 CNSTI4 0 EQI4 $307 line 569 ;569: if( G_RadiusDamage( trace->endpos, ent->parent, ent->splashDamage, ent->splashRadius, ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRLP4 76 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 76 INDIRP4 CNSTI4 536 ADDP4 INDIRP4 ARGP4 ADDRLP4 76 INDIRP4 CNSTI4 696 ADDP4 INDIRI4 CVIF4 4 ARGF4 ADDRLP4 76 INDIRP4 CNSTI4 700 ADDP4 INDIRI4 CVIF4 4 ARGF4 ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 76 INDIRP4 CNSTI4 708 ADDP4 INDIRI4 ARGI4 ADDRLP4 80 ADDRGP4 G_RadiusDamage CALLI4 ASGNI4 ADDRLP4 80 INDIRI4 CNSTI4 0 EQI4 $309 line 570 ;570: other, ent->splashMethodOfDeath ) ) { line 571 ;571: if( !hitClient ) { ADDRLP4 4 INDIRI4 CNSTI4 0 NEI4 $311 line 572 ;572: g_entities[ent->r.ownerNum].client->accuracy_hits++; ADDRLP4 84 CNSTI4 828 ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 MULI4 ADDRGP4 g_entities+408 ADDP4 INDIRP4 CNSTI4 1656 ADDP4 ASGNP4 ADDRLP4 84 INDIRP4 ADDRLP4 84 INDIRP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 573 ;573: } LABELV $311 line 574 ;574: } LABELV $309 line 575 ;575: } LABELV $307 line 577 ;576: ;577: if (ent->s.weapon == G2_MODEL_PART) ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 50 NEI4 $314 line 578 ;578: { line 579 ;579: ent->freeAfterEvent = qfalse; //it will free itself ADDRFP4 0 INDIRP4 CNSTI4 492 ADDP4 CNSTI4 0 ASGNI4 line 580 ;580: } LABELV $314 line 582 ;581: ;582: trap_LinkEntity( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 trap_LinkEntity CALLV pop line 583 ;583:} LABELV $227 endproc G_MissileImpact 128 32 export G_RunMissile proc G_RunMissile 2224 28 line 590 ;584: ;585:/* ;586:================ ;587:G_RunMissile ;588:================ ;589:*/ ;590:void G_RunMissile( gentity_t *ent ) { line 596 ;591: vec3_t origin, groundSpot; ;592: trace_t tr; ;593: int passent; ;594: ;595: // get current position ;596: BG_EvaluateTrajectory( &ent->s.pos, level.time, origin ); ADDRFP4 0 INDIRP4 CNSTI4 12 ADDP4 ARGP4 ADDRGP4 level+32 INDIRI4 ARGI4 ADDRLP4 1084 ARGP4 ADDRGP4 BG_EvaluateTrajectory CALLV pop line 599 ;597: ;598: // if this missile bounced off an invulnerability sphere ;599: if ( ent->target_ent ) { ADDRFP4 0 INDIRP4 CNSTI4 604 ADDP4 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $318 line 600 ;600: passent = ent->target_ent->s.number; ADDRLP4 1080 ADDRFP4 0 INDIRP4 CNSTI4 604 ADDP4 INDIRP4 INDIRI4 ASGNI4 line 601 ;601: } ADDRGP4 $319 JUMPV LABELV $318 line 602 ;602: else { line 604 ;603: // ignore interactions with the missile owner ;604: passent = ent->r.ownerNum; ADDRLP4 1080 ADDRFP4 0 INDIRP4 CNSTI4 396 ADDP4 INDIRI4 ASGNI4 line 605 ;605: } LABELV $319 line 607 ;606: // trace a line from the previous position to the current position ;607: trap_Trace( &tr, ent->r.currentOrigin, ent->r.mins, ent->r.maxs, origin, passent, ent->clipmask ); ADDRLP4 0 ARGP4 ADDRLP4 1108 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1108 INDIRP4 CNSTI4 368 ADDP4 ARGP4 ADDRLP4 1108 INDIRP4 CNSTI4 316 ADDP4 ARGP4 ADDRLP4 1108 INDIRP4 CNSTI4 328 ADDP4 ARGP4 ADDRLP4 1084 ARGP4 ADDRLP4 1080 INDIRI4 ARGI4 ADDRLP4 1108 INDIRP4 CNSTI4 508 ADDP4 INDIRI4 ARGI4 ADDRGP4 trap_Trace CALLV pop line 609 ;608: ;609: if ( tr.startsolid || tr.allsolid ) { ADDRLP4 1112 CNSTI4 0 ASGNI4 ADDRLP4 0+4 INDIRI4 ADDRLP4 1112 INDIRI4 NEI4 $323 ADDRLP4 0 INDIRI4 ADDRLP4 1112 INDIRI4 EQI4 $320 LABELV $323 line 611 ;610: // make sure the tr.entityNum is set to the entity we're stuck in ;611: trap_Trace( &tr, ent->r.currentOrigin, ent->r.mins, ent->r.maxs, ent->r.currentOrigin, passent, ent->clipmask ); ADDRLP4 0 ARGP4 ADDRLP4 1116 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1120 ADDRLP4 1116 INDIRP4 CNSTI4 368 ADDP4 ASGNP4 ADDRLP4 1120 INDIRP4 ARGP4 ADDRLP4 1116 INDIRP4 CNSTI4 316 ADDP4 ARGP4 ADDRLP4 1116 INDIRP4 CNSTI4 328 ADDP4 ARGP4 ADDRLP4 1120 INDIRP4 ARGP4 ADDRLP4 1080 INDIRI4 ARGI4 ADDRLP4 1116 INDIRP4 CNSTI4 508 ADDP4 INDIRI4 ARGI4 ADDRGP4 trap_Trace CALLV pop line 612 ;612: tr.fraction = 0; ADDRLP4 0+8 CNSTF4 0 ASGNF4 line 613 ;613: } ADDRGP4 $321 JUMPV LABELV $320 line 614 ;614: else { line 615 ;615: VectorCopy( tr.endpos, ent->r.currentOrigin ); ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 ADDRLP4 0+12 INDIRB ASGNB 12 line 616 ;616: } LABELV $321 line 618 ;617: ;618: if (ent->passThroughNum && tr.entityNum == (ent->passThroughNum-1)) ADDRLP4 1116 ADDRFP4 0 INDIRP4 CNSTI4 444 ADDP4 INDIRI4 ASGNI4 ADDRLP4 1116 INDIRI4 CNSTI4 0 EQI4 $326 ADDRLP4 0+52 INDIRI4 ADDRLP4 1116 INDIRI4 CNSTI4 1 SUBI4 NEI4 $326 line 619 ;619: { line 620 ;620: VectorCopy( origin, ent->r.currentOrigin ); ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 ADDRLP4 1084 INDIRB ASGNB 12 line 621 ;621: trap_LinkEntity( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 trap_LinkEntity CALLV pop line 622 ;622: goto passthrough; ADDRGP4 $329 JUMPV LABELV $326 line 625 ;623: } ;624: ;625: trap_LinkEntity( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 trap_LinkEntity CALLV pop line 627 ;626: ;627: if (ent->s.weapon == G2_MODEL_PART && !ent->bounceCount) ADDRLP4 1120 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1120 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 50 NEI4 $330 ADDRLP4 1120 INDIRP4 CNSTI4 716 ADDP4 INDIRI4 CNSTI4 0 NEI4 $330 line 628 ;628: { line 632 ;629: vec3_t lowerOrg; ;630: trace_t trG; ;631: ;632: VectorCopy(ent->r.currentOrigin, lowerOrg); ADDRLP4 2204 ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 INDIRB ASGNB 12 line 633 ;633: lowerOrg[2] -= 1; ADDRLP4 2204+8 ADDRLP4 2204+8 INDIRF4 CNSTF4 1065353216 SUBF4 ASGNF4 line 634 ;634: trap_Trace( &trG, ent->r.currentOrigin, ent->r.mins, ent->r.maxs, lowerOrg, passent, ent->clipmask ); ADDRLP4 1124 ARGP4 ADDRLP4 2216 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 2216 INDIRP4 CNSTI4 368 ADDP4 ARGP4 ADDRLP4 2216 INDIRP4 CNSTI4 316 ADDP4 ARGP4 ADDRLP4 2216 INDIRP4 CNSTI4 328 ADDP4 ARGP4 ADDRLP4 2204 ARGP4 ADDRLP4 1080 INDIRI4 ARGI4 ADDRLP4 2216 INDIRP4 CNSTI4 508 ADDP4 INDIRI4 ARGI4 ADDRGP4 trap_Trace CALLV pop line 636 ;635: ;636: VectorCopy(trG.endpos, groundSpot); ADDRLP4 1096 ADDRLP4 1124+12 INDIRB ASGNB 12 line 638 ;637: ;638: if (!trG.startsolid && !trG.allsolid && trG.entityNum == ENTITYNUM_WORLD) ADDRLP4 2220 CNSTI4 0 ASGNI4 ADDRLP4 1124+4 INDIRI4 ADDRLP4 2220 INDIRI4 NEI4 $334 ADDRLP4 1124 INDIRI4 ADDRLP4 2220 INDIRI4 NEI4 $334 ADDRLP4 1124+52 INDIRI4 CNSTI4 1022 NEI4 $334 line 639 ;639: { line 640 ;640: ent->s.groundEntityNum = trG.entityNum; ADDRFP4 0 INDIRP4 CNSTI4 192 ADDP4 ADDRLP4 1124+52 INDIRI4 ASGNI4 line 641 ;641: } ADDRGP4 $335 JUMPV LABELV $334 line 643 ;642: else ;643: { line 644 ;644: ent->s.groundEntityNum = ENTITYNUM_NONE; ADDRFP4 0 INDIRP4 CNSTI4 192 ADDP4 CNSTI4 1023 ASGNI4 line 645 ;645: } LABELV $335 line 646 ;646: } LABELV $330 line 648 ;647: ;648: if ( tr.fraction != 1) { ADDRLP4 0+8 INDIRF4 CNSTF4 1065353216 EQF4 $339 line 650 ;649: // never explode or bounce on sky ;650: if ( tr.surfaceFlags & SURF_NOIMPACT ) { ADDRLP4 0+44 INDIRI4 CNSTI4 524288 BANDI4 CNSTI4 0 EQI4 $342 line 652 ;651: // If grapple, reset owner ;652: if (ent->parent && ent->parent->client && ent->parent->client->hook == ent) { ADDRLP4 1124 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1128 ADDRLP4 1124 INDIRP4 CNSTI4 536 ADDP4 INDIRP4 ASGNP4 ADDRLP4 1132 CNSTU4 0 ASGNU4 ADDRLP4 1128 INDIRP4 CVPU4 4 ADDRLP4 1132 INDIRU4 EQU4 $345 ADDRLP4 1136 ADDRLP4 1128 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 ASGNP4 ADDRLP4 1136 INDIRP4 CVPU4 4 ADDRLP4 1132 INDIRU4 EQU4 $345 ADDRLP4 1136 INDIRP4 CNSTI4 1700 ADDP4 INDIRP4 CVPU4 4 ADDRLP4 1124 INDIRP4 CVPU4 4 NEU4 $345 line 653 ;653: ent->parent->client->hook = NULL; ADDRFP4 0 INDIRP4 CNSTI4 536 ADDP4 INDIRP4 CNSTI4 408 ADDP4 INDIRP4 CNSTI4 1700 ADDP4 CNSTP4 0 ASGNP4 line 654 ;654: } LABELV $345 line 656 ;655: ;656: if (ent->s.weapon == WP_SABER && ent->isSaberEntity) ADDRLP4 1140 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1140 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 2 NEI4 $347 ADDRLP4 1140 INDIRP4 CNSTI4 812 ADDP4 INDIRI4 CNSTI4 0 EQI4 $347 line 657 ;657: { line 658 ;658: G_RunThink( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 G_RunThink CALLV pop line 659 ;659: return; ADDRGP4 $316 JUMPV LABELV $347 line 661 ;660: } ;661: else if (ent->s.weapon != G2_MODEL_PART) ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 50 EQI4 $349 line 662 ;662: { line 663 ;663: G_FreeEntity( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 G_FreeEntity CALLV pop line 664 ;664: return; ADDRGP4 $316 JUMPV LABELV $349 line 666 ;665: } ;666: } LABELV $342 line 667 ;667: G_MissileImpact( ent, &tr ); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 0 ARGP4 ADDRGP4 G_MissileImpact CALLV pop line 668 ;668: if ( ent->s.eType != ET_MISSILE && ent->s.weapon != G2_MODEL_PART ) { ADDRLP4 1124 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1124 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 3 EQI4 $351 ADDRLP4 1124 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 50 EQI4 $351 line 669 ;669: return; // exploded ADDRGP4 $316 JUMPV LABELV $351 line 671 ;670: } ;671: } LABELV $339 LABELV $329 line 674 ;672: ;673:passthrough: ;674: if ( ent->s.pos.trType == TR_STATIONARY && (ent->s.eFlags&EF_MISSILE_STICK) ) ADDRLP4 1124 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1128 CNSTI4 0 ASGNI4 ADDRLP4 1124 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ADDRLP4 1128 INDIRI4 NEI4 $353 ADDRLP4 1124 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 2097152 BANDI4 ADDRLP4 1128 INDIRI4 EQI4 $353 line 675 ;675: {//stuck missiles should check some special stuff line 676 ;676: G_RunStuckMissile( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 G_RunStuckMissile CALLV pop line 677 ;677: return; ADDRGP4 $316 JUMPV LABELV $353 line 680 ;678: } ;679: ;680: if (ent->s.weapon == G2_MODEL_PART) ADDRFP4 0 INDIRP4 CNSTI4 276 ADDP4 INDIRI4 CNSTI4 50 NEI4 $355 line 681 ;681: { line 682 ;682: if (ent->s.groundEntityNum == ENTITYNUM_WORLD) ADDRFP4 0 INDIRP4 CNSTI4 192 ADDP4 INDIRI4 CNSTI4 1022 NEI4 $357 line 683 ;683: { line 684 ;684: ent->s.pos.trType = TR_LINEAR; ADDRFP4 0 INDIRP4 CNSTI4 12 ADDP4 CNSTI4 2 ASGNI4 line 685 ;685: VectorClear(ent->s.pos.trDelta); ADDRLP4 1132 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 1136 CNSTF4 0 ASGNF4 ADDRLP4 1132 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 1136 INDIRF4 ASGNF4 ADDRLP4 1132 INDIRP4 CNSTI4 40 ADDP4 ADDRLP4 1136 INDIRF4 ASGNF4 ADDRLP4 1132 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 1136 INDIRF4 ASGNF4 line 686 ;686: ent->s.pos.trTime = level.time; ADDRFP4 0 INDIRP4 CNSTI4 16 ADDP4 ADDRGP4 level+32 INDIRI4 ASGNI4 line 688 ;687: ;688: VectorCopy(groundSpot, ent->s.pos.trBase); ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 ADDRLP4 1096 INDIRB ASGNB 12 line 689 ;689: VectorCopy(groundSpot, ent->r.currentOrigin); ADDRFP4 0 INDIRP4 CNSTI4 368 ADDP4 ADDRLP4 1096 INDIRB ASGNB 12 line 691 ;690: ;691: if (ent->s.apos.trType != TR_STATIONARY) ADDRFP4 0 INDIRP4 CNSTI4 48 ADDP4 INDIRI4 CNSTI4 0 EQI4 $360 line 692 ;692: { line 693 ;693: ent->s.apos.trType = TR_STATIONARY; ADDRFP4 0 INDIRP4 CNSTI4 48 ADDP4 CNSTI4 0 ASGNI4 line 694 ;694: ent->s.apos.trTime = level.time; ADDRFP4 0 INDIRP4 CNSTI4 52 ADDP4 ADDRGP4 level+32 INDIRI4 ASGNI4 line 696 ;695: ;696: ent->s.apos.trBase[ROLL] = 0; ADDRFP4 0 INDIRP4 CNSTI4 68 ADDP4 CNSTF4 0 ASGNF4 line 697 ;697: ent->s.apos.trBase[PITCH] = 0; ADDRFP4 0 INDIRP4 CNSTI4 60 ADDP4 CNSTF4 0 ASGNF4 line 698 ;698: } LABELV $360 line 699 ;699: } LABELV $357 line 700 ;700: } LABELV $355 line 703 ;701: ;702: // check think function after bouncing ;703: G_RunThink( ent ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 G_RunThink CALLV pop line 704 ;704:} LABELV $316 endproc G_RunMissile 2224 28 import RandFloat import laserTrapStick import trap_ROFF_Purge_Ent import trap_ROFF_Play import trap_ROFF_Cache import trap_ROFF_UpdateEntities import trap_ROFF_Clean import trap_SP_GetStringTextString import trap_SP_Register import trap_SP_RegisterServer import trap_SnapVector import trap_GeneticParentsAndChildSelection import trap_BotResetWeaponState import trap_BotFreeWeaponState import trap_BotAllocWeaponState import trap_BotLoadWeaponWeights import trap_BotGetWeaponInfo import trap_BotChooseBestFightWeapon import trap_BotAddAvoidSpot import trap_BotInitMoveState import trap_BotFreeMoveState import trap_BotAllocMoveState import trap_BotPredictVisiblePosition import trap_BotMovementViewTarget import trap_BotReachabilityArea import trap_BotResetLastAvoidReach import trap_BotResetAvoidReach import trap_BotMoveInDirection import trap_BotMoveToGoal import trap_BotResetMoveState import trap_BotFreeGoalState import trap_BotAllocGoalState import trap_BotMutateGoalFuzzyLogic import trap_BotSaveGoalFuzzyLogic import trap_BotInterbreedGoalFuzzyLogic import trap_BotFreeItemWeights import trap_BotLoadItemWeights import trap_BotUpdateEntityItems import trap_BotInitLevelItems import trap_BotSetAvoidGoalTime import trap_BotAvoidGoalTime import trap_BotGetLevelItemGoal import trap_BotGetMapLocationGoal import trap_BotGetNextCampSpotGoal import trap_BotItemGoalInVisButNotVisible import trap_BotTouchingGoal import trap_BotChooseNBGItem import trap_BotChooseLTGItem import trap_BotGetSecondGoal import trap_BotGetTopGoal import trap_BotGoalName import trap_BotDumpGoalStack import trap_BotDumpAvoidGoals import trap_BotEmptyGoalStack import trap_BotPopGoal import trap_BotPushGoal import trap_BotResetAvoidGoals import trap_BotRemoveFromAvoidGoals import trap_BotResetGoalState import trap_BotSetChatName import trap_BotSetChatGender import trap_BotLoadChatFile import trap_BotReplaceSynonyms import trap_UnifyWhiteSpaces import trap_BotMatchVariable import trap_BotFindMatch import trap_StringContains import trap_BotGetChatMessage import trap_BotEnterChat import trap_BotChatLength import trap_BotReplyChat import trap_BotNumInitialChats import trap_BotInitialChat import trap_BotNumConsoleMessages import trap_BotNextConsoleMessage import trap_BotRemoveConsoleMessage import trap_BotQueueConsoleMessage import trap_BotFreeChatState import trap_BotAllocChatState import trap_Characteristic_String import trap_Characteristic_BInteger import trap_Characteristic_Integer import trap_Characteristic_BFloat import trap_Characteristic_Float import trap_BotFreeCharacter import trap_BotLoadCharacter import trap_EA_ResetInput import trap_EA_GetInput import trap_EA_EndRegular import trap_EA_ForcePower import trap_EA_Alt_Attack import trap_EA_View import trap_EA_Move import trap_EA_DelayedJump import trap_EA_Jump import trap_EA_SelectWeapon import trap_EA_MoveRight import trap_EA_MoveLeft import trap_EA_MoveBack import trap_EA_MoveForward import trap_EA_MoveDown import trap_EA_MoveUp import trap_EA_Crouch import trap_EA_Respawn import trap_EA_Use import trap_EA_Attack import trap_EA_Talk import trap_EA_Gesture import trap_EA_Action import trap_EA_Command import trap_EA_SayTeam import trap_EA_Say import trap_AAS_PredictClientMovement import trap_AAS_Swimming import trap_AAS_AlternativeRouteGoals import trap_AAS_PredictRoute import trap_AAS_EnableRoutingArea import trap_AAS_AreaTravelTimeToGoalArea import trap_AAS_AreaReachability import trap_AAS_IntForBSPEpairKey import trap_AAS_FloatForBSPEpairKey import trap_AAS_VectorForBSPEpairKey import trap_AAS_ValueForBSPEpairKey import trap_AAS_NextBSPEntity import trap_AAS_PointContents import trap_AAS_TraceAreas import trap_AAS_PointReachabilityAreaIndex import trap_AAS_PointAreaNum import trap_AAS_Time import trap_AAS_PresenceTypeBoundingBox import trap_AAS_Initialized import trap_AAS_EntityInfo import trap_AAS_AreaInfo import trap_AAS_BBoxAreas import trap_BotUserCommand import trap_BotGetServerCommand import trap_BotGetSnapshotEntity import trap_BotLibTest import trap_BotLibUpdateEntity import trap_BotLibLoadMap import trap_BotLibStartFrame import trap_BotLibDefine import trap_BotLibVarGet import trap_BotLibVarSet import trap_BotLibShutdown import trap_BotLibSetup import trap_DebugPolygonDelete import trap_DebugPolygonCreate import trap_GetEntityToken import trap_GetUsercmd import trap_BotFreeClient import trap_BotAllocateClient import trap_EntityContact import trap_EntitiesInBox import trap_UnlinkEntity import trap_LinkEntity import trap_AreasConnected import trap_AdjustAreaPortalState import trap_InPVSIgnorePortals import trap_InPVS import trap_PointContents import trap_Trace import trap_SetBrushModel import trap_GetServerinfo import trap_SetUserinfo import trap_GetUserinfo import trap_GetConfigstring import trap_SetConfigstring import trap_SendServerCommand import trap_DropClient import trap_LocateGameData import trap_Cvar_VariableStringBuffer import trap_Cvar_VariableValue import trap_Cvar_VariableIntegerValue import trap_Cvar_Set import trap_Cvar_Update import trap_Cvar_Register import trap_SendConsoleCommand import trap_FS_GetFileList import trap_FS_FCloseFile import trap_FS_Write import trap_FS_Read import trap_FS_FOpenFile import trap_Args import trap_Argv import trap_Argc import trap_Milliseconds import trap_Error import trap_Printf import g_timeouttospec import g_forceDodge import g_dismember import g_singlePlayer import g_enableBreath import g_enableDust import g_rankings import pmove_msec import pmove_fixed import g_smoothClients import g_blueteam import g_redteam import g_debugUp import g_debugRight import g_debugForward import g_filterBan import g_banIPs import g_teamForceBalance import g_teamAutoJoin import g_allowVote import g_blood import g_doWarmup import g_warmup import g_motd import g_synchronousClients import g_adaptRespawn import g_weaponTeamRespawn import g_weaponRespawn import g_debugDamage import g_debugAlloc import g_debugMove import g_inactivity import g_forcerespawn import g_quadfactor import g_knockback import g_speed import g_gravity import g_needpass import g_password import g_friendlySaber import g_friendlyFire import g_saberInterpolate import g_capturelimit import g_timelimit import g_duel_fraglimit import g_fraglimit import g_duelWeaponDisable import g_weaponDisable import g_forcePowerDisable import g_spawnInvulnerability import g_forceRegenTime import g_saberLocking import g_privateDuel import g_forceBasedTeams import g_maxForceRank import g_dmflags import g_autoMapCycle import g_restarted import g_maxGameClients import g_maxclients import g_cheats import g_dedicated import g_gametype import g_entities import level import Pickup_Team import CheckTeamStatus import TeamplayInfoMessage import Team_GetLocationMsg import Team_GetLocation import SelectSagaSpawnPoint import SelectCTFSpawnPoint import Team_FreeEntity import Team_ReturnFlag import Team_InitGame import Team_CheckHurtCarrier import Team_FragBonuses import Team_DroppedFlagThink import AddTeamScore import TeamColorString import OtherTeamName import TeamName import OtherTeam import BotAIStartFrame import BotAIShutdownClient import BotAISetupClient import BotAILoadMap import BotAIShutdown import BotAISetup import B_CleanupAlloc import B_InitAlloc import InFieldOfVision import BotOrder import OrgVisible import InitSagaMode import G_ClearClientLog import G_LogExit import G_LogWeaponOutput import G_LogWeaponInit import G_LogWeaponItem import G_LogWeaponPowerup import G_LogWeaponFrag import G_LogWeaponDeath import G_LogWeaponKill import G_LogWeaponDamage import G_LogWeaponFire import G_LogWeaponPickup import Jedi_DodgeEvasion import ForceTelepathy import ForceThrow import ForceSeeing import ForceTeamForceReplenish import ForceTeamHeal import ForceAbsorb import ForceProtect import ForceGrip import ForceRage import ForceSpeed import ForceHeal import ForcePowerUsableOn import WP_ForcePowersUpdate import WP_SpawnInitForcePowers import WP_InitForcePowers import WP_SaberInitBladeData import WP_SaberCanBlock import WP_SaberPositionUpdate import WP_ForcePowerStop import HasSetSaberOnly import G_PreDefSound import G_RefreshNextMap import G_DoesMapSupportGametype import BotInterbreedEndMatch import Svcmd_BotList_f import Svcmd_AddBot_f import G_BotConnect import G_RemoveQueuedBotBegin import G_CheckBotSpawn import G_GetBotInfoByName import G_GetBotInfoByNumber import G_InitBots import UpdateTournamentInfo import G_WriteSessionData import G_InitWorldSession import G_InitSessionData import G_ReadSessionData import Svcmd_GameMem_f import G_InitMemory import G_Alloc import Team_CheckDroppedItem import OnSameTeam import G_RunClient import ClientEndFrame import ClientThink import G_CheckClientTimeouts import ClientCommand import ClientBegin import ClientDisconnect import ClientUserinfoChanged import ClientConnect import G_GetStripEdString import G_Error import G_Printf import SendScoreboardMessageToAllClients import G_LogPrintf import G_RunThink import CheckTeamLeader import SetLeader import FindIntermissionPoint import g_ff_objectives import DeathmatchScoreboardMessage import G_SetStats import MoveClientToIntermission import BlowDetpacks import FireWeapon import G_FilterPacket import G_ProcessIPBans import ConsoleCommand import gJMSaberEnt import SpotWouldTelefrag import CalculateRanks import AddScore import player_die import ClientSpawn import InitBodyQue import BeginIntermission import respawn import CopyToBodyQue import SelectSpawnPoint import SetClientViewAngle import PickTeam import TeamLeader import TeamCount import CheckGauntletAttack import SnapVectorTowards import CalcMuzzlePoint import LogAccuracyHit import WP_FireGenericBlasterMissile import WP_FireTurretMissile import G_PlayerBecomeATST import ATST_ManageDamageBoxes import TeleportPlayer import trigger_teleporter_touch import Touch_DoorTrigger import G_RunMover import WP_FireBlasterMissile import ExplodeDeath import TossClientCubes import TossClientItems import TossClientWeapon import body_die import G_RadiusDamage import G_Damage import CanDamage import trap_G2API_SetBoneAnim import trap_G2API_GetGLAName import trap_G2API_SetBoneAngles import trap_G2API_CleanGhoul2Models import trap_G2API_RemoveGhoul2Model import trap_G2API_HasGhoul2ModelOnIndex import trap_G2API_DuplicateGhoul2Instance import trap_G2API_CopySpecificGhoul2Model import trap_G2API_CopyGhoul2Instance import trap_G2API_SetBoltInfo import trap_G2API_AddBolt import trap_G2API_InitGhoul2Model import trap_G2API_GetBoltMatrix_NoReconstruct import trap_G2API_GetBoltMatrix import trap_G2_HaveWeGhoul2Models import trap_G2_SetGhoul2ModelIndexes import trap_G2_ListModelBones import trap_G2_ListModelSurfaces import G_SkinIndex import BuildShaderStateConfig import AddRemap import G_SetOrigin import G_AddEvent import G_AddPredictableEvent import vtos import tv import G_RunObject import G_TouchSolids import G_TouchTriggers import G_EntitiesFree import G_FreeEntity import G_KillG2Queue import G_SendG2KillQueue import TryUse import G_EntitySound import G_SoundAtLoc import G_Sound import G_MuteSound import G_ScreenShake import G_PlayEffect import G_TempEntity import G_Spawn import G_InitGentity import G_SetAngles import G_SetMovedir import G_UseTargets import G_PickTarget import G_RadiusList import G_Find import G_KillBox import G_TeamCommand import G_EffectIndex import G_SoundIndex import G_ModelIndex import SaveRegisteredItems import RegisterItem import ClearRegisteredItems import Touch_Item import Add_Ammo import ArmorIndex import Think_Weapon import FinishSpawningItem import G_SpawnItem import SetRespawn import LaunchItem import Drop_Item import PrecacheItem import UseHoldableItem import RespawnItem import G_RunItem import G_CheckTeamItems import ItemUse_MedPack import ItemUse_Seeker import ItemUse_Sentry import ItemUse_Shield import ItemUse_Binoculars import G_GetDuelWinner import Cmd_EngageDuel_f import Cmd_ToggleSaber_f import G_ItemUsable import Cmd_SaberAttackCycle_f import Cmd_FollowCycle_f import SetTeam import BroadcastTeamChange import StopFollowing import Cmd_Score_f import G_NewString import G_SpawnEntitiesFromString import G_SpawnVector import G_SpawnInt import G_SpawnFloat import G_SpawnString import g2SaberInstance import precachedKyle import forcePowerDarkLight import WeaponAttackAnim import WeaponReadyAnim import BG_OutOfMemory import BG_StringAlloc import BG_TempFree import BG_TempAlloc import BG_AllocUnaligned import BG_Alloc import BG_CanUseFPNow import BG_HasYsalamiri import BG_GetItemIndexByTag import BG_ParseAnimationFile import BG_PlayerTouchesItem import BG_G2PlayerAngles import BG_PlayerStateToEntityStateExtraPolate import BG_PlayerStateToEntityState import BG_TouchJumpPad import BG_AddPredictableEventToPlayerstate import BG_EvaluateTrajectoryDelta import BG_EvaluateTrajectory import BG_ForcePowerDrain import BG_SaberStartTransAnim import BG_InDeathAnim import BG_InRoll import BG_SaberInSpecialAttack import BG_SpinningSaberAnim import BG_FlippingAnim import BG_SaberInIdle import BG_SaberInSpecial import BG_SaberInAttack import BG_DirectFlippingAnim import BG_InSaberStandAnim import BG_InSpecialJump import BG_LegalizedForcePowers import saberMoveData import BG_CanItemBeGrabbed import BG_FindItemForHoldable import BG_FindItemForPowerup import BG_FindItemForWeapon import BG_FindItem import vectoyaw import bg_numItems import bg_itemlist import Pmove import PM_UpdateViewAngles import pm import bgForcePowerCost import forceMasteryPoints import forceMasteryLevels import bgGlobalAnimations import BGPAFtextLoaded import forcePowerSorted import WP_MuzzlePoint import ammoData import weaponData import GetStringForID import GetIDForString import Q_irand import irand import flrand import Rand_Init import Com_Printf import Com_Error import Info_NextPair import Info_Validate import Info_SetValueForKey_Big import Info_SetValueForKey import Info_RemoveKey_big import Info_RemoveKey import Info_ValueForKey import va import Q_CleanStr import Q_PrintStrlen import Q_strcat import Q_strncpyz import Q_strrchr import Q_strupr import Q_strlwr import Q_stricmpn import Q_strncmp import Q_stricmp import Q_isalpha import Q_isupper import Q_islower import Q_isprint import Com_sprintf import Parse3DMatrix import Parse2DMatrix import Parse1DMatrix import SkipRestOfLine import SkipBracedSection import COM_MatchToken import COM_ParseWarning import COM_ParseError import COM_Compress import COM_ParseExt import COM_Parse import SkipWhitespace import COM_GetCurrentParseLine import COM_BeginParseSession import COM_DefaultExtension import COM_StripExtension import COM_SkipPath import Com_Clamp import PerpendicularVector import AngleVectors import MatrixMultiply import MakeNormalVectors import RotateAroundDirection import RotatePointAroundVector import ProjectPointOnPlane import PlaneFromPoints import AngleDelta import AngleNormalize180 import AngleNormalize360 import AnglesSubtract import AngleSubtract import LerpAngle import AngleMod import BoxOnPlaneSide import SetPlaneSignbits import AxisCopy import AxisClear import AnglesToAxis import vectoangles import Q_crandom import Q_random import Q_rand import Q_acos import Q_log2 import VectorRotate import Vector4Scale import VectorNormalize2 import VectorNormalize import CrossProduct import VectorInverse import VectorNormalizeFast import DistanceSquared import Distance import VectorLengthSquared import VectorLength import VectorCompare import AddPointToBounds import ClearBounds import RadiusFromBounds import NormalizeColor import ColorBytes4 import ColorBytes3 import _VectorMA import _VectorScale import _VectorCopy import _VectorAdd import _VectorSubtract import _DotProduct import ByteToDir import DirToByte import powf import ClampShort import ClampChar import Q_rsqrt import Q_fabs import axisDefault import vec3_origin import g_color_table import colorDkBlue import colorLtBlue import colorDkGrey import colorMdGrey import colorLtGrey import colorWhite import colorCyan import colorMagenta import colorYellow import colorBlue import colorGreen import colorRed import colorBlack import colorTable import bytedirs import Com_Memcpy import Com_Memset import Hunk_Alloc import forceSpeedLevels import FloatSwap import LongSwap import ShortSwap import acos import fabs import abs import tan import atan2 import cos import sin import sqrt import floor import ceil import memcpy import memset import memmove import sscanf import vsprintf import _atoi import atoi import _atof import atof import toupper import tolower import strncpy import strstr import strchr import strcmp import strcpy import strcat import strlen import rand import srand import qsort lit align 1 LABELV $178 char 1 115 char 1 111 char 1 117 char 1 110 char 1 100 char 1 47 char 1 119 char 1 101 char 1 97 char 1 112 char 1 111 char 1 110 char 1 115 char 1 47 char 1 115 char 1 97 char 1 98 char 1 101 char 1 114 char 1 47 char 1 98 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 37 char 1 105 char 1 46 char 1 119 char 1 97 char 1 118 char 1 0 align 1 LABELV $175 char 1 115 char 1 111 char 1 117 char 1 110 char 1 100 char 1 47 char 1 119 char 1 101 char 1 97 char 1 112 char 1 111 char 1 110 char 1 115 char 1 47 char 1 116 char 1 104 char 1 101 char 1 114 char 1 109 char 1 97 char 1 108 char 1 47 char 1 98 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 37 char 1 105 char 1 46 char 1 119 char 1 97 char 1 118 char 1 0