export PM_irand_timesync code proc PM_irand_timesync 8 4 file "../bg_saber.c" line 6 ;1:#include "q_shared.h" ;2:#include "bg_public.h" ;3:#include "bg_local.h" ;4: ;5:int PM_irand_timesync(int val1, int val2) ;6:{ line 9 ;7: int i; ;8: ;9: i = (val1-1) + (Q_random( &pm->cmd.serverTime )*(val2 - val1)) + 1; ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 ARGP4 ADDRLP4 4 ADDRGP4 Q_random CALLF4 ASGNF4 ADDRLP4 0 ADDRFP4 0 INDIRI4 CNSTI4 1 SUBI4 CVIF4 4 ADDRLP4 4 INDIRF4 ADDRFP4 4 INDIRI4 ADDRFP4 0 INDIRI4 SUBI4 CVIF4 4 MULF4 ADDF4 CNSTF4 1065353216 ADDF4 CVFI4 4 ASGNI4 line 10 ;10: if (i < val1) ADDRLP4 0 INDIRI4 ADDRFP4 0 INDIRI4 GEI4 $66 line 11 ;11: { line 12 ;12: i = val1; ADDRLP4 0 ADDRFP4 0 INDIRI4 ASGNI4 line 13 ;13: } LABELV $66 line 14 ;14: if (i > val2) ADDRLP4 0 INDIRI4 ADDRFP4 4 INDIRI4 LEI4 $68 line 15 ;15: { line 16 ;16: i = val2; ADDRLP4 0 ADDRFP4 4 INDIRI4 ASGNI4 line 17 ;17: } LABELV $68 line 19 ;18: ;19: return i; ADDRLP4 0 INDIRI4 RETI4 LABELV $65 endproc PM_irand_timesync 8 4 export BG_ForcePowerDrain proc BG_ForcePowerDrain 12 0 line 23 ;20:} ;21: ;22:void BG_ForcePowerDrain( playerState_t *ps, forcePowers_t forcePower, int overrideAmt ) ;23:{ line 25 ;24: //take away the power ;25: int drain = overrideAmt; ADDRLP4 0 ADDRFP4 8 INDIRI4 ASGNI4 line 34 ;26: ;27: /* ;28: if (ps->powerups[PW_FORCE_BOON]) ;29: { ;30: return; ;31: } ;32: */ ;33: ;34: if ( !drain ) ADDRLP4 0 INDIRI4 CNSTI4 0 NEI4 $71 line 35 ;35: { line 36 ;36: drain = forcePowerNeeded[ps->fd.forcePowerLevel[forcePower]][forcePower]; ADDRLP4 4 ADDRFP4 4 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 0 ADDRLP4 4 INDIRI4 CNSTI4 72 ADDRLP4 4 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 932 ADDP4 ADDP4 INDIRI4 MULI4 ADDRGP4 forcePowerNeeded ADDP4 ADDP4 INDIRI4 ASGNI4 line 37 ;37: } LABELV $71 line 38 ;38: if ( !drain ) ADDRLP4 0 INDIRI4 CNSTI4 0 NEI4 $73 line 39 ;39: { line 40 ;40: return; ADDRGP4 $70 JUMPV LABELV $73 line 43 ;41: } ;42: ;43: if (forcePower == FP_LEVITATION) ADDRFP4 4 INDIRI4 CNSTI4 1 NEI4 $75 line 44 ;44: { //special case line 45 ;45: int jumpDrain = 0; ADDRLP4 4 CNSTI4 0 ASGNI4 line 47 ;46: ;47: if (ps->velocity[2] > 250) ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1132068864 LEF4 $77 line 48 ;48: { line 49 ;49: jumpDrain = 20; ADDRLP4 4 CNSTI4 20 ASGNI4 line 50 ;50: } ADDRGP4 $78 JUMPV LABELV $77 line 51 ;51: else if (ps->velocity[2] > 200) ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1128792064 LEF4 $79 line 52 ;52: { line 53 ;53: jumpDrain = 16; ADDRLP4 4 CNSTI4 16 ASGNI4 line 54 ;54: } ADDRGP4 $80 JUMPV LABELV $79 line 55 ;55: else if (ps->velocity[2] > 150) ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1125515264 LEF4 $81 line 56 ;56: { line 57 ;57: jumpDrain = 12; ADDRLP4 4 CNSTI4 12 ASGNI4 line 58 ;58: } ADDRGP4 $82 JUMPV LABELV $81 line 59 ;59: else if (ps->velocity[2] > 100) ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1120403456 LEF4 $83 line 60 ;60: { line 61 ;61: jumpDrain = 8; ADDRLP4 4 CNSTI4 8 ASGNI4 line 62 ;62: } ADDRGP4 $84 JUMPV LABELV $83 line 63 ;63: else if (ps->velocity[2] > 50) ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1112014848 LEF4 $85 line 64 ;64: { line 65 ;65: jumpDrain = 6; ADDRLP4 4 CNSTI4 6 ASGNI4 line 66 ;66: } ADDRGP4 $86 JUMPV LABELV $85 line 67 ;67: else if (ps->velocity[2] > 0) ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 0 LEF4 $87 line 68 ;68: { line 69 ;69: jumpDrain = 4; ADDRLP4 4 CNSTI4 4 ASGNI4 line 70 ;70: } LABELV $87 LABELV $86 LABELV $84 LABELV $82 LABELV $80 LABELV $78 line 72 ;71: ;72: if (jumpDrain) ADDRLP4 4 INDIRI4 CNSTI4 0 EQI4 $89 line 73 ;73: { line 74 ;74: jumpDrain /= ps->fd.forcePowerLevel[FP_LEVITATION]; ADDRLP4 4 ADDRLP4 4 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 936 ADDP4 INDIRI4 DIVI4 ASGNI4 line 75 ;75: } LABELV $89 line 77 ;76: ;77: ps->fd.forcePower -= jumpDrain; ADDRLP4 8 ADDRFP4 0 INDIRP4 CNSTI4 920 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRI4 ADDRLP4 4 INDIRI4 SUBI4 ASGNI4 line 78 ;78: if ( ps->fd.forcePower < 0 ) ADDRFP4 0 INDIRP4 CNSTI4 920 ADDP4 INDIRI4 CNSTI4 0 GEI4 $70 line 79 ;79: { line 80 ;80: ps->fd.forcePower = 0; ADDRFP4 0 INDIRP4 CNSTI4 920 ADDP4 CNSTI4 0 ASGNI4 line 81 ;81: } line 83 ;82: ;83: return; ADDRGP4 $70 JUMPV LABELV $75 line 86 ;84: } ;85: ;86: ps->fd.forcePower -= drain; ADDRLP4 4 ADDRFP4 0 INDIRP4 CNSTI4 920 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRI4 ADDRLP4 0 INDIRI4 SUBI4 ASGNI4 line 87 ;87: if ( ps->fd.forcePower < 0 ) ADDRFP4 0 INDIRP4 CNSTI4 920 ADDP4 INDIRI4 CNSTI4 0 GEI4 $93 line 88 ;88: { line 89 ;89: ps->fd.forcePower = 0; ADDRFP4 0 INDIRP4 CNSTI4 920 ADDP4 CNSTI4 0 ASGNI4 line 90 ;90: } LABELV $93 line 91 ;91:} LABELV $70 endproc BG_ForcePowerDrain 12 0 data export saberMoveData align 4 LABELV saberMoveData address $95 byte 4 550 byte 4 1 byte 4 1 byte 4 0 byte 4 350 byte 4 0 byte 4 0 byte 4 0 byte 4 0 address $96 byte 4 553 byte 4 1 byte 4 1 byte 4 0 byte 4 350 byte 4 2 byte 4 1 byte 4 22 byte 4 0 address $97 byte 4 566 byte 4 1 byte 4 1 byte 4 2 byte 4 350 byte 4 0 byte 4 1 byte 4 22 byte 4 0 address $98 byte 4 567 byte 4 1 byte 4 1 byte 4 2 byte 4 350 byte 4 0 byte 4 1 byte 4 22 byte 4 0 address $99 byte 4 129 byte 4 4 byte 4 0 byte 4 10 byte 4 100 byte 4 1 byte 4 25 byte 4 25 byte 4 200 address $100 byte 4 127 byte 4 5 byte 4 1 byte 4 10 byte 4 100 byte 4 1 byte 4 26 byte 4 26 byte 4 200 address $101 byte 4 131 byte 4 6 byte 4 2 byte 4 10 byte 4 50 byte 4 1 byte 4 27 byte 4 27 byte 4 200 address $102 byte 4 130 byte 4 0 byte 4 4 byte 4 10 byte 4 100 byte 4 1 byte 4 28 byte 4 28 byte 4 200 address $103 byte 4 128 byte 4 1 byte 4 5 byte 4 10 byte 4 100 byte 4 1 byte 4 29 byte 4 29 byte 4 200 address $104 byte 4 132 byte 4 2 byte 4 6 byte 4 10 byte 4 100 byte 4 1 byte 4 30 byte 4 30 byte 4 200 address $105 byte 4 126 byte 4 3 byte 4 7 byte 4 10 byte 4 100 byte 4 1 byte 4 31 byte 4 31 byte 4 200 address $106 byte 4 803 byte 4 1 byte 4 1 byte 4 10 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $107 byte 4 804 byte 4 1 byte 4 1 byte 4 10 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $108 byte 4 809 byte 4 1 byte 4 1 byte 4 10 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $109 byte 4 808 byte 4 7 byte 4 3 byte 4 10 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $110 byte 4 807 byte 4 3 byte 4 7 byte 4 10 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $111 byte 4 806 byte 4 1 byte 4 3 byte 4 10 byte 4 100 byte 4 1 byte 4 1 byte 4 51 byte 4 200 address $112 byte 4 805 byte 4 5 byte 4 1 byte 4 10 byte 4 100 byte 4 1 byte 4 1 byte 4 40 byte 4 200 address $113 byte 4 178 byte 4 1 byte 4 4 byte 4 10 byte 4 100 byte 4 1 byte 4 4 byte 4 4 byte 4 200 address $114 byte 4 176 byte 4 1 byte 4 5 byte 4 10 byte 4 100 byte 4 1 byte 4 5 byte 4 5 byte 4 200 address $115 byte 4 180 byte 4 1 byte 4 6 byte 4 10 byte 4 100 byte 4 1 byte 4 6 byte 4 6 byte 4 200 address $116 byte 4 179 byte 4 1 byte 4 0 byte 4 10 byte 4 100 byte 4 1 byte 4 7 byte 4 7 byte 4 200 address $117 byte 4 177 byte 4 1 byte 4 1 byte 4 10 byte 4 100 byte 4 1 byte 4 8 byte 4 8 byte 4 200 address $118 byte 4 181 byte 4 1 byte 4 2 byte 4 10 byte 4 100 byte 4 1 byte 4 9 byte 4 9 byte 4 200 address $119 byte 4 175 byte 4 1 byte 4 3 byte 4 10 byte 4 100 byte 4 1 byte 4 10 byte 4 10 byte 4 200 address $120 byte 4 186 byte 4 0 byte 4 1 byte 4 2 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $121 byte 4 184 byte 4 1 byte 4 1 byte 4 2 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $122 byte 4 188 byte 4 2 byte 4 1 byte 4 2 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $123 byte 4 185 byte 4 4 byte 4 1 byte 4 2 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $124 byte 4 183 byte 4 5 byte 4 1 byte 4 2 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $125 byte 4 187 byte 4 6 byte 4 1 byte 4 2 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $126 byte 4 182 byte 4 7 byte 4 1 byte 4 2 byte 4 100 byte 4 1 byte 4 1 byte 4 1 byte 4 200 address $127 byte 4 133 byte 4 0 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 8 byte 4 150 address $128 byte 4 160 byte 4 0 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 9 byte 4 150 address $129 byte 4 161 byte 4 0 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 10 byte 4 150 address $130 byte 4 134 byte 4 0 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 4 byte 4 150 address $131 byte 4 135 byte 4 0 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 5 byte 4 150 address $132 byte 4 136 byte 4 0 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 6 byte 4 150 address $133 byte 4 162 byte 4 1 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 7 byte 4 150 address $134 byte 4 137 byte 4 1 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 9 byte 4 150 address $135 byte 4 163 byte 4 1 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 10 byte 4 150 address $136 byte 4 138 byte 4 1 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 4 byte 4 150 address $137 byte 4 139 byte 4 1 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 5 byte 4 150 address $138 byte 4 140 byte 4 1 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 6 byte 4 150 address $139 byte 4 141 byte 4 2 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 7 byte 4 150 address $140 byte 4 164 byte 4 2 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 8 byte 4 150 address $141 byte 4 165 byte 4 2 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 10 byte 4 150 address $142 byte 4 142 byte 4 2 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 4 byte 4 150 address $143 byte 4 143 byte 4 2 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 5 byte 4 150 address $144 byte 4 144 byte 4 2 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 6 byte 4 150 address $145 byte 4 145 byte 4 3 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 7 byte 4 150 address $146 byte 4 146 byte 4 3 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 8 byte 4 150 address $147 byte 4 147 byte 4 3 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 9 byte 4 150 address $148 byte 4 148 byte 4 3 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 4 byte 4 150 address $149 byte 4 149 byte 4 3 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 5 byte 4 150 address $150 byte 4 150 byte 4 3 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 6 byte 4 150 address $151 byte 4 151 byte 4 4 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 7 byte 4 150 address $152 byte 4 166 byte 4 4 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 8 byte 4 150 address $153 byte 4 167 byte 4 4 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 9 byte 4 150 address $154 byte 4 168 byte 4 4 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 10 byte 4 150 address $155 byte 4 169 byte 4 4 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 5 byte 4 150 address $156 byte 4 152 byte 4 4 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 6 byte 4 150 address $157 byte 4 153 byte 4 5 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 7 byte 4 150 address $158 byte 4 154 byte 4 5 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 8 byte 4 150 address $159 byte 4 170 byte 4 5 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 9 byte 4 150 address $160 byte 4 171 byte 4 5 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 10 byte 4 150 address $161 byte 4 155 byte 4 5 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 4 byte 4 150 address $162 byte 4 172 byte 4 5 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 6 byte 4 150 address $163 byte 4 156 byte 4 6 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 7 byte 4 150 address $164 byte 4 157 byte 4 6 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 8 byte 4 150 address $165 byte 4 158 byte 4 6 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 9 byte 4 150 address $166 byte 4 173 byte 4 6 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 10 byte 4 150 address $167 byte 4 174 byte 4 6 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 4 byte 4 150 address $168 byte 4 159 byte 4 6 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 5 byte 4 150 address $169 byte 4 189 byte 4 0 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 33 byte 4 150 address $170 byte 4 190 byte 4 1 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 42 byte 4 150 address $171 byte 4 191 byte 4 2 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 47 byte 4 150 address $172 byte 4 192 byte 4 3 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 55 byte 4 150 address $173 byte 4 193 byte 4 4 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 58 byte 4 150 address $174 byte 4 194 byte 4 5 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 63 byte 4 150 address $175 byte 4 195 byte 4 6 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 70 byte 4 150 address $176 byte 4 196 byte 4 0 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 25 byte 4 33 byte 4 150 address $177 byte 4 197 byte 4 1 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 26 byte 4 42 byte 4 150 address $178 byte 4 198 byte 4 2 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 47 byte 4 150 address $179 byte 4 192 byte 4 3 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 55 byte 4 150 address $180 byte 4 199 byte 4 4 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 28 byte 4 58 byte 4 150 address $181 byte 4 200 byte 4 5 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 29 byte 4 63 byte 4 150 address $182 byte 4 201 byte 4 6 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 30 byte 4 70 byte 4 150 address $183 byte 4 202 byte 4 7 byte 4 7 byte 4 10 byte 4 100 byte 4 0 byte 4 27 byte 4 55 byte 4 150 address $184 byte 4 522 byte 4 0 byte 4 0 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $185 byte 4 523 byte 4 1 byte 4 1 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $186 byte 4 524 byte 4 2 byte 4 2 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $187 byte 4 525 byte 4 3 byte 4 3 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $188 byte 4 526 byte 4 4 byte 4 4 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $189 byte 4 527 byte 4 5 byte 4 5 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $190 byte 4 528 byte 4 6 byte 4 6 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $191 byte 4 529 byte 4 7 byte 4 7 byte 4 10 byte 4 100 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $192 byte 4 530 byte 4 3 byte 4 7 byte 4 10 byte 4 50 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $193 byte 4 531 byte 4 2 byte 4 6 byte 4 10 byte 4 50 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $194 byte 4 532 byte 4 4 byte 4 0 byte 4 10 byte 4 50 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $195 byte 4 533 byte 4 6 byte 4 2 byte 4 10 byte 4 50 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $196 byte 4 534 byte 4 7 byte 4 3 byte 4 10 byte 4 50 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $197 byte 4 535 byte 4 0 byte 4 4 byte 4 10 byte 4 50 byte 4 0 byte 4 1 byte 4 1 byte 4 150 address $198 byte 4 516 byte 4 1 byte 4 3 byte 4 10 byte 4 50 byte 4 2 byte 4 27 byte 4 50 byte 4 150 address $199 byte 4 517 byte 4 1 byte 4 2 byte 4 10 byte 4 50 byte 4 2 byte 4 27 byte 4 45 byte 4 150 address $200 byte 4 518 byte 4 1 byte 4 4 byte 4 10 byte 4 50 byte 4 2 byte 4 28 byte 4 60 byte 4 150 address $201 byte 4 519 byte 4 1 byte 4 6 byte 4 10 byte 4 50 byte 4 2 byte 4 25 byte 4 72 byte 4 150 address $202 byte 4 521 byte 4 1 byte 4 0 byte 4 10 byte 4 50 byte 4 2 byte 4 30 byte 4 33 byte 4 150 address $203 byte 4 511 byte 4 1 byte 4 3 byte 4 10 byte 4 50 byte 4 2 byte 4 27 byte 4 10 byte 4 150 address $204 byte 4 512 byte 4 1 byte 4 4 byte 4 10 byte 4 50 byte 4 2 byte 4 27 byte 4 9 byte 4 150 address $205 byte 4 513 byte 4 1 byte 4 2 byte 4 10 byte 4 50 byte 4 2 byte 4 28 byte 4 4 byte 4 150 address $206 byte 4 514 byte 4 1 byte 4 0 byte 4 10 byte 4 50 byte 4 2 byte 4 25 byte 4 7 byte 4 150 address $207 byte 4 515 byte 4 1 byte 4 6 byte 4 10 byte 4 50 byte 4 2 byte 4 30 byte 4 6 byte 4 150 address $208 byte 4 511 byte 4 1 byte 4 3 byte 4 10 byte 4 50 byte 4 2 byte 4 27 byte 4 10 byte 4 300 address $209 byte 4 513 byte 4 1 byte 4 2 byte 4 10 byte 4 50 byte 4 2 byte 4 28 byte 4 4 byte 4 300 address $210 byte 4 512 byte 4 1 byte 4 4 byte 4 10 byte 4 50 byte 4 2 byte 4 27 byte 4 9 byte 4 300 address $211 byte 4 515 byte 4 1 byte 4 6 byte 4 10 byte 4 50 byte 4 2 byte 4 30 byte 4 6 byte 4 300 address $212 byte 4 514 byte 4 1 byte 4 0 byte 4 10 byte 4 50 byte 4 2 byte 4 25 byte 4 7 byte 4 300 export transitionMove align 4 LABELV transitionMove byte 4 0 byte 4 32 byte 4 33 byte 4 34 byte 4 35 byte 4 36 byte 4 37 byte 4 0 byte 4 38 byte 4 0 byte 4 39 byte 4 40 byte 4 41 byte 4 42 byte 4 43 byte 4 0 byte 4 44 byte 4 45 byte 4 0 byte 4 46 byte 4 47 byte 4 48 byte 4 49 byte 4 0 byte 4 50 byte 4 51 byte 4 52 byte 4 0 byte 4 53 byte 4 54 byte 4 55 byte 4 0 byte 4 56 byte 4 57 byte 4 58 byte 4 59 byte 4 0 byte 4 60 byte 4 61 byte 4 0 byte 4 62 byte 4 63 byte 4 64 byte 4 65 byte 4 66 byte 4 0 byte 4 67 byte 4 0 byte 4 68 byte 4 69 byte 4 70 byte 4 71 byte 4 72 byte 4 73 byte 4 0 byte 4 0 byte 4 68 byte 4 32 byte 4 33 byte 4 34 byte 4 35 byte 4 36 byte 4 37 byte 4 0 export PM_AttackMoveForQuad code proc PM_AttackMoveForQuad 4 0 line 322 ;92: ;93:// Silly, but I'm replacing these macros so they are shorter! ;94:#define AFLAG_IDLE (SETANIM_FLAG_NORMAL) ;95:#define AFLAG_ACTIVE (/*SETANIM_FLAG_OVERRIDE | */SETANIM_FLAG_HOLD | SETANIM_FLAG_HOLDLESS) ;96:#define AFLAG_WAIT (SETANIM_FLAG_HOLD | SETANIM_FLAG_HOLDLESS) ;97:#define AFLAG_FINISH (SETANIM_FLAG_HOLD) ;98: ;99:saberMoveData_t saberMoveData[LS_MOVE_MAX] = {// NB:randomized ;100: // name anim startQ endQ setanimflag blend, blocking chain_idle chain_attack trailLen ;101: {"None", BOTH_STAND1, Q_R, Q_R, AFLAG_IDLE, 350, BLK_NO, LS_NONE, LS_NONE, 0 }, // LS_NONE = 0, ;102: ;103: // General movements with saber ;104: {"Ready", BOTH_STAND2, Q_R, Q_R, AFLAG_IDLE, 350, BLK_WIDE, LS_READY, LS_S_R2L, 0 }, // LS_READY, ;105: {"Draw", BOTH_STAND1TO2, Q_R, Q_R, AFLAG_FINISH, 350, BLK_NO, LS_READY, LS_S_R2L, 0 }, // LS_DRAW, ;106: {"Putaway", BOTH_STAND2TO1, Q_R, Q_R, AFLAG_FINISH, 350, BLK_NO, LS_READY, LS_S_R2L, 0 }, // LS_PUTAWAY, ;107: ;108: // Attacks ;109: //UL2LR ;110: {"TL2BR Att", BOTH_A1_TL_BR, Q_TL, Q_BR, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_TL2BR, LS_R_TL2BR, 200 }, // LS_A_TL2BR ;111: //SLASH LEFT ;112: {"L2R Att", BOTH_A1__L__R, Q_L, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_L2R, LS_R_L2R, 200 }, // LS_A_L2R ;113: //LL2UR ;114: {"BL2TR Att", BOTH_A1_BL_TR, Q_BL, Q_TR, AFLAG_ACTIVE, 50, BLK_TIGHT, LS_R_BL2TR, LS_R_BL2TR, 200 }, // LS_A_BL2TR ;115: //LR2UL ;116: {"BR2TL Att", BOTH_A1_BR_TL, Q_BR, Q_TL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_BR2TL, LS_R_BR2TL, 200 }, // LS_A_BR2TL ;117: //SLASH RIGHT ;118: {"R2L Att", BOTH_A1__R__L, Q_R, Q_L, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_R2L, LS_R_R2L, 200 },// LS_A_R2L ;119: //UR2LL ;120: {"TR2BL Att", BOTH_A1_TR_BL, Q_TR, Q_BL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_TR2BL, LS_R_TR2BL, 200 }, // LS_A_TR2BL ;121: //SLASH DOWN ;122: {"T2B Att", BOTH_A1_T__B_, Q_T, Q_B, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_R_T2B, LS_R_T2B, 200 }, // LS_A_T2B ;123: //special attacks ;124: {"Back Stab", BOTH_A2_STABBACK1, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_BACKSTAB ;125: {"Back Att", BOTH_ATTACK_BACK, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_BACK ;126: {"CR Back Att", BOTH_CROUCHATTACKBACK1,Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_BACK_CR ;127: {"Lunge Att", BOTH_LUNGE2_B__T_, Q_B, Q_T, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_LUNGE ;128: {"Jump Att", BOTH_FORCELEAP2_T__B_,Q_T, Q_B, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_A_JUMP_T__B_ ;129: {"Flip Stab", BOTH_JUMPFLIPSTABDOWN,Q_R, Q_T, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_T1_T___R, 200 }, // LS_A_FLIP_STAB ;130: {"Flip Slash", BOTH_JUMPFLIPSLASHDOWN1,Q_L,Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_READY, LS_T1__R_T_, 200 }, // LS_A_FLIP_SLASH ;131: ;132: //starts ;133: {"TL2BR St", BOTH_S1_S1_TL, Q_R, Q_TL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_TL2BR, LS_A_TL2BR, 200 }, // LS_S_TL2BR ;134: {"L2R St", BOTH_S1_S1__L, Q_R, Q_L, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_L2R, LS_A_L2R, 200 }, // LS_S_L2R ;135: {"BL2TR St", BOTH_S1_S1_BL, Q_R, Q_BL, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_BL2TR, LS_A_BL2TR, 200 }, // LS_S_BL2TR ;136: {"BR2TL St", BOTH_S1_S1_BR, Q_R, Q_BR, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_BR2TL, LS_A_BR2TL, 200 }, // LS_S_BR2TL ;137: {"R2L St", BOTH_S1_S1__R, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_R2L, LS_A_R2L, 200 }, // LS_S_R2L ;138: {"TR2BL St", BOTH_S1_S1_TR, Q_R, Q_TR, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_TR2BL, LS_A_TR2BL, 200 }, // LS_S_TR2BL ;139: {"T2B St", BOTH_S1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 100, BLK_TIGHT, LS_A_T2B, LS_A_T2B, 200 }, // LS_S_T2B ;140: ;141: //returns ;142: {"TL2BR Ret", BOTH_R1_BR_S1, Q_BR, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_TL2BR ;143: {"L2R Ret", BOTH_R1__R_S1, Q_R, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_L2R ;144: {"BL2TR Ret", BOTH_R1_TR_S1, Q_TR, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_BL2TR ;145: {"BR2TL Ret", BOTH_R1_TL_S1, Q_TL, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_BR2TL ;146: {"R2L Ret", BOTH_R1__L_S1, Q_L, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_R2L ;147: {"TR2BL Ret", BOTH_R1_BL_S1, Q_BL, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_TR2BL ;148: {"T2B Ret", BOTH_R1_B__S1, Q_B, Q_R, AFLAG_FINISH, 100, BLK_TIGHT, LS_READY, LS_READY, 200 }, // LS_R_T2B ;149: ;150: //Transitions ;151: {"BR2R Trans", BOTH_T1_BR__R, Q_BR, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc bottom right to right ;152: {"BR2TR Trans", BOTH_T1_BR_TR, Q_BR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc bottom right to top right (use: BOTH_T1_TR_BR) ;153: {"BR2T Trans", BOTH_T1_BR_T_, Q_BR, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc bottom right to top (use: BOTH_T1_T__BR) ;154: {"BR2TL Trans", BOTH_T1_BR_TL, Q_BR, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast weak spin bottom right to top left ;155: {"BR2L Trans", BOTH_T1_BR__L, Q_BR, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast weak spin bottom right to left ;156: {"BR2BL Trans", BOTH_T1_BR_BL, Q_BR, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast weak spin bottom right to bottom left ;157: {"R2BR Trans", BOTH_T1__R_BR, Q_R, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast arc right to bottom right (use: BOTH_T1_BR__R) ;158: {"R2TR Trans", BOTH_T1__R_TR, Q_R, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc right to top right ;159: {"R2T Trans", BOTH_T1__R_T_, Q_R, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast ar right to top (use: BOTH_T1_T___R) ;160: {"R2TL Trans", BOTH_T1__R_TL, Q_R, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc right to top left ;161: {"R2L Trans", BOTH_T1__R__L, Q_R, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast weak spin right to left ;162: {"R2BL Trans", BOTH_T1__R_BL, Q_R, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast weak spin right to bottom left ;163: {"TR2BR Trans", BOTH_T1_TR_BR, Q_TR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast arc top right to bottom right ;164: {"TR2R Trans", BOTH_T1_TR__R, Q_TR, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc top right to right (use: BOTH_T1__R_TR) ;165: {"TR2T Trans", BOTH_T1_TR_T_, Q_TR, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc top right to top (use: BOTH_T1_T__TR) ;166: {"TR2TL Trans", BOTH_T1_TR_TL, Q_TR, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc top right to top left ;167: {"TR2L Trans", BOTH_T1_TR__L, Q_TR, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc top right to left ;168: {"TR2BL Trans", BOTH_T1_TR_BL, Q_TR, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast weak spin top right to bottom left ;169: {"T2BR Trans", BOTH_T1_T__BR, Q_T, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast arc top to bottom right ;170: {"T2R Trans", BOTH_T1_T___R, Q_T, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc top to right ;171: {"T2TR Trans", BOTH_T1_T__TR, Q_T, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc top to top right ;172: {"T2TL Trans", BOTH_T1_T__TL, Q_T, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc top to top left ;173: {"T2L Trans", BOTH_T1_T___L, Q_T, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc top to left ;174: {"T2BL Trans", BOTH_T1_T__BL, Q_T, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast arc top to bottom left ;175: {"TL2BR Trans", BOTH_T1_TL_BR, Q_TL, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast weak spin top left to bottom right ;176: {"TL2R Trans", BOTH_T1_TL__R, Q_TL, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast arc top left to right (use: BOTH_T1__R_TL) ;177: {"TL2TR Trans", BOTH_T1_TL_TR, Q_TL, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc top left to top right (use: BOTH_T1_TR_TL) ;178: {"TL2T Trans", BOTH_T1_TL_T_, Q_TL, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc top left to top (use: BOTH_T1_T__TL) ;179: {"TL2L Trans", BOTH_T1_TL__L, Q_TL, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc top left to left (use: BOTH_T1__L_TL) ;180: {"TL2BL Trans", BOTH_T1_TL_BL, Q_TL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast arc top left to bottom left ;181: {"L2BR Trans", BOTH_T1__L_BR, Q_L, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast weak spin left to bottom right ;182: {"L2R Trans", BOTH_T1__L__R, Q_L, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast weak spin left to right ;183: {"L2TR Trans", BOTH_T1__L_TR, Q_L, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast arc left to top right (use: BOTH_T1_TR__L) ;184: {"L2T Trans", BOTH_T1__L_T_, Q_L, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc left to top (use: BOTH_T1_T___L) ;185: {"L2TL Trans", BOTH_T1__L_TL, Q_L, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc left to top left ;186: {"L2BL Trans", BOTH_T1__L_BL, Q_L, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_A_BL2TR, 150 }, //# Fast arc left to bottom left (use: BOTH_T1_BL__L) ;187: {"BL2BR Trans", BOTH_T1_BL_BR, Q_BL, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_A_BR2TL, 150 }, //# Fast weak spin bottom left to bottom right ;188: {"BL2R Trans", BOTH_T1_BL__R, Q_BL, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_A_R2L, 150 }, //# Fast weak spin bottom left to right ;189: {"BL2TR Trans", BOTH_T1_BL_TR, Q_BL, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_TR2BL, 150 }, //# Fast weak spin bottom left to top right ;190: {"BL2T Trans", BOTH_T1_BL_T_, Q_BL, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_A_T2B, 150 }, //# Fast arc bottom left to top (use: BOTH_T1_T__BL) ;191: {"BL2TL Trans", BOTH_T1_BL_TL, Q_BL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_A_TL2BR, 150 }, //# Fast arc bottom left to top left (use: BOTH_T1_TL_BL) ;192: {"BL2L Trans", BOTH_T1_BL__L, Q_BL, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_A_L2R, 150 }, //# Fast arc bottom left to left ;193: ;194: //Bounces ;195: {"Bounce BR", BOTH_B1_BR___, Q_BR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_T1_BR_TR, 150 }, ;196: {"Bounce R", BOTH_B1__R___, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_T1__R__L, 150 }, ;197: {"Bounce TR", BOTH_B1_TR___, Q_TR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_TR_TL, 150 }, ;198: {"Bounce T", BOTH_B1_T____, Q_T, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_T__BL, 150 }, ;199: {"Bounce TL", BOTH_B1_TL___, Q_TL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_T1_TL_TR, 150 }, ;200: {"Bounce L", BOTH_B1__L___, Q_L, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_T1__L__R, 150 }, ;201: {"Bounce BL", BOTH_B1_BL___, Q_BL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_T1_BL_TR, 150 }, ;202: ;203: //Deflected attacks (like bounces, but slide off enemy saber, not straight back) ;204: {"Deflect BR", BOTH_D1_BR___, Q_BR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TL2BR, LS_T1_BR_TR, 150 }, ;205: {"Deflect R", BOTH_D1__R___, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_R_L2R, LS_T1__R__L, 150 }, ;206: {"Deflect TR", BOTH_D1_TR___, Q_TR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_TR_TL, 150 }, ;207: {"Deflect T", BOTH_B1_T____, Q_T, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_T__BL, 150 }, ;208: {"Deflect TL", BOTH_D1_TL___, Q_TL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BR2TL, LS_T1_TL_TR, 150 }, ;209: {"Deflect L", BOTH_D1__L___, Q_L, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_R_R2L, LS_T1__L__R, 150 }, ;210: {"Deflect BL", BOTH_D1_BL___, Q_BL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_R_TR2BL, LS_T1_BL_TR, 150 }, ;211: {"Deflect B", BOTH_D1_B____, Q_B, Q_B, AFLAG_ACTIVE, 100, BLK_NO, LS_R_BL2TR, LS_T1_T__BL, 150 }, ;212: ;213: //Reflected attacks ;214: {"Reflected BR",BOTH_V1_BR_S1, Q_BR, Q_BR, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_BR ;215: {"Reflected R", BOTH_V1__R_S1, Q_R, Q_R, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1__R ;216: {"Reflected TR",BOTH_V1_TR_S1, Q_TR, Q_TR, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_TR ;217: {"Reflected T", BOTH_V1_T__S1, Q_T, Q_T, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_T_ ;218: {"Reflected TL",BOTH_V1_TL_S1, Q_TL, Q_TL, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_TL ;219: {"Reflected L", BOTH_V1__L_S1, Q_L, Q_L, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1__L ;220: {"Reflected BL",BOTH_V1_BL_S1, Q_BL, Q_BL, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_BL ;221: {"Reflected B", BOTH_V1_B__S1, Q_B, Q_B, AFLAG_ACTIVE, 100, BLK_NO, LS_READY, LS_READY, 150 },// LS_V1_B_ ;222: ;223: // Broken parries ;224: {"BParry Top", BOTH_H1_S1_T_, Q_T, Q_B, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UP, ;225: {"BParry UR", BOTH_H1_S1_TR, Q_TR, Q_BL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UR, ;226: {"BParry UL", BOTH_H1_S1_TL, Q_TL, Q_BR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UL, ;227: {"BParry LR", BOTH_H1_S1_BL, Q_BL, Q_TR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LR, ;228: {"BParry Bot", BOTH_H1_S1_B_, Q_B, Q_T, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL ;229: {"BParry LL", BOTH_H1_S1_BR, Q_BR, Q_TL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL ;230: ;231: // Knockaways ;232: {"Knock Top", BOTH_K1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_T1_T__BR, 150 }, // LS_PARRY_UP, ;233: {"Knock UR", BOTH_K1_S1_TR, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_T1_TR__R, 150 }, // LS_PARRY_UR, ;234: {"Knock UL", BOTH_K1_S1_TL, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_T1_TL__L, 150 }, // LS_PARRY_UL, ;235: {"Knock LR", BOTH_K1_S1_BL, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_T1_BL_TL, 150 }, // LS_PARRY_LR, ;236: {"Knock LL", BOTH_K1_S1_BR, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_T1_BR_TR, 150 }, // LS_PARRY_LL ;237: ;238: // Parry ;239: {"Parry Top", BOTH_P1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_T2B, 150 }, // LS_PARRY_UP, ;240: {"Parry UR", BOTH_P1_S1_TR, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_TR2BL, 150 }, // LS_PARRY_UR, ;241: {"Parry UL", BOTH_P1_S1_TL, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_A_TL2BR, 150 }, // LS_PARRY_UL, ;242: {"Parry LR", BOTH_P1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 150 }, // LS_PARRY_LR, ;243: {"Parry LL", BOTH_P1_S1_BR, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_A_BL2TR, 150 }, // LS_PARRY_LL ;244: ;245: // Reflecting a missile ;246: {"Reflect Top", BOTH_P1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_T2B, 300 }, // LS_PARRY_UP, ;247: {"Reflect UR", BOTH_P1_S1_TL, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_A_TL2BR, 300 }, // LS_PARRY_UR, ;248: {"Reflect UL", BOTH_P1_S1_TR, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_TR2BL, 300 }, // LS_PARRY_UL, ;249: {"Reflect LR", BOTH_P1_S1_BR, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_A_BL2TR, 300 }, // LS_PARRY_LR ;250: {"Reflect LL", BOTH_P1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 300 }, // LS_PARRY_LL, ;251:}; ;252: ;253:int transitionMove[Q_NUM_QUADS][Q_NUM_QUADS] = ;254:{ ;255: LS_NONE, //Can't transition to same pos! ;256: LS_T1_BR__R,//40 ;257: LS_T1_BR_TR, ;258: LS_T1_BR_T_, ;259: LS_T1_BR_TL, ;260: LS_T1_BR__L, ;261: LS_T1_BR_BL, ;262: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any ;263: LS_T1__R_BR,//46 ;264: LS_NONE, //Can't transition to same pos! ;265: LS_T1__R_TR, ;266: LS_T1__R_T_, ;267: LS_T1__R_TL, ;268: LS_T1__R__L, ;269: LS_T1__R_BL, ;270: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any ;271: LS_T1_TR_BR,//52 ;272: LS_T1_TR__R, ;273: LS_NONE, //Can't transition to same pos! ;274: LS_T1_TR_T_, ;275: LS_T1_TR_TL, ;276: LS_T1_TR__L, ;277: LS_T1_TR_BL, ;278: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any ;279: LS_T1_T__BR,//58 ;280: LS_T1_T___R, ;281: LS_T1_T__TR, ;282: LS_NONE, //Can't transition to same pos! ;283: LS_T1_T__TL, ;284: LS_T1_T___L, ;285: LS_T1_T__BL, ;286: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any ;287: LS_T1_TL_BR,//64 ;288: LS_T1_TL__R, ;289: LS_T1_TL_TR, ;290: LS_T1_TL_T_, ;291: LS_NONE, //Can't transition to same pos! ;292: LS_T1_TL__L, ;293: LS_T1_TL_BL, ;294: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any ;295: LS_T1__L_BR,//70 ;296: LS_T1__L__R, ;297: LS_T1__L_TR, ;298: LS_T1__L_T_, ;299: LS_T1__L_TL, ;300: LS_NONE, //Can't transition to same pos! ;301: LS_T1__L_BL, ;302: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any ;303: LS_T1_BL_BR,//76 ;304: LS_T1_BL__R, ;305: LS_T1_BL_TR, ;306: LS_T1_BL_T_, ;307: LS_T1_BL_TL, ;308: LS_T1_BL__L, ;309: LS_NONE, //Can't transition to same pos! ;310: LS_NONE, //No transitions to bottom, and no anims start there, so shouldn't need any ;311: LS_T1_BL_BR,//NOTE: there are no transitions from bottom, so re-use the bottom right transitions ;312: LS_T1_BR__R, ;313: LS_T1_BR_TR, ;314: LS_T1_BR_T_, ;315: LS_T1_BR_TL, ;316: LS_T1_BR__L, ;317: LS_T1_BR_BL, ;318: LS_NONE //No transitions to bottom, and no anims start there, so shouldn't need any ;319:}; ;320: ;321:saberMoveName_t PM_AttackMoveForQuad( int quad ) ;322:{ line 323 ;323: switch ( quad ) ADDRLP4 0 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 0 LTI4 $214 ADDRLP4 0 INDIRI4 CNSTI4 7 GTI4 $214 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $223 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $223 address $216 address $217 address $218 address $219 address $220 address $221 address $222 address $216 code line 324 ;324: { LABELV $216 line 327 ;325: case Q_B: ;326: case Q_BR: ;327: return LS_A_BR2TL; CNSTI4 7 RETI4 ADDRGP4 $213 JUMPV line 328 ;328: break; LABELV $217 line 330 ;329: case Q_R: ;330: return LS_A_R2L; CNSTI4 8 RETI4 ADDRGP4 $213 JUMPV line 331 ;331: break; LABELV $218 line 333 ;332: case Q_TR: ;333: return LS_A_TR2BL; CNSTI4 9 RETI4 ADDRGP4 $213 JUMPV line 334 ;334: break; LABELV $219 line 336 ;335: case Q_T: ;336: return LS_A_T2B; CNSTI4 10 RETI4 ADDRGP4 $213 JUMPV line 337 ;337: break; LABELV $220 line 339 ;338: case Q_TL: ;339: return LS_A_TL2BR; CNSTI4 4 RETI4 ADDRGP4 $213 JUMPV line 340 ;340: break; LABELV $221 line 342 ;341: case Q_L: ;342: return LS_A_L2R; CNSTI4 5 RETI4 ADDRGP4 $213 JUMPV line 343 ;343: break; LABELV $222 line 345 ;344: case Q_BL: ;345: return LS_A_BL2TR; CNSTI4 6 RETI4 ADDRGP4 $213 JUMPV line 346 ;346: break; LABELV $214 line 348 ;347: } ;348: return LS_NONE; CNSTI4 0 RETI4 LABELV $213 endproc PM_AttackMoveForQuad 4 0 export PM_SaberAnimTransitionAnim proc PM_SaberAnimTransitionAnim 32 0 line 352 ;349:} ;350: ;351:int PM_SaberAnimTransitionAnim( int curmove, int newmove ) ;352:{ line 354 ;353: //FIXME: take FP_SABERATTACK into account here somehow? ;354: int retmove = newmove; ADDRLP4 0 ADDRFP4 4 INDIRI4 ASGNI4 line 355 ;355: if ( curmove == LS_READY ) ADDRFP4 0 INDIRI4 CNSTI4 1 NEI4 $225 line 356 ;356: {//just standing there line 357 ;357: switch ( newmove ) ADDRLP4 4 ADDRFP4 4 INDIRI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 4 LTI4 $226 ADDRLP4 4 INDIRI4 CNSTI4 10 GTI4 $226 ADDRLP4 4 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $230-16 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $230 address $229 address $229 address $229 address $229 address $229 address $229 address $229 code line 358 ;358: { LABELV $229 line 367 ;359: case LS_A_TL2BR: ;360: case LS_A_L2R: ;361: case LS_A_BL2TR: ;362: case LS_A_BR2TL: ;363: case LS_A_R2L: ;364: case LS_A_TR2BL: ;365: case LS_A_T2B: ;366: //transition is the start ;367: retmove = LS_S_TL2BR + (newmove-LS_A_TL2BR); ADDRLP4 0 ADDRFP4 4 INDIRI4 CNSTI4 4 SUBI4 CNSTI4 18 ADDI4 ASGNI4 line 368 ;368: break; line 370 ;369: } ;370: } ADDRGP4 $226 JUMPV LABELV $225 line 372 ;371: else ;372: { line 373 ;373: switch ( newmove ) ADDRLP4 4 ADDRFP4 4 INDIRI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 1 LTI4 $232 ADDRLP4 4 INDIRI4 CNSTI4 10 GTI4 $232 ADDRLP4 4 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $258-4 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $258 address $234 address $232 address $232 address $240 address $240 address $240 address $240 address $240 address $240 address $240 code line 374 ;374: { LABELV $234 line 377 ;375: //transitioning to ready pose ;376: case LS_READY: ;377: switch ( curmove ) ADDRLP4 8 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 8 INDIRI4 CNSTI4 4 LTI4 $233 ADDRLP4 8 INDIRI4 CNSTI4 10 GTI4 $233 ADDRLP4 8 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $238-16 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $238 address $237 address $237 address $237 address $237 address $237 address $237 address $237 code line 378 ;378: { LABELV $237 line 388 ;379: //transitioning from an attack ;380: case LS_A_TL2BR: ;381: case LS_A_L2R: ;382: case LS_A_BL2TR: ;383: case LS_A_BR2TL: ;384: case LS_A_R2L: ;385: case LS_A_TR2BL: ;386: case LS_A_T2B: ;387: //transition is the return ;388: retmove = LS_R_TL2BR + (newmove-LS_A_TL2BR); ADDRLP4 0 ADDRFP4 4 INDIRI4 CNSTI4 4 SUBI4 CNSTI4 25 ADDI4 ASGNI4 line 389 ;389: break; line 391 ;390: } ;391: break; ADDRGP4 $233 JUMPV LABELV $240 line 400 ;392: //transitioning to an attack ;393: case LS_A_TL2BR: ;394: case LS_A_L2R: ;395: case LS_A_BL2TR: ;396: case LS_A_BR2TL: ;397: case LS_A_R2L: ;398: case LS_A_TR2BL: ;399: case LS_A_T2B: ;400: /*if ( newmove == curmove ) ADDRLP4 12 CNSTI4 40 ASGNI4 ADDRLP4 12 INDIRI4 ADDRFP4 0 INDIRI4 MULI4 ADDRGP4 saberMoveData+12 ADDP4 INDIRI4 ADDRLP4 12 INDIRI4 ADDRFP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 NEI4 $241 line 405 ;401: {//FIXME: need a spin or something or go to next level, but for now, just play the return ;402: retmove = LS_R_TL2BR + (newmove-LS_A_TL2BR); ;403: } ;404: else */if ( saberMoveData[curmove].endQuad == saberMoveData[newmove].startQuad ) ;405: {//new move starts from same quadrant line 406 ;406: retmove = newmove; ADDRLP4 0 ADDRFP4 4 INDIRI4 ASGNI4 line 407 ;407: } ADDRGP4 $233 JUMPV LABELV $241 line 409 ;408: else ;409: { line 410 ;410: switch ( curmove ) ADDRLP4 16 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 16 INDIRI4 CNSTI4 4 LTI4 $233 ADDRLP4 16 INDIRI4 CNSTI4 31 GTI4 $253 ADDRLP4 16 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $254-16 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $254 address $247 address $247 address $247 address $247 address $247 address $247 address $247 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $233 address $250 address $250 address $250 address $250 address $250 address $250 address $250 code LABELV $253 ADDRLP4 20 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 20 INDIRI4 CNSTI4 108 LTI4 $233 ADDRLP4 20 INDIRI4 CNSTI4 117 GTI4 $233 ADDRLP4 20 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $256-432 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $256 address $250 address $250 address $250 address $250 address $250 address $250 address $250 address $250 address $250 address $250 code line 411 ;411: { LABELV $247 line 420 ;412: //transitioning from an attack ;413: case LS_A_TL2BR: ;414: case LS_A_L2R: ;415: case LS_A_BL2TR: ;416: case LS_A_BR2TL: ;417: case LS_A_R2L: ;418: case LS_A_TR2BL: ;419: case LS_A_T2B: ;420: retmove = transitionMove[saberMoveData[curmove].endQuad][saberMoveData[newmove].startQuad]; ADDRLP4 24 CNSTI4 40 ASGNI4 ADDRLP4 0 ADDRLP4 24 INDIRI4 ADDRFP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 24 INDIRI4 ADDRFP4 0 INDIRI4 MULI4 ADDRGP4 saberMoveData+12 ADDP4 INDIRI4 CNSTI4 5 LSHI4 ADDRGP4 transitionMove ADDP4 ADDP4 INDIRI4 ASGNI4 line 421 ;421: break; ADDRGP4 $233 JUMPV LABELV $250 line 459 ;422: //transitioning from a return ;423: case LS_R_TL2BR: ;424: case LS_R_L2R: ;425: case LS_R_BL2TR: ;426: case LS_R_BR2TL: ;427: case LS_R_R2L: ;428: case LS_R_TR2BL: ;429: case LS_R_T2B: ;430: //transitioning from a bounce ;431: /* ;432: case LS_BOUNCE_UL2LL: ;433: case LS_BOUNCE_LL2UL: ;434: case LS_BOUNCE_L2LL: ;435: case LS_BOUNCE_L2UL: ;436: case LS_BOUNCE_UR2LR: ;437: case LS_BOUNCE_LR2UR: ;438: case LS_BOUNCE_R2LR: ;439: case LS_BOUNCE_R2UR: ;440: case LS_BOUNCE_TOP: ;441: case LS_OVER_UR2UL: ;442: case LS_OVER_UL2UR: ;443: case LS_BOUNCE_UR: ;444: case LS_BOUNCE_UL: ;445: case LS_BOUNCE_LR: ;446: case LS_BOUNCE_LL: ;447: */ ;448: //transitioning from a parry/deflection ;449: case LS_PARRY_UP: ;450: case LS_REFLECT_UP: ;451: case LS_PARRY_UR: ;452: case LS_REFLECT_UR: ;453: case LS_PARRY_UL: ;454: case LS_REFLECT_UL: ;455: case LS_PARRY_LR: ;456: case LS_REFLECT_LR: ;457: case LS_PARRY_LL: ;458: case LS_REFLECT_LL: ;459: retmove = transitionMove[saberMoveData[curmove].endQuad][saberMoveData[newmove].startQuad]; ADDRLP4 28 CNSTI4 40 ASGNI4 ADDRLP4 0 ADDRLP4 28 INDIRI4 ADDRFP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 28 INDIRI4 ADDRFP4 0 INDIRI4 MULI4 ADDRGP4 saberMoveData+12 ADDP4 INDIRI4 CNSTI4 5 LSHI4 ADDRGP4 transitionMove ADDP4 ADDP4 INDIRI4 ASGNI4 line 460 ;460: break; line 463 ;461: //NB: transitioning from transitions is fine ;462: } ;463: } line 464 ;464: break; LABELV $232 LABELV $233 line 467 ;465: //transitioning to any other anim is not supported ;466: } ;467: } LABELV $226 line 469 ;468: ;469: if ( retmove == LS_NONE ) ADDRLP4 0 INDIRI4 CNSTI4 0 NEI4 $260 line 470 ;470: { line 471 ;471: return newmove; ADDRFP4 4 INDIRI4 RETI4 ADDRGP4 $224 JUMPV LABELV $260 line 474 ;472: } ;473: ;474: return retmove; ADDRLP4 0 INDIRI4 RETI4 LABELV $224 endproc PM_SaberAnimTransitionAnim 32 0 export PM_SaberMoveQuadrantForMovement proc PM_SaberMoveQuadrantForMovement 0 0 line 479 ;475:} ;476: ;477: ;478:int PM_SaberMoveQuadrantForMovement( usercmd_t *ucmd ) ;479:{ line 480 ;480: if ( ucmd->rightmove > 0 ) ADDRFP4 0 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $263 line 481 ;481: {//moving right line 482 ;482: if ( ucmd->forwardmove > 0 ) ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $265 line 483 ;483: {//forward right = TL2BR slash line 484 ;484: return Q_TL; CNSTI4 4 RETI4 ADDRGP4 $262 JUMPV LABELV $265 line 486 ;485: } ;486: else if ( ucmd->forwardmove < 0 ) ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $267 line 487 ;487: {//backward right = BL2TR uppercut line 488 ;488: return Q_BL; CNSTI4 6 RETI4 ADDRGP4 $262 JUMPV LABELV $267 line 491 ;489: } ;490: else ;491: {//just right is a left slice line 492 ;492: return Q_L; CNSTI4 5 RETI4 ADDRGP4 $262 JUMPV LABELV $263 line 495 ;493: } ;494: } ;495: else if ( ucmd->rightmove < 0 ) ADDRFP4 0 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $269 line 496 ;496: {//moving left line 497 ;497: if ( ucmd->forwardmove > 0 ) ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $271 line 498 ;498: {//forward left = TR2BL slash line 499 ;499: return Q_TR; CNSTI4 2 RETI4 ADDRGP4 $262 JUMPV LABELV $271 line 501 ;500: } ;501: else if ( ucmd->forwardmove < 0 ) ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $273 line 502 ;502: {//backward left = BR2TL uppercut line 503 ;503: return Q_BR; CNSTI4 0 RETI4 ADDRGP4 $262 JUMPV LABELV $273 line 506 ;504: } ;505: else ;506: {//just left is a right slice line 507 ;507: return Q_R; CNSTI4 1 RETI4 ADDRGP4 $262 JUMPV LABELV $269 line 511 ;508: } ;509: } ;510: else ;511: {//not moving left or right line 512 ;512: if ( ucmd->forwardmove > 0 ) ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $275 line 513 ;513: {//forward= T2B slash line 514 ;514: return Q_T; CNSTI4 3 RETI4 ADDRGP4 $262 JUMPV LABELV $275 line 516 ;515: } ;516: else if ( ucmd->forwardmove < 0 ) ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $277 line 517 ;517: {//backward= T2B slash //or B2T uppercut? line 518 ;518: return Q_T; CNSTI4 3 RETI4 ADDRGP4 $262 JUMPV LABELV $277 line 521 ;519: } ;520: else //if ( curmove == LS_READY )//??? ;521: {//Not moving at all line 522 ;522: return Q_R; CNSTI4 1 RETI4 LABELV $262 endproc PM_SaberMoveQuadrantForMovement 0 0 export PM_SaberInBounce proc PM_SaberInBounce 8 0 line 530 ;523: } ;524: } ;525: //return Q_R;//???? ;526:} ;527: ;528://=================================================================== ;529:qboolean PM_SaberInBounce( int move ) ;530:{ line 531 ;531: if ( move >= LS_B1_BR && move <= LS_B1_BL ) ADDRLP4 0 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 74 LTI4 $280 ADDRLP4 0 INDIRI4 CNSTI4 80 GTI4 $280 line 532 ;532: { line 533 ;533: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $279 JUMPV LABELV $280 line 535 ;534: } ;535: if ( move >= LS_D1_BR && move <= LS_D1_BL ) ADDRLP4 4 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 81 LTI4 $282 ADDRLP4 4 INDIRI4 CNSTI4 87 GTI4 $282 line 536 ;536: { line 537 ;537: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $279 JUMPV LABELV $282 line 539 ;538: } ;539: return qfalse; CNSTI4 0 RETI4 LABELV $279 endproc PM_SaberInBounce 8 0 export PM_SaberInTransition proc PM_SaberInTransition 4 0 line 543 ;540:} ;541: ;542:qboolean PM_SaberInTransition( int move ) ;543:{ line 544 ;544: if ( move >= LS_T1_BR__R && move <= LS_T1_BL__L ) ADDRLP4 0 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 32 LTI4 $285 ADDRLP4 0 INDIRI4 CNSTI4 73 GTI4 $285 line 545 ;545: { line 546 ;546: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $284 JUMPV LABELV $285 line 548 ;547: } ;548: return qfalse; CNSTI4 0 RETI4 LABELV $284 endproc PM_SaberInTransition 4 0 export PM_SaberKataDone proc PM_SaberKataDone 20 8 line 552 ;549:} ;550: ;551:qboolean PM_SaberKataDone( void ) ;552:{ line 553 ;553: if ( (pm->ps->fd.saberAnimLevel >= FORCE_LEVEL_3 && pm->ps->saberAttackChainCount > PM_irand_timesync( 0, 1 )) || ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 0 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 CNSTI4 3 LTI4 $291 CNSTI4 0 ARGI4 CNSTI4 1 ARGI4 ADDRLP4 4 ADDRGP4 PM_irand_timesync CALLI4 ASGNI4 ADDRLP4 0 INDIRP4 CNSTI4 1296 ADDP4 INDIRI4 ADDRLP4 4 INDIRI4 GTI4 $290 LABELV $291 ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 12 CNSTI4 2 ASGNI4 ADDRLP4 8 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 ADDRLP4 12 INDIRI4 NEI4 $288 ADDRLP4 12 INDIRI4 ARGI4 CNSTI4 5 ARGI4 ADDRLP4 16 ADDRGP4 PM_irand_timesync CALLI4 ASGNI4 ADDRLP4 8 INDIRP4 CNSTI4 1296 ADDP4 INDIRI4 ADDRLP4 16 INDIRI4 LEI4 $288 LABELV $290 line 555 ;554: ( pm->ps->fd.saberAnimLevel == FORCE_LEVEL_2 && pm->ps->saberAttackChainCount > PM_irand_timesync( 2, 5 ) ) ) ;555: { line 556 ;556: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $287 JUMPV LABELV $288 line 558 ;557: } ;558: return qfalse; CNSTI4 0 RETI4 LABELV $287 endproc PM_SaberKataDone 20 8 export PM_SetAnimFrame proc PM_SetAnimFrame 0 0 line 562 ;559:} ;560: ;561:void PM_SetAnimFrame( playerState_t *gent, int frame, qboolean torso, qboolean legs ) ;562:{ line 563 ;563: gent->saberLockFrame = frame; ADDRFP4 0 INDIRP4 CNSTI4 532 ADDP4 ADDRFP4 4 INDIRI4 ASGNI4 line 564 ;564:} LABELV $292 endproc PM_SetAnimFrame 0 0 export PM_SaberLockBreak proc PM_SaberLockBreak 88 16 line 567 ;565: ;566:void PM_SaberLockBreak( playerState_t *genemy, qboolean victory ) ;567:{ line 568 ;568: int winAnim = BOTH_STAND1, loseAnim = BOTH_STAND1; ADDRLP4 0 CNSTI4 550 ASGNI4 ADDRLP4 8 CNSTI4 550 ASGNI4 line 569 ;569: qboolean punishLoser = qfalse; ADDRLP4 4 CNSTI4 0 ASGNI4 line 571 ;570: ;571: switch ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) ) ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 20 CNSTI4 538 ASGNI4 ADDRLP4 12 INDIRI4 ADDRLP4 20 INDIRI4 EQI4 $297 ADDRLP4 12 INDIRI4 CNSTI4 541 EQI4 $300 ADDRLP4 12 INDIRI4 ADDRLP4 20 INDIRI4 LTI4 $294 LABELV $309 ADDRLP4 12 INDIRI4 CNSTI4 548 EQI4 $303 ADDRLP4 12 INDIRI4 CNSTI4 549 EQI4 $306 ADDRGP4 $294 JUMPV line 572 ;572: { LABELV $297 line 574 ;573: case BOTH_BF2LOCK: ;574: pm->ps->saberMove = LS_A_T2B; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 CNSTI4 10 ASGNI4 line 575 ;575: winAnim = BOTH_A3_T__B_; ADDRLP4 0 CNSTI4 280 ASGNI4 line 576 ;576: if ( !victory ) ADDRFP4 4 INDIRI4 CNSTI4 0 NEI4 $298 line 577 ;577: {//no-one won line 578 ;578: genemy->saberMove = LS_A_T2B; ADDRFP4 0 INDIRP4 CNSTI4 512 ADDP4 CNSTI4 10 ASGNI4 line 579 ;579: loseAnim = winAnim; ADDRLP4 8 ADDRLP4 0 INDIRI4 ASGNI4 line 580 ;580: } ADDRGP4 $295 JUMPV LABELV $298 line 582 ;581: else ;582: { line 584 ;583: //loseAnim = BOTH_KNOCKDOWN4; ;584: punishLoser = qtrue; ADDRLP4 4 CNSTI4 1 ASGNI4 line 585 ;585: } line 586 ;586: break; ADDRGP4 $295 JUMPV LABELV $300 line 588 ;587: case BOTH_BF1LOCK: ;588: pm->ps->saberMove = LS_K1_T_; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 CNSTI4 103 ASGNI4 line 589 ;589: winAnim = BOTH_K1_S1_T_; ADDRLP4 0 CNSTI4 516 ASGNI4 line 590 ;590: if ( !victory ) ADDRFP4 4 INDIRI4 CNSTI4 0 NEI4 $301 line 591 ;591: {//no-one won line 592 ;592: genemy->saberMove = LS_K1_T_; ADDRFP4 0 INDIRP4 CNSTI4 512 ADDP4 CNSTI4 103 ASGNI4 line 593 ;593: loseAnim = winAnim; ADDRLP4 8 ADDRLP4 0 INDIRI4 ASGNI4 line 594 ;594: } ADDRGP4 $295 JUMPV LABELV $301 line 596 ;595: else ;596: { line 598 ;597: //loseAnim = BOTH_BF1BREAK; ;598: punishLoser = qtrue; ADDRLP4 4 CNSTI4 1 ASGNI4 line 599 ;599: } line 600 ;600: break; ADDRGP4 $295 JUMPV LABELV $303 line 602 ;601: case BOTH_CWCIRCLELOCK: ;602: winAnim = BOTH_CWCIRCLEBREAK; ADDRLP4 0 CNSTI4 546 ASGNI4 line 603 ;603: if ( !victory ) ADDRFP4 4 INDIRI4 CNSTI4 0 NEI4 $304 line 604 ;604: {//no-one won line 605 ;605: loseAnim = winAnim; ADDRLP4 8 ADDRLP4 0 INDIRI4 ASGNI4 line 606 ;606: } ADDRGP4 $295 JUMPV LABELV $304 line 608 ;607: else ;608: { line 609 ;609: genemy->saberMove = /*genemy->saberBounceMove =*/ LS_H1_BL; ADDRFP4 0 INDIRP4 CNSTI4 512 ADDP4 CNSTI4 102 ASGNI4 line 610 ;610: genemy->saberBlocked = BLOCKED_PARRY_BROKEN; ADDRFP4 0 INDIRP4 CNSTI4 520 ADDP4 CNSTI4 1 ASGNI4 line 612 ;611: //loseAnim = BOTH_H1_S1_BR; ;612: punishLoser = qtrue; ADDRLP4 4 CNSTI4 1 ASGNI4 line 613 ;613: } line 614 ;614: break; ADDRGP4 $295 JUMPV LABELV $306 line 616 ;615: case BOTH_CCWCIRCLELOCK: ;616: winAnim = BOTH_CCWCIRCLEBREAK; ADDRLP4 0 CNSTI4 547 ASGNI4 line 617 ;617: if ( !victory ) ADDRFP4 4 INDIRI4 CNSTI4 0 NEI4 $307 line 618 ;618: {//no-one won line 619 ;619: loseAnim = winAnim; ADDRLP4 8 ADDRLP4 0 INDIRI4 ASGNI4 line 620 ;620: } ADDRGP4 $295 JUMPV LABELV $307 line 622 ;621: else ;622: { line 623 ;623: genemy->saberMove = /*genemy->saberBounceMove =*/ LS_H1_BR; ADDRFP4 0 INDIRP4 CNSTI4 512 ADDP4 CNSTI4 100 ASGNI4 line 624 ;624: genemy->saberBlocked = BLOCKED_PARRY_BROKEN; ADDRFP4 0 INDIRP4 CNSTI4 520 ADDP4 CNSTI4 1 ASGNI4 line 626 ;625: //loseAnim = BOTH_H1_S1_BL; ;626: punishLoser = qtrue; ADDRLP4 4 CNSTI4 1 ASGNI4 line 627 ;627: } line 628 ;628: break; LABELV $294 LABELV $295 line 630 ;629: } ;630: PM_SetAnim( SETANIM_BOTH, winAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, -1 ); ADDRLP4 28 CNSTI4 3 ASGNI4 ADDRLP4 28 INDIRI4 ARGI4 ADDRLP4 0 INDIRI4 ARGI4 ADDRLP4 28 INDIRI4 ARGI4 CNSTI4 -1 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 632 ;631: ;632: if (punishLoser) ADDRLP4 4 INDIRI4 CNSTI4 0 EQI4 $310 line 633 ;633: { line 636 ;634: vec3_t oppDir; ;635: ;636: int strength = 8; ADDRLP4 44 CNSTI4 8 ASGNI4 line 638 ;637: ;638: VectorSubtract(genemy->origin, pm->ps->origin, oppDir); ADDRLP4 48 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 52 CNSTI4 20 ASGNI4 ADDRLP4 56 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 32 ADDRLP4 48 INDIRP4 ADDRLP4 52 INDIRI4 ADDP4 INDIRF4 ADDRLP4 56 INDIRP4 INDIRP4 ADDRLP4 52 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 60 CNSTI4 24 ASGNI4 ADDRLP4 32+4 ADDRLP4 48 INDIRP4 ADDRLP4 60 INDIRI4 ADDP4 INDIRF4 ADDRLP4 56 INDIRP4 INDIRP4 ADDRLP4 60 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 64 CNSTI4 28 ASGNI4 ADDRLP4 32+8 ADDRFP4 0 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 line 639 ;639: VectorNormalize(oppDir); ADDRLP4 32 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 641 ;640: ;641: genemy->forceHandExtend = HANDEXTEND_KNOCKDOWN; ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 CNSTI4 8 ASGNI4 line 642 ;642: genemy->forceHandExtendTime = pm->cmd.serverTime + 1100; ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 1100 ADDI4 ASGNI4 line 643 ;643: genemy->forceDodgeAnim = 0; //this toggles between 1 and 0, when it's 1 we should play the get up anim ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 CNSTI4 0 ASGNI4 line 645 ;644: ;645: genemy->otherKiller = pm->ps->clientNum; ADDRFP4 0 INDIRP4 CNSTI4 748 ADDP4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 ASGNI4 line 646 ;646: genemy->otherKillerTime = pm->cmd.serverTime + 5000; ADDRFP4 0 INDIRP4 CNSTI4 752 ADDP4 ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 5000 ADDI4 ASGNI4 line 647 ;647: genemy->otherKillerDebounceTime = pm->cmd.serverTime + 100; ADDRFP4 0 INDIRP4 CNSTI4 756 ADDP4 ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 100 ADDI4 ASGNI4 line 649 ;648: ;649: genemy->velocity[0] = oppDir[0]*(strength*40); ADDRFP4 0 INDIRP4 CNSTI4 32 ADDP4 ADDRLP4 32 INDIRF4 CNSTI4 40 ADDRLP4 44 INDIRI4 MULI4 CVIF4 4 MULF4 ASGNF4 line 650 ;650: genemy->velocity[1] = oppDir[1]*(strength*40); ADDRFP4 0 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 32+4 INDIRF4 CNSTI4 40 ADDRLP4 44 INDIRI4 MULI4 CVIF4 4 MULF4 ASGNF4 line 651 ;651: genemy->velocity[2] = 100; ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1120403456 ASGNF4 line 652 ;652: } ADDRGP4 $311 JUMPV LABELV $310 line 654 ;653: else ;654: { line 657 ;655: vec3_t oppDir; ;656: ;657: int strength = 4; ADDRLP4 44 CNSTI4 4 ASGNI4 line 659 ;658: ;659: VectorSubtract(genemy->origin, pm->ps->origin, oppDir); ADDRLP4 48 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 52 CNSTI4 20 ASGNI4 ADDRLP4 56 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 32 ADDRLP4 48 INDIRP4 ADDRLP4 52 INDIRI4 ADDP4 INDIRF4 ADDRLP4 56 INDIRP4 INDIRP4 ADDRLP4 52 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 60 CNSTI4 24 ASGNI4 ADDRLP4 32+4 ADDRLP4 48 INDIRP4 ADDRLP4 60 INDIRI4 ADDP4 INDIRF4 ADDRLP4 56 INDIRP4 INDIRP4 ADDRLP4 60 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 64 CNSTI4 28 ASGNI4 ADDRLP4 32+8 ADDRFP4 0 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 line 660 ;660: VectorNormalize(oppDir); ADDRLP4 32 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 661 ;661: genemy->velocity[0] = oppDir[0]*(strength*40); ADDRFP4 0 INDIRP4 CNSTI4 32 ADDP4 ADDRLP4 32 INDIRF4 CNSTI4 40 ADDRLP4 44 INDIRI4 MULI4 CVIF4 4 MULF4 ASGNF4 line 662 ;662: genemy->velocity[1] = oppDir[1]*(strength*40); ADDRFP4 0 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 32+4 INDIRF4 CNSTI4 40 ADDRLP4 44 INDIRI4 MULI4 CVIF4 4 MULF4 ASGNF4 line 663 ;663: genemy->velocity[2] = 150; ADDRFP4 0 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1125515264 ASGNF4 line 665 ;664: ;665: VectorSubtract(pm->ps->origin, genemy->origin, oppDir); ADDRLP4 68 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 72 CNSTI4 20 ASGNI4 ADDRLP4 76 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 32 ADDRLP4 68 INDIRP4 INDIRP4 ADDRLP4 72 INDIRI4 ADDP4 INDIRF4 ADDRLP4 76 INDIRP4 ADDRLP4 72 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 80 CNSTI4 24 ASGNI4 ADDRLP4 32+4 ADDRLP4 68 INDIRP4 INDIRP4 ADDRLP4 80 INDIRI4 ADDP4 INDIRF4 ADDRLP4 76 INDIRP4 ADDRLP4 80 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 84 CNSTI4 28 ASGNI4 ADDRLP4 32+8 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 84 INDIRI4 ADDP4 INDIRF4 ADDRFP4 0 INDIRP4 ADDRLP4 84 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 line 666 ;666: VectorNormalize(oppDir); ADDRLP4 32 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 667 ;667: pm->ps->velocity[0] = oppDir[0]*(strength*40); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ADDRLP4 32 INDIRF4 CNSTI4 40 ADDRLP4 44 INDIRI4 MULI4 CVIF4 4 MULF4 ASGNF4 line 668 ;668: pm->ps->velocity[1] = oppDir[1]*(strength*40); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 32+4 INDIRF4 CNSTI4 40 ADDRLP4 44 INDIRI4 MULI4 CVIF4 4 MULF4 ASGNF4 line 669 ;669: pm->ps->velocity[2] = 150; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1125515264 ASGNF4 line 671 ;670: ;671: genemy->forceHandExtend = HANDEXTEND_WEAPONREADY; ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 CNSTI4 6 ASGNI4 line 672 ;672: } LABELV $311 line 674 ;673: ;674: pm->ps->weaponTime = 0;//pm->ps->torsoTimer; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 CNSTI4 0 ASGNI4 line 676 ;675: //The enemy unfortunately has no valid torso animation time at this point, so just use ours ;676: genemy->weaponTime = 0; ADDRFP4 0 INDIRP4 CNSTI4 44 ADDP4 CNSTI4 0 ASGNI4 line 678 ;677: ;678: pm->ps->saberLockTime = genemy->saberLockTime = 0; ADDRLP4 32 CNSTI4 524 ASGNI4 ADDRLP4 36 CNSTI4 0 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 32 INDIRI4 ADDP4 ADDRLP4 36 INDIRI4 ASGNI4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 32 INDIRI4 ADDP4 ADDRLP4 36 INDIRI4 ASGNI4 line 679 ;679: pm->ps->saberLockFrame = genemy->saberLockFrame = 0; ADDRLP4 40 CNSTI4 532 ASGNI4 ADDRLP4 44 CNSTI4 0 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 40 INDIRI4 ADDP4 ADDRLP4 44 INDIRI4 ASGNI4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 40 INDIRI4 ADDP4 ADDRLP4 44 INDIRI4 ASGNI4 line 680 ;680: pm->ps->saberLockEnemy = genemy->saberLockEnemy = 0; ADDRLP4 48 CNSTI4 528 ASGNI4 ADDRLP4 52 CNSTI4 0 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 48 INDIRI4 ADDP4 ADDRLP4 52 INDIRI4 ASGNI4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 48 INDIRI4 ADDP4 ADDRLP4 52 INDIRI4 ASGNI4 line 682 ;681: ;682: pm->ps->forceHandExtend = HANDEXTEND_WEAPONREADY; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1236 ADDP4 CNSTI4 6 ASGNI4 line 684 ;683: ;684: PM_AddEvent( EV_JUMP ); CNSTI4 14 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 685 ;685: if ( !victory ) ADDRFP4 4 INDIRI4 CNSTI4 0 NEI4 $321 line 686 ;686: {//no-one won line 687 ;687: BG_AddPredictableEventToPlayerstate(EV_JUMP, 0, genemy); CNSTI4 14 ARGI4 CNSTI4 0 ARGI4 ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 BG_AddPredictableEventToPlayerstate CALLV pop line 688 ;688: } ADDRGP4 $322 JUMPV LABELV $321 line 690 ;689: else ;690: { line 691 ;691: if ( Q_irand( 0, 1 ) ) CNSTI4 0 ARGI4 CNSTI4 1 ARGI4 ADDRLP4 56 ADDRGP4 Q_irand CALLI4 ASGNI4 ADDRLP4 56 INDIRI4 CNSTI4 0 EQI4 $323 line 692 ;692: { line 693 ;693: BG_AddPredictableEventToPlayerstate(EV_JUMP, PM_irand_timesync( 0, 75 ), genemy); CNSTI4 0 ARGI4 CNSTI4 75 ARGI4 ADDRLP4 60 ADDRGP4 PM_irand_timesync CALLI4 ASGNI4 CNSTI4 14 ARGI4 ADDRLP4 60 INDIRI4 ARGI4 ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 BG_AddPredictableEventToPlayerstate CALLV pop line 694 ;694: } LABELV $323 line 695 ;695: } LABELV $322 line 696 ;696:} LABELV $293 endproc PM_SaberLockBreak 88 16 export PM_SaberLocked proc PM_SaberLocked 84 16 line 700 ;697: ;698:extern qboolean ValidAnimFileIndex ( int index ); ;699:void PM_SaberLocked( void ) ;700:{ line 701 ;701: int remaining = 0; ADDRLP4 4 CNSTI4 0 ASGNI4 line 708 ;702: /* ;703: if ( pm->ps->weaponTime ) ;704: {//can't attack yet ;705: return; ;706: } ;707: */ ;708: playerState_t *genemy = pm->bgClients[pm->ps->saberLockEnemy]; ADDRLP4 8 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 0 ADDRLP4 8 INDIRP4 INDIRP4 CNSTI4 528 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 8 INDIRP4 CNSTI4 248 ADDP4 ADDP4 INDIRP4 ASGNP4 line 709 ;709: if ( !genemy ) ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $326 line 710 ;710: { line 711 ;711: return; ADDRGP4 $325 JUMPV LABELV $326 line 713 ;712: } ;713: if ( ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 12 INDIRI4 CNSTI4 538 EQI4 $332 ADDRLP4 12 INDIRI4 CNSTI4 541 EQI4 $332 ADDRLP4 12 INDIRI4 CNSTI4 548 EQI4 $332 ADDRLP4 12 INDIRI4 CNSTI4 549 NEI4 $328 LABELV $332 ADDRLP4 16 ADDRLP4 0 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 16 INDIRI4 CNSTI4 538 EQI4 $335 ADDRLP4 16 INDIRI4 CNSTI4 541 EQI4 $335 ADDRLP4 16 INDIRI4 CNSTI4 548 EQI4 $335 ADDRLP4 16 INDIRI4 CNSTI4 549 NEI4 $328 LABELV $335 line 722 ;714: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || ;715: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || ;716: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK ) ;717: && ( (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || ;718: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || ;719: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || ;720: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK ) ;721: ) ;722: { line 723 ;723: float dist = 0; ADDRLP4 20 CNSTF4 0 ASGNF4 line 725 ;724: ;725: pm->ps->torsoTimer = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 96 ADDP4 CNSTI4 0 ASGNI4 line 726 ;726: pm->ps->weaponTime = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 CNSTI4 0 ASGNI4 line 727 ;727: genemy->torsoTimer = 0; ADDRLP4 0 INDIRP4 CNSTI4 96 ADDP4 CNSTI4 0 ASGNI4 line 728 ;728: genemy->weaponTime = 0; ADDRLP4 0 INDIRP4 CNSTI4 44 ADDP4 CNSTI4 0 ASGNI4 line 730 ;729: ;730: dist = DistanceSquared(pm->ps->origin,genemy->origin); ADDRLP4 24 CNSTI4 20 ASGNI4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 ARGP4 ADDRLP4 0 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 ARGP4 ADDRLP4 28 ADDRGP4 DistanceSquared CALLF4 ASGNF4 ADDRLP4 20 ADDRLP4 28 INDIRF4 ASGNF4 line 731 ;731: if ( dist < 64 || dist > 6400 )//( dist < 128 || dist > 2304 ) ADDRLP4 32 ADDRLP4 20 INDIRF4 ASGNF4 ADDRLP4 32 INDIRF4 CNSTF4 1115684864 LTF4 $338 ADDRLP4 32 INDIRF4 CNSTF4 1170735104 LEF4 $336 LABELV $338 line 732 ;732: {//between 8 and 80 from each other//was 16 and 48 line 733 ;733: PM_SaberLockBreak( genemy, qfalse ); ADDRLP4 0 INDIRP4 ARGP4 CNSTI4 0 ARGI4 ADDRGP4 PM_SaberLockBreak CALLV pop line 734 ;734: return; ADDRGP4 $325 JUMPV LABELV $336 line 736 ;735: } ;736: if ( (pm->cmd.buttons & BUTTON_ATTACK) || pm->ps->saberLockAdvance ) ADDRLP4 36 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 40 CNSTI4 0 ASGNI4 ADDRLP4 36 INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 1 BANDI4 ADDRLP4 40 INDIRI4 NEI4 $341 ADDRLP4 36 INDIRP4 INDIRP4 CNSTI4 540 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 EQI4 $329 LABELV $341 line 737 ;737: {//holding attack line 738 ;738: if (pm->ps->saberLockAdvance) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 540 ADDP4 INDIRI4 CNSTI4 0 EQI4 $325 line 739 ;739: {//tapping line 743 ;740: animation_t *anim; ;741: float currentFrame; ;742: int curFrame; ;743: int strength = 1; ADDRLP4 44 CNSTI4 1 ASGNI4 line 745 ;744: ;745: pm->ps->saberLockAdvance = qfalse; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 540 ADDP4 CNSTI4 0 ASGNI4 line 747 ;746: ;747: anim = &pm->animations[pm->ps->torsoAnim&~ANIM_TOGGLEBIT]; ADDRLP4 60 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 48 CNSTI4 28 ADDRLP4 60 INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 MULI4 ADDRLP4 60 INDIRP4 CNSTI4 224 ADDP4 INDIRP4 ADDP4 ASGNP4 line 749 ;748: ;749: currentFrame = pm->ps->saberLockFrame; ADDRLP4 56 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 532 ADDP4 INDIRI4 CVIF4 4 ASGNF4 line 751 ;750: ;751: strength = pm->ps->fd.forcePowerLevel[FP_SABERATTACK]+1; ADDRLP4 44 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 992 ADDP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 753 ;752: ;753: if ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK || ADDRLP4 64 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 64 INDIRI4 CNSTI4 549 EQI4 $346 ADDRLP4 64 INDIRI4 CNSTI4 538 NEI4 $344 LABELV $346 line 755 ;754: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK ) ;755: { line 756 ;756: curFrame = floor( currentFrame )-strength; ADDRLP4 56 INDIRF4 ARGF4 ADDRLP4 68 ADDRGP4 floor CALLF4 ASGNF4 ADDRLP4 52 ADDRLP4 68 INDIRF4 ADDRLP4 44 INDIRI4 CVIF4 4 SUBF4 CVFI4 4 ASGNI4 line 758 ;757: //drop my frame one ;758: if ( curFrame <= anim->firstFrame ) ADDRLP4 52 INDIRI4 ADDRLP4 48 INDIRP4 INDIRI4 GTI4 $347 line 759 ;759: {//I won! Break out line 760 ;760: PM_SaberLockBreak( genemy, qtrue ); ADDRLP4 0 INDIRP4 ARGP4 CNSTI4 1 ARGI4 ADDRGP4 PM_SaberLockBreak CALLV pop line 761 ;761: return; ADDRGP4 $325 JUMPV LABELV $347 line 764 ;762: } ;763: else ;764: { line 765 ;765: PM_SetAnimFrame( pm->ps, curFrame, qtrue, qtrue ); ADDRGP4 pm INDIRP4 INDIRP4 ARGP4 ADDRLP4 52 INDIRI4 ARGI4 ADDRLP4 72 CNSTI4 1 ASGNI4 ADDRLP4 72 INDIRI4 ARGI4 ADDRLP4 72 INDIRI4 ARGI4 ADDRGP4 PM_SetAnimFrame CALLV pop line 766 ;766: remaining = curFrame-anim->firstFrame; ADDRLP4 4 ADDRLP4 52 INDIRI4 ADDRLP4 48 INDIRP4 INDIRI4 SUBI4 ASGNI4 line 767 ;767: } line 768 ;768: } ADDRGP4 $345 JUMPV LABELV $344 line 770 ;769: else ;770: { line 771 ;771: curFrame = ceil( currentFrame )+strength; ADDRLP4 56 INDIRF4 ARGF4 ADDRLP4 68 ADDRGP4 ceil CALLF4 ASGNF4 ADDRLP4 52 ADDRLP4 68 INDIRF4 ADDRLP4 44 INDIRI4 CVIF4 4 ADDF4 CVFI4 4 ASGNI4 line 773 ;772: //advance my frame one ;773: if ( curFrame >= anim->firstFrame+anim->numFrames ) ADDRLP4 72 ADDRLP4 48 INDIRP4 ASGNP4 ADDRLP4 52 INDIRI4 ADDRLP4 72 INDIRP4 INDIRI4 ADDRLP4 72 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDI4 LTI4 $349 line 774 ;774: {//I won! Break out line 775 ;775: PM_SaberLockBreak( genemy, qtrue ); ADDRLP4 0 INDIRP4 ARGP4 CNSTI4 1 ARGI4 ADDRGP4 PM_SaberLockBreak CALLV pop line 776 ;776: return; ADDRGP4 $325 JUMPV LABELV $349 line 779 ;777: } ;778: else ;779: { line 780 ;780: PM_SetAnimFrame( pm->ps, curFrame, qtrue, qtrue ); ADDRGP4 pm INDIRP4 INDIRP4 ARGP4 ADDRLP4 52 INDIRI4 ARGI4 ADDRLP4 76 CNSTI4 1 ASGNI4 ADDRLP4 76 INDIRI4 ARGI4 ADDRLP4 76 INDIRI4 ARGI4 ADDRGP4 PM_SetAnimFrame CALLV pop line 781 ;781: remaining = anim->firstFrame+anim->numFrames-curFrame; ADDRLP4 80 ADDRLP4 48 INDIRP4 ASGNP4 ADDRLP4 4 ADDRLP4 80 INDIRP4 INDIRI4 ADDRLP4 80 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDI4 ADDRLP4 52 INDIRI4 SUBI4 ASGNI4 line 782 ;782: } line 783 ;783: } LABELV $345 line 784 ;784: if ( !Q_irand( 0, 2 ) ) CNSTI4 0 ARGI4 CNSTI4 2 ARGI4 ADDRLP4 68 ADDRGP4 Q_irand CALLI4 ASGNI4 ADDRLP4 68 INDIRI4 CNSTI4 0 NEI4 $343 line 785 ;785: { line 786 ;786: PM_AddEvent( EV_JUMP ); CNSTI4 14 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 787 ;787: } line 788 ;788: } line 790 ;789: else ;790: { line 791 ;791: return; LABELV $343 line 793 ;792: } ;793: if( 1/*ValidAnimFileIndex( genemy->client->clientInfo.animFileIndex )*/ ) line 794 ;794: { line 796 ;795: animation_t *anim; ;796: anim = &pm->animations[(genemy->torsoAnim&~ANIM_TOGGLEBIT)]; ADDRLP4 44 CNSTI4 28 ADDRLP4 0 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 MULI4 ADDRGP4 pm INDIRP4 CNSTI4 224 ADDP4 INDIRP4 ADDP4 ASGNP4 line 798 ;797: ;798: if ( (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || ADDRLP4 48 ADDRLP4 0 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 48 INDIRI4 CNSTI4 548 EQI4 $357 ADDRLP4 48 INDIRI4 CNSTI4 541 NEI4 $355 LABELV $357 line 800 ;799: (genemy->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK ) ;800: { line 801 ;801: if ( !Q_irand( 0, 2 ) ) CNSTI4 0 ARGI4 CNSTI4 2 ARGI4 ADDRLP4 52 ADDRGP4 Q_irand CALLI4 ASGNI4 ADDRLP4 52 INDIRI4 CNSTI4 0 NEI4 $358 line 802 ;802: { line 803 ;803: BG_AddPredictableEventToPlayerstate(EV_PAIN, floor((float)80/100*100.0f), genemy); CNSTF4 1117782016 ARGF4 ADDRLP4 56 ADDRGP4 floor CALLF4 ASGNF4 CNSTI4 77 ARGI4 ADDRLP4 56 INDIRF4 CVFI4 4 ARGI4 ADDRLP4 0 INDIRP4 ARGP4 ADDRGP4 BG_AddPredictableEventToPlayerstate CALLV pop line 804 ;804: } LABELV $358 line 805 ;805: PM_SetAnimFrame( genemy, anim->firstFrame+remaining, qtrue, qtrue ); ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 44 INDIRP4 INDIRI4 ADDRLP4 4 INDIRI4 ADDI4 ARGI4 ADDRLP4 56 CNSTI4 1 ASGNI4 ADDRLP4 56 INDIRI4 ARGI4 ADDRLP4 56 INDIRI4 ARGI4 ADDRGP4 PM_SetAnimFrame CALLV pop line 806 ;806: } ADDRGP4 $329 JUMPV LABELV $355 line 808 ;807: else ;808: { line 809 ;809: PM_SetAnimFrame( genemy, anim->firstFrame+anim->numFrames-remaining, qtrue, qtrue ); ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 52 ADDRLP4 44 INDIRP4 ASGNP4 ADDRLP4 52 INDIRP4 INDIRI4 ADDRLP4 52 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDI4 ADDRLP4 4 INDIRI4 SUBI4 ARGI4 ADDRLP4 56 CNSTI4 1 ASGNI4 ADDRLP4 56 INDIRI4 ARGI4 ADDRLP4 56 INDIRI4 ARGI4 ADDRGP4 PM_SetAnimFrame CALLV pop line 810 ;810: } line 811 ;811: } line 812 ;812: } line 813 ;813: } ADDRGP4 $329 JUMPV LABELV $328 line 815 ;814: else ;815: {//something broke us out of it line 816 ;816: PM_SaberLockBreak( genemy, qfalse ); ADDRLP4 0 INDIRP4 ARGP4 CNSTI4 0 ARGI4 ADDRGP4 PM_SaberLockBreak CALLV pop line 817 ;817: } LABELV $329 line 818 ;818:} LABELV $325 endproc PM_SaberLocked 84 16 export PM_SaberInBrokenParry proc PM_SaberInBrokenParry 4 0 line 821 ;819: ;820:qboolean PM_SaberInBrokenParry( int move ) ;821:{ line 822 ;822: if ( move >= LS_H1_T_ && move <= LS_H1_BL ) ADDRLP4 0 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 97 LTI4 $361 ADDRLP4 0 INDIRI4 CNSTI4 102 GTI4 $361 line 823 ;823: { line 824 ;824: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $360 JUMPV LABELV $361 line 826 ;825: } ;826: return qfalse; CNSTI4 0 RETI4 LABELV $360 endproc PM_SaberInBrokenParry 4 0 export PM_BrokenParryForParry proc PM_BrokenParryForParry 12 0 line 831 ;827:} ;828: ;829: ;830:int PM_BrokenParryForParry( int move ) ;831:{ line 834 ;832: //FIXME: need actual anims for this ;833: //FIXME: need to know which side of the saber was hit! For now, we presume the saber gets knocked away from the center ;834: switch ( move ) ADDRLP4 0 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 4 CNSTI4 1 ASGNI4 ADDRLP4 0 INDIRI4 ADDRLP4 4 INDIRI4 EQI4 $371 ADDRLP4 0 INDIRI4 ADDRLP4 4 INDIRI4 LTI4 $364 LABELV $372 ADDRLP4 8 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 8 INDIRI4 CNSTI4 108 LTI4 $364 ADDRLP4 8 INDIRI4 CNSTI4 112 GTI4 $364 ADDRLP4 8 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $373-432 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $373 address $366 address $367 address $368 address $369 address $370 code line 835 ;835: { LABELV $366 line 837 ;836: case LS_PARRY_UP: ;837: return LS_H1_T_; CNSTI4 97 RETI4 ADDRGP4 $363 JUMPV line 838 ;838: break; LABELV $367 line 840 ;839: case LS_PARRY_UR: ;840: return LS_H1_TR; CNSTI4 98 RETI4 ADDRGP4 $363 JUMPV line 841 ;841: break; LABELV $368 line 843 ;842: case LS_PARRY_UL: ;843: return LS_H1_TL; CNSTI4 99 RETI4 ADDRGP4 $363 JUMPV line 844 ;844: break; LABELV $369 line 846 ;845: case LS_PARRY_LR: ;846: return LS_H1_BL; CNSTI4 102 RETI4 ADDRGP4 $363 JUMPV line 847 ;847: break; LABELV $370 line 849 ;848: case LS_PARRY_LL: ;849: return LS_H1_BR; CNSTI4 100 RETI4 ADDRGP4 $363 JUMPV line 850 ;850: break; LABELV $371 line 852 ;851: case LS_READY: ;852: return LS_H1_B_;//??? CNSTI4 101 RETI4 ADDRGP4 $363 JUMPV line 853 ;853: break; LABELV $364 line 855 ;854: } ;855: return LS_NONE; CNSTI4 0 RETI4 LABELV $363 endproc PM_BrokenParryForParry 12 0 lit align 4 LABELV $376 byte 4 3245342720 byte 4 3245342720 byte 4 3238002688 align 4 LABELV $377 byte 4 1097859072 byte 4 1097859072 byte 4 1090519040 export PM_CanBackstab code proc PM_CanBackstab 1152 28 line 861 ;856:} ;857: ;858:#define BACK_STAB_DISTANCE 128//64 ;859: ;860:qboolean PM_CanBackstab(void) ;861:{ line 865 ;862: trace_t tr; ;863: vec3_t flatAng; ;864: vec3_t fwd, back; ;865: vec3_t trmins = {-15, -15, -8}; ADDRLP4 1116 ADDRGP4 $376 INDIRB ASGNB 12 line 866 ;866: vec3_t trmaxs = {15, 15, 8}; ADDRLP4 1128 ADDRGP4 $377 INDIRB ASGNB 12 line 868 ;867: ;868: VectorCopy(pm->ps->viewangles, flatAng); ADDRLP4 1104 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 156 ADDP4 INDIRB ASGNB 12 line 869 ;869: flatAng[PITCH] = 0; ADDRLP4 1104 CNSTF4 0 ASGNF4 line 871 ;870: ;871: AngleVectors(flatAng, fwd, 0, 0); ADDRLP4 1104 ARGP4 ADDRLP4 1080 ARGP4 ADDRLP4 1140 CNSTP4 0 ASGNP4 ADDRLP4 1140 INDIRP4 ARGP4 ADDRLP4 1140 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 873 ;872: ;873: back[0] = pm->ps->origin[0] - fwd[0]*BACK_STAB_DISTANCE; ADDRLP4 1092 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 CNSTF4 1124073472 ADDRLP4 1080 INDIRF4 MULF4 SUBF4 ASGNF4 line 874 ;874: back[1] = pm->ps->origin[1] - fwd[1]*BACK_STAB_DISTANCE; ADDRLP4 1092+4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 CNSTF4 1124073472 ADDRLP4 1080+4 INDIRF4 MULF4 SUBF4 ASGNF4 line 875 ;875: back[2] = pm->ps->origin[2] - fwd[2]*BACK_STAB_DISTANCE; ADDRLP4 1092+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 1124073472 ADDRLP4 1080+8 INDIRF4 MULF4 SUBF4 ASGNF4 line 877 ;876: ;877: pm->trace(&tr, pm->ps->origin, trmins, trmaxs, back, pm->ps->clientNum, MASK_PLAYERSOLID); ADDRLP4 0 ARGP4 ADDRLP4 1144 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 1148 ADDRLP4 1144 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 1148 INDIRP4 CNSTI4 20 ADDP4 ARGP4 ADDRLP4 1116 ARGP4 ADDRLP4 1128 ARGP4 ADDRLP4 1092 ARGP4 ADDRLP4 1148 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 ARGI4 CNSTI4 273 ARGI4 ADDRLP4 1144 INDIRP4 CNSTI4 240 ADDP4 INDIRP4 CALLV pop line 879 ;878: ;879: if (tr.fraction != 1.0 && tr.entityNum >= 0 && tr.entityNum < MAX_CLIENTS) ADDRLP4 0+8 INDIRF4 CNSTF4 1065353216 EQF4 $382 ADDRLP4 0+52 INDIRI4 CNSTI4 0 LTI4 $382 ADDRLP4 0+52 INDIRI4 CNSTI4 32 GEI4 $382 line 880 ;880: { //We don't have real entity access here so we can't do an indepth check. But if it's a client and it's behind us, I guess that's reason enough to stab backward line 881 ;881: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $375 JUMPV LABELV $382 line 884 ;882: } ;883: ;884: return qfalse; CNSTI4 0 RETI4 LABELV $375 endproc PM_CanBackstab 1152 28 export PM_SaberFlipOverAttackMove proc PM_SaberFlipOverAttackMove 56 16 line 888 ;885:} ;886: ;887:saberMoveName_t PM_SaberFlipOverAttackMove(trace_t *tr) ;888:{ line 891 ;889: //FIXME: check above for room enough to jump! ;890: vec3_t fwdAngles, jumpFwd; ;891: float zDiff = 0; ADDRLP4 24 CNSTF4 0 ASGNF4 line 894 ;892: playerState_t *psData; ;893: ;894: VectorCopy( pm->ps->viewangles, fwdAngles ); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 156 ADDP4 INDIRB ASGNB 12 line 895 ;895: fwdAngles[PITCH] = fwdAngles[ROLL] = 0; ADDRLP4 32 CNSTF4 0 ASGNF4 ADDRLP4 0+8 ADDRLP4 32 INDIRF4 ASGNF4 ADDRLP4 0 ADDRLP4 32 INDIRF4 ASGNF4 line 896 ;896: AngleVectors( fwdAngles, jumpFwd, NULL, NULL ); ADDRLP4 0 ARGP4 ADDRLP4 12 ARGP4 ADDRLP4 36 CNSTP4 0 ASGNP4 ADDRLP4 36 INDIRP4 ARGP4 ADDRLP4 36 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 897 ;897: VectorScale( jumpFwd, /*100*/50, pm->ps->velocity ); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 CNSTF4 1112014848 ADDRLP4 12 INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 CNSTF4 1112014848 ADDRLP4 12+4 INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1112014848 ADDRLP4 12+8 INDIRF4 MULF4 ASGNF4 line 898 ;898: pm->ps->velocity[2] = 400; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1137180672 ASGNF4 line 900 ;899: ;900: psData = pm->bgClients[tr->entityNum]; ADDRLP4 28 ADDRFP4 0 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 pm INDIRP4 CNSTI4 248 ADDP4 ADDP4 INDIRP4 ASGNP4 line 902 ;901: ;902: pm->ps->velocity[2] *= 1;//(pm->gent->enemy->maxs[2]-pm->gent->enemy->mins[2])/64.0f; ADDRLP4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 40 INDIRP4 CNSTF4 1065353216 ADDRLP4 40 INDIRP4 INDIRF4 MULF4 ASGNF4 line 905 ;903: ;904: //go higher for enemies higher than you, lower for those lower than you ;905: if (psData) ADDRLP4 28 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $391 line 906 ;906: { line 907 ;907: zDiff = psData->origin[2] - pm->ps->origin[2]; ADDRLP4 44 CNSTI4 28 ASGNI4 ADDRLP4 24 ADDRLP4 28 INDIRP4 ADDRLP4 44 INDIRI4 ADDP4 INDIRF4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 44 INDIRI4 ADDP4 INDIRF4 SUBF4 ASGNF4 line 908 ;908: } ADDRGP4 $392 JUMPV LABELV $391 line 910 ;909: else ;910: { line 911 ;911: zDiff = 0; ADDRLP4 24 CNSTF4 0 ASGNF4 line 912 ;912: } LABELV $392 line 913 ;913: pm->ps->velocity[2] += (zDiff)*1.5f; ADDRLP4 44 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 44 INDIRP4 ADDRLP4 44 INDIRP4 INDIRF4 CNSTF4 1069547520 ADDRLP4 24 INDIRF4 MULF4 ADDF4 ASGNF4 line 916 ;914: ;915: //clamp to decent-looking values ;916: if ( zDiff <= 0 && pm->ps->velocity[2] < 200 ) ADDRLP4 24 INDIRF4 CNSTF4 0 GTF4 $393 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1128792064 GEF4 $393 line 917 ;917: {//if we're on same level, don't let me jump so low, I clip into the ground line 918 ;918: pm->ps->velocity[2] = 200; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1128792064 ASGNF4 line 919 ;919: } ADDRGP4 $394 JUMPV LABELV $393 line 920 ;920: else if ( pm->ps->velocity[2] < 100 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1120403456 GEF4 $395 line 921 ;921: { line 922 ;922: pm->ps->velocity[2] = 100; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1120403456 ASGNF4 line 923 ;923: } ADDRGP4 $396 JUMPV LABELV $395 line 924 ;924: else if ( pm->ps->velocity[2] > 400 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1137180672 LEF4 $397 line 925 ;925: { line 926 ;926: pm->ps->velocity[2] = 400; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1137180672 ASGNF4 line 927 ;927: } LABELV $397 LABELV $396 LABELV $394 line 929 ;928: ;929: pm->ps->fd.forceJumpZStart = pm->ps->origin[2];//so we don't take damage if we land at same height ADDRLP4 48 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 48 INDIRP4 CNSTI4 1080 ADDP4 ADDRLP4 48 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 ASGNF4 line 931 ;930: ;931: PM_AddEvent( EV_JUMP ); CNSTI4 14 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 932 ;932: pm->ps->fd.forceJumpSound = 1; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1088 ADDP4 CNSTI4 1 ASGNI4 line 933 ;933: pm->cmd.upmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 30 ADDP4 CNSTI1 0 ASGNI1 line 935 ;934: ;935: if ( Q_irand( 0, 1 ) ) CNSTI4 0 ARGI4 CNSTI4 1 ARGI4 ADDRLP4 52 ADDRGP4 Q_irand CALLI4 ASGNI4 ADDRLP4 52 INDIRI4 CNSTI4 0 EQI4 $399 line 936 ;936: { line 937 ;937: return LS_A_FLIP_STAB; CNSTI4 16 RETI4 ADDRGP4 $387 JUMPV LABELV $399 line 940 ;938: } ;939: else ;940: { line 941 ;941: return LS_A_FLIP_SLASH; CNSTI4 17 RETI4 LABELV $387 endproc PM_SaberFlipOverAttackMove 56 16 lit align 4 LABELV $402 byte 4 3245342720 byte 4 3245342720 byte 4 3238002688 align 4 LABELV $403 byte 4 1097859072 byte 4 1097859072 byte 4 1090519040 export PM_SomeoneInFront code proc PM_SomeoneInFront 80 28 line 948 ;942: } ;943:} ;944: ;945:#define FLIPHACK_DISTANCE 200 ;946: ;947:qboolean PM_SomeoneInFront(trace_t *tr) ;948:{ //Also a very simplified version of the sp counterpart line 951 ;949: vec3_t flatAng; ;950: vec3_t fwd, back; ;951: vec3_t trmins = {-15, -15, -8}; ADDRLP4 36 ADDRGP4 $402 INDIRB ASGNB 12 line 952 ;952: vec3_t trmaxs = {15, 15, 8}; ADDRLP4 48 ADDRGP4 $403 INDIRB ASGNB 12 line 954 ;953: ;954: VectorCopy(pm->ps->viewangles, flatAng); ADDRLP4 24 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 156 ADDP4 INDIRB ASGNB 12 line 955 ;955: flatAng[PITCH] = 0; ADDRLP4 24 CNSTF4 0 ASGNF4 line 957 ;956: ;957: AngleVectors(flatAng, fwd, 0, 0); ADDRLP4 24 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 60 CNSTP4 0 ASGNP4 ADDRLP4 60 INDIRP4 ARGP4 ADDRLP4 60 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 959 ;958: ;959: back[0] = pm->ps->origin[0] + fwd[0]*FLIPHACK_DISTANCE; ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 CNSTF4 1128792064 ADDRLP4 0 INDIRF4 MULF4 ADDF4 ASGNF4 line 960 ;960: back[1] = pm->ps->origin[1] + fwd[1]*FLIPHACK_DISTANCE; ADDRLP4 12+4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 CNSTF4 1128792064 ADDRLP4 0+4 INDIRF4 MULF4 ADDF4 ASGNF4 line 961 ;961: back[2] = pm->ps->origin[2] + fwd[2]*FLIPHACK_DISTANCE; ADDRLP4 12+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 1128792064 ADDRLP4 0+8 INDIRF4 MULF4 ADDF4 ASGNF4 line 963 ;962: ;963: pm->trace(tr, pm->ps->origin, trmins, trmaxs, back, pm->ps->clientNum, MASK_PLAYERSOLID); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 64 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 68 ADDRLP4 64 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 68 INDIRP4 CNSTI4 20 ADDP4 ARGP4 ADDRLP4 36 ARGP4 ADDRLP4 48 ARGP4 ADDRLP4 12 ARGP4 ADDRLP4 68 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 ARGI4 CNSTI4 273 ARGI4 ADDRLP4 64 INDIRP4 CNSTI4 240 ADDP4 INDIRP4 CALLV pop line 965 ;964: ;965: if (tr->fraction != 1.0 && tr->entityNum >= 0 && tr->entityNum < MAX_CLIENTS) ADDRLP4 72 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 CNSTF4 1065353216 EQF4 $408 ADDRLP4 76 ADDRLP4 72 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 ASGNI4 ADDRLP4 76 INDIRI4 CNSTI4 0 LTI4 $408 ADDRLP4 76 INDIRI4 CNSTI4 32 GEI4 $408 line 966 ;966: { line 967 ;967: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $401 JUMPV LABELV $408 line 970 ;968: } ;969: ;970: return qfalse; CNSTI4 0 RETI4 LABELV $401 endproc PM_SomeoneInFront 80 28 export PM_SaberLungeAttackMove proc PM_SaberLungeAttackMove 32 16 line 974 ;971:} ;972: ;973:saberMoveName_t PM_SaberLungeAttackMove( void ) ;974:{ line 977 ;975: vec3_t fwdAngles, jumpFwd; ;976: ;977: VectorCopy( pm->ps->viewangles, fwdAngles ); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 156 ADDP4 INDIRB ASGNB 12 line 978 ;978: fwdAngles[PITCH] = fwdAngles[ROLL] = 0; ADDRLP4 24 CNSTF4 0 ASGNF4 ADDRLP4 0+8 ADDRLP4 24 INDIRF4 ASGNF4 ADDRLP4 0 ADDRLP4 24 INDIRF4 ASGNF4 line 980 ;979: //do the lunge ;980: AngleVectors( fwdAngles, jumpFwd, NULL, NULL ); ADDRLP4 0 ARGP4 ADDRLP4 12 ARGP4 ADDRLP4 28 CNSTP4 0 ASGNP4 ADDRLP4 28 INDIRP4 ARGP4 ADDRLP4 28 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 981 ;981: VectorScale( jumpFwd, 150, pm->ps->velocity ); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 CNSTF4 1125515264 ADDRLP4 12 INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 CNSTF4 1125515264 ADDRLP4 12+4 INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1125515264 ADDRLP4 12+8 INDIRF4 MULF4 ASGNF4 line 983 ;982: //pm->ps->velocity[2] = 50; ;983: PM_AddEvent( EV_JUMP ); CNSTI4 14 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 985 ;984: ;985: return LS_A_LUNGE; CNSTI4 14 RETI4 LABELV $410 endproc PM_SaberLungeAttackMove 32 16 export PM_SaberJumpAttackMove proc PM_SaberJumpAttackMove 36 16 line 989 ;986:} ;987: ;988:saberMoveName_t PM_SaberJumpAttackMove( void ) ;989:{ line 992 ;990: vec3_t fwdAngles, jumpFwd; ;991: ;992: VectorCopy( pm->ps->viewangles, fwdAngles ); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 156 ADDP4 INDIRB ASGNB 12 line 993 ;993: fwdAngles[PITCH] = fwdAngles[ROLL] = 0; ADDRLP4 24 CNSTF4 0 ASGNF4 ADDRLP4 0+8 ADDRLP4 24 INDIRF4 ASGNF4 ADDRLP4 0 ADDRLP4 24 INDIRF4 ASGNF4 line 994 ;994: AngleVectors( fwdAngles, jumpFwd, NULL, NULL ); ADDRLP4 0 ARGP4 ADDRLP4 12 ARGP4 ADDRLP4 28 CNSTP4 0 ASGNP4 ADDRLP4 28 INDIRP4 ARGP4 ADDRLP4 28 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 995 ;995: VectorScale( jumpFwd, /*200*/300, pm->ps->velocity ); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 CNSTF4 1133903872 ADDRLP4 12 INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 CNSTF4 1133903872 ADDRLP4 12+4 INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1133903872 ADDRLP4 12+8 INDIRF4 MULF4 ASGNF4 line 996 ;996: pm->ps->velocity[2] = 280;//180; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1133248512 ASGNF4 line 997 ;997: pm->ps->fd.forceJumpZStart = pm->ps->origin[2];//so we don't take damage if we land at same height ADDRLP4 32 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 32 INDIRP4 CNSTI4 1080 ADDP4 ADDRLP4 32 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 ASGNF4 line 999 ;998: ;999: PM_AddEvent( EV_JUMP ); CNSTI4 14 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1000 ;1000: pm->ps->fd.forceJumpSound = 1; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1088 ADDP4 CNSTI4 1 ASGNI4 line 1001 ;1001: pm->cmd.upmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 30 ADDP4 CNSTI1 0 ASGNI1 line 1003 ;1002: ;1003: return LS_A_JUMP_T__B_; CNSTI4 15 RETI4 LABELV $414 endproc PM_SaberJumpAttackMove 36 16 export PM_GroundDistance proc PM_GroundDistance 1108 28 line 1007 ;1004:} ;1005: ;1006:float PM_GroundDistance(void) ;1007:{ line 1011 ;1008: trace_t tr; ;1009: vec3_t down; ;1010: ;1011: VectorCopy(pm->ps->origin, down); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRB ASGNB 12 line 1013 ;1012: ;1013: down[2] -= 4096; ADDRLP4 0+8 ADDRLP4 0+8 INDIRF4 CNSTF4 1166016512 SUBF4 ASGNF4 line 1015 ;1014: ;1015: pm->trace(&tr, pm->ps->origin, pm->mins, pm->maxs, down, pm->ps->clientNum, MASK_SOLID); ADDRLP4 12 ARGP4 ADDRLP4 1092 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 1096 ADDRLP4 1092 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 1096 INDIRP4 CNSTI4 20 ADDP4 ARGP4 ADDRLP4 1092 INDIRP4 CNSTI4 188 ADDP4 ARGP4 ADDRLP4 1092 INDIRP4 CNSTI4 200 ADDP4 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 1096 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 ARGI4 CNSTI4 1 ARGI4 ADDRLP4 1092 INDIRP4 CNSTI4 240 ADDP4 INDIRP4 CALLV pop line 1017 ;1016: ;1017: VectorSubtract(pm->ps->origin, tr.endpos, down); ADDRLP4 1100 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 0 ADDRLP4 1100 INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 ADDRLP4 12+12 INDIRF4 SUBF4 ASGNF4 ADDRLP4 0+4 ADDRLP4 1100 INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 ADDRLP4 12+12+4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 0+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 ADDRLP4 12+12+8 INDIRF4 SUBF4 ASGNF4 line 1019 ;1018: ;1019: return VectorLength(down); ADDRLP4 0 ARGP4 ADDRLP4 1104 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 1104 INDIRF4 RETF4 LABELV $418 endproc PM_GroundDistance 1108 28 export PM_SaberAttackForMovement proc PM_SaberAttackForMovement 1104 8 line 1023 ;1020:} ;1021: ;1022:saberMoveName_t PM_SaberAttackForMovement(saberMoveName_t curmove) ;1023:{ line 1024 ;1024: saberMoveName_t newmove = -1; ADDRLP4 0 CNSTI4 -1 ASGNI4 line 1026 ;1025: ;1026: if ( pm->cmd.rightmove > 0 ) ADDRGP4 pm INDIRP4 CNSTI4 29 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $428 line 1027 ;1027: {//moving right line 1028 ;1028: if ( pm->cmd.forwardmove > 0 ) ADDRGP4 pm INDIRP4 CNSTI4 28 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $430 line 1029 ;1029: {//forward right = TL2BR slash line 1030 ;1030: newmove = LS_A_TL2BR; ADDRLP4 0 CNSTI4 4 ASGNI4 line 1031 ;1031: } ADDRGP4 $429 JUMPV LABELV $430 line 1032 ;1032: else if ( pm->cmd.forwardmove < 0 ) ADDRGP4 pm INDIRP4 CNSTI4 28 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $432 line 1033 ;1033: {//backward right = BL2TR uppercut line 1034 ;1034: newmove = LS_A_BL2TR; ADDRLP4 0 CNSTI4 6 ASGNI4 line 1035 ;1035: } ADDRGP4 $429 JUMPV LABELV $432 line 1037 ;1036: else ;1037: {//just right is a left slice line 1038 ;1038: newmove = LS_A_L2R; ADDRLP4 0 CNSTI4 5 ASGNI4 line 1039 ;1039: } line 1040 ;1040: } ADDRGP4 $429 JUMPV LABELV $428 line 1041 ;1041: else if ( pm->cmd.rightmove < 0 ) ADDRGP4 pm INDIRP4 CNSTI4 29 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $434 line 1042 ;1042: {//moving left line 1043 ;1043: if ( pm->cmd.forwardmove > 0 ) ADDRGP4 pm INDIRP4 CNSTI4 28 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $436 line 1044 ;1044: {//forward left = TR2BL slash line 1045 ;1045: newmove = LS_A_TR2BL; ADDRLP4 0 CNSTI4 9 ASGNI4 line 1046 ;1046: } ADDRGP4 $435 JUMPV LABELV $436 line 1047 ;1047: else if ( pm->cmd.forwardmove < 0 ) ADDRGP4 pm INDIRP4 CNSTI4 28 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $438 line 1048 ;1048: {//backward left = BR2TL uppercut line 1049 ;1049: newmove = LS_A_BR2TL; ADDRLP4 0 CNSTI4 7 ASGNI4 line 1050 ;1050: } ADDRGP4 $435 JUMPV LABELV $438 line 1052 ;1051: else ;1052: {//just left is a right slice line 1053 ;1053: newmove = LS_A_R2L; ADDRLP4 0 CNSTI4 8 ASGNI4 line 1054 ;1054: } line 1055 ;1055: } ADDRGP4 $435 JUMPV LABELV $434 line 1057 ;1056: else ;1057: {//not moving left or right line 1058 ;1058: if ( pm->cmd.forwardmove > 0 ) ADDRGP4 pm INDIRP4 CNSTI4 28 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LEI4 $440 line 1059 ;1059: {//forward= T2B slash line 1060 ;1060: if (pm->ps->fd.saberAnimLevel == FORCE_LEVEL_2 && ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 4 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 CNSTI4 2 NEI4 $442 ADDRLP4 4 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 1120403456 LEF4 $442 ADDRLP4 8 ADDRGP4 PM_GroundDistance CALLF4 ASGNF4 ADDRLP4 8 INDIRF4 CNSTF4 1107296256 GEF4 $442 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 ARGI4 ADDRLP4 12 ADDRGP4 BG_InSpecialJump CALLI4 ASGNI4 ADDRLP4 12 INDIRI4 CNSTI4 0 NEI4 $442 line 1065 ;1061: /*pm->ps->groundEntityNum != ENTITYNUM_NONE &&*/ ;1062: pm->ps->velocity[2] > 100 && ;1063: PM_GroundDistance() < 32 && ;1064: !BG_InSpecialJump(pm->ps->legsAnim)) ;1065: { //FLIP AND DOWNWARD ATTACK line 1068 ;1066: trace_t tr; ;1067: ;1068: if (PM_SomeoneInFront(&tr)) ADDRLP4 16 ARGP4 ADDRLP4 1096 ADDRGP4 PM_SomeoneInFront CALLI4 ASGNI4 ADDRLP4 1096 INDIRI4 CNSTI4 0 EQI4 $441 line 1069 ;1069: { line 1070 ;1070: newmove = PM_SaberFlipOverAttackMove(&tr); ADDRLP4 16 ARGP4 ADDRLP4 1100 ADDRGP4 PM_SaberFlipOverAttackMove CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 1100 INDIRI4 ASGNI4 line 1071 ;1071: } line 1072 ;1072: } ADDRGP4 $441 JUMPV LABELV $442 line 1073 ;1073: else if (pm->ps->fd.saberAnimLevel == FORCE_LEVEL_1 && ADDRLP4 16 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 20 CNSTI4 1 ASGNI4 ADDRLP4 16 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 ADDRLP4 20 INDIRI4 NEI4 $446 ADDRLP4 24 CNSTI4 0 ASGNI4 ADDRLP4 16 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ADDRLP4 20 INDIRI4 BANDI4 ADDRLP4 24 INDIRI4 EQI4 $446 ADDRLP4 16 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 ADDRLP4 24 INDIRI4 GTI4 $446 line 1076 ;1074: (pm->ps->pm_flags & PMF_DUCKED) && ;1075: pm->ps->weaponTime <= 0) ;1076: { //LUNGE (weak) line 1077 ;1077: newmove = PM_SaberLungeAttackMove(); ADDRLP4 28 ADDRGP4 PM_SaberLungeAttackMove CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 28 INDIRI4 ASGNI4 line 1078 ;1078: } ADDRGP4 $441 JUMPV LABELV $446 line 1080 ;1079: else ;1080: { line 1081 ;1081: newmove = LS_A_T2B; ADDRLP4 0 CNSTI4 10 ASGNI4 line 1082 ;1082: } line 1083 ;1083: } ADDRGP4 $441 JUMPV LABELV $440 line 1084 ;1084: else if ( pm->cmd.forwardmove < 0 ) ADDRGP4 pm INDIRP4 CNSTI4 28 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $448 line 1085 ;1085: {//backward= T2B slash//B2T uppercut? line 1086 ;1086: if (PM_CanBackstab()) ADDRLP4 4 ADDRGP4 PM_CanBackstab CALLI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 0 EQI4 $450 line 1087 ;1087: { //BACKSTAB (attack varies by level) line 1088 ;1088: if (pm->ps->fd.saberAnimLevel >= FORCE_LEVEL_2) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 CNSTI4 2 LTI4 $452 line 1089 ;1089: {//medium and higher attacks line 1090 ;1090: if ( (pm->ps->pm_flags&PMF_DUCKED) || pm->cmd.upmove < 0 ) ADDRLP4 8 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 12 CNSTI4 0 ASGNI4 ADDRLP4 8 INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 ADDRLP4 12 INDIRI4 NEI4 $456 ADDRLP4 8 INDIRP4 CNSTI4 30 ADDP4 INDIRI1 CVII4 1 ADDRLP4 12 INDIRI4 GEI4 $454 LABELV $456 line 1091 ;1091: { line 1092 ;1092: newmove = LS_A_BACK_CR; ADDRLP4 0 CNSTI4 13 ASGNI4 line 1093 ;1093: } ADDRGP4 $449 JUMPV LABELV $454 line 1095 ;1094: else ;1095: { line 1096 ;1096: newmove = LS_A_BACK; ADDRLP4 0 CNSTI4 12 ASGNI4 line 1097 ;1097: } line 1098 ;1098: } ADDRGP4 $449 JUMPV LABELV $452 line 1100 ;1099: else ;1100: { //weak attack line 1101 ;1101: newmove = LS_A_BACKSTAB; ADDRLP4 0 CNSTI4 11 ASGNI4 line 1102 ;1102: } line 1103 ;1103: } ADDRGP4 $449 JUMPV LABELV $450 line 1105 ;1104: else ;1105: { line 1106 ;1106: newmove = LS_A_T2B; ADDRLP4 0 CNSTI4 10 ASGNI4 line 1107 ;1107: } line 1108 ;1108: } ADDRGP4 $449 JUMPV LABELV $448 line 1109 ;1109: else if ( PM_SaberInBounce( curmove ) ) ADDRFP4 0 INDIRI4 ARGI4 ADDRLP4 4 ADDRGP4 PM_SaberInBounce CALLI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 0 EQI4 $457 line 1110 ;1110: {//bounces should go to their default attack if you don't specify a direction but are attacking line 1111 ;1111: if ( PM_SaberKataDone() ) ADDRLP4 8 ADDRGP4 PM_SaberKataDone CALLI4 ASGNI4 ADDRLP4 8 INDIRI4 CNSTI4 0 EQI4 $459 line 1112 ;1112: { line 1113 ;1113: newmove = saberMoveData[curmove].chain_idle; ADDRLP4 0 CNSTI4 40 ADDRFP4 0 INDIRI4 MULI4 ADDRGP4 saberMoveData+28 ADDP4 INDIRI4 ASGNI4 line 1114 ;1114: } ADDRGP4 $458 JUMPV LABELV $459 line 1116 ;1115: else ;1116: { line 1117 ;1117: newmove = saberMoveData[curmove].chain_attack; ADDRLP4 0 CNSTI4 40 ADDRFP4 0 INDIRI4 MULI4 ADDRGP4 saberMoveData+32 ADDP4 INDIRI4 ASGNI4 line 1118 ;1118: } line 1119 ;1119: } ADDRGP4 $458 JUMPV LABELV $457 line 1120 ;1120: else if ( curmove == LS_READY ) ADDRFP4 0 INDIRI4 CNSTI4 1 NEI4 $463 line 1121 ;1121: {//Not moving at all, shouldn't have gotten here...? line 1127 ;1122: //for now, just pick a random attack ;1123: //newmove = Q_irand( LS_A_TL2BR, LS_A_T2B ); ;1124: //rww - If we don't seed with a "common" value, the client and server will get mismatched ;1125: //prediction values. Under laggy conditions this will cause the appearance of rapid swing ;1126: //sequence changes. ;1127: newmove = PM_irand_timesync(LS_A_TL2BR, LS_A_T2B); CNSTI4 4 ARGI4 CNSTI4 10 ARGI4 ADDRLP4 8 ADDRGP4 PM_irand_timesync CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 8 INDIRI4 ASGNI4 line 1128 ;1128: } LABELV $463 LABELV $458 LABELV $449 LABELV $441 line 1129 ;1129: } LABELV $435 LABELV $429 line 1131 ;1130: ;1131: return newmove; ADDRLP4 0 INDIRI4 RETI4 LABELV $427 endproc PM_SaberAttackForMovement 1104 8 export PM_WeaponLightsaber proc PM_WeaponLightsaber 104 16 line 1144 ;1132:} ;1133:/* ;1134:================= ;1135:PM_WeaponLightsaber ;1136: ;1137:Consults a chart to choose what to do with the lightsaber. ;1138:While this is a little different than the Quake 3 code, there is no clean way of using the Q3 code for this kind of thing. ;1139:================= ;1140:*/ ;1141:// Ultimate goal is to set the sabermove to the proper next location ;1142:// Note that if the resultant animation is NONE, then the animation is essentially "idle", and is set in WP_TorsoAnim ;1143:void PM_WeaponLightsaber(void) ;1144:{ line 1146 ;1145: int addTime,amount; ;1146: qboolean delayed_fire = qfalse; ADDRLP4 20 CNSTI4 0 ASGNI4 line 1147 ;1147: int anim=-1, curmove, newmove=LS_NONE; ADDRLP4 16 CNSTI4 -1 ASGNI4 ADDRLP4 8 CNSTI4 0 ASGNI4 line 1149 ;1148: ;1149: qboolean saberInAir = qtrue; ADDRLP4 24 CNSTI4 1 ASGNI4 line 1150 ;1150: qboolean checkOnlyWeap = qfalse; ADDRLP4 12 CNSTI4 0 ASGNI4 line 1152 ;1151: ;1152: if ( pm->ps->saberLockTime > pm->cmd.serverTime ) ADDRLP4 32 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 32 INDIRP4 INDIRP4 CNSTI4 524 ADDP4 INDIRI4 ADDRLP4 32 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 LEI4 $466 line 1153 ;1153: { line 1154 ;1154: pm->ps->saberMove = LS_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 CNSTI4 0 ASGNI4 line 1155 ;1155: PM_SaberLocked(); ADDRGP4 PM_SaberLocked CALLV pop line 1156 ;1156: return; ADDRGP4 $465 JUMPV LABELV $466 line 1159 ;1157: } ;1158: else ;1159: { line 1160 ;1160: if ( ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || ADDRLP4 36 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 40 ADDRLP4 36 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 40 INDIRI4 CNSTI4 538 EQI4 $473 ADDRLP4 40 INDIRI4 CNSTI4 541 EQI4 $473 ADDRLP4 40 INDIRI4 CNSTI4 548 EQI4 $473 ADDRLP4 40 INDIRI4 CNSTI4 549 EQI4 $473 ADDRLP4 36 INDIRP4 CNSTI4 532 ADDP4 INDIRI4 CNSTI4 0 EQI4 $468 LABELV $473 line 1166 ;1161: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || ;1162: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || ;1163: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK || ;1164: pm->ps->saberLockFrame ) ;1165: ) ;1166: { line 1167 ;1167: if (pm->ps->saberLockEnemy < ENTITYNUM_NONE && ADDRLP4 44 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 528 ADDP4 INDIRI4 ASGNI4 ADDRLP4 44 INDIRI4 CNSTI4 1023 GEI4 $474 ADDRLP4 44 INDIRI4 CNSTI4 0 LTI4 $474 line 1169 ;1168: pm->ps->saberLockEnemy >= 0) ;1169: { line 1172 ;1170: playerState_t *en; ;1171: ;1172: en = pm->bgClients[pm->ps->saberLockEnemy]; ADDRLP4 52 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 48 ADDRLP4 52 INDIRP4 INDIRP4 CNSTI4 528 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 52 INDIRP4 CNSTI4 248 ADDP4 ADDP4 INDIRP4 ASGNP4 line 1174 ;1173: ;1174: if (en) ADDRLP4 48 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $476 line 1175 ;1175: { line 1176 ;1176: PM_SaberLockBreak(en, qfalse); ADDRLP4 48 INDIRP4 ARGP4 CNSTI4 0 ARGI4 ADDRGP4 PM_SaberLockBreak CALLV pop line 1177 ;1177: return; ADDRGP4 $465 JUMPV LABELV $476 line 1179 ;1178: } ;1179: } LABELV $474 line 1181 ;1180: ;1181: if ( ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF2LOCK || ADDRLP4 48 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 52 ADDRLP4 48 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 52 INDIRI4 CNSTI4 538 EQI4 $483 ADDRLP4 52 INDIRI4 CNSTI4 541 EQI4 $483 ADDRLP4 52 INDIRI4 CNSTI4 548 EQI4 $483 ADDRLP4 52 INDIRI4 CNSTI4 549 EQI4 $483 ADDRLP4 48 INDIRP4 CNSTI4 532 ADDP4 INDIRI4 CNSTI4 0 EQI4 $478 LABELV $483 line 1187 ;1182: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_BF1LOCK || ;1183: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CWCIRCLELOCK || ;1184: (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == BOTH_CCWCIRCLELOCK || ;1185: pm->ps->saberLockFrame ) ;1186: ) ;1187: { line 1188 ;1188: pm->ps->torsoTimer = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 96 ADDP4 CNSTI4 0 ASGNI4 line 1189 ;1189: PM_SetAnim(SETANIM_TORSO,BOTH_STAND1,SETANIM_FLAG_OVERRIDE, 100); ADDRLP4 56 CNSTI4 1 ASGNI4 ADDRLP4 56 INDIRI4 ARGI4 CNSTI4 550 ARGI4 ADDRLP4 56 INDIRI4 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1190 ;1190: pm->ps->saberLockFrame = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 532 ADDP4 CNSTI4 0 ASGNI4 line 1191 ;1191: } LABELV $478 line 1192 ;1192: } LABELV $468 line 1193 ;1193: } line 1195 ;1194: ;1195: if (pm->ps->saberHolstered) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1300 ADDP4 INDIRI4 CNSTI4 0 EQI4 $484 line 1196 ;1196: { line 1197 ;1197: if (pm->ps->saberMove != LS_READY) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 CNSTI4 1 EQI4 $486 line 1198 ;1198: { line 1199 ;1199: PM_SetSaberMove( LS_READY ); CNSTI4 1 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1200 ;1200: } LABELV $486 line 1202 ;1201: ;1202: if ((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) != (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT)) ADDRLP4 36 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 40 CNSTI4 -2049 ASGNI4 ADDRLP4 36 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 BANDI4 ADDRLP4 36 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 BANDI4 EQI4 $488 line 1203 ;1203: { line 1204 ;1204: PM_SetAnim(SETANIM_TORSO,(pm->ps->legsAnim & ~ANIM_TOGGLEBIT),SETANIM_FLAG_OVERRIDE, 100); ADDRLP4 44 CNSTI4 1 ASGNI4 ADDRLP4 44 INDIRI4 ARGI4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ARGI4 ADDRLP4 44 INDIRI4 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1205 ;1205: } LABELV $488 line 1207 ;1206: ;1207: if (BG_InSaberStandAnim(pm->ps->torsoAnim)) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 ARGI4 ADDRLP4 44 ADDRGP4 BG_InSaberStandAnim CALLI4 ASGNI4 ADDRLP4 44 INDIRI4 CNSTI4 0 EQI4 $490 line 1208 ;1208: { line 1209 ;1209: PM_SetAnim(SETANIM_TORSO,BOTH_STAND1,SETANIM_FLAG_OVERRIDE, 100); ADDRLP4 48 CNSTI4 1 ASGNI4 ADDRLP4 48 INDIRI4 ARGI4 CNSTI4 550 ARGI4 ADDRLP4 48 INDIRI4 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1210 ;1210: } LABELV $490 line 1212 ;1211: ;1212: if (pm->ps->weaponTime < 1 && ((pm->cmd.buttons & BUTTON_ALT_ATTACK) || (pm->cmd.buttons & BUTTON_ATTACK))) ADDRLP4 48 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 52 CNSTI4 1 ASGNI4 ADDRLP4 48 INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 ADDRLP4 52 INDIRI4 GEI4 $492 ADDRLP4 56 ADDRLP4 48 INDIRP4 CNSTI4 20 ADDP4 INDIRI4 ASGNI4 ADDRLP4 60 CNSTI4 0 ASGNI4 ADDRLP4 56 INDIRI4 CNSTI4 128 BANDI4 ADDRLP4 60 INDIRI4 NEI4 $494 ADDRLP4 56 INDIRI4 ADDRLP4 52 INDIRI4 BANDI4 ADDRLP4 60 INDIRI4 EQI4 $492 LABELV $494 line 1213 ;1213: { line 1214 ;1214: if (pm->ps->duelTime < pm->cmd.serverTime) ADDRLP4 64 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 64 INDIRP4 INDIRP4 CNSTI4 1288 ADDP4 INDIRI4 ADDRLP4 64 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 GEI4 $495 line 1215 ;1215: { line 1216 ;1216: pm->ps->saberHolstered = qfalse; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1300 ADDP4 CNSTI4 0 ASGNI4 line 1217 ;1217: PM_AddEvent(EV_SABER_UNHOLSTER); CNSTI4 29 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1218 ;1218: } LABELV $495 line 1219 ;1219: } LABELV $492 line 1221 ;1220: ;1221: if ( pm->ps->weaponTime > 0 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $497 line 1222 ;1222: { line 1223 ;1223: pm->ps->weaponTime -= pml.msec; ADDRLP4 64 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 64 INDIRP4 ADDRLP4 64 INDIRP4 INDIRI4 ADDRGP4 pml+40 INDIRI4 SUBI4 ASGNI4 line 1224 ;1224: } LABELV $497 line 1226 ;1225: ;1226: checkOnlyWeap = qtrue; ADDRLP4 12 CNSTI4 1 ASGNI4 line 1227 ;1227: goto weapChecks; ADDRGP4 $500 JUMPV LABELV $484 line 1230 ;1228: } ;1229: ;1230: if ((pm->cmd.buttons & BUTTON_ALT_ATTACK) && ADDRLP4 36 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 40 CNSTI4 0 ASGNI4 ADDRLP4 36 INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 128 BANDI4 ADDRLP4 40 INDIRI4 EQI4 $501 ADDRLP4 44 ADDRLP4 36 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 44 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 1 GEI4 $501 ADDRLP4 44 INDIRP4 CNSTI4 560 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 EQI4 $501 ADDRLP4 44 INDIRP4 CNSTI4 920 ADDP4 INDIRI4 CNSTI4 72 ADDRLP4 44 INDIRP4 CNSTI4 1000 ADDP4 INDIRI4 MULI4 ADDRGP4 forcePowerNeeded+68 ADDP4 INDIRI4 LTI4 $501 ADDRLP4 36 INDIRP4 CNSTI4 220 ADDP4 INDIRI4 ARGI4 ADDRLP4 44 INDIRP4 ARGP4 ADDRLP4 48 ADDRGP4 BG_HasYsalamiri CALLI4 ASGNI4 ADDRLP4 48 INDIRI4 CNSTI4 0 NEI4 $501 ADDRLP4 52 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 52 INDIRP4 CNSTI4 220 ADDP4 INDIRI4 ARGI4 ADDRLP4 52 INDIRP4 INDIRP4 ARGP4 ADDRLP4 52 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ARGI4 CNSTI4 17 ARGI4 ADDRLP4 56 ADDRGP4 BG_CanUseFPNow CALLI4 ASGNI4 ADDRLP4 56 INDIRI4 CNSTI4 0 EQI4 $501 line 1237 ;1231: pm->ps->weaponTime < 1 && ;1232: pm->ps->saberCanThrow && ;1233: pm->ps->fd.forcePower >= forcePowerNeeded[pm->ps->fd.forcePowerLevel[FP_SABERTHROW]][FP_SABERTHROW] && ;1234: !BG_HasYsalamiri(pm->gametype, pm->ps) && ;1235: BG_CanUseFPNow(pm->gametype, pm->ps, pm->cmd.serverTime, FP_SABERTHROW) ;1236: ) ;1237: { //might as well just check for a saber throw right here line 1239 ;1238: //This will get set to false again once the saber makes it back to its owner game-side ;1239: if (!pm->ps->saberInFlight) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 504 ADDP4 INDIRI4 CNSTI4 0 NEI4 $504 line 1240 ;1240: { line 1241 ;1241: pm->ps->fd.forcePower -= forcePowerNeeded[pm->ps->fd.forcePowerLevel[FP_SABERTHROW]][FP_SABERTHROW]; ADDRLP4 60 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 64 ADDRLP4 60 INDIRP4 CNSTI4 920 ADDP4 ASGNP4 ADDRLP4 64 INDIRP4 ADDRLP4 64 INDIRP4 INDIRI4 CNSTI4 72 ADDRLP4 60 INDIRP4 CNSTI4 1000 ADDP4 INDIRI4 MULI4 ADDRGP4 forcePowerNeeded+68 ADDP4 INDIRI4 SUBI4 ASGNI4 line 1242 ;1242: } LABELV $504 line 1244 ;1243: ;1244: pm->ps->saberInFlight = qtrue; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 504 ADDP4 CNSTI4 1 ASGNI4 line 1245 ;1245: } LABELV $501 line 1247 ;1246: ;1247: if ( pm->ps->saberInFlight ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 504 ADDP4 INDIRI4 CNSTI4 0 EQI4 $507 line 1248 ;1248: {//guiding saber line 1249 ;1249: PM_SetAnim(SETANIM_TORSO, BOTH_SABERPULL, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 100); CNSTI4 1 ARGI4 CNSTI4 946 ARGI4 CNSTI4 3 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1250 ;1250: pm->ps->torsoTimer = 1; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 96 ADDP4 CNSTI4 1 ASGNI4 line 1251 ;1251: return; ADDRGP4 $465 JUMPV LABELV $507 line 1255 ;1252: } ;1253: ;1254: // don't allow attack until all buttons are up ;1255: if ( pm->ps->pm_flags & PMF_RESPAWNED ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 512 BANDI4 CNSTI4 0 EQI4 $509 line 1256 ;1256: return; ADDRGP4 $465 JUMPV LABELV $509 line 1260 ;1257: } ;1258: ;1259: // check for dead player ;1260: if ( pm->ps->stats[STAT_HEALTH] <= 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 216 ADDP4 INDIRI4 CNSTI4 0 GTI4 $511 line 1261 ;1261: return; ADDRGP4 $465 JUMPV LABELV $511 line 1264 ;1262: } ;1263: ;1264: if (pm->ps->weaponstate == WEAPON_READY || ADDRLP4 60 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 INDIRI4 ASGNI4 ADDRLP4 60 INDIRI4 CNSTI4 0 EQI4 $515 ADDRLP4 60 INDIRI4 CNSTI4 6 NEI4 $513 LABELV $515 line 1266 ;1265: pm->ps->weaponstate == WEAPON_IDLE) ;1266: { line 1267 ;1267: if (pm->ps->saberMove != LS_READY && pm->ps->weaponTime <= 0 && !pm->ps->saberBlocked) ADDRLP4 64 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 64 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 CNSTI4 1 EQI4 $516 ADDRLP4 68 CNSTI4 0 ASGNI4 ADDRLP4 64 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 ADDRLP4 68 INDIRI4 GTI4 $516 ADDRLP4 64 INDIRP4 CNSTI4 520 ADDP4 INDIRI4 ADDRLP4 68 INDIRI4 NEI4 $516 line 1268 ;1268: { line 1269 ;1269: PM_SetSaberMove( LS_READY ); CNSTI4 1 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1270 ;1270: } LABELV $516 line 1271 ;1271: } LABELV $513 line 1273 ;1272: ;1273: if( (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN2 || ADDRLP4 64 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 ADDRLP4 64 INDIRI4 CNSTI4 734 EQI4 $520 ADDRLP4 64 INDIRI4 CNSTI4 731 NEI4 $518 LABELV $520 line 1275 ;1274: (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN1 ) ;1275: { line 1276 ;1276: if ((pm->ps->torsoAnim & ~ANIM_TOGGLEBIT) != (pm->ps->legsAnim & ~ANIM_TOGGLEBIT)) ADDRLP4 68 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 72 CNSTI4 -2049 ASGNI4 ADDRLP4 68 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 ADDRLP4 72 INDIRI4 BANDI4 ADDRLP4 68 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 ADDRLP4 72 INDIRI4 BANDI4 EQI4 $521 line 1277 ;1277: { line 1278 ;1278: PM_SetAnim(SETANIM_TORSO,(pm->ps->legsAnim & ~ANIM_TOGGLEBIT),SETANIM_FLAG_OVERRIDE, 100); ADDRLP4 76 CNSTI4 1 ASGNI4 ADDRLP4 76 INDIRI4 ARGI4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ARGI4 ADDRLP4 76 INDIRI4 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1279 ;1279: } LABELV $521 line 1280 ;1280: } LABELV $518 line 1283 ;1281: ;1282: // make weapon function ;1283: if ( pm->ps->weaponTime > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $523 line 1284 ;1284: pm->ps->weaponTime -= pml.msec; ADDRLP4 68 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 68 INDIRP4 ADDRLP4 68 INDIRP4 INDIRI4 ADDRGP4 pml+40 INDIRI4 SUBI4 ASGNI4 line 1286 ;1285: ;1286: if (pm->ps->saberBlocked && pm->ps->torsoAnim != saberMoveData[pm->ps->saberMove].animToUse) ADDRLP4 72 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 520 ADDP4 INDIRI4 CNSTI4 0 EQI4 $524 ADDRLP4 72 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 40 ADDRLP4 72 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+4 ADDP4 INDIRI4 EQI4 $524 line 1287 ;1287: { //rww - keep him in the blocking pose until he can attack again line 1288 ;1288: PM_SetAnim(SETANIM_TORSO,saberMoveData[pm->ps->saberMove].animToUse,saberMoveData[pm->ps->saberMove].animSetFlags|SETANIM_FLAG_HOLD, saberMoveData[pm->ps->saberMove].blendTime); CNSTI4 1 ARGI4 ADDRLP4 76 CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ASGNI4 ADDRLP4 76 INDIRI4 ADDRGP4 saberMoveData+4 ADDP4 INDIRI4 ARGI4 ADDRLP4 76 INDIRI4 ADDRGP4 saberMoveData+16 ADDP4 INDIRU4 CNSTU4 2 BORU4 CVUI4 4 ARGI4 ADDRLP4 76 INDIRI4 ADDRGP4 saberMoveData+20 ADDP4 INDIRI4 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1289 ;1289: return; ADDRGP4 $465 JUMPV line 1291 ;1290: } ;1291: } LABELV $523 line 1293 ;1292: else ;1293: { line 1294 ;1294: pm->ps->weaponstate = WEAPON_READY; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 CNSTI4 0 ASGNI4 line 1295 ;1295: } LABELV $524 line 1298 ;1296: ;1297: // Now we react to a block action by the player's lightsaber. ;1298: if ( pm->ps->saberBlocked ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 520 ADDP4 INDIRI4 CNSTI4 0 EQI4 $532 line 1299 ;1299: { line 1300 ;1300: int firstSet = 0; ADDRLP4 68 CNSTI4 0 ASGNI4 line 1302 ;1301: ;1302: if (!pm->ps->weaponTime) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 NEI4 $534 line 1303 ;1303: { line 1304 ;1304: firstSet = 1; ADDRLP4 68 CNSTI4 1 ASGNI4 line 1305 ;1305: } LABELV $534 line 1307 ;1306: ;1307: switch ( pm->ps->saberBlocked ) ADDRLP4 72 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 520 ADDP4 INDIRI4 ASGNI4 ADDRLP4 72 INDIRI4 CNSTI4 1 LTI4 $536 ADDRLP4 72 INDIRI4 CNSTI4 12 GTI4 $536 ADDRLP4 72 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $572-4 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $572 address $539 address $544 address $562 address $564 address $566 address $568 address $570 address $563 address $565 address $567 address $569 address $571 code line 1308 ;1308: { LABELV $539 line 1311 ;1309: case BLOCKED_PARRY_BROKEN: ;1310: //whatever parry we were is in now broken, play the appropriate knocked-away anim ;1311: { line 1314 ;1312: int nextMove; ;1313: ;1314: if ( PM_SaberInBrokenParry( pm->ps->saberMove ) ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 ARGI4 ADDRLP4 84 ADDRGP4 PM_SaberInBrokenParry CALLI4 ASGNI4 ADDRLP4 84 INDIRI4 CNSTI4 0 EQI4 $540 line 1315 ;1315: {//already have one...? line 1316 ;1316: nextMove = pm->ps->saberMove; ADDRLP4 80 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 ASGNI4 line 1317 ;1317: } ADDRGP4 $541 JUMPV LABELV $540 line 1319 ;1318: else ;1319: { line 1320 ;1320: nextMove = PM_BrokenParryForParry( pm->ps->saberMove ); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 ARGI4 ADDRLP4 88 ADDRGP4 PM_BrokenParryForParry CALLI4 ASGNI4 ADDRLP4 80 ADDRLP4 88 INDIRI4 ASGNI4 line 1321 ;1321: } LABELV $541 line 1322 ;1322: if ( nextMove != LS_NONE ) ADDRLP4 80 INDIRI4 CNSTI4 0 EQI4 $537 line 1323 ;1323: { line 1324 ;1324: PM_SetSaberMove( nextMove ); ADDRLP4 80 INDIRI4 CVII2 4 CVII4 2 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1325 ;1325: pm->ps->weaponTime = pm->ps->torsoTimer; ADDRLP4 88 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 88 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 88 INDIRP4 CNSTI4 96 ADDP4 INDIRI4 ASGNI4 line 1326 ;1326: } line 1328 ;1327: else ;1328: {//Maybe in a knockaway? line 1329 ;1329: } line 1330 ;1330: } line 1331 ;1331: break; ADDRGP4 $537 JUMPV LABELV $544 line 1335 ;1332: case BLOCKED_ATK_BOUNCE: ;1333: // If there is absolutely no blocked move in the chart, don't even mess with the animation. ;1334: // OR if we are already in a block or parry. ;1335: if (pm->ps->saberMove >= LS_T1_BR__R/*LS_BOUNCE_TOP*/ )//|| saberMoveData[pm->ps->saberMove].bounceMove == LS_NONE ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 CNSTI4 32 LTI4 $545 line 1336 ;1336: {//an actual bounce? Other bounces before this are actually transitions? line 1337 ;1337: pm->ps->saberBlocked = BLOCKED_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 520 ADDP4 CNSTI4 0 ASGNI4 line 1338 ;1338: } ADDRGP4 $537 JUMPV LABELV $545 line 1340 ;1339: else ;1340: { line 1343 ;1341: int bounceMove; ;1342: ;1343: if ( pm->cmd.buttons & BUTTON_ATTACK ) ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $547 line 1344 ;1344: {//transition to a new attack line 1345 ;1345: int newQuad = PM_SaberMoveQuadrantForMovement( &pm->cmd ); ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 ARGP4 ADDRLP4 88 ADDRGP4 PM_SaberMoveQuadrantForMovement CALLI4 ASGNI4 ADDRLP4 84 ADDRLP4 88 INDIRI4 ASGNI4 ADDRGP4 $550 JUMPV LABELV $549 line 1347 ;1346: while ( newQuad == saberMoveData[pm->ps->saberMove].startQuad ) ;1347: {//player is still in same attack quad, don't repeat that attack because it looks bad, line 1350 ;1348: //FIXME: try to pick one that might look cool? ;1349: //newQuad = Q_irand( Q_BR, Q_BL ); ;1350: newQuad = PM_irand_timesync( Q_BR, Q_BL ); CNSTI4 0 ARGI4 CNSTI4 6 ARGI4 ADDRLP4 92 ADDRGP4 PM_irand_timesync CALLI4 ASGNI4 ADDRLP4 84 ADDRLP4 92 INDIRI4 ASGNI4 line 1352 ;1351: //FIXME: sanity check, just in case? ;1352: }//else player is switching up anyway, take the new attack dir LABELV $550 line 1346 ADDRLP4 84 INDIRI4 CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 EQI4 $549 line 1353 ;1353: bounceMove = transitionMove[saberMoveData[pm->ps->saberMove].startQuad][newQuad]; ADDRLP4 80 ADDRLP4 84 INDIRI4 CNSTI4 2 LSHI4 CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 CNSTI4 5 LSHI4 ADDRGP4 transitionMove ADDP4 ADDP4 INDIRI4 ASGNI4 line 1354 ;1354: } ADDRGP4 $548 JUMPV LABELV $547 line 1356 ;1355: else ;1356: {//return to ready line 1357 ;1357: if ( saberMoveData[pm->ps->saberMove].startQuad == Q_T ) CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 CNSTI4 3 NEI4 $554 line 1358 ;1358: { line 1359 ;1359: bounceMove = LS_R_BL2TR; ADDRLP4 80 CNSTI4 27 ASGNI4 line 1360 ;1360: } ADDRGP4 $555 JUMPV LABELV $554 line 1361 ;1361: else if ( saberMoveData[pm->ps->saberMove].startQuad < Q_T ) CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 CNSTI4 3 GEI4 $557 line 1362 ;1362: { line 1363 ;1363: bounceMove = LS_R_TL2BR+saberMoveData[pm->ps->saberMove].startQuad-Q_BR; ADDRLP4 80 CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 CNSTI4 25 ADDI4 ASGNI4 line 1364 ;1364: } ADDRGP4 $558 JUMPV LABELV $557 line 1366 ;1365: else// if ( saberMoveData[pm->ps->saberMove].startQuad > Q_T ) ;1366: { line 1367 ;1367: bounceMove = LS_R_BR2TL+saberMoveData[pm->ps->saberMove].startQuad-Q_TL; ADDRLP4 80 CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+8 ADDP4 INDIRI4 CNSTI4 28 ADDI4 CNSTI4 4 SUBI4 ASGNI4 line 1368 ;1368: } LABELV $558 LABELV $555 line 1369 ;1369: } LABELV $548 line 1370 ;1370: PM_SetSaberMove( bounceMove ); ADDRLP4 80 INDIRI4 CVII2 4 CVII4 2 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1372 ;1371: ;1372: pm->ps->weaponTime = pm->ps->torsoTimer;//+saberMoveData[bounceMove].blendTime+SABER_BLOCK_DUR; ADDRLP4 84 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 84 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 84 INDIRP4 CNSTI4 96 ADDP4 INDIRI4 ASGNI4 line 1374 ;1373: ;1374: } line 1375 ;1375: break; ADDRGP4 $537 JUMPV LABELV $562 line 1377 ;1376: case BLOCKED_UPPER_RIGHT: ;1377: PM_SetSaberMove( LS_PARRY_UR ); CNSTI4 109 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1378 ;1378: break; ADDRGP4 $537 JUMPV LABELV $563 line 1380 ;1379: case BLOCKED_UPPER_RIGHT_PROJ: ;1380: PM_SetSaberMove( LS_REFLECT_UR ); CNSTI4 114 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1381 ;1381: break; ADDRGP4 $537 JUMPV LABELV $564 line 1383 ;1382: case BLOCKED_UPPER_LEFT: ;1383: PM_SetSaberMove( LS_PARRY_UL ); CNSTI4 110 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1384 ;1384: break; ADDRGP4 $537 JUMPV LABELV $565 line 1386 ;1385: case BLOCKED_UPPER_LEFT_PROJ: ;1386: PM_SetSaberMove( LS_REFLECT_UL ); CNSTI4 115 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1387 ;1387: break; ADDRGP4 $537 JUMPV LABELV $566 line 1389 ;1388: case BLOCKED_LOWER_RIGHT: ;1389: PM_SetSaberMove( LS_PARRY_LR ); CNSTI4 111 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1390 ;1390: break; ADDRGP4 $537 JUMPV LABELV $567 line 1392 ;1391: case BLOCKED_LOWER_RIGHT_PROJ: ;1392: PM_SetSaberMove( LS_REFLECT_LR ); CNSTI4 116 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1393 ;1393: break; ADDRGP4 $537 JUMPV LABELV $568 line 1395 ;1394: case BLOCKED_LOWER_LEFT: ;1395: PM_SetSaberMove( LS_PARRY_LL ); CNSTI4 112 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1396 ;1396: break; ADDRGP4 $537 JUMPV LABELV $569 line 1398 ;1397: case BLOCKED_LOWER_LEFT_PROJ: ;1398: PM_SetSaberMove( LS_REFLECT_LL); CNSTI4 117 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1399 ;1399: break; ADDRGP4 $537 JUMPV LABELV $570 line 1401 ;1400: case BLOCKED_TOP: ;1401: PM_SetSaberMove( LS_PARRY_UP ); CNSTI4 108 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1402 ;1402: break; ADDRGP4 $537 JUMPV LABELV $571 line 1404 ;1403: case BLOCKED_TOP_PROJ: ;1404: PM_SetSaberMove( LS_REFLECT_UP ); CNSTI4 113 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1405 ;1405: break; ADDRGP4 $537 JUMPV LABELV $536 line 1407 ;1406: default: ;1407: pm->ps->saberBlocked = BLOCKED_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 520 ADDP4 CNSTI4 0 ASGNI4 line 1408 ;1408: break; LABELV $537 line 1411 ;1409: } ;1410: ;1411: if (pm->ps->saberBlocked != BLOCKED_ATK_BOUNCE && pm->ps->saberBlocked != BLOCKED_PARRY_BROKEN && pm->ps->weaponTime < 1) ADDRLP4 80 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 84 ADDRLP4 80 INDIRP4 CNSTI4 520 ADDP4 INDIRI4 ASGNI4 ADDRLP4 84 INDIRI4 CNSTI4 2 EQI4 $574 ADDRLP4 88 CNSTI4 1 ASGNI4 ADDRLP4 84 INDIRI4 ADDRLP4 88 INDIRI4 EQI4 $574 ADDRLP4 80 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 ADDRLP4 88 INDIRI4 GEI4 $574 line 1412 ;1412: { line 1413 ;1413: pm->ps->torsoTimer = SABER_BLOCK_DUR; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 96 ADDP4 CNSTI4 150 ASGNI4 line 1414 ;1414: pm->ps->weaponTime = pm->ps->torsoTimer; ADDRLP4 92 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 92 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 92 INDIRP4 CNSTI4 96 ADDP4 INDIRI4 ASGNI4 line 1415 ;1415: } LABELV $574 line 1417 ;1416: ;1417: if (firstSet) ADDRLP4 68 INDIRI4 CNSTI4 0 EQI4 $576 line 1418 ;1418: { line 1419 ;1419: return; ADDRGP4 $465 JUMPV LABELV $576 line 1423 ;1420: } ;1421: ;1422: // Charging is like a lead-up before attacking again. This is an appropriate use, or we can create a new weaponstate for blocking ;1423: pm->ps->weaponstate = WEAPON_READY; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 CNSTI4 0 ASGNI4 line 1426 ;1424: ;1425: // Done with block, so stop these active weapon branches. ;1426: return; ADDRGP4 $465 JUMPV LABELV $532 LABELV $500 line 1432 ;1427: } ;1428: ;1429:weapChecks: ;1430: // check for weapon change ;1431: // can't change if weapon is firing, but can change again if lowering or raising ;1432: if ( pm->ps->weaponTime <= 0 || pm->ps->weaponstate != WEAPON_FIRING ) { ADDRLP4 68 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 68 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $580 ADDRLP4 68 INDIRP4 CNSTI4 152 ADDP4 INDIRI4 CNSTI4 3 EQI4 $578 LABELV $580 line 1433 ;1433: if ( pm->ps->weapon != pm->cmd.weapon ) { ADDRLP4 72 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 ADDRLP4 72 INDIRP4 CNSTI4 24 ADDP4 INDIRU1 CVUI4 1 EQI4 $581 line 1434 ;1434: PM_BeginWeaponChange( pm->cmd.weapon ); ADDRGP4 pm INDIRP4 CNSTI4 24 ADDP4 INDIRU1 CVUI4 1 ARGI4 ADDRGP4 PM_BeginWeaponChange CALLV pop line 1435 ;1435: } LABELV $581 line 1436 ;1436: } LABELV $578 line 1438 ;1437: ;1438: if ( pm->ps->weaponTime > 0 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $583 line 1439 ;1439: { line 1440 ;1440: return; ADDRGP4 $465 JUMPV LABELV $583 line 1448 ;1441: } ;1442: ;1443: // ********************************************************* ;1444: // WEAPON_DROPPING ;1445: // ********************************************************* ;1446: ;1447: // change weapon if time ;1448: if ( pm->ps->weaponstate == WEAPON_DROPPING ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 INDIRI4 CNSTI4 2 NEI4 $585 line 1449 ;1449: PM_FinishWeaponChange(); ADDRGP4 PM_FinishWeaponChange CALLV pop line 1450 ;1450: return; ADDRGP4 $465 JUMPV LABELV $585 line 1457 ;1451: } ;1452: ;1453: // ********************************************************* ;1454: // WEAPON_RAISING ;1455: // ********************************************************* ;1456: ;1457: if ( pm->ps->weaponstate == WEAPON_RAISING ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 INDIRI4 CNSTI4 1 NEI4 $587 line 1458 ;1458: {//Just selected the weapon line 1459 ;1459: pm->ps->weaponstate = WEAPON_IDLE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 CNSTI4 6 ASGNI4 line 1460 ;1460: if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK1 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 CNSTI4 723 NEI4 $589 line 1461 ;1461: { line 1462 ;1462: PM_SetAnim(SETANIM_TORSO,BOTH_WALK1,SETANIM_FLAG_NORMAL, 100); CNSTI4 1 ARGI4 CNSTI4 723 ARGI4 CNSTI4 0 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1463 ;1463: } ADDRGP4 $590 JUMPV LABELV $589 line 1464 ;1464: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN2 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 CNSTI4 734 NEI4 $591 line 1465 ;1465: { line 1466 ;1466: PM_SetAnim(SETANIM_TORSO,BOTH_RUN2,SETANIM_FLAG_NORMAL, 100); CNSTI4 1 ARGI4 CNSTI4 734 ARGI4 CNSTI4 0 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1467 ;1467: } ADDRGP4 $592 JUMPV LABELV $591 line 1468 ;1468: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK2 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 CNSTI4 724 NEI4 $593 line 1469 ;1469: { line 1470 ;1470: PM_SetAnim(SETANIM_TORSO,BOTH_WALK2,SETANIM_FLAG_NORMAL, 100); CNSTI4 1 ARGI4 CNSTI4 724 ARGI4 CNSTI4 0 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1471 ;1471: } ADDRGP4 $594 JUMPV LABELV $593 line 1473 ;1472: else ;1473: { line 1474 ;1474: PM_SetAnim(SETANIM_TORSO,PM_GetSaberStance(),SETANIM_FLAG_NORMAL, 100); ADDRLP4 72 ADDRGP4 PM_GetSaberStance CALLI4 ASGNI4 CNSTI4 1 ARGI4 ADDRLP4 72 INDIRI4 ARGI4 CNSTI4 0 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1475 ;1475: } LABELV $594 LABELV $592 LABELV $590 line 1477 ;1476: ;1477: if (pm->ps->weaponstate == WEAPON_RAISING) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 INDIRI4 CNSTI4 1 NEI4 $595 line 1478 ;1478: { line 1479 ;1479: return; ADDRGP4 $465 JUMPV LABELV $595 line 1482 ;1480: } ;1481: ;1482: } LABELV $587 line 1484 ;1483: ;1484: if (checkOnlyWeap) ADDRLP4 12 INDIRI4 CNSTI4 0 EQI4 $597 line 1485 ;1485: { line 1486 ;1486: return; ADDRGP4 $465 JUMPV LABELV $597 line 1495 ;1487: } ;1488: ;1489: // ********************************************************* ;1490: // Check for WEAPON ATTACK ;1491: // ********************************************************* ;1492: ;1493: // NOTENOTE This is simply a client-side struct. Anything that is needed client and server should be moved to bg_weapon. ;1494: ;1495: if(!delayed_fire) ADDRLP4 20 INDIRI4 CNSTI4 0 NEI4 $599 line 1496 ;1496: { line 1498 ;1497: // Start with the current move, and cross index it with the current control states. ;1498: if ( pm->ps->saberMove > LS_NONE && pm->ps->saberMove < LS_MOVE_MAX ) ADDRLP4 72 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 ASGNI4 ADDRLP4 72 INDIRI4 CNSTI4 0 LEI4 $601 ADDRLP4 72 INDIRI4 CNSTI4 118 GEI4 $601 line 1499 ;1499: { line 1500 ;1500: curmove = pm->ps->saberMove; ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 ASGNI4 line 1501 ;1501: } ADDRGP4 $602 JUMPV LABELV $601 line 1503 ;1502: else ;1503: { line 1504 ;1504: curmove = LS_READY; ADDRLP4 4 CNSTI4 1 ASGNI4 line 1505 ;1505: } LABELV $602 line 1507 ;1506: // check for fire ;1507: if ( !(pm->cmd.buttons & (BUTTON_ATTACK/*|BUTTON_ALT_ATTACK*/)) ) ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 NEI4 $603 line 1508 ;1508: { line 1509 ;1509: if (pm->ps->weaponTime != 0) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 EQI4 $605 line 1510 ;1510: {//Still firing line 1511 ;1511: pm->ps->weaponstate = WEAPON_FIRING; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 CNSTI4 3 ASGNI4 line 1512 ;1512: } ADDRGP4 $606 JUMPV LABELV $605 line 1513 ;1513: else if ( pm->ps->weaponstate != WEAPON_READY ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 INDIRI4 CNSTI4 0 EQI4 $607 line 1514 ;1514: { line 1515 ;1515: pm->ps->weaponstate = WEAPON_IDLE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 CNSTI4 6 ASGNI4 line 1516 ;1516: } LABELV $607 LABELV $606 line 1518 ;1517: //Check for finishing an anim if necc. ;1518: if ( curmove >= LS_S_TL2BR && curmove <= LS_S_T2B ) ADDRLP4 76 ADDRLP4 4 INDIRI4 ASGNI4 ADDRLP4 76 INDIRI4 CNSTI4 18 LTI4 $609 ADDRLP4 76 INDIRI4 CNSTI4 24 GTI4 $609 line 1519 ;1519: {//started a swing, must continue from here line 1520 ;1520: newmove = LS_A_TL2BR + (curmove-LS_S_TL2BR); ADDRLP4 8 ADDRLP4 4 INDIRI4 CNSTI4 18 SUBI4 CNSTI4 4 ADDI4 ASGNI4 line 1521 ;1521: } ADDRGP4 $610 JUMPV LABELV $609 line 1522 ;1522: else if ( curmove >= LS_A_TL2BR && curmove <= LS_A_T2B ) ADDRLP4 80 ADDRLP4 4 INDIRI4 ASGNI4 ADDRLP4 80 INDIRI4 CNSTI4 4 LTI4 $611 ADDRLP4 80 INDIRI4 CNSTI4 10 GTI4 $611 line 1523 ;1523: {//finished an attack, must continue from here line 1524 ;1524: newmove = LS_R_TL2BR + (curmove-LS_A_TL2BR); ADDRLP4 8 ADDRLP4 4 INDIRI4 CNSTI4 4 SUBI4 CNSTI4 25 ADDI4 ASGNI4 line 1525 ;1525: } ADDRGP4 $612 JUMPV LABELV $611 line 1526 ;1526: else if ( PM_SaberInTransition( curmove ) ) ADDRLP4 4 INDIRI4 ARGI4 ADDRLP4 84 ADDRGP4 PM_SaberInTransition CALLI4 ASGNI4 ADDRLP4 84 INDIRI4 CNSTI4 0 EQI4 $613 line 1527 ;1527: {//in a transition, must play sequential attack line 1528 ;1528: newmove = saberMoveData[curmove].chain_attack; ADDRLP4 8 CNSTI4 40 ADDRLP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+32 ADDP4 INDIRI4 ASGNI4 line 1529 ;1529: } ADDRGP4 $614 JUMPV LABELV $613 line 1530 ;1530: else if ( PM_SaberInBounce( curmove ) ) ADDRLP4 4 INDIRI4 ARGI4 ADDRLP4 88 ADDRGP4 PM_SaberInBounce CALLI4 ASGNI4 ADDRLP4 88 INDIRI4 CNSTI4 0 EQI4 $616 line 1531 ;1531: {//in a bounce line 1532 ;1532: newmove = saberMoveData[curmove].chain_idle;//oops, not attacking, so don't chain ADDRLP4 8 CNSTI4 40 ADDRLP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+28 ADDP4 INDIRI4 ASGNI4 line 1533 ;1533: } ADDRGP4 $617 JUMPV LABELV $616 line 1535 ;1534: else ;1535: {//FIXME: what about returning from a parry? line 1536 ;1536: PM_SetSaberMove( LS_READY ); CNSTI4 1 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1537 ;1537: return; ADDRGP4 $465 JUMPV LABELV $617 LABELV $614 LABELV $612 LABELV $610 line 1539 ;1538: } ;1539: } LABELV $603 line 1544 ;1540: ;1541: // *************************************************** ;1542: // Pressing attack, so we must look up the proper attack move. ;1543: ;1544: saberInAir = qtrue; ADDRLP4 24 CNSTI4 1 ASGNI4 line 1546 ;1545: ;1546: if ( pm->ps->weaponTime > 0 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $619 line 1547 ;1547: { // Last attack is not yet complete. line 1548 ;1548: pm->ps->weaponstate = WEAPON_FIRING; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 CNSTI4 3 ASGNI4 line 1549 ;1549: return; ADDRGP4 $465 JUMPV LABELV $619 line 1552 ;1550: } ;1551: else ;1552: { line 1553 ;1553: int both = qfalse; ADDRLP4 76 CNSTI4 0 ASGNI4 line 1555 ;1554: ;1555: if ( curmove >= LS_PARRY_UP && curmove <= LS_REFLECT_LL ) ADDRLP4 80 ADDRLP4 4 INDIRI4 ASGNI4 ADDRLP4 80 INDIRI4 CNSTI4 108 LTI4 $621 ADDRLP4 80 INDIRI4 CNSTI4 117 GTI4 $621 line 1556 ;1556: {//from a parry or deflection, can go directly into an attack (?) line 1557 ;1557: switch ( saberMoveData[curmove].endQuad ) ADDRLP4 84 CNSTI4 40 ADDRLP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+12 ADDP4 INDIRI4 ASGNI4 ADDRLP4 84 INDIRI4 CNSTI4 0 LTI4 $623 ADDRLP4 84 INDIRI4 CNSTI4 6 GTI4 $623 ADDRLP4 84 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $632 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $632 address $630 address $623 address $628 address $627 address $629 address $623 address $631 code line 1558 ;1558: { LABELV $627 line 1560 ;1559: case Q_T: ;1560: newmove = LS_A_T2B; ADDRLP4 8 CNSTI4 10 ASGNI4 line 1561 ;1561: break; ADDRGP4 $624 JUMPV LABELV $628 line 1563 ;1562: case Q_TR: ;1563: newmove = LS_A_TL2BR; ADDRLP4 8 CNSTI4 4 ASGNI4 line 1564 ;1564: break; ADDRGP4 $624 JUMPV LABELV $629 line 1566 ;1565: case Q_TL: ;1566: newmove = LS_A_TR2BL; ADDRLP4 8 CNSTI4 9 ASGNI4 line 1567 ;1567: break; ADDRGP4 $624 JUMPV LABELV $630 line 1569 ;1568: case Q_BR: ;1569: newmove = LS_A_BR2TL; ADDRLP4 8 CNSTI4 7 ASGNI4 line 1570 ;1570: break; ADDRGP4 $624 JUMPV LABELV $631 line 1572 ;1571: case Q_BL: ;1572: newmove = LS_A_BL2TR; ADDRLP4 8 CNSTI4 6 ASGNI4 line 1573 ;1573: break; LABELV $623 LABELV $624 line 1576 ;1574: //shouldn't be a parry that ends at L, R or B ;1575: } ;1576: } LABELV $621 line 1578 ;1577: ;1578: if ( newmove != LS_NONE ) ADDRLP4 8 INDIRI4 CNSTI4 0 EQI4 $633 line 1579 ;1579: {//have a valid, final LS_ move picked, so skip findingt he transition move and just get the anim line 1580 ;1580: anim = saberMoveData[newmove].animToUse; ADDRLP4 16 CNSTI4 40 ADDRLP4 8 INDIRI4 MULI4 ADDRGP4 saberMoveData+4 ADDP4 INDIRI4 ASGNI4 line 1581 ;1581: } LABELV $633 line 1584 ;1582: ;1583: //FIXME: diagonal dirs use the figure-eight attacks from ready pose? ;1584: if ( anim == -1 ) ADDRLP4 16 INDIRI4 CNSTI4 -1 NEI4 $636 line 1585 ;1585: { line 1587 ;1586: //FIXME: take FP_SABER_OFFENSE into account here somehow? ;1587: if ( curmove >= LS_T1_BR__R && curmove <= LS_T1_BL__L ) ADDRLP4 84 ADDRLP4 4 INDIRI4 ASGNI4 ADDRLP4 84 INDIRI4 CNSTI4 32 LTI4 $638 ADDRLP4 84 INDIRI4 CNSTI4 73 GTI4 $638 line 1588 ;1588: {//in a transition, must play sequential attack line 1589 ;1589: newmove = saberMoveData[curmove].chain_attack; ADDRLP4 8 CNSTI4 40 ADDRLP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+32 ADDP4 INDIRI4 ASGNI4 line 1590 ;1590: } ADDRGP4 $639 JUMPV LABELV $638 line 1591 ;1591: else if ( curmove >= LS_S_TL2BR && curmove <= LS_S_T2B ) ADDRLP4 88 ADDRLP4 4 INDIRI4 ASGNI4 ADDRLP4 88 INDIRI4 CNSTI4 18 LTI4 $641 ADDRLP4 88 INDIRI4 CNSTI4 24 GTI4 $641 line 1592 ;1592: {//started a swing, must continue from here line 1593 ;1593: newmove = LS_A_TL2BR + (curmove-LS_S_TL2BR); ADDRLP4 8 ADDRLP4 4 INDIRI4 CNSTI4 18 SUBI4 CNSTI4 4 ADDI4 ASGNI4 line 1594 ;1594: } ADDRGP4 $642 JUMPV LABELV $641 line 1596 ;1595: else ;1596: { line 1597 ;1597: if ( PM_SaberKataDone() ) ADDRLP4 92 ADDRGP4 PM_SaberKataDone CALLI4 ASGNI4 ADDRLP4 92 INDIRI4 CNSTI4 0 EQI4 $643 line 1598 ;1598: {//we came from a bounce and cannot chain to another attack because our kata is done line 1599 ;1599: newmove = saberMoveData[curmove].chain_idle; ADDRLP4 8 CNSTI4 40 ADDRLP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+28 ADDP4 INDIRI4 ASGNI4 line 1600 ;1600: } ADDRGP4 $644 JUMPV LABELV $643 line 1602 ;1601: else ;1602: { line 1603 ;1603: saberMoveName_t checkMove = PM_SaberAttackForMovement(curmove); ADDRLP4 4 INDIRI4 ARGI4 ADDRLP4 100 ADDRGP4 PM_SaberAttackForMovement CALLI4 ASGNI4 ADDRLP4 96 ADDRLP4 100 INDIRI4 ASGNI4 line 1604 ;1604: if (checkMove != -1) ADDRLP4 96 INDIRI4 CNSTI4 -1 EQI4 $646 line 1605 ;1605: { line 1606 ;1606: newmove = checkMove; ADDRLP4 8 ADDRLP4 96 INDIRI4 ASGNI4 line 1607 ;1607: } LABELV $646 line 1608 ;1608: } LABELV $644 line 1609 ;1609: } LABELV $642 LABELV $639 line 1617 ;1610: /* ;1611: if ( newmove == LS_NONE ) ;1612: {//FIXME: should we allow this? Are there some anims that you should never be able to chain into an attack? ;1613: //only curmove that might get in here is LS_NONE, LS_DRAW, LS_PUTAWAY and the LS_R_ returns... all of which are in Q_R ;1614: newmove = PM_AttackMoveForQuad( saberMoveData[curmove].endQuad ); ;1615: } ;1616: */ ;1617: if ( newmove != LS_NONE ) ADDRLP4 8 INDIRI4 CNSTI4 0 EQI4 $648 line 1618 ;1618: { line 1620 ;1619: //Now get the proper transition move ;1620: newmove = PM_SaberAnimTransitionAnim( curmove, newmove ); ADDRLP4 4 INDIRI4 ARGI4 ADDRLP4 8 INDIRI4 ARGI4 ADDRLP4 92 ADDRGP4 PM_SaberAnimTransitionAnim CALLI4 ASGNI4 ADDRLP4 8 ADDRLP4 92 INDIRI4 ASGNI4 line 1626 ;1621: // NOTENOTE Had to remove this concept since there is no gent in pmove. ;1622: /* ;1623: if ( PM_HasAnimation( pm->gent, saberMoveData[newmove].animToUse ) ) ;1624: */ ;1625: ;1626: assert( bgGlobalAnimations[saberMoveData[newmove].animToUse].firstFrame != 0 || line 1629 ;1627: bgGlobalAnimations[saberMoveData[newmove].animToUse].numFrames != 0); ;1628: ;1629: if (1) line 1630 ;1630: { line 1631 ;1631: anim = saberMoveData[newmove].animToUse; ADDRLP4 16 CNSTI4 40 ADDRLP4 8 INDIRI4 MULI4 ADDRGP4 saberMoveData+4 ADDP4 INDIRI4 ASGNI4 line 1632 ;1632: } LABELV $650 line 1633 ;1633: } LABELV $648 line 1634 ;1634: } LABELV $636 line 1636 ;1635: ;1636: if (anim == -1) ADDRLP4 16 INDIRI4 CNSTI4 -1 NEI4 $653 line 1637 ;1637: {//not side-stepping, pick neutral anim line 1639 ;1638: // Add randomness for prototype? ;1639: newmove = saberMoveData[curmove].chain_attack; ADDRLP4 8 CNSTI4 40 ADDRLP4 4 INDIRI4 MULI4 ADDRGP4 saberMoveData+32 ADDP4 INDIRI4 ASGNI4 line 1641 ;1640: ;1641: anim= saberMoveData[newmove].animToUse; ADDRLP4 16 CNSTI4 40 ADDRLP4 8 INDIRI4 MULI4 ADDRGP4 saberMoveData+4 ADDP4 INDIRI4 ASGNI4 line 1643 ;1642: ;1643: if ( !pm->cmd.forwardmove && !pm->cmd.rightmove && pm->cmd.upmove >= 0 && pm->ps->groundEntityNum != ENTITYNUM_NONE ) ADDRLP4 84 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 88 CNSTI4 0 ASGNI4 ADDRLP4 84 INDIRP4 CNSTI4 28 ADDP4 INDIRI1 CVII4 1 ADDRLP4 88 INDIRI4 NEI4 $657 ADDRLP4 84 INDIRP4 CNSTI4 29 ADDP4 INDIRI1 CVII4 1 ADDRLP4 88 INDIRI4 NEI4 $657 ADDRLP4 84 INDIRP4 CNSTI4 30 ADDP4 INDIRI1 CVII4 1 ADDRLP4 88 INDIRI4 LTI4 $657 ADDRLP4 84 INDIRP4 INDIRP4 CNSTI4 84 ADDP4 INDIRI4 CNSTI4 1023 EQI4 $657 line 1644 ;1644: {//not moving at all, so set the anim on entire body line 1645 ;1645: both = qtrue; ADDRLP4 76 CNSTI4 1 ASGNI4 line 1646 ;1646: } LABELV $657 line 1648 ;1647: ;1648: } LABELV $653 line 1650 ;1649: ;1650: if ( anim == -1) ADDRLP4 16 INDIRI4 CNSTI4 -1 NEI4 $659 line 1651 ;1651: { line 1652 ;1652: if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK1 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 CNSTI4 723 NEI4 $661 line 1653 ;1653: { line 1654 ;1654: anim = BOTH_WALK1; ADDRLP4 16 CNSTI4 723 ASGNI4 line 1655 ;1655: } ADDRGP4 $662 JUMPV LABELV $661 line 1656 ;1656: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN2 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 CNSTI4 734 NEI4 $663 line 1657 ;1657: { line 1658 ;1658: anim = BOTH_RUN2; ADDRLP4 16 CNSTI4 734 ASGNI4 line 1659 ;1659: } ADDRGP4 $664 JUMPV LABELV $663 line 1660 ;1660: else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK2 ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 CNSTI4 724 NEI4 $665 line 1661 ;1661: { line 1662 ;1662: anim = BOTH_WALK2; ADDRLP4 16 CNSTI4 724 ASGNI4 line 1663 ;1663: } ADDRGP4 $666 JUMPV LABELV $665 line 1665 ;1664: else ;1665: { line 1666 ;1666: anim = PM_GetSaberStance(); ADDRLP4 84 ADDRGP4 PM_GetSaberStance CALLI4 ASGNI4 ADDRLP4 16 ADDRLP4 84 INDIRI4 ASGNI4 line 1667 ;1667: } LABELV $666 LABELV $664 LABELV $662 line 1668 ;1668: newmove = LS_READY; ADDRLP4 8 CNSTI4 1 ASGNI4 line 1669 ;1669: } LABELV $659 line 1671 ;1670: ;1671: if ( !pm->ps->saberActive ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 508 ADDP4 INDIRI4 CNSTI4 0 NEI4 $667 line 1672 ;1672: {//turn on the saber if it's not on line 1673 ;1673: pm->ps->saberActive = qtrue; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 508 ADDP4 CNSTI4 1 ASGNI4 line 1674 ;1674: } LABELV $667 line 1676 ;1675: ;1676: PM_SetSaberMove( newmove ); ADDRLP4 8 INDIRI4 CVII2 4 CVII4 2 ARGI4 ADDRGP4 PM_SetSaberMove CALLV pop line 1678 ;1677: ;1678: if ( both ) ADDRLP4 76 INDIRI4 CNSTI4 0 EQI4 $669 line 1679 ;1679: { line 1680 ;1680: PM_SetAnim(SETANIM_LEGS,anim,SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 100); CNSTI4 2 ARGI4 ADDRLP4 16 INDIRI4 ARGI4 CNSTI4 3 ARGI4 CNSTI4 100 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1681 ;1681: } LABELV $669 line 1684 ;1682: ;1683: //don't fire again until anim is done ;1684: pm->ps->weaponTime = pm->ps->torsoTimer; ADDRLP4 84 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 84 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 84 INDIRP4 CNSTI4 96 ADDP4 INDIRI4 ASGNI4 line 1685 ;1685: } line 1686 ;1686: } LABELV $599 line 1692 ;1687: ;1688: // ********************************************************* ;1689: // WEAPON_FIRING ;1690: // ********************************************************* ;1691: ;1692: pm->ps->weaponstate = WEAPON_FIRING; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 CNSTI4 3 ASGNI4 line 1694 ;1693: ;1694: amount = weaponData[pm->ps->weapon].energyPerShot; ADDRLP4 28 CNSTI4 56 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 MULI4 ADDRGP4 weaponData+8 ADDP4 INDIRI4 ASGNI4 line 1696 ;1695: ;1696: addTime = pm->ps->weaponTime; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 ASGNI4 line 1698 ;1697: ;1698: pm->ps->saberAttackSequence = pm->ps->torsoAnim; ADDRLP4 72 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 732 ADDP4 ADDRLP4 72 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 ASGNI4 line 1699 ;1699: if ( !addTime ) ADDRLP4 0 INDIRI4 CNSTI4 0 NEI4 $672 line 1700 ;1700: { line 1701 ;1701: addTime = weaponData[pm->ps->weapon].fireTime; ADDRLP4 0 CNSTI4 56 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 MULI4 ADDRGP4 weaponData+12 ADDP4 INDIRI4 ASGNI4 line 1702 ;1702: } LABELV $672 line 1703 ;1703: pm->ps->weaponTime = addTime; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 0 INDIRI4 ASGNI4 line 1704 ;1704:} LABELV $465 endproc PM_WeaponLightsaber 104 16 export PM_SetSaberMove proc PM_SetSaberMove 52 16 ADDRFP4 0 ADDRFP4 0 INDIRI4 CVII2 4 ASGNI2 line 1707 ;1705: ;1706:void PM_SetSaberMove(short newMove) ;1707:{ line 1708 ;1708: unsigned int setflags = saberMoveData[newMove].animSetFlags; ADDRLP4 4 CNSTI4 40 ADDRFP4 0 INDIRI2 CVII4 2 MULI4 ADDRGP4 saberMoveData+16 ADDP4 INDIRU4 ASGNU4 line 1709 ;1709: int anim = saberMoveData[newMove].animToUse; ADDRLP4 0 CNSTI4 40 ADDRFP4 0 INDIRI2 CVII4 2 MULI4 ADDRGP4 saberMoveData+4 ADDP4 INDIRI4 ASGNI4 line 1710 ;1710: int parts = SETANIM_TORSO; ADDRLP4 8 CNSTI4 1 ASGNI4 line 1712 ;1711: ;1712: if ( newMove == LS_READY ) ADDRFP4 0 INDIRI2 CVII4 2 CNSTI4 1 NEI4 $678 line 1713 ;1713: {//finished with a kata, reset attack counter line 1714 ;1714: pm->ps->saberAttackChainCount = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1296 ADDP4 CNSTI4 0 ASGNI4 line 1715 ;1715: } ADDRGP4 $679 JUMPV LABELV $678 line 1716 ;1716: else if ( BG_SaberInAttack( newMove ) ) ADDRFP4 0 INDIRI2 CVII4 2 ARGI4 ADDRLP4 12 ADDRGP4 BG_SaberInAttack CALLI4 ASGNI4 ADDRLP4 12 INDIRI4 CNSTI4 0 EQI4 $680 line 1717 ;1717: {//continuing with a kata, increment attack counter line 1718 ;1718: pm->ps->saberAttackChainCount++; ADDRLP4 16 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1296 ADDP4 ASGNP4 ADDRLP4 16 INDIRP4 ADDRLP4 16 INDIRP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 1719 ;1719: } LABELV $680 LABELV $679 line 1721 ;1720: ;1721: if (pm->ps->saberAttackChainCount > 16) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1296 ADDP4 INDIRI4 CNSTI4 16 LEI4 $682 line 1722 ;1722: { //for the sake of being able to send the value over the net within a reasonable bit count line 1723 ;1723: pm->ps->saberAttackChainCount = 16; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1296 ADDP4 CNSTI4 16 ASGNI4 line 1724 ;1724: } LABELV $682 line 1726 ;1725: ;1726: if ( pm->ps->fd.saberAnimLevel > FORCE_LEVEL_1 && ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 CNSTI4 1 LEI4 $684 ADDRFP4 0 INDIRI2 CVII4 2 ARGI4 ADDRLP4 16 ADDRGP4 BG_SaberInIdle CALLI4 ASGNI4 ADDRLP4 16 INDIRI4 CNSTI4 0 NEI4 $684 ADDRFP4 0 INDIRI2 CVII4 2 ARGI4 ADDRLP4 20 ADDRGP4 PM_SaberInParry CALLI4 ASGNI4 ADDRLP4 20 INDIRI4 CNSTI4 0 NEI4 $684 ADDRFP4 0 INDIRI2 CVII4 2 ARGI4 ADDRLP4 24 ADDRGP4 PM_SaberInReflect CALLI4 ASGNI4 ADDRLP4 24 INDIRI4 CNSTI4 0 NEI4 $684 ADDRFP4 0 INDIRI2 CVII4 2 ARGI4 ADDRLP4 28 ADDRGP4 BG_SaberInSpecial CALLI4 ASGNI4 ADDRLP4 28 INDIRI4 CNSTI4 0 NEI4 $684 line 1728 ;1727: !BG_SaberInIdle( newMove ) && !PM_SaberInParry( newMove ) && !PM_SaberInReflect( newMove ) && !BG_SaberInSpecial(newMove)) ;1728: {//readies, parries and reflections have only 1 level line 1730 ;1729: //increment the anim to the next level of saber anims ;1730: if ( !PM_SaberInTransition( newMove ) ) ADDRFP4 0 INDIRI2 CVII4 2 ARGI4 ADDRLP4 32 ADDRGP4 PM_SaberInTransition CALLI4 ASGNI4 ADDRLP4 32 INDIRI4 CNSTI4 0 NEI4 $686 line 1731 ;1731: {//FIXME: only have level 1 transitions for now line 1732 ;1732: anim += (pm->ps->fd.saberAnimLevel-FORCE_LEVEL_1) * SABER_ANIM_GROUP_SIZE; ADDRLP4 36 CNSTI4 77 ASGNI4 ADDRLP4 0 ADDRLP4 0 INDIRI4 ADDRLP4 36 INDIRI4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 MULI4 ADDRLP4 36 INDIRI4 SUBI4 ADDI4 ASGNI4 line 1733 ;1733: } LABELV $686 line 1734 ;1734: } LABELV $684 line 1737 ;1735: ;1736: // If the move does the same animation as the last one, we need to force a restart... ;1737: if ( saberMoveData[pm->ps->saberMove].animToUse == anim && newMove > LS_PUTAWAY) CNSTI4 40 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 MULI4 ADDRGP4 saberMoveData+4 ADDP4 INDIRI4 ADDRLP4 0 INDIRI4 NEI4 $688 ADDRFP4 0 INDIRI2 CVII4 2 CNSTI4 3 LEI4 $688 line 1738 ;1738: { line 1739 ;1739: setflags |= SETANIM_FLAG_RESTART; ADDRLP4 4 ADDRLP4 4 INDIRU4 CNSTU4 4 BORU4 ASGNU4 line 1740 ;1740: } LABELV $688 line 1743 ;1741: ;1742: //saber torso anims should always be highest priority ;1743: setflags |= SETANIM_FLAG_OVERRIDE; ADDRLP4 4 ADDRLP4 4 INDIRU4 CNSTU4 1 BORU4 ASGNU4 line 1745 ;1744: ;1745: if ( BG_InSaberStandAnim(anim) || anim == BOTH_STAND1 ) ADDRLP4 0 INDIRI4 ARGI4 ADDRLP4 32 ADDRGP4 BG_InSaberStandAnim CALLI4 ASGNI4 ADDRLP4 32 INDIRI4 CNSTI4 0 NEI4 $693 ADDRLP4 0 INDIRI4 CNSTI4 550 NEI4 $691 LABELV $693 line 1746 ;1746: { line 1747 ;1747: anim = (pm->ps->legsAnim & ~ANIM_TOGGLEBIT); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ASGNI4 line 1749 ;1748: ;1749: if ((anim >= BOTH_STAND1 && anim <= BOTH_STAND4TOATTACK2) || ADDRLP4 0 INDIRI4 CNSTI4 550 LTI4 $697 ADDRLP4 0 INDIRI4 CNSTI4 571 LEI4 $696 LABELV $697 ADDRLP4 0 INDIRI4 CNSTI4 954 LTI4 $694 ADDRLP4 0 INDIRI4 CNSTI4 985 GTI4 $694 LABELV $696 line 1751 ;1750: (anim >= TORSO_DROPWEAP1 && anim <= TORSO_WEAPONIDLE12)) ;1751: { //If standing then use the special saber stand anim line 1752 ;1752: anim = PM_GetSaberStance(); ADDRLP4 44 ADDRGP4 PM_GetSaberStance CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 44 INDIRI4 ASGNI4 line 1753 ;1753: } LABELV $694 line 1755 ;1754: ;1755: if (pm->ps->pm_flags & PMF_DUCKED) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $698 line 1756 ;1756: { //Playing torso walk anims while crouched makes you look like a monkey line 1757 ;1757: anim = PM_GetSaberStance(); ADDRLP4 44 ADDRGP4 PM_GetSaberStance CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 44 INDIRI4 ASGNI4 line 1758 ;1758: } LABELV $698 line 1760 ;1759: ;1760: if (anim == BOTH_WALKBACK1 || anim == BOTH_WALKBACK2) ADDRLP4 0 INDIRI4 CNSTI4 748 EQI4 $702 ADDRLP4 0 INDIRI4 CNSTI4 749 NEI4 $700 LABELV $702 line 1761 ;1761: { //normal stance when walking backward so saber doesn't look like it's cutting through leg line 1762 ;1762: anim = PM_GetSaberStance(); ADDRLP4 48 ADDRGP4 PM_GetSaberStance CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 48 INDIRI4 ASGNI4 line 1763 ;1763: } LABELV $700 line 1765 ;1764: ;1765: parts = SETANIM_TORSO; ADDRLP4 8 CNSTI4 1 ASGNI4 line 1766 ;1766: } LABELV $691 line 1768 ;1767: ;1768: if ( newMove == LS_A_LUNGE ADDRLP4 36 ADDRFP4 0 INDIRI2 CVII4 2 ASGNI4 ADDRLP4 36 INDIRI4 CNSTI4 14 EQI4 $710 ADDRLP4 36 INDIRI4 CNSTI4 15 EQI4 $710 ADDRLP4 36 INDIRI4 CNSTI4 11 EQI4 $710 ADDRLP4 36 INDIRI4 CNSTI4 12 EQI4 $710 ADDRLP4 36 INDIRI4 CNSTI4 13 EQI4 $710 ADDRLP4 36 INDIRI4 CNSTI4 16 EQI4 $710 ADDRLP4 36 INDIRI4 CNSTI4 17 NEI4 $703 LABELV $710 line 1775 ;1769: || newMove == LS_A_JUMP_T__B_ ;1770: || newMove == LS_A_BACKSTAB ;1771: || newMove == LS_A_BACK ;1772: || newMove == LS_A_BACK_CR ;1773: || newMove == LS_A_FLIP_STAB ;1774: || newMove == LS_A_FLIP_SLASH ) ;1775: { line 1776 ;1776: parts = SETANIM_BOTH; ADDRLP4 8 CNSTI4 3 ASGNI4 line 1777 ;1777: } ADDRGP4 $704 JUMPV LABELV $703 line 1778 ;1778: else if ( BG_SpinningSaberAnim( anim ) ) ADDRLP4 0 INDIRI4 ARGI4 ADDRLP4 40 ADDRGP4 BG_SpinningSaberAnim CALLI4 ASGNI4 ADDRLP4 40 INDIRI4 CNSTI4 0 EQI4 $711 line 1779 ;1779: {//spins must be played on entire body line 1780 ;1780: parts = SETANIM_BOTH; ADDRLP4 8 CNSTI4 3 ASGNI4 line 1781 ;1781: } LABELV $711 LABELV $704 line 1782 ;1782: PM_SetAnim(parts, anim, setflags|SETANIM_FLAG_HOLD, saberMoveData[newMove].blendTime); ADDRLP4 8 INDIRI4 ARGI4 ADDRLP4 0 INDIRI4 ARGI4 ADDRLP4 4 INDIRU4 CNSTU4 2 BORU4 CVUI4 4 ARGI4 CNSTI4 40 ADDRFP4 0 INDIRI2 CVII4 2 MULI4 ADDRGP4 saberMoveData+20 ADDP4 INDIRI4 ARGI4 ADDRGP4 PM_SetAnim CALLV pop line 1784 ;1783: ;1784: if ( (pm->ps->torsoAnim&~ANIM_TOGGLEBIT) == anim ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRI4 CNSTI4 -2049 BANDI4 ADDRLP4 0 INDIRI4 NEI4 $714 line 1785 ;1785: {//successfully changed anims line 1788 ;1786: //special check for *starting* a saber swing ;1787: //playing at attack ;1788: if ( BG_SaberInAttack( newMove ) || BG_SaberInSpecialAttack( anim ) ) ADDRFP4 0 INDIRI2 CVII4 2 ARGI4 ADDRLP4 44 ADDRGP4 BG_SaberInAttack CALLI4 ASGNI4 ADDRLP4 44 INDIRI4 CNSTI4 0 NEI4 $718 ADDRLP4 0 INDIRI4 ARGI4 ADDRLP4 48 ADDRGP4 BG_SaberInSpecialAttack CALLI4 ASGNI4 ADDRLP4 48 INDIRI4 CNSTI4 0 EQI4 $716 LABELV $718 line 1789 ;1789: { line 1790 ;1790: if ( pm->ps->saberMove != newMove ) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 INDIRI4 ADDRFP4 0 INDIRI2 CVII4 2 EQI4 $719 line 1791 ;1791: {//wasn't playing that attack before line 1792 ;1792: PM_AddEvent(EV_SABER_ATTACK); CNSTI4 26 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1793 ;1793: } LABELV $719 line 1794 ;1794: } LABELV $716 line 1796 ;1795: ;1796: pm->ps->saberMove = newMove; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 512 ADDP4 ADDRFP4 0 INDIRI2 CVII4 2 ASGNI4 line 1797 ;1797: pm->ps->saberBlocking = saberMoveData[newMove].blocking; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 516 ADDP4 CNSTI4 40 ADDRFP4 0 INDIRI2 CVII4 2 MULI4 ADDRGP4 saberMoveData+24 ADDP4 INDIRI4 ASGNI4 line 1799 ;1798: ;1799: pm->ps->torsoAnim = anim;//saberMoveData[newMove].animToUse; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 ADDRLP4 0 INDIRI4 ASGNI4 line 1801 ;1800: ;1801: if (pm->ps->weaponTime <= 0) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 GTI4 $722 line 1802 ;1802: { line 1803 ;1803: pm->ps->saberBlocked = BLOCKED_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 520 ADDP4 CNSTI4 0 ASGNI4 line 1804 ;1804: } LABELV $722 line 1805 ;1805: } LABELV $714 line 1806 ;1806:} LABELV $675 endproc PM_SetSaberMove 52 16 import ValidAnimFileIndex import PM_SetAnim import PM_FinishWeaponChange import PM_BeginWeaponChange import PM_ForceLegsAnim import PM_ContinueLegsAnim import PM_StartTorsoAnim import BG_CycleInven import PM_StepSlideMove import PM_SlideMove import PM_AddEvent import PM_AddTouchEnt import PM_ClipVelocity import PM_GetSaberStance import PM_AnimLength import PM_InRollComplete import PM_InOnGroundAnim import PM_SpinningAnim import PM_LandingAnim import PM_JumpingAnim import PM_PainAnim import PM_InKnockDown import PM_InSaberAnim import PM_SaberInStart import PM_SaberInReflect import PM_SaberInParry import trap_FS_FCloseFile import trap_FS_Write import trap_FS_Read import trap_FS_FOpenFile import forcePowerNeeded import c_pmove import pm_flightfriction import pm_waterfriction import pm_friction import pm_flyaccelerate import pm_wateraccelerate import pm_airaccelerate import pm_accelerate import pm_wadeScale import pm_swimScale import pm_duckScale import pm_stopspeed import pml import forcePowerDarkLight import WeaponAttackAnim import WeaponReadyAnim import BG_OutOfMemory import BG_StringAlloc import BG_TempFree import BG_TempAlloc import BG_AllocUnaligned import BG_Alloc import BG_CanUseFPNow import BG_HasYsalamiri import BG_GetItemIndexByTag import BG_ParseAnimationFile import BG_PlayerTouchesItem import BG_G2PlayerAngles import BG_PlayerStateToEntityStateExtraPolate import BG_PlayerStateToEntityState import BG_TouchJumpPad import BG_AddPredictableEventToPlayerstate import BG_EvaluateTrajectoryDelta import BG_EvaluateTrajectory import BG_SaberStartTransAnim import BG_InDeathAnim import BG_InRoll import BG_SaberInSpecialAttack import BG_SpinningSaberAnim import BG_FlippingAnim import BG_SaberInIdle import BG_SaberInSpecial import BG_SaberInAttack import BG_DirectFlippingAnim import BG_InSaberStandAnim import BG_InSpecialJump import BG_LegalizedForcePowers import BG_CanItemBeGrabbed import BG_FindItemForHoldable import BG_FindItemForPowerup import BG_FindItemForWeapon import BG_FindItem import vectoyaw import bg_numItems import bg_itemlist import Pmove import PM_UpdateViewAngles import pm import bgForcePowerCost import forceMasteryPoints import forceMasteryLevels import bgGlobalAnimations import BGPAFtextLoaded import forcePowerSorted import WP_MuzzlePoint import ammoData import weaponData import GetStringForID import GetIDForString import Q_irand import irand import flrand import Rand_Init import Com_Printf import Com_Error import Info_NextPair import Info_Validate import Info_SetValueForKey_Big import Info_SetValueForKey import Info_RemoveKey_big import Info_RemoveKey import Info_ValueForKey import va import Q_CleanStr import Q_PrintStrlen import Q_strcat import Q_strncpyz import Q_strrchr import Q_strupr import Q_strlwr import Q_stricmpn import Q_strncmp import Q_stricmp import Q_isalpha import Q_isupper import Q_islower import Q_isprint import Com_sprintf import Parse3DMatrix import Parse2DMatrix import Parse1DMatrix import SkipRestOfLine import SkipBracedSection import COM_MatchToken import COM_ParseWarning import COM_ParseError import COM_Compress import COM_ParseExt import COM_Parse import SkipWhitespace import COM_GetCurrentParseLine import COM_BeginParseSession import COM_DefaultExtension import COM_StripExtension import COM_SkipPath import Com_Clamp import PerpendicularVector import AngleVectors import MatrixMultiply import MakeNormalVectors import RotateAroundDirection import RotatePointAroundVector import ProjectPointOnPlane import PlaneFromPoints import AngleDelta import AngleNormalize180 import AngleNormalize360 import AnglesSubtract import AngleSubtract import LerpAngle import AngleMod import BoxOnPlaneSide import SetPlaneSignbits import AxisCopy import AxisClear import AnglesToAxis import vectoangles import Q_crandom import Q_random import Q_rand import Q_acos import Q_log2 import VectorRotate import Vector4Scale import VectorNormalize2 import VectorNormalize import CrossProduct import VectorInverse import VectorNormalizeFast import DistanceSquared import Distance import VectorLengthSquared import VectorLength import VectorCompare import AddPointToBounds import ClearBounds import RadiusFromBounds import NormalizeColor import ColorBytes4 import ColorBytes3 import _VectorMA import _VectorScale import _VectorCopy import _VectorAdd import _VectorSubtract import _DotProduct import ByteToDir import DirToByte import powf import ClampShort import ClampChar import Q_rsqrt import Q_fabs import axisDefault import vec3_origin import g_color_table import colorDkBlue import colorLtBlue import colorDkGrey import colorMdGrey import colorLtGrey import colorWhite import colorCyan import colorMagenta import colorYellow import colorBlue import colorGreen import colorRed import colorBlack import colorTable import bytedirs import Com_Memcpy import Com_Memset import Hunk_Alloc import forceSpeedLevels import FloatSwap import LongSwap import ShortSwap import acos import fabs import abs import tan import atan2 import cos import sin import sqrt import floor import ceil import memcpy import memset import memmove import sscanf import vsprintf import _atoi import atoi import _atof import atof import toupper import tolower import strncpy import strstr import strchr import strcmp import strcpy import strcat import strlen import rand import srand import qsort lit align 1 LABELV $212 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 76 char 1 76 char 1 0 align 1 LABELV $211 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 76 char 1 82 char 1 0 align 1 LABELV $210 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 85 char 1 76 char 1 0 align 1 LABELV $209 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 85 char 1 82 char 1 0 align 1 LABELV $208 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 84 char 1 111 char 1 112 char 1 0 align 1 LABELV $207 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 76 char 1 76 char 1 0 align 1 LABELV $206 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 76 char 1 82 char 1 0 align 1 LABELV $205 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 85 char 1 76 char 1 0 align 1 LABELV $204 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 85 char 1 82 char 1 0 align 1 LABELV $203 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 84 char 1 111 char 1 112 char 1 0 align 1 LABELV $202 char 1 75 char 1 110 char 1 111 char 1 99 char 1 107 char 1 32 char 1 76 char 1 76 char 1 0 align 1 LABELV $201 char 1 75 char 1 110 char 1 111 char 1 99 char 1 107 char 1 32 char 1 76 char 1 82 char 1 0 align 1 LABELV $200 char 1 75 char 1 110 char 1 111 char 1 99 char 1 107 char 1 32 char 1 85 char 1 76 char 1 0 align 1 LABELV $199 char 1 75 char 1 110 char 1 111 char 1 99 char 1 107 char 1 32 char 1 85 char 1 82 char 1 0 align 1 LABELV $198 char 1 75 char 1 110 char 1 111 char 1 99 char 1 107 char 1 32 char 1 84 char 1 111 char 1 112 char 1 0 align 1 LABELV $197 char 1 66 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 76 char 1 76 char 1 0 align 1 LABELV $196 char 1 66 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 66 char 1 111 char 1 116 char 1 0 align 1 LABELV $195 char 1 66 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 76 char 1 82 char 1 0 align 1 LABELV $194 char 1 66 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 85 char 1 76 char 1 0 align 1 LABELV $193 char 1 66 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 85 char 1 82 char 1 0 align 1 LABELV $192 char 1 66 char 1 80 char 1 97 char 1 114 char 1 114 char 1 121 char 1 32 char 1 84 char 1 111 char 1 112 char 1 0 align 1 LABELV $191 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 66 char 1 0 align 1 LABELV $190 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 66 char 1 76 char 1 0 align 1 LABELV $189 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 76 char 1 0 align 1 LABELV $188 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 84 char 1 76 char 1 0 align 1 LABELV $187 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 84 char 1 0 align 1 LABELV $186 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 84 char 1 82 char 1 0 align 1 LABELV $185 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 82 char 1 0 align 1 LABELV $184 char 1 82 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 101 char 1 100 char 1 32 char 1 66 char 1 82 char 1 0 align 1 LABELV $183 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 66 char 1 0 align 1 LABELV $182 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 66 char 1 76 char 1 0 align 1 LABELV $181 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 76 char 1 0 align 1 LABELV $180 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 84 char 1 76 char 1 0 align 1 LABELV $179 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 84 char 1 0 align 1 LABELV $178 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 84 char 1 82 char 1 0 align 1 LABELV $177 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 82 char 1 0 align 1 LABELV $176 char 1 68 char 1 101 char 1 102 char 1 108 char 1 101 char 1 99 char 1 116 char 1 32 char 1 66 char 1 82 char 1 0 align 1 LABELV $175 char 1 66 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 32 char 1 66 char 1 76 char 1 0 align 1 LABELV $174 char 1 66 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 32 char 1 76 char 1 0 align 1 LABELV $173 char 1 66 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 32 char 1 84 char 1 76 char 1 0 align 1 LABELV $172 char 1 66 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 32 char 1 84 char 1 0 align 1 LABELV $171 char 1 66 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 32 char 1 84 char 1 82 char 1 0 align 1 LABELV $170 char 1 66 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 32 char 1 82 char 1 0 align 1 LABELV $169 char 1 66 char 1 111 char 1 117 char 1 110 char 1 99 char 1 101 char 1 32 char 1 66 char 1 82 char 1 0 align 1 LABELV $168 char 1 66 char 1 76 char 1 50 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $167 char 1 66 char 1 76 char 1 50 char 1 84 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $166 char 1 66 char 1 76 char 1 50 char 1 84 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $165 char 1 66 char 1 76 char 1 50 char 1 84 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $164 char 1 66 char 1 76 char 1 50 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $163 char 1 66 char 1 76 char 1 50 char 1 66 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $162 char 1 76 char 1 50 char 1 66 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $161 char 1 76 char 1 50 char 1 84 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $160 char 1 76 char 1 50 char 1 84 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $159 char 1 76 char 1 50 char 1 84 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $158 char 1 76 char 1 50 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $157 char 1 76 char 1 50 char 1 66 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $156 char 1 84 char 1 76 char 1 50 char 1 66 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $155 char 1 84 char 1 76 char 1 50 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $154 char 1 84 char 1 76 char 1 50 char 1 84 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $153 char 1 84 char 1 76 char 1 50 char 1 84 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $152 char 1 84 char 1 76 char 1 50 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $151 char 1 84 char 1 76 char 1 50 char 1 66 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $150 char 1 84 char 1 50 char 1 66 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $149 char 1 84 char 1 50 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $148 char 1 84 char 1 50 char 1 84 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $147 char 1 84 char 1 50 char 1 84 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $146 char 1 84 char 1 50 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $145 char 1 84 char 1 50 char 1 66 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $144 char 1 84 char 1 82 char 1 50 char 1 66 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $143 char 1 84 char 1 82 char 1 50 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $142 char 1 84 char 1 82 char 1 50 char 1 84 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $141 char 1 84 char 1 82 char 1 50 char 1 84 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $140 char 1 84 char 1 82 char 1 50 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $139 char 1 84 char 1 82 char 1 50 char 1 66 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $138 char 1 82 char 1 50 char 1 66 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $137 char 1 82 char 1 50 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $136 char 1 82 char 1 50 char 1 84 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $135 char 1 82 char 1 50 char 1 84 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $134 char 1 82 char 1 50 char 1 84 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $133 char 1 82 char 1 50 char 1 66 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $132 char 1 66 char 1 82 char 1 50 char 1 66 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $131 char 1 66 char 1 82 char 1 50 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $130 char 1 66 char 1 82 char 1 50 char 1 84 char 1 76 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $129 char 1 66 char 1 82 char 1 50 char 1 84 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $128 char 1 66 char 1 82 char 1 50 char 1 84 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $127 char 1 66 char 1 82 char 1 50 char 1 82 char 1 32 char 1 84 char 1 114 char 1 97 char 1 110 char 1 115 char 1 0 align 1 LABELV $126 char 1 84 char 1 50 char 1 66 char 1 32 char 1 82 char 1 101 char 1 116 char 1 0 align 1 LABELV $125 char 1 84 char 1 82 char 1 50 char 1 66 char 1 76 char 1 32 char 1 82 char 1 101 char 1 116 char 1 0 align 1 LABELV $124 char 1 82 char 1 50 char 1 76 char 1 32 char 1 82 char 1 101 char 1 116 char 1 0 align 1 LABELV $123 char 1 66 char 1 82 char 1 50 char 1 84 char 1 76 char 1 32 char 1 82 char 1 101 char 1 116 char 1 0 align 1 LABELV $122 char 1 66 char 1 76 char 1 50 char 1 84 char 1 82 char 1 32 char 1 82 char 1 101 char 1 116 char 1 0 align 1 LABELV $121 char 1 76 char 1 50 char 1 82 char 1 32 char 1 82 char 1 101 char 1 116 char 1 0 align 1 LABELV $120 char 1 84 char 1 76 char 1 50 char 1 66 char 1 82 char 1 32 char 1 82 char 1 101 char 1 116 char 1 0 align 1 LABELV $119 char 1 84 char 1 50 char 1 66 char 1 32 char 1 83 char 1 116 char 1 0 align 1 LABELV $118 char 1 84 char 1 82 char 1 50 char 1 66 char 1 76 char 1 32 char 1 83 char 1 116 char 1 0 align 1 LABELV $117 char 1 82 char 1 50 char 1 76 char 1 32 char 1 83 char 1 116 char 1 0 align 1 LABELV $116 char 1 66 char 1 82 char 1 50 char 1 84 char 1 76 char 1 32 char 1 83 char 1 116 char 1 0 align 1 LABELV $115 char 1 66 char 1 76 char 1 50 char 1 84 char 1 82 char 1 32 char 1 83 char 1 116 char 1 0 align 1 LABELV $114 char 1 76 char 1 50 char 1 82 char 1 32 char 1 83 char 1 116 char 1 0 align 1 LABELV $113 char 1 84 char 1 76 char 1 50 char 1 66 char 1 82 char 1 32 char 1 83 char 1 116 char 1 0 align 1 LABELV $112 char 1 70 char 1 108 char 1 105 char 1 112 char 1 32 char 1 83 char 1 108 char 1 97 char 1 115 char 1 104 char 1 0 align 1 LABELV $111 char 1 70 char 1 108 char 1 105 char 1 112 char 1 32 char 1 83 char 1 116 char 1 97 char 1 98 char 1 0 align 1 LABELV $110 char 1 74 char 1 117 char 1 109 char 1 112 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $109 char 1 76 char 1 117 char 1 110 char 1 103 char 1 101 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $108 char 1 67 char 1 82 char 1 32 char 1 66 char 1 97 char 1 99 char 1 107 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $107 char 1 66 char 1 97 char 1 99 char 1 107 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $106 char 1 66 char 1 97 char 1 99 char 1 107 char 1 32 char 1 83 char 1 116 char 1 97 char 1 98 char 1 0 align 1 LABELV $105 char 1 84 char 1 50 char 1 66 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $104 char 1 84 char 1 82 char 1 50 char 1 66 char 1 76 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $103 char 1 82 char 1 50 char 1 76 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $102 char 1 66 char 1 82 char 1 50 char 1 84 char 1 76 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $101 char 1 66 char 1 76 char 1 50 char 1 84 char 1 82 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $100 char 1 76 char 1 50 char 1 82 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $99 char 1 84 char 1 76 char 1 50 char 1 66 char 1 82 char 1 32 char 1 65 char 1 116 char 1 116 char 1 0 align 1 LABELV $98 char 1 80 char 1 117 char 1 116 char 1 97 char 1 119 char 1 97 char 1 121 char 1 0 align 1 LABELV $97 char 1 68 char 1 114 char 1 97 char 1 119 char 1 0 align 1 LABELV $96 char 1 82 char 1 101 char 1 97 char 1 100 char 1 121 char 1 0 align 1 LABELV $95 char 1 78 char 1 111 char 1 110 char 1 101 char 1 0