| 4524 | } |
| 4525 | |
| 4526 | staticfn int |
| 4527 | flip_coin(struct obj *obj) |
| 4528 | { |
| 4529 | struct obj *otmp = obj; |
| 4530 | boolean lose_coin = FALSE; |
| 4531 | |
| 4532 | You("flip %s.", an(singular(obj, xname))); |
| 4533 | if (Underwater) { |
| 4534 | pline("It tumbles away."); |
| 4535 | lose_coin = TRUE; |
| 4536 | } else if (Glib || Fumbling |
| 4537 | || (ACURR(A_DEX) < 10 && !rn2(ACURR(A_DEX)))) { |
| 4538 | pline("It slips between your %s.", fingers_or_gloves(FALSE)); |
| 4539 | lose_coin = TRUE; |
| 4540 | } |
| 4541 | |
| 4542 | if (lose_coin) { |
| 4543 | if (otmp->quan > 1L) |
| 4544 | otmp = splitobj(otmp, 1L); |
| 4545 | dropx(otmp); |
| 4546 | return ECMD_TIME; |
| 4547 | } |
| 4548 | if (Hallucination) { |
| 4549 | pline(rn2(100) ? "Wow, a double header!" |
| 4550 | /* edge case */ |
| 4551 | : "The coin miraculously lands on its edge!"); |
| 4552 | } else { |
| 4553 | pline("It comes up %s.", rn2(2) ? "heads" : "tails"); |
| 4554 | } |
| 4555 | return ECMD_TIME; |
| 4556 | } |
| 4557 | |
| 4558 | /*apply.c*/ |