|
568 | 568 | :$shot-frequency (f/ 4 5) |
569 | 569 |
|
570 | 570 | :act (meth [] |
571 | | - (doc f"Coward — If the monster is within {@flee-range} squares of you, it flees (per `Approach` in reverse). Otherwise, if it has line of sight to you (ignoring all obstacles), it adds {@shot-frequency} to its shot power. If this is ≥1, it subtracts 1 to shoot you. Otherwise, it wanders (per `Wander`).") |
| 571 | + (doc f"If the monster is within {@flee-range} squares of you, it flees (per `Approach` in reverse). Otherwise, if it has line of sight to you (ignoring all obstacles), it adds {@shot-frequency} to its shot power. If this is ≥1, it subtracts 1 to shoot you. Otherwise, it wanders (per `Wander`).") |
572 | 572 |
|
573 | 573 | (when (and |
574 | 574 | (<= (dist G.player.pos @pos) @flee-range) |
|
651 | 651 | :$disturbance-increment (f/ 1 5) |
652 | 652 |
|
653 | 653 | :act (meth [] |
654 | | - (doc f"Float — If you're adjacent, increases your floater disturbance by {@disturbance-increment}. If your floater disturbance reaches 1, it's cleared and the monster attacks. Otherwise, the monster wanders per `Wander`.") |
| 654 | + (doc f"If you're adjacent, increases your floater disturbance by {@disturbance-increment}. If your floater disturbance reaches 1, it's cleared and the monster attacks. Otherwise, the monster wanders per `Wander`.") |
655 | 655 | (when (adjacent? @pos G.player.pos) |
656 | 656 | (+= G.player.floater-disturbance @disturbance-increment) |
657 | 657 | (when (pop-integer-part G.player.floater-disturbance) |
|
679 | 679 | :$summon-frequency (f/ 1 10) |
680 | 680 |
|
681 | 681 | :act (meth [] |
682 | | - (doc f"Blob – If the monster can attack, it does. Otherwise, if it has more than 1 HP, it builds up {@summon-frequency} summoning power per turn. With enough power, it can split (per `Generate`) into two blobs with half HP (in case of odd HP, the original gets the leftover hit point). If it lacks the HP or summoning power for splitting, it wanders per `Wander`.") |
| 682 | + (doc f"If the monster can attack, it does. Otherwise, if it has more than 1 HP, it builds up {@summon-frequency} summoning power per turn. With enough power, it can split (per `Generate`) into two blobs with half HP (in case of odd HP, the original gets the leftover hit point). If it lacks the HP or summoning power for splitting, it wanders per `Wander`.") |
683 | 683 | (when (@try-to-attack-player) |
684 | 684 | (return)) |
685 | 685 | (when (and |
|
709 | 709 | #("Growth timer" @growth-timer))) |
710 | 710 |
|
711 | 711 | :act (meth [] |
712 | | - "Gunk Up — The monster's growth timer decreases by 1. If the timer has hit 0, it then transforms into an adult gunk." |
| 712 | + "The monster's growth timer decreases by 1. If the timer has hit 0, it then transforms into an adult gunk." |
713 | 713 | (-= @growth-timer 1) |
714 | 714 | (when (= @growth-timer 0) |
715 | 715 | (@replace "gunk"))) |
|
727 | 727 | :$summon-frequency (f/ 1 5) |
728 | 728 |
|
729 | 729 | :act (meth [] |
730 | | - (doc f"Gunky — If the monster can attack, it does. Otherwise, it builds up {@summon-frequency} summoning power per turn, which it can use to summon gunk seeds per `Generate`.") |
| 730 | + (doc f"If the monster can attack, it does. Otherwise, it builds up {@summon-frequency} summoning power per turn, which it can use to summon gunk seeds per `Generate`.") |
731 | 731 | (or |
732 | 732 | (@try-to-attack-player) |
733 | 733 | (@summon :stem "gunk seed" :frequency @summon-frequency :hp 1))) |
|
749 | 749 | :sees-invisible T |
750 | 750 |
|
751 | 751 | :act (meth [] |
752 | | - "Haunt — Try to attack or approach per `Approach`. If that fails, try moving with a variation of `Approach` that allows skipping one intermediate tile." |
| 752 | + "Try to attack or approach per `Approach`. If that fails, try moving with a variation of `Approach` that allows skipping one intermediate tile." |
753 | 753 | (or |
754 | 754 | (@approach :advance-approach-dir F) |
755 | 755 | (@approach :implicit-attack F :jump T))) |
|
765 | 765 | :$approach-range 2 |
766 | 766 |
|
767 | 767 | :act (meth [] |
768 | | - (doc f"Webcrawl — If the monster is within {@approach-range} squares of you, it approaches (per `Approach`). Otherwise, it wanders (per `Wander`). In both cases, it can move through webs, and it creates a web on its square afterwards if no web is there already.") |
| 768 | + (doc f"If the monster is within {@approach-range} squares of you, it approaches (per `Approach`). Otherwise, it wanders (per `Wander`). In both cases, it can move through webs, and it creates a web on its square afterwards if no web is there already.") |
769 | 769 | ; Move or attack. |
770 | 770 | (if (and |
771 | 771 | (<= (dist G.player.pos @pos) @approach-range) |
|
842 | 842 | :$shot-frequency (f/ 3 4) |
843 | 843 |
|
844 | 844 | :act (meth [] |
845 | | - (doc f"Teleport Attack — If the monster has line of sight to you, it adds {@shot-frequency} to its shot power. If this is ≥1, it subtracts 1 to shoot you. If it doesn't shoot you, it tries to teleport into line of sight, preferring to be as close as possible to you without being adjacent. Its destination must lie in the reality bubble.") |
| 845 | + (doc f"If the monster has line of sight to you, it adds {@shot-frequency} to its shot power. If this is ≥1, it subtracts 1 to shoot you. If it doesn't shoot you, it tries to teleport into line of sight, preferring to be as close as possible to you without being adjacent. Its destination must lie in the reality bubble.") |
846 | 846 | ; Teleporting mages' movement is much smarter than that of IQ's |
847 | 847 | ; invisible mages, which compensates for the loss of their main |
848 | 848 | ; ability. |
|
935 | 935 | :$approach-range 3 |
936 | 936 |
|
937 | 937 | :act (meth [] |
938 | | - (doc f"Guard — If the monster is within {@approach-range} squares of you, it approaches (per `Approach`). Otherwise, it does nothing.") |
| 938 | + (doc f"If the monster is within {@approach-range} squares of you, it approaches (per `Approach`). Otherwise, it does nothing.") |
939 | 939 | (when (and |
940 | 940 | (<= (dist G.player.pos @pos) @approach-range) |
941 | 941 | (not (@player-invisible-to?))) |
|
964 | 964 | :damage-melee 10 |
965 | 965 |
|
966 | 966 | :act (meth [] |
967 | | - "Tunnel — As `Wander`, but if the selected square is impassable, the monster tries to destroy one tile on that square. A tile can be destroyed if it's permeable with a passwall amulet. If successful, the monster can try once more to move onto that square." |
| 967 | + "As `Wander`, but if the selected square is impassable, the monster tries to destroy one tile on that square. A tile can be destroyed if it's permeable with a passwall amulet. If successful, the monster can try once more to move onto that square." |
968 | 968 | (@wander :bump-hook @destroy-walls)) |
969 | 969 |
|
970 | 970 | :$destroy-walls (meth [target] |
|
1111 | 1111 | "act" (hy.repr (str (get @action-list @action-i)))}) |
1112 | 1112 |
|
1113 | 1113 | :act (meth [] |
1114 | | - (doc f"Idiosyncratic — If the monster can attack, it does. Otherwise, it rotates among its list of actions. `wander` works per `Wander`. `bats` summons {@summon-frequency} bats, each with {@summon-hp} HP. `vampirize` attempts to turn an adjacent monster into a vampire, and works per `Wander` if no eligible monster is present.") |
| 1114 | + (doc f"If the monster can attack, it does. Otherwise, it rotates among its list of actions. `wander` works per `Wander`. `bats` summons {@summon-frequency} bats, each with {@summon-hp} HP. `vampirize` attempts to turn an adjacent monster into a vampire, and works per `Wander` if no eligible monster is present.") |
1115 | 1115 | (when (@try-to-attack-player) |
1116 | 1116 | (return)) |
1117 | 1117 | (ecase (get @action-list @action-i) |
|
1204 | 1204 | T) |
1205 | 1205 |
|
1206 | 1206 | :act (meth [] |
1207 | | - (doc f"Idiosyncratic — If the monster is within {@sight-range} squares, it approaches (per `Approach`) if empty-handed, and flees (per `Approach` in reverse) if it's carrying an item. Otherwise, it wanders (per `Wander`), taking any item it happens to step onto. It drops what it's holding if it gets a new item, or after {@initial-interest} steps of wandering.") |
| 1207 | + (doc f"If the monster is within {@sight-range} squares, it approaches (per `Approach`) if empty-handed, and flees (per `Approach` in reverse) if it's carrying an item. Otherwise, it wanders (per `Wander`), taking any item it happens to step onto. It drops what it's holding if it gets a new item, or after {@initial-interest} steps of wandering.") |
1208 | 1208 | (when (and |
1209 | 1209 | (<= (dist G.player.pos @pos) @sight-range) |
1210 | 1210 | (not (@player-invisible-to?))) |
|
1287 | 1287 | :grow-stem "wyrmling" |
1288 | 1288 |
|
1289 | 1289 | :act (meth [] |
1290 | | - (doc f"Grow — The monster {@grow-help}") |
| 1290 | + (doc f"The monster {@grow-help}") |
1291 | 1291 | (@regen))) |
1292 | 1292 |
|
1293 | 1293 | (deftile "D " "a wyrmling" Dragon |
|
0 commit comments