| 6 | | * This software may be copied and distributed for educational, research, |
|---|
| 7 | | * and not for profit purposes provided that this copyright and statement |
|---|
| 8 | | * are included in all such copies. Other copyrights may also apply. |
|---|
| 9 | | */ |
|---|
| 10 | | |
|---|
| | 5 | * Copyright (c) 1997-2007 Ben Harrison, James E. Wilson, Robert A. Koeneke |
|---|
| | 6 | * |
|---|
| | 7 | * This work is free software; you can redistribute it and/or modify it |
|---|
| | 8 | * under the terms of either: |
|---|
| | 9 | * |
|---|
| | 10 | * a) the GNU General Public License as published by the Free Software |
|---|
| | 11 | * Foundation, version 2, or |
|---|
| | 12 | * |
|---|
| | 13 | * b) the "Angband licence": |
|---|
| | 14 | * This software may be copied and distributed for educational, research, |
|---|
| | 15 | * and not for profit purposes provided that this copyright and statement |
|---|
| | 16 | * are included in all such copies. Other copyrights may also apply. |
|---|
| | 17 | */ |
|---|
| 26 | | #define plural(c,s,p) \ |
|---|
| 27 | | (((c) == 1) ? (s) : (p)) |
|---|
| | 31 | #define plural(c, s, p) (((c) == 1) ? (s) : (p)) |
|---|
| | 32 | |
|---|
| | 33 | |
|---|
| | 34 | |
|---|
| | 35 | static void output_list(const char *list[], int num, byte attr) |
|---|
| | 36 | { |
|---|
| | 37 | int i; |
|---|
| | 38 | const char *conjunction = "and "; |
|---|
| | 39 | |
|---|
| | 40 | if (num < 0) |
|---|
| | 41 | { |
|---|
| | 42 | num = -num; |
|---|
| | 43 | conjunction = "or "; |
|---|
| | 44 | } |
|---|
| | 45 | |
|---|
| | 46 | for (i = 0; i < num; i++) |
|---|
| | 47 | { |
|---|
| | 48 | if (i) |
|---|
| | 49 | { |
|---|
| | 50 | if (num > 2) |
|---|
| | 51 | text_out(", "); |
|---|
| | 52 | else |
|---|
| | 53 | text_out(" "); |
|---|
| | 54 | |
|---|
| | 55 | if (i == num - 1) |
|---|
| | 56 | text_out(conjunction); |
|---|
| | 57 | } |
|---|
| | 58 | |
|---|
| | 59 | text_out_c(attr, list[i]); |
|---|
| | 60 | } |
|---|
| | 61 | } |
|---|
| | 62 | |
|---|
| | 63 | |
|---|
| | 64 | static void output_desc_list(int msex, cptr intro, cptr list[], int n, byte attr) |
|---|
| | 65 | { |
|---|
| | 66 | if (n != 0) |
|---|
| | 67 | { |
|---|
| | 68 | /* Output intro */ |
|---|
| | 69 | text_out(format("%^s %s ", wd_he[msex], intro)); |
|---|
| | 70 | |
|---|
| | 71 | /* Output list */ |
|---|
| | 72 | output_list(list, n, attr); |
|---|
| | 73 | |
|---|
| | 74 | /* Output end */ |
|---|
| | 75 | text_out(". "); |
|---|
| | 76 | } |
|---|
| | 77 | } |
|---|
| 158 | | if (l_ptr->flags4 & RF4_BR_ACID) vp[vn++] = "acid"; |
|---|
| 159 | | if (l_ptr->flags4 & RF4_BR_ELEC) vp[vn++] = "lightning"; |
|---|
| 160 | | if (l_ptr->flags4 & RF4_BR_FIRE) vp[vn++] = "fire"; |
|---|
| 161 | | if (l_ptr->flags4 & RF4_BR_COLD) vp[vn++] = "frost"; |
|---|
| 162 | | if (l_ptr->flags4 & RF4_BR_POIS) vp[vn++] = "poison"; |
|---|
| 163 | | if (l_ptr->flags4 & RF4_BR_NETH) vp[vn++] = "nether"; |
|---|
| 164 | | if (l_ptr->flags4 & RF4_BR_LITE) vp[vn++] = "light"; |
|---|
| 165 | | if (l_ptr->flags4 & RF4_BR_DARK) vp[vn++] = "darkness"; |
|---|
| 166 | | if (l_ptr->flags4 & RF4_BR_CONF) vp[vn++] = "confusion"; |
|---|
| 167 | | if (l_ptr->flags4 & RF4_BR_SOUN) vp[vn++] = "sound"; |
|---|
| 168 | | if (l_ptr->flags4 & RF4_BR_CHAO) vp[vn++] = "chaos"; |
|---|
| 169 | | if (l_ptr->flags4 & RF4_BR_DISE) vp[vn++] = "disenchantment"; |
|---|
| 170 | | if (l_ptr->flags4 & RF4_BR_NEXU) vp[vn++] = "nexus"; |
|---|
| 171 | | if (l_ptr->flags4 & RF4_BR_TIME) vp[vn++] = "time"; |
|---|
| 172 | | if (l_ptr->flags4 & RF4_BR_INER) vp[vn++] = "inertia"; |
|---|
| 173 | | if (l_ptr->flags4 & RF4_BR_GRAV) vp[vn++] = "gravity"; |
|---|
| 174 | | if (l_ptr->flags4 & RF4_BR_SHAR) vp[vn++] = "shards"; |
|---|
| 175 | | if (l_ptr->flags4 & RF4_BR_PLAS) vp[vn++] = "plasma"; |
|---|
| 176 | | if (l_ptr->flags4 & RF4_BR_WALL) vp[vn++] = "force"; |
|---|
| 177 | | if (l_ptr->flags4 & RF4_BR_MANA) vp[vn++] = "mana"; |
|---|
| 178 | | if (l_ptr->flags4 & RF4_XXX5) vp[vn++] = "something"; |
|---|
| 179 | | if (l_ptr->flags4 & RF4_XXX6) vp[vn++] = "something"; |
|---|
| 180 | | if (l_ptr->flags4 & RF4_XXX7) vp[vn++] = "something"; |
|---|
| | 186 | if (l_ptr->flags4 & RF4_BR_ACID) vp[vn++] = "acid"; |
|---|
| | 187 | if (l_ptr->flags4 & RF4_BR_ELEC) vp[vn++] = "lightning"; |
|---|
| | 188 | if (l_ptr->flags4 & RF4_BR_FIRE) vp[vn++] = "fire"; |
|---|
| | 189 | if (l_ptr->flags4 & RF4_BR_COLD) vp[vn++] = "frost"; |
|---|
| | 190 | if (l_ptr->flags4 & RF4_BR_POIS) vp[vn++] = "poison"; |
|---|
| | 191 | if (l_ptr->flags4 & RF4_BR_NETH) vp[vn++] = "nether"; |
|---|
| | 192 | if (l_ptr->flags4 & RF4_BR_LITE) vp[vn++] = "light"; |
|---|
| | 193 | if (l_ptr->flags4 & RF4_BR_DARK) vp[vn++] = "darkness"; |
|---|
| | 194 | if (l_ptr->flags4 & RF4_BR_CONF) vp[vn++] = "confusion"; |
|---|
| | 195 | if (l_ptr->flags4 & RF4_BR_SOUN) vp[vn++] = "sound"; |
|---|
| | 196 | if (l_ptr->flags4 & RF4_BR_CHAO) vp[vn++] = "chaos"; |
|---|
| | 197 | if (l_ptr->flags4 & RF4_BR_DISE) vp[vn++] = "disenchantment"; |
|---|
| | 198 | if (l_ptr->flags4 & RF4_BR_NEXU) vp[vn++] = "nexus"; |
|---|
| | 199 | if (l_ptr->flags4 & RF4_BR_TIME) vp[vn++] = "time"; |
|---|
| | 200 | if (l_ptr->flags4 & RF4_BR_INER) vp[vn++] = "inertia"; |
|---|
| | 201 | if (l_ptr->flags4 & RF4_BR_GRAV) vp[vn++] = "gravity"; |
|---|
| | 202 | if (l_ptr->flags4 & RF4_BR_SHAR) vp[vn++] = "shards"; |
|---|
| | 203 | if (l_ptr->flags4 & RF4_BR_PLAS) vp[vn++] = "plasma"; |
|---|
| | 204 | if (l_ptr->flags4 & RF4_BR_WALL) vp[vn++] = "force"; |
|---|
| | 205 | if (l_ptr->flags4 & RF4_BR_MANA) vp[vn++] = "mana"; |
|---|
| | 206 | if (l_ptr->flags4 & RF4_XXX5) vp[vn++] = "something"; |
|---|
| | 207 | if (l_ptr->flags4 & RF4_XXX6) vp[vn++] = "something"; |
|---|
| | 208 | if (l_ptr->flags4 & RF4_XXX7) vp[vn++] = "something"; |
|---|
| 188 | | /* Intro */ |
|---|
| 189 | | text_out(format("%^s", wd_he[msex])); |
|---|
| 190 | | |
|---|
| 191 | | /* Scan */ |
|---|
| 192 | | for (n = 0; n < vn; n++) |
|---|
| 193 | | { |
|---|
| 194 | | /* Intro */ |
|---|
| 195 | | if (n == 0) text_out(" may breathe "); |
|---|
| 196 | | else if (n < vn-1) text_out(", "); |
|---|
| 197 | | else text_out(" or "); |
|---|
| 198 | | |
|---|
| 199 | | /* Dump */ |
|---|
| 200 | | text_out_c(TERM_L_RED, vp[n]); |
|---|
| 201 | | } |
|---|
| | 216 | /* Display */ |
|---|
| | 217 | text_out("%^s may ", wd_he[msex]); |
|---|
| | 218 | text_out_c(TERM_L_RED, "breathe "); |
|---|
| | 219 | output_list(vp, -vn, TERM_WHITE); |
|---|
| 266 | | if (l_ptr->flags6 & RF6_S_HI_UNDEAD) vp[vn++] = "summon Greater Undead"; |
|---|
| 267 | | if (l_ptr->flags6 & RF6_S_HI_DRAGON) vp[vn++] = "summon Ancient Dragons"; |
|---|
| 268 | | if (l_ptr->flags6 & RF6_S_HI_DEMON) vp[vn++] = "summon Greater Demons"; |
|---|
| 269 | | if (l_ptr->flags6 & RF6_S_WRAITH) vp[vn++] = "summon Ring Wraiths"; |
|---|
| 270 | | if (l_ptr->flags6 & RF6_S_UNIQUE) vp[vn++] = "summon Unique Monsters"; |
|---|
| | 284 | if (l_ptr->flags6 & RF6_S_HI_UNDEAD) vp[vn++] = "summon greater undead"; |
|---|
| | 285 | if (l_ptr->flags6 & RF6_S_HI_DRAGON) vp[vn++] = "summon ancient dragons"; |
|---|
| | 286 | if (l_ptr->flags6 & RF6_S_HI_DEMON) vp[vn++] = "summon greater demons"; |
|---|
| | 287 | if (l_ptr->flags6 & RF6_S_WRAITH) vp[vn++] = "summon ringwraiths"; |
|---|
| | 288 | if (l_ptr->flags6 & RF6_S_UNIQUE) vp[vn++] = "summon uniques"; |
|---|
| 362 | | /* One drop (may need an "n") */ |
|---|
| 363 | | if (n == 1) |
|---|
| 364 | | { |
|---|
| 365 | | text_out(" a"); |
|---|
| 366 | | sin = TRUE; |
|---|
| 367 | | } |
|---|
| 368 | | |
|---|
| 369 | | /* Two drops */ |
|---|
| 370 | | else if (n == 2) |
|---|
| 371 | | { |
|---|
| 372 | | text_out(" one or two"); |
|---|
| 373 | | } |
|---|
| 374 | | |
|---|
| 375 | | /* Many drops */ |
|---|
| 376 | | else |
|---|
| 377 | | { |
|---|
| 378 | | text_out(format(" up to %d", n)); |
|---|
| 379 | | } |
|---|
| 380 | | |
|---|
| 381 | | |
|---|
| 382 | | /* Great */ |
|---|
| 383 | | if (l_ptr->flags1 & RF1_DROP_GREAT) |
|---|
| 384 | | { |
|---|
| 385 | | p = " exceptional"; |
|---|
| 386 | | } |
|---|
| 387 | | |
|---|
| 388 | | /* Good (no "n" needed) */ |
|---|
| 389 | | else if (l_ptr->flags1 & RF1_DROP_GOOD) |
|---|
| 390 | | { |
|---|
| 391 | | p = " good"; |
|---|
| 392 | | sin = FALSE; |
|---|
| 393 | | } |
|---|
| 394 | | |
|---|
| 395 | | /* Okay */ |
|---|
| 396 | | else |
|---|
| 397 | | { |
|---|
| 398 | | p = NULL; |
|---|
| 399 | | } |
|---|
| | 377 | /* Count drops */ |
|---|
| | 378 | if (n == 1) text_out(" a single "); |
|---|
| | 379 | else if (n == 2) text_out(" one or two "); |
|---|
| | 380 | else text_out(format(" up to %d ", n)); |
|---|
| | 381 | |
|---|
| | 382 | |
|---|
| | 383 | /* Quality */ |
|---|
| | 384 | if (l_ptr->flags1 & RF1_DROP_GREAT) text_out("exceptional "); |
|---|
| | 385 | else if (l_ptr->flags1 & RF1_DROP_GOOD) text_out("good "); |
|---|
| 487 | | case RBM_HIT: p = "hit"; break; |
|---|
| 488 | | case RBM_TOUCH: p = "touch"; break; |
|---|
| 489 | | case RBM_PUNCH: p = "punch"; break; |
|---|
| 490 | | case RBM_KICK: p = "kick"; break; |
|---|
| 491 | | case RBM_CLAW: p = "claw"; break; |
|---|
| 492 | | case RBM_BITE: p = "bite"; break; |
|---|
| 493 | | case RBM_STING: p = "sting"; break; |
|---|
| 494 | | case RBM_XXX1: break; |
|---|
| 495 | | case RBM_BUTT: p = "butt"; break; |
|---|
| 496 | | case RBM_CRUSH: p = "crush"; break; |
|---|
| 497 | | case RBM_ENGULF: p = "engulf"; break; |
|---|
| 498 | | case RBM_XXX2: break; |
|---|
| 499 | | case RBM_CRAWL: p = "crawl on you"; break; |
|---|
| 500 | | case RBM_DROOL: p = "drool on you"; break; |
|---|
| 501 | | case RBM_SPIT: p = "spit"; break; |
|---|
| 502 | | case RBM_XXX3: break; |
|---|
| 503 | | case RBM_GAZE: p = "gaze"; break; |
|---|
| 504 | | case RBM_WAIL: p = "wail"; break; |
|---|
| 505 | | case RBM_SPORE: p = "release spores"; break; |
|---|
| 506 | | case RBM_XXX4: break; |
|---|
| 507 | | case RBM_BEG: p = "beg"; break; |
|---|
| 508 | | case RBM_INSULT: p = "insult"; break; |
|---|
| 509 | | case RBM_MOAN: p = "moan"; break; |
|---|
| 510 | | case RBM_XXX5: break; |
|---|
| 511 | | } |
|---|
| 512 | | |
|---|
| 513 | | |
|---|
| 514 | | /* Default effect */ |
|---|
| 515 | | q = NULL; |
|---|
| | 456 | case RBM_HIT: p = "hit"; break; |
|---|
| | 457 | case RBM_TOUCH: p = "touch"; break; |
|---|
| | 458 | case RBM_PUNCH: p = "punch"; break; |
|---|
| | 459 | case RBM_KICK: p = "kick"; break; |
|---|
| | 460 | case RBM_CLAW: p = "claw"; break; |
|---|
| | 461 | case RBM_BITE: p = "bite"; break; |
|---|
| | 462 | case RBM_STING: p = "sting"; break; |
|---|
| | 463 | case RBM_BUTT: p = "butt"; break; |
|---|
| | 464 | case RBM_CRUSH: p = "crush"; break; |
|---|
| | 465 | case RBM_ENGULF: p = "engulf"; break; |
|---|
| | 466 | case RBM_CRAWL: p = "crawl on you"; break; |
|---|
| | 467 | case RBM_DROOL: p = "drool on you"; break; |
|---|
| | 468 | case RBM_SPIT: p = "spit"; break; |
|---|
| | 469 | case RBM_GAZE: p = "gaze"; break; |
|---|
| | 470 | case RBM_WAIL: p = "wail"; break; |
|---|
| | 471 | case RBM_SPORE: p = "release spores"; break; |
|---|
| | 472 | case RBM_BEG: p = "beg"; break; |
|---|
| | 473 | case RBM_INSULT: p = "insult"; break; |
|---|
| | 474 | case RBM_MOAN: p = "moan"; break; |
|---|
| | 475 | case RBM_XXX1: |
|---|
| | 476 | case RBM_XXX2: |
|---|
| | 477 | case RBM_XXX3: |
|---|
| | 478 | case RBM_XXX4: |
|---|
| | 479 | case RBM_XXX5: |
|---|
| | 480 | default: p = "do something weird"; |
|---|
| | 481 | } |
|---|
| | 482 | |
|---|
| 643 | | if (vn) |
|---|
| 644 | | { |
|---|
| 645 | | /* Intro */ |
|---|
| 646 | | text_out(format("%^s", wd_he[msex])); |
|---|
| 647 | | |
|---|
| 648 | | /* Scan */ |
|---|
| 649 | | for (n = 0; n < vn; n++) |
|---|
| 650 | | { |
|---|
| 651 | | /* Intro */ |
|---|
| 652 | | if (n == 0) text_out(" can "); |
|---|
| 653 | | else if (n < vn-1) text_out(", "); |
|---|
| 654 | | else text_out(" and "); |
|---|
| 655 | | |
|---|
| 656 | | /* Dump */ |
|---|
| 657 | | text_out(vp[n]); |
|---|
| 658 | | } |
|---|
| 659 | | |
|---|
| 660 | | /* End */ |
|---|
| 661 | | text_out(". "); |
|---|
| 662 | | } |
|---|
| 663 | | |
|---|
| 664 | | |
|---|
| 665 | | /* Describe special abilities. */ |
|---|
| 666 | | if (l_ptr->flags2 & RF2_INVISIBLE) |
|---|
| 667 | | { |
|---|
| 668 | | text_out(format("%^s is invisible. ", wd_he[msex])); |
|---|
| 669 | | } |
|---|
| 670 | | if (l_ptr->flags2 & RF2_COLD_BLOOD) |
|---|
| 671 | | { |
|---|
| 672 | | text_out(format("%^s is cold blooded. ", wd_he[msex])); |
|---|
| 673 | | } |
|---|
| 674 | | if (l_ptr->flags2 & RF2_EMPTY_MIND) |
|---|
| 675 | | { |
|---|
| 676 | | text_out(format("%^s is not detected by telepathy. ", wd_he[msex])); |
|---|
| 677 | | } |
|---|
| 678 | | if (l_ptr->flags2 & RF2_WEIRD_MIND) |
|---|
| 679 | | { |
|---|
| 680 | | text_out(format("%^s is rarely detected by telepathy. ", wd_he[msex])); |
|---|
| 681 | | } |
|---|
| | 595 | output_desc_list(msex, "can", vp, vn, TERM_WHITE); |
|---|
| | 596 | |
|---|
| | 597 | |
|---|
| | 598 | /* Describe detection traits */ |
|---|
| | 599 | vn = 0; |
|---|
| | 600 | if (l_ptr->flags2 & RF2_INVISIBLE) vp[vn++] = "invisible"; |
|---|
| | 601 | if (l_ptr->flags2 & RF2_COLD_BLOOD) vp[vn++] = "cold blooded"; |
|---|
| | 602 | if (l_ptr->flags2 & RF2_EMPTY_MIND) vp[vn++] = "not detected by telepathy"; |
|---|
| | 603 | if (l_ptr->flags2 & RF2_WEIRD_MIND) vp[vn++] = "rarely detected by telepathy"; |
|---|
| | 604 | |
|---|
| | 605 | output_desc_list(msex, "is", vp, vn, TERM_WHITE); |
|---|
| | 606 | |
|---|
| | 607 | |
|---|
| | 608 | /* Describe special things */ |
|---|
| 724 | | if (l_ptr->flags3 & RF3_IM_ACID) vp[vn++] = "acid"; |
|---|
| 725 | | if (l_ptr->flags3 & RF3_IM_ELEC) vp[vn++] = "lightning"; |
|---|
| 726 | | if (l_ptr->flags3 & RF3_IM_FIRE) vp[vn++] = "fire"; |
|---|
| 727 | | if (l_ptr->flags3 & RF3_IM_COLD) vp[vn++] = "cold"; |
|---|
| 728 | | if (l_ptr->flags3 & RF3_IM_POIS) vp[vn++] = "poison"; |
|---|
| 729 | | if (l_ptr->flags3 & RF3_IM_WATER) vp[vn++] = "water"; |
|---|
| | 633 | if (l_ptr->flags3 & RF3_IM_ACID) vp[vn++] = "acid"; |
|---|
| | 634 | if (l_ptr->flags3 & RF3_IM_ELEC) vp[vn++] = "lightning"; |
|---|
| | 635 | if (l_ptr->flags3 & RF3_IM_FIRE) vp[vn++] = "fire"; |
|---|
| | 636 | if (l_ptr->flags3 & RF3_IM_COLD) vp[vn++] = "cold"; |
|---|
| | 637 | if (l_ptr->flags3 & RF3_IM_POIS) vp[vn++] = "poison"; |
|---|
| | 638 | if (l_ptr->flags3 & RF3_IM_WATER) vp[vn++] = "water"; |
|---|
| 738 | | /* Intro */ |
|---|
| 739 | | text_out(format("%^s", wd_he[msex])); |
|---|
| 740 | | |
|---|
| 741 | | /* Scan */ |
|---|
| 742 | | for (n = 0; n < vn; n++) |
|---|
| 743 | | { |
|---|
| 744 | | /* Intro */ |
|---|
| 745 | | if (n == 0) text_out(" resists "); |
|---|
| 746 | | else if (n < vn-1) text_out(", "); |
|---|
| 747 | | else text_out(" and "); |
|---|
| 748 | | |
|---|
| 749 | | /* Dump */ |
|---|
| 750 | | text_out_c(TERM_ORANGE, vp[n]); |
|---|
| 751 | | } |
|---|
| 752 | | |
|---|
| 753 | | /* End */ |
|---|
| 754 | | text_out(". "); |
|---|
| 755 | | } |
|---|
| 756 | | |
|---|
| | 646 | /* Output connecting text */ |
|---|
| | 647 | if (prev) |
|---|
| | 648 | text_out(", but resists "); |
|---|
| | 649 | else |
|---|
| | 650 | text_out("%^s resists ", wd_he[msex]); |
|---|
| | 651 | |
|---|
| | 652 | /* Write the text */ |
|---|
| | 653 | output_list(vp, vn, TERM_ORANGE); |
|---|
| | 654 | prev = TRUE; |
|---|
| | 655 | } |
|---|
| 768 | | /* Intro */ |
|---|
| 769 | | text_out(format("%^s", wd_he[msex])); |
|---|
| 770 | | |
|---|
| 771 | | /* Scan */ |
|---|
| 772 | | for (n = 0; n < vn; n++) |
|---|
| 773 | | { |
|---|
| 774 | | /* Intro */ |
|---|
| 775 | | if (n == 0) text_out(" cannot be "); |
|---|
| 776 | | else if (n < vn-1) text_out(", "); |
|---|
| 777 | | else text_out(" or "); |
|---|
| 778 | | |
|---|
| 779 | | /* Dump */ |
|---|
| 780 | | text_out_c(TERM_YELLOW, vp[n]); |
|---|
| 781 | | } |
|---|
| 782 | | |
|---|
| 783 | | /* End */ |
|---|
| 784 | | text_out(". "); |
|---|
| 785 | | } |
|---|
| | 666 | /* Output connecting text */ |
|---|
| | 667 | if (prev) |
|---|
| | 668 | text_out(", and cannot be "); |
|---|
| | 669 | else |
|---|
| | 670 | text_out("%^s cannot be ", wd_he[msex]); |
|---|
| | 671 | |
|---|
| | 672 | output_list(vp, -vn, TERM_ORANGE); |
|---|
| | 673 | prev = TRUE; |
|---|
| | 674 | } |
|---|
| | 675 | |
|---|
| | 676 | |
|---|
| | 677 | /* Full stop. */ |
|---|
| | 678 | if (prev) text_out(". "); |
|---|
| | 679 | |
|---|
| 795 | | if (r_ptr->sleep > 200) |
|---|
| 796 | | { |
|---|
| 797 | | act = "prefers to ignore"; |
|---|
| 798 | | } |
|---|
| 799 | | else if (r_ptr->sleep > 95) |
|---|
| 800 | | { |
|---|
| 801 | | act = "pays very little attention to"; |
|---|
| 802 | | } |
|---|
| 803 | | else if (r_ptr->sleep > 75) |
|---|
| 804 | | { |
|---|
| 805 | | act = "pays little attention to"; |
|---|
| 806 | | } |
|---|
| 807 | | else if (r_ptr->sleep > 45) |
|---|
| 808 | | { |
|---|
| 809 | | act = "tends to overlook"; |
|---|
| 810 | | } |
|---|
| 811 | | else if (r_ptr->sleep > 25) |
|---|
| 812 | | { |
|---|
| 813 | | act = "takes quite a while to see"; |
|---|
| 814 | | } |
|---|
| 815 | | else if (r_ptr->sleep > 10) |
|---|
| 816 | | { |
|---|
| 817 | | act = "takes a while to see"; |
|---|
| 818 | | } |
|---|
| 819 | | else if (r_ptr->sleep > 5) |
|---|
| 820 | | { |
|---|
| 821 | | act = "is fairly observant of"; |
|---|
| 822 | | } |
|---|
| 823 | | else if (r_ptr->sleep > 3) |
|---|
| 824 | | { |
|---|
| 825 | | act = "is observant of"; |
|---|
| 826 | | } |
|---|
| 827 | | else if (r_ptr->sleep > 1) |
|---|
| 828 | | { |
|---|
| 829 | | act = "is very observant of"; |
|---|
| 830 | | } |
|---|
| 831 | | else if (r_ptr->sleep > 0) |
|---|
| 832 | | { |
|---|
| 833 | | act = "is vigilant for"; |
|---|
| 834 | | } |
|---|
| 835 | | else |
|---|
| 836 | | { |
|---|
| 837 | | act = "is ever vigilant for"; |
|---|
| 838 | | } |
|---|
| 839 | | |
|---|
| 840 | | text_out(format("%^s %s intruders, which %s may notice from %d feet. ", |
|---|
| 841 | | wd_he[msex], act, wd_he[msex], 10 * r_ptr->aaf)); |
|---|
| | 689 | if (r_ptr->sleep > 200) act = "prefers to ignore"; |
|---|
| | 690 | else if (r_ptr->sleep > 95) act = "pays very little attention to"; |
|---|
| | 691 | else if (r_ptr->sleep > 75) act = "pays little attention to"; |
|---|
| | 692 | else if (r_ptr->sleep > 45) act = "tends to overlook"; |
|---|
| | 693 | else if (r_ptr->sleep > 25) act = "takes quite a while to see"; |
|---|
| | 694 | else if (r_ptr->sleep > 10) act = "takes a while to see"; |
|---|
| | 695 | else if (r_ptr->sleep > 5) act = "is fairly observant of"; |
|---|
| | 696 | else if (r_ptr->sleep > 3) act = "is observant of"; |
|---|
| | 697 | else if (r_ptr->sleep > 1) act = "is very observant of"; |
|---|
| | 698 | else if (r_ptr->sleep > 0) act = "is vigilant for"; |
|---|
| | 699 | else act = "is ever vigilant for"; |
|---|
| | 700 | |
|---|
| | 701 | text_out("%^s %s intruders, which %s may notice from ", wd_he[msex], act, wd_he[msex]); |
|---|
| | 702 | text_out_c(TERM_L_GREEN, "%d", 10 * r_ptr->aaf); |
|---|
| | 703 | text_out(" feet. "); |
|---|