called when a non-movement, multi-turn action has completed */
| 4174 | |
| 4175 | /* called when a non-movement, multi-turn action has completed */ |
| 4176 | void |
| 4177 | unmul(const char *msg_override) |
| 4178 | { |
| 4179 | disp.botl = TRUE; |
| 4180 | gm.multi = 0; /* caller will usually have done this already */ |
| 4181 | if (msg_override) |
| 4182 | gn.nomovemsg = msg_override; |
| 4183 | else if (!gn.nomovemsg) |
| 4184 | gn.nomovemsg = You_can_move_again; |
| 4185 | if (*gn.nomovemsg) { |
| 4186 | pline("%s", gn.nomovemsg); |
| 4187 | /* follow "you survived that attempt on your life" with a message |
| 4188 | about current form if it's not the default; primarily for |
| 4189 | life-saving while turning into green slime but is also a reminder |
| 4190 | if life-saved while poly'd and Unchanging (explore or wizard mode |
| 4191 | declining to die since can't be both Unchanging and Lifesaved) */ |
| 4192 | if (Upolyd && !strncmpi(gn.nomovemsg, "You survived that ", 18)) |
| 4193 | You("are %s.", |
| 4194 | an(pmname(&mons[u.umonnum], Ugender))); /* (ignore Hallu) */ |
| 4195 | } |
| 4196 | gn.nomovemsg = 0; |
| 4197 | u.usleep = 0; |
| 4198 | gm.multi_reason = NULL, gm.multireasonbuf[0] = '\0'; |
| 4199 | |
| 4200 | if (ga.afternmv) { |
| 4201 | int (*f)(void) = ga.afternmv; |
| 4202 | |
| 4203 | /* clear afternmv before calling it (to override the |
| 4204 | encumbrance hack for levitation--see weight_cap()) */ |
| 4205 | ga.afternmv = (int (*)(void)) 0; |
| 4206 | (void) (*f)(); |
| 4207 | } |
| 4208 | } |
| 4209 | |
| 4210 | staticfn void |
| 4211 | maybe_wail(void) |
no test coverage detected