| 1204 | } |
| 1205 | |
| 1206 | static S32 elbowDropCB(xGoal* rawgoal, void*, en_trantype* trantype, F32 dt, void*) |
| 1207 | { |
| 1208 | zNPCGoalBossSandyElbowDrop* edrop = (zNPCGoalBossSandyElbowDrop*)rawgoal; |
| 1209 | zNPCBSandy* sandy = (zNPCBSandy*)edrop->psyche->clt_owner; |
| 1210 | S32 nextgoal = 0; |
| 1211 | xVec3 tempVector; |
| 1212 | |
| 1213 | if (edrop->timeInGoal > 0.30000001192092896f) // 0.3 |
| 1214 | { |
| 1215 | if (sandy->bossFlags & 0x400) |
| 1216 | { |
| 1217 | *trantype = GOAL_TRAN_SET; |
| 1218 | return 'NGB1'; |
| 1219 | } |
| 1220 | } |
| 1221 | |
| 1222 | xVec3Sub(&tempVector, (xVec3*)&globals.player.ent.model->Mat->pos, |
| 1223 | (xVec3*)&sandy->model->Mat->pos); |
| 1224 | |
| 1225 | tempVector.y = 0.0f; // 0.0 |
| 1226 | |
| 1227 | F32 length = xVec3Length2(&tempVector); |
| 1228 | |
| 1229 | if (sandy->AnimTimeRemain(NULL) < 1.7000000476837158f * dt) // 1.7 |
| 1230 | { |
| 1231 | if (globals.player.ControlOff) |
| 1232 | { |
| 1233 | *trantype = GOAL_TRAN_SET; |
| 1234 | nextgoal = 'NGB1'; |
| 1235 | } |
| 1236 | else if (sandy->bossFlags & 2) |
| 1237 | { |
| 1238 | sandy->bossFlags &= ~2; // clear bit 2 |
| 1239 | *trantype = GOAL_TRAN_SET; |
| 1240 | nextgoal = 'NGB2'; |
| 1241 | } |
| 1242 | else if (length < 12.0f) // 12.0 |
| 1243 | { |
| 1244 | *trantype = GOAL_TRAN_SET; |
| 1245 | nextgoal = 'NGB4'; |
| 1246 | } |
| 1247 | else |
| 1248 | { |
| 1249 | *trantype = GOAL_TRAN_SET; |
| 1250 | nextgoal = 'NGB3'; |
| 1251 | } |
| 1252 | } |
| 1253 | |
| 1254 | return nextgoal; |
| 1255 | } |
| 1256 | |
| 1257 | static S32 leapCB(xGoal* rawgoal, void*, en_trantype* trantype, F32 dt, void*) |
| 1258 | { |
nothing calls this directly
no test coverage detected