| 1138 | } |
| 1139 | |
| 1140 | static S32 tauntCB(xGoal* rawgoal, void*, en_trantype* trantype, F32 dt, void*) |
| 1141 | { |
| 1142 | zNPCGoalBossSandyTaunt* taunt = (zNPCGoalBossSandyTaunt*)rawgoal; |
| 1143 | zNPCBSandy* sandy = (zNPCBSandy*)taunt->psyche->clt_owner; |
| 1144 | S32 nextgoal = 0; |
| 1145 | xVec3 tempVector; |
| 1146 | |
| 1147 | if (taunt->timeInGoal > 0.30000001192092896f) // 0.3 |
| 1148 | { |
| 1149 | if (sandy->bossFlags & 0x400) |
| 1150 | { |
| 1151 | *trantype = GOAL_TRAN_SET; |
| 1152 | return 'NGB1'; |
| 1153 | } |
| 1154 | } |
| 1155 | |
| 1156 | xVec3Sub(&tempVector, (xVec3*)&globals.player.ent.model->Mat->pos, |
| 1157 | (xVec3*)&sandy->model->Mat->pos); |
| 1158 | |
| 1159 | tempVector.y = 0.0f; // 0.0 |
| 1160 | |
| 1161 | F32 length = xVec3Length2(&tempVector); |
| 1162 | |
| 1163 | if (sandy->AnimTimeRemain(NULL) < 1.100000023841858f * dt) // 1.1 |
| 1164 | { |
| 1165 | if (globals.player.ControlOff) |
| 1166 | { |
| 1167 | *trantype = GOAL_TRAN_SET; |
| 1168 | nextgoal = 'NGB1'; |
| 1169 | } |
| 1170 | else if (length > 12.0f) // 12.0 |
| 1171 | { |
| 1172 | *trantype = GOAL_TRAN_SET; |
| 1173 | nextgoal = 'NGB3'; |
| 1174 | } |
| 1175 | else |
| 1176 | { |
| 1177 | *trantype = GOAL_TRAN_SET; |
| 1178 | nextgoal = 'NGB4'; |
| 1179 | } |
| 1180 | } |
| 1181 | |
| 1182 | return nextgoal; |
| 1183 | } |
| 1184 | |
| 1185 | static S32 chaseCB(xGoal* rawgoal, void*, en_trantype* trantype, F32 dt, void*); |
| 1186 | static S32 meleeCB(xGoal* rawgoal, void*, en_trantype* trantype, F32 dt, void*); |
nothing calls this directly
no test coverage detected