| 1392 | } |
| 1393 | |
| 1394 | static S32 clotheslineCB(xGoal* rawgoal, void*, en_trantype* trantype, F32 dt, void*) |
| 1395 | { |
| 1396 | zNPCGoalBossSandyClothesline* cl = (zNPCGoalBossSandyClothesline*)rawgoal; |
| 1397 | zNPCBSandy* sandy = (zNPCBSandy*)cl->psyche->clt_owner; |
| 1398 | S32 nextgoal = 0; |
| 1399 | |
| 1400 | if (cl->stage == 2 && sandy->AnimTimeRemain(NULL) < 1.7f * dt) |
| 1401 | { |
| 1402 | sandy->boundFlags[10] &= ~0x10; |
| 1403 | sandy->boundFlags[12] &= ~0x10; |
| 1404 | |
| 1405 | if (globals.player.ControlOff) |
| 1406 | { |
| 1407 | nextgoal = 'NGB1'; |
| 1408 | *trantype = GOAL_TRAN_SET; |
| 1409 | } |
| 1410 | else if (sandy->bossFlags & 0x2) |
| 1411 | { |
| 1412 | sandy->bossFlags &= ~0x2; |
| 1413 | nextgoal = 'NGB2'; |
| 1414 | *trantype = GOAL_TRAN_SET; |
| 1415 | } |
| 1416 | else |
| 1417 | { |
| 1418 | nextgoal = 'NGB3'; |
| 1419 | *trantype = GOAL_TRAN_SET; |
| 1420 | } |
| 1421 | } |
| 1422 | |
| 1423 | return nextgoal; |
| 1424 | } |
| 1425 | |
| 1426 | S32 zNPCGoalBossSandyIdle::Enter(F32 dt, void* updCtxt) |
| 1427 | { |
nothing calls this directly
no test coverage detected