From 951c9d83fb2d3e2517eedc8c02c25ca65afae1bf Mon Sep 17 00:00:00 2001 From: Xe Date: Fri, 8 Jul 2022 16:53:28 +0000 Subject: [PATCH] copy from withinbot Signed-off-by: Xe --- Miau/README.md | 782 ++++++++++++++++++++ Miau/areas/armor_shop.dhall | 38 + Miau/areas/cihan.dhall | 11 + Miau/areas/inn.dhall | 10 + Miau/areas/package.dhall | 5 + Miau/areas/start.dhall | 10 + Miau/areas/tavern.dhall | 10 + Miau/items/amulet_of_bandacy.dhall | 9 + Miau/items/amulet_of_focus.dhall | 10 + Miau/items/amulet_of_the_old_ones.dhall | 10 + Miau/items/bane_of_lizards_shortsword.dhall | 12 + Miau/items/battleaxe.dhall | 11 + Miau/items/blessed_dagger_of_stabbing.dhall | 12 + Miau/items/boomerang.dhall | 9 + Miau/items/cactus_fruit.dhall | 12 + Miau/items/dagger.dhall | 10 + Miau/items/face_mask.dhall | 10 + Miau/items/gold_amulet.dhall | 8 + Miau/items/greatbow.dhall | 12 + Miau/items/greatsword.dhall | 11 + Miau/items/iron_shield.dhall | 17 + Miau/items/light_armor.dhall | 16 + Miau/items/longbow.dhall | 11 + Miau/items/longsword.dhall | 10 + Miau/items/maiden_armor.dhall | 23 + Miau/items/mihari_amulet.dhall | 10 + Miau/items/mihari_armor.dhall | 24 + Miau/items/package.dhall | 44 ++ Miau/items/sand_robe.dhall | 10 + Miau/items/sandshoes.dhall | 17 + Miau/items/sandstorm_amulet.dhall | 9 + Miau/items/shield.dhall | 17 + Miau/items/shortsword.dhall | 9 + Miau/items/super_boomerang.dhall | 10 + Miau/items/sword_of_two_truths.dhall | 13 + Miau/items/tolkath_battleaxe.dhall | 13 + Miau/items/torch.dhall | 16 + Miau/items/whisperwind.dhall | 13 + Miau/md.dhall | 1 + Miau/monsters/bandit_scout.dhall | 19 + Miau/monsters/bandit_soilder.dhall | 22 + Miau/monsters/boomerang_rat.dhall | 10 + Miau/monsters/great_sand_lizard.dhall | 13 + Miau/monsters/major_boomerang_rat.dhall | 20 + Miau/monsters/major_sand_lizard.dhall | 13 + Miau/monsters/package.dhall | 9 + Miau/monsters/sand_lizard.dhall | 9 + Miau/monsters/tolkath_the_destroyer.dhall | 15 + Miau/oldideas.md | 113 +++ Miau/package.dhall | 11 + Miau/winCondition.dhall | 6 + Prelude.dhall | 1 + README.md | 11 + campaigns.dhall | 1 + package.dhall | 1 + shared/consumables/flask.dhall | 14 + shared/consumables/hydroflask.dhall | 11 + shared/consumables/package.dhall | 5 + shared/consumables/ration.dhall | 16 + shared/package.dhall | 1 + types/Area.dhall | 27 + types/Bonus.dhall | 23 + types/Campaign.dhall | 25 + types/Item.dhall | 27 + types/ItemKind.dhall | 1 + types/Monster.dhall | 27 + types/MonsterItem.dhall | 7 + types/NPC.dhall | 19 + types/Range.dhall | 1 + types/Roll.dhall | 15 + types/Species.dhall | 1 + types/Spell.dhall | 13 + types/Stat.dhall | 1 + types/WinCondition.dhall | 7 + types/package.dhall | 15 + types/toMD/area.dhall | 84 +++ types/toMD/bonus.dhall | 48 ++ types/toMD/campaign.dhall | 45 ++ types/toMD/item.dhall | 61 ++ types/toMD/itemKind.dhall | 14 + types/toMD/monster.dhall | 55 ++ types/toMD/monsterItem.dhall | 15 + types/toMD/npc.dhall | 50 ++ types/toMD/roll.dhall | 23 + types/toMD/species.dhall | 10 + types/toMD/spell.dhall | 12 + types/toMD/stat.dhall | 16 + types/toMD/winCondition.dhall | 4 + 88 files changed, 2252 insertions(+) create mode 100644 Miau/README.md create mode 100644 Miau/areas/armor_shop.dhall create mode 100644 Miau/areas/cihan.dhall create mode 100644 Miau/areas/inn.dhall create mode 100644 Miau/areas/package.dhall create mode 100644 Miau/areas/start.dhall create mode 100644 Miau/areas/tavern.dhall create mode 100644 Miau/items/amulet_of_bandacy.dhall create mode 100644 Miau/items/amulet_of_focus.dhall create mode 100644 Miau/items/amulet_of_the_old_ones.dhall create mode 100644 Miau/items/bane_of_lizards_shortsword.dhall create mode 100644 Miau/items/battleaxe.dhall create mode 100644 Miau/items/blessed_dagger_of_stabbing.dhall create mode 100644 Miau/items/boomerang.dhall create mode 100644 Miau/items/cactus_fruit.dhall create mode 100644 Miau/items/dagger.dhall create mode 100644 Miau/items/face_mask.dhall create mode 100644 Miau/items/gold_amulet.dhall create mode 100644 Miau/items/greatbow.dhall create mode 100644 Miau/items/greatsword.dhall create mode 100644 Miau/items/iron_shield.dhall create mode 100644 Miau/items/light_armor.dhall create mode 100644 Miau/items/longbow.dhall create mode 100644 Miau/items/longsword.dhall create mode 100644 Miau/items/maiden_armor.dhall create mode 100644 Miau/items/mihari_amulet.dhall create mode 100644 Miau/items/mihari_armor.dhall create mode 100644 Miau/items/package.dhall create mode 100644 Miau/items/sand_robe.dhall create mode 100644 Miau/items/sandshoes.dhall create mode 100644 Miau/items/sandstorm_amulet.dhall create mode 100644 Miau/items/shield.dhall create mode 100644 Miau/items/shortsword.dhall create mode 100644 Miau/items/super_boomerang.dhall create mode 100644 Miau/items/sword_of_two_truths.dhall create mode 100644 Miau/items/tolkath_battleaxe.dhall create mode 100644 Miau/items/torch.dhall create mode 100644 Miau/items/whisperwind.dhall create mode 100644 Miau/md.dhall create mode 100644 Miau/monsters/bandit_scout.dhall create mode 100644 Miau/monsters/bandit_soilder.dhall create mode 100644 Miau/monsters/boomerang_rat.dhall create mode 100644 Miau/monsters/great_sand_lizard.dhall create mode 100644 Miau/monsters/major_boomerang_rat.dhall create mode 100644 Miau/monsters/major_sand_lizard.dhall create mode 100644 Miau/monsters/package.dhall create mode 100644 Miau/monsters/sand_lizard.dhall create mode 100644 Miau/monsters/tolkath_the_destroyer.dhall create mode 100644 Miau/oldideas.md create mode 100644 Miau/package.dhall create mode 100644 Miau/winCondition.dhall create mode 100644 Prelude.dhall create mode 100644 README.md create mode 100644 campaigns.dhall create mode 100644 package.dhall create mode 100644 shared/consumables/flask.dhall create mode 100644 shared/consumables/hydroflask.dhall create mode 100644 shared/consumables/package.dhall create mode 100644 shared/consumables/ration.dhall create mode 100644 shared/package.dhall create mode 100644 types/Area.dhall create mode 100644 types/Bonus.dhall create mode 100644 types/Campaign.dhall create mode 100644 types/Item.dhall create mode 100644 types/ItemKind.dhall create mode 100644 types/Monster.dhall create mode 100644 types/MonsterItem.dhall create mode 100644 types/NPC.dhall create mode 100644 types/Range.dhall create mode 100644 types/Roll.dhall create mode 100644 types/Species.dhall create mode 100644 types/Spell.dhall create mode 100644 types/Stat.dhall create mode 100644 types/WinCondition.dhall create mode 100644 types/package.dhall create mode 100644 types/toMD/area.dhall create mode 100644 types/toMD/bonus.dhall create mode 100644 types/toMD/campaign.dhall create mode 100644 types/toMD/item.dhall create mode 100644 types/toMD/itemKind.dhall create mode 100644 types/toMD/monster.dhall create mode 100644 types/toMD/monsterItem.dhall create mode 100644 types/toMD/npc.dhall create mode 100644 types/toMD/roll.dhall create mode 100644 types/toMD/species.dhall create mode 100644 types/toMD/spell.dhall create mode 100644 types/toMD/stat.dhall create mode 100644 types/toMD/winCondition.dhall diff --git a/Miau/README.md b/Miau/README.md new file mode 100644 index 0000000..037f47f --- /dev/null +++ b/Miau/README.md @@ -0,0 +1,782 @@ +# Miau + +In the desert of Miau, the town of Cihan has been cut off from trade with other towns due to weirdly strong sandstorms after an amulet was stolen from that town by the bandit leader Tol'Kath. Your goal is to venture through the wasteland and the ruins of Ci in order to get the amulet back and add yourselves to the scroll of legends for Cihan. + +## Win Condition + +Take the Sandstorm Amulet to Cihan Town Square + +## Areas + +### Miau Wasteland Clearing + +A wasteland area. + +A clearing in the desert, there is a path to the west that leads towards the city of Cihan. + + + + + + + +### Cihan Town Square + +A town area. + +The town square of Cihan. There is a lot of hustle and bustle with activity as people go about their lives. + + + + + + + +### Cell the Armorweaver + +A store area. + +The foremost armor shop in Cihan. Cell has run this shop for years and his son is his apprentice. + +The store is very plain, not messing around. There is room for 4 people to browse around and shop. + + + +## NPCs + +#### Cell + +A Feline Armorweaver. + +Has the following items for sale: + +* Sandshoes (15 gold) +* Sand Robe (5 gold) +* Light Armor (40 gold) + + +Dialogue: + +* [if there is a femme player character in the party] My son has been working on some armor you may find useful. You should talk with him and see if he'll part with it. It'll probably do wonders for your charm~ (purr) + + + +#### Cell's son Cial + +A Feline Apprentice Armorweaver. + +Has the following items for sale: + +* Maiden armor (30 gold) + + +Dialogue: + +* I've been learning armorweaving for 5 years. I have a long way to go. +* If you find any enchanted amulets you don't want, let me know. If you can find one that I'm really looking for I will pay a pretty penny. + + + + + + +### The Flying Ombudsman + +A town area. + +The lively tavern of Cihan, there is a staircase on the northwest side of the building to the town inn. + + + + + + + +### Cihan Inn + +A town area. + +The inn of Cihan, you can stay here for 5 gold per night, or maybe for less if you're lucky. + + + + + + + + +## Monsters + +### Sand Lizard + +5 HP (0 armor) + +1d4 attack damage + +Grants 25 experience on defeat. + + + + + +### Great Sand Lizard + +10 HP (1 armor) + +1d6 attack damage + +Grants 75 experience on defeat. + +Has the following items: +* Iron Dagger +* Shortsword + + + + +### Major Sand Lizard + +14 HP (2 armor) + +1d8 attack damage + +Grants 150 experience on defeat. + +Has the following items: +* Iron Dagger +* Shortsword + + + + +### Boomerang Rat + +6 HP (0 armor) + +1d4 attack damage + +Grants 25 experience on defeat. + +Has the following items: +* Boomerang + + + + +### Major Boomerang Rat + +12 HP (1 armor) + +1d6 attack damage + +Grants 100 experience on defeat. + +Has the following items: +* Super Boomerang drops if 1d6 is greater than or equal to 6 +* Boomerang + + + + +### Bandit Scout + +10 HP (1 armor) + +1d6 attack damage + +Grants 150 experience on defeat. + +Has the following items: +* Amulet of Bandacy drops if 1d6 is greater than or equal to 6 + + + + +### Bandit Soilder + +16 HP (1 armor) + +1d8 attack damage + +Grants 200 experience on defeat. + +Has the following items: +* Amulet of Bandacy drops if 1d6 is greater than or equal to 6 +* Longsword +* Greatsword +* Battleaxe + + + + +### Tol'kath the Destroyer + +22 HP (3 armor) + +1d8 attack damage + +Grants 400 experience on defeat. + +Has the following items: +* Amulet of Bandacy +* Tol'kath's Battleaxe of Destruction + + +Always drops the following items: +* Sandstorm Amulet +* Amulet of Bandacy + + + +## Items + +### Face Mask + +Armor + +Weight: 1 + +An enforcer of social distancing. + +Grants the following bonuses: + +* Grants +1 CHA + + +Buy price: 40 gold + +Unsellable + +### Maiden armor + +Armor (legendary item) + +Weight: 1 + +Attractive armor for an attractive woman. + +Gives you extra charisma in town areas, but it may also make you appear more femme to certain people. + +Grants the following bonuses: + +* Grants +2 CHA when in town +* Grants -1 DEF + + +Buy price: 30 gold + +Sells for 10 gold. + +### Mihari's Armor + +Armor (legendary item) + +Weight: 1 + +Armor fit for a goddess. Gives massive bonuses for defense and charisma to felines. Can cause the wearer to be mistaken as high society member. + +Grants the following bonuses: + +* Grants +2 CHA +* Grants +4 DEF + + +Buy price: 300 gold + +Sells for 250 gold. + +### Light Armor + +Armor + +Weight: 1 + +Light armor that doesn't constrict movement. + +Grants the following bonuses: + +* Grants +1 DEF + + +Buy price: 40 gold + +Sells for 20 gold. + +### Sand Robe + +Armor + +Weight: 1 + +blocks the sand from your body + + + +Buy price: 5 gold + +Unsellable + +### Sandshoes + +Armor + +Weight: 1 + +Shoes that help you walk in the dunes + +Grants the following bonuses: + +* Grants +1 DEX when in wasteland + + +Buy price: 15 gold + +Sells for 2 gold. + +### Bane of Lizards Shortsword + +Weapon (legendary item) + +Weight: 1 + +A one-handed sword to hurt bad guys with, with a special talent for hurting lizards. + +Grants the following bonuses: + +* Grants +1 ATK + + +Buy price: 70 gold + +Sells for 50 gold. + +### Battleaxe + +Weapon + +Weight: 2 + +A two-handed battleaxe for mauling enemies. + +Grants the following bonuses: + +* Grants +1 ATK + + +Buy price: 30 gold + +Sells for 7 gold. + +### Blessed Dagger of Stabbing + +Weapon (legendary item) + +Weight: 1 + +This blessed dagger is said to be once owned by a legendary purple warrior. Can be used in your offhand for a second attack. + + + +Buy price: 60 gold + +Sells for 50 gold. + +### Boomerang + +Weapon + +Weight: 1 + +A boomerang stolen from a Boomerang Rat. + + + +Buy price: 20 gold + +Sells for 10 gold. + +### Iron Dagger + +Weapon + +Weight: 1 + +Can be used in your offhand for a second attack + + + +Buy price: 30 gold + +Sells for 5 gold. + +### Greatbow + +Weapon + +Weight: 2 + +A normal Greatbow to shoot baddies with. Has unlimited arrows. + +Grants the following bonuses: + +* Grants +1 ATK + + +Buy price: 70 gold + +Sells for 40 gold. + +### Greatsword + +Weapon + +Weight: 2 + +A standard two-handed greatsword to maul bad guys with. + +Grants the following bonuses: + +* Grants +12 ATK + + +Buy price: 30 gold + +Sells for 7 gold. + +### Longbow + +Weapon + +Weight: 1 + +A normal longbow to shoot baddies with. Has unlimited arrows. + + + +Buy price: 50 gold + +Sells for 20 gold. + +### Longsword + +Weapon + +Weight: 1 + +A standard one-handed longsword to maul bad guys with. + +Grants the following bonuses: + +* Grants +1 ATK + + +Buy price: 30 gold + +Sells for 7 gold. + +### Shortsword + +Weapon + +Weight: 1 + +A standard one-handed sword to hurt bad guys with. + + + +Buy price: 30 gold + +Sells for 7 gold. + +### Super Boomerang + +Weapon + +Weight: 1 + +A boomerang stolen from a Major Boomerang Rat. + +Grants the following bonuses: + +* Grants +2 ATK + + +Buy price: 40 gold + +Sells for 20 gold. + +### Sword of Two Truths + +Weapon (legendary item) + +Weight: 1 + +The legendary Sword of Two Truths, bane of all those who practice deception. + +Grants the following bonuses: + +* Grants +2 ATK + + +Buy price: 60 gold + +Sells for 45 gold. + +### Tol'kath's Battleaxe of Destruction + +Weapon (legendary item) + +Weight: 3 + +A two-handed battleaxe for mauling enemies into a fine powder. + +Grants the following bonuses: + +* Grants +4 ATK + + +Buy price: 150 gold + +Sells for 150 gold. + +### Whisperwind + +Weapon (legendary item) + +Weight: 2 + +Harness the whispers of the wind wherever you are with this legendary bow. + +Grants the following bonuses: + +* Grants +4 ATK + + +Buy price: 150 gold + +Sells for 90 gold. + +### Iron Shield + +Weapon + +Weight: 1 + +A more powerful shield to protect you from damage. + +Grants the following bonuses: + +* Grants +2 DEF + + +Buy price: 40 gold + +Sells for 20 gold. + +### Wooden Shield + +Weapon + +Weight: 1 + +A normal shield to protect you from damage. + +Grants the following bonuses: + +* Grants +1 DEF + + +Buy price: 25 gold + +Sells for 10 gold. + +### Cactus Fruit + +Consumable +Has a maximum of 1 charges. + + +Weight: 1 + +A sweet fruit from a cactus. You can juice them to act as emergency water. + +Grants the following bonuses: + +* Grants +6 HP + + +Buy price: 5 gold + +Sells for 1 gold. + +### Flask + +Consumable +Has a maximum of 3 charges. + + +Weight: 1 + +A flask of the good stuff. + +Grants the following bonuses: + +* Grants -2 CHA +* Grants +4 RISK + + +Buy price: 30 gold + +Sells for 10 gold. + +### Hydroflask + +Consumable +Has a maximum of 5 charges. + + +Weight: 1 + +A flask of water. + +Grants the following bonuses: + +* Grants +2 HP + + +Buy price: 30 gold + +Sells for 10 gold. + +### Ration + +Consumable +Has a maximum of 1 charges. + + +Weight: 1 + +Standard rations to restore HP + +Grants the following bonuses: + +* GrantsHP if user's level d6 + + +Buy price: 5 gold + +Unsellable + +### Torch + +Gear + +Weight: 1 + +A torch to light dark caves + +Grants the following bonuses: + +* Grants +2 RISK when in cave + + +Buy price: 10 gold + +Unsellable + +### Amulet of Bandacy + +Trinket + +Weight: 1 + +An amulet that increases a bandit's natural deterity. + +Grants the following bonuses: + +* Grants +1 DEX + + +Buy price: 30 gold + +Sells for 4 gold. + +### Amulet of Focus + +Trinket + +Weight: 1 + +An amulet that increases the ability to focus, boosting intelligence. + +Grants the following bonuses: + +* Grants +1 INT + + +Buy price: 30 gold + +Sells for 4 gold. + +### Amulet of The Old Ones + +Trinket + +Weight: 1 + +An amulet imbued with the power of The Old Ones, increasing wisdom. + +Grants the following bonuses: + +* Grants +1 WIS + + +Buy price: 30 gold + +Sells for 4 gold. + +### Gold Amulet + +Trinket + +Weight: 1 + +A valuable gold amulet. + + + +Buy price: 100 gold + +Sells for 50 gold. + +### Mihari's Amulet + +Trinket (legendary item) + +Weight: 1 + +An amulet that grants the ability to polymorph into a feline. A blessing of the godess Mihari. + +Grants the following bonuses: + +* Grants polymorph to Feline + + +Buy price: 0 gold + +Unsellable + +### Sandstorm Amulet + +Trinket (legendary item) + +Weight: 1 + +An amulet that controls the sandstorms in the area. + + + +Buy price: 0 gold + +Unsellable + diff --git a/Miau/areas/armor_shop.dhall b/Miau/areas/armor_shop.dhall new file mode 100644 index 0000000..10a1a75 --- /dev/null +++ b/Miau/areas/armor_shop.dhall @@ -0,0 +1,38 @@ +let camp = ../../package.dhall + +let ownerName = "Cell" + +in camp.Area::{ + , name = "armor_shop" + , humanName = "${ownerName} the Armorweaver" + , description = + '' + The foremost armor shop in Cihan. ${ownerName} has run this shop for years and his son is his apprentice. + + The store is very plain, not messing around. There is room for 4 people to browse around and shop.'' + , links = [ "cihan" ] + , npcs = + [ camp.NPC::{ + , name = "${ownerName}" + , job = "Armorweaver" + , sellItems = + [ ../items/sandshoes.dhall + , ../items/sand_robe.dhall + , ../items/light_armor.dhall + ] + , dialogue = + [ "[if there is a femme player character in the party] My son has been working on some armor you may find useful. You should talk with him and see if he'll part with it. It'll probably do wonders for your charm~ (purr)" + ] + } + , camp.NPC::{ + , name = "${ownerName}'s son Cial" + , job = "Apprentice Armorweaver" + , sellItems = [ ../items/maiden_armor.dhall ] + , dialogue = + [ "I've been learning armorweaving for 5 years. I have a long way to go." + , "If you find any enchanted amulets you don't want, let me know. If you can find one that I'm really looking for I will pay a pretty penny." + ] + } + ] + , kind = "store" + } diff --git a/Miau/areas/cihan.dhall b/Miau/areas/cihan.dhall new file mode 100644 index 0000000..96b4b79 --- /dev/null +++ b/Miau/areas/cihan.dhall @@ -0,0 +1,11 @@ +let camp = ../../package.dhall + +in camp.Area::{ + , name = "cihan" + , humanName = "Cihan Town Square" + , description = + "The town square of Cihan. There is a lot of hustle and bustle with activity as people go about their lives." + , links = + [ "start", "palace", "tavern", "armor_shop", "weapon_shop", "market" ] + , kind = "town" + } diff --git a/Miau/areas/inn.dhall b/Miau/areas/inn.dhall new file mode 100644 index 0000000..33fdfc3 --- /dev/null +++ b/Miau/areas/inn.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Area::{ + , name = "inn" + , humanName = "Cihan Inn" + , description = + "The inn of Cihan, you can stay here for 5 gold per night, or maybe for less if you're lucky." + , links = [ "tavern" ] + , kind = "town" + } diff --git a/Miau/areas/package.dhall b/Miau/areas/package.dhall new file mode 100644 index 0000000..24e1033 --- /dev/null +++ b/Miau/areas/package.dhall @@ -0,0 +1,5 @@ +let town = [ ./cihan.dhall, ./armor_shop.dhall, ./tavern.dhall, ./inn.dhall ] + +let wasteland = [ ./start.dhall ] + +in wasteland # town diff --git a/Miau/areas/start.dhall b/Miau/areas/start.dhall new file mode 100644 index 0000000..6a8cc4a --- /dev/null +++ b/Miau/areas/start.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Area::{ + , name = "start" + , humanName = "Miau Wasteland Clearing" + , description = + "A clearing in the desert, there is a path to the west that leads towards the city of Cihan." + , links = [ "cihan" ] + , kind = "wasteland" + } diff --git a/Miau/areas/tavern.dhall b/Miau/areas/tavern.dhall new file mode 100644 index 0000000..79c5c7e --- /dev/null +++ b/Miau/areas/tavern.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Area::{ + , name = "tavern" + , humanName = "The Flying Ombudsman" + , description = + "The lively tavern of Cihan, there is a staircase on the northwest side of the building to the town inn." + , links = [ "cihan", "inn" ] + , kind = "town" + } diff --git a/Miau/items/amulet_of_bandacy.dhall b/Miau/items/amulet_of_bandacy.dhall new file mode 100644 index 0000000..5e8b292 --- /dev/null +++ b/Miau/items/amulet_of_bandacy.dhall @@ -0,0 +1,9 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Amulet of Bandacy" + , description = "An amulet that increases a bandit's natural deterity." + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.DEX } ] + , cost = 30 + , sellValue = Some 4 + } diff --git a/Miau/items/amulet_of_focus.dhall b/Miau/items/amulet_of_focus.dhall new file mode 100644 index 0000000..f76cd24 --- /dev/null +++ b/Miau/items/amulet_of_focus.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Amulet of Focus" + , description = + "An amulet that increases the ability to focus, boosting intelligence." + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.INT } ] + , cost = 30 + , sellValue = Some 4 + } diff --git a/Miau/items/amulet_of_the_old_ones.dhall b/Miau/items/amulet_of_the_old_ones.dhall new file mode 100644 index 0000000..4d0d7a7 --- /dev/null +++ b/Miau/items/amulet_of_the_old_ones.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Amulet of The Old Ones" + , description = + "An amulet imbued with the power of The Old Ones, increasing wisdom." + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.WIS } ] + , cost = 30 + , sellValue = Some 4 + } diff --git a/Miau/items/bane_of_lizards_shortsword.dhall b/Miau/items/bane_of_lizards_shortsword.dhall new file mode 100644 index 0000000..b3003bb --- /dev/null +++ b/Miau/items/bane_of_lizards_shortsword.dhall @@ -0,0 +1,12 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Bane of Lizards Shortsword" + , description = + "A one-handed sword to hurt bad guys with, with a special talent for hurting lizards." + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.ATK } ] + , kind = camp.ItemKind.Weapon + , cost = 70 + , sellValue = Some 50 + , legendary = True + } diff --git a/Miau/items/battleaxe.dhall b/Miau/items/battleaxe.dhall new file mode 100644 index 0000000..3b5893b --- /dev/null +++ b/Miau/items/battleaxe.dhall @@ -0,0 +1,11 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Battleaxe" + , description = "A two-handed battleaxe for mauling enemies." + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.ATK } ] + , kind = camp.ItemKind.Weapon + , cost = 30 + , weight = 2 + , sellValue = Some 7 + } diff --git a/Miau/items/blessed_dagger_of_stabbing.dhall b/Miau/items/blessed_dagger_of_stabbing.dhall new file mode 100644 index 0000000..c715850 --- /dev/null +++ b/Miau/items/blessed_dagger_of_stabbing.dhall @@ -0,0 +1,12 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Blessed Dagger of Stabbing" + , description = + "This blessed dagger is said to be once owned by a legendary purple warrior. Can be used in your offhand for a second attack." + , weight = 1 + , kind = camp.ItemKind.Weapon + , cost = 60 + , sellValue = Some 50 + , legendary = True + } diff --git a/Miau/items/boomerang.dhall b/Miau/items/boomerang.dhall new file mode 100644 index 0000000..80191a6 --- /dev/null +++ b/Miau/items/boomerang.dhall @@ -0,0 +1,9 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Boomerang" + , description = "A boomerang stolen from a Boomerang Rat." + , kind = camp.ItemKind.Weapon + , cost = 20 + , sellValue = Some 10 + } diff --git a/Miau/items/cactus_fruit.dhall b/Miau/items/cactus_fruit.dhall new file mode 100644 index 0000000..624e00c --- /dev/null +++ b/Miau/items/cactus_fruit.dhall @@ -0,0 +1,12 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Cactus Fruit" + , description = + "A sweet fruit from a cactus. You can juice them to act as emergency water." + , kind = camp.ItemKind.Consumable + , charges = Some 1 + , bonuses = [ camp.Bonus::{ amount = Some +6, stat = Some camp.Stat.HP } ] + , cost = 5 + , sellValue = Some 1 + } diff --git a/Miau/items/dagger.dhall b/Miau/items/dagger.dhall new file mode 100644 index 0000000..731fad7 --- /dev/null +++ b/Miau/items/dagger.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Iron Dagger" + , description = "Can be used in your offhand for a second attack" + , weight = 1 + , kind = camp.ItemKind.Weapon + , cost = 30 + , sellValue = Some 5 + } diff --git a/Miau/items/face_mask.dhall b/Miau/items/face_mask.dhall new file mode 100644 index 0000000..e1b5709 --- /dev/null +++ b/Miau/items/face_mask.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Face Mask" + , description = "An enforcer of social distancing." + , kind = camp.ItemKind.Armor + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.CHA } ] + , cost = 40 + , sellValue = None Natural + } diff --git a/Miau/items/gold_amulet.dhall b/Miau/items/gold_amulet.dhall new file mode 100644 index 0000000..53f54a1 --- /dev/null +++ b/Miau/items/gold_amulet.dhall @@ -0,0 +1,8 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Gold Amulet" + , description = "A valuable gold amulet." + , cost = 100 + , sellValue = Some 50 + } diff --git a/Miau/items/greatbow.dhall b/Miau/items/greatbow.dhall new file mode 100644 index 0000000..b81acac --- /dev/null +++ b/Miau/items/greatbow.dhall @@ -0,0 +1,12 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Greatbow" + , description = + "A normal Greatbow to shoot baddies with. Has unlimited arrows." + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.ATK } ] + , weight = 2 + , kind = camp.ItemKind.Weapon + , cost = 70 + , sellValue = Some 40 + } diff --git a/Miau/items/greatsword.dhall b/Miau/items/greatsword.dhall new file mode 100644 index 0000000..a44902d --- /dev/null +++ b/Miau/items/greatsword.dhall @@ -0,0 +1,11 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Greatsword" + , description = "A standard two-handed greatsword to maul bad guys with." + , weight = 2 + , bonuses = [ camp.Bonus::{ amount = Some +12, stat = Some camp.Stat.ATK } ] + , kind = camp.ItemKind.Weapon + , cost = 30 + , sellValue = Some 7 + } diff --git a/Miau/items/iron_shield.dhall b/Miau/items/iron_shield.dhall new file mode 100644 index 0000000..6f83dd5 --- /dev/null +++ b/Miau/items/iron_shield.dhall @@ -0,0 +1,17 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Iron Shield" + , description = "A more powerful shield to protect you from damage." + , weight = 1 + , kind = camp.ItemKind.Weapon + , bonuses = + [ camp.Bonus::{ + , amount = Some +2 + , area = None Text + , stat = Some camp.Stat.DEF + } + ] + , cost = 40 + , sellValue = Some 20 + } diff --git a/Miau/items/light_armor.dhall b/Miau/items/light_armor.dhall new file mode 100644 index 0000000..08b7d36 --- /dev/null +++ b/Miau/items/light_armor.dhall @@ -0,0 +1,16 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Light Armor" + , description = "Light armor that doesn't constrict movement." + , bonuses = + [ camp.Bonus::{ + , amount = Some +1 + , area = None Text + , stat = Some camp.Stat.DEF + } + ] + , kind = camp.ItemKind.Armor + , cost = 40 + , sellValue = Some 20 + } diff --git a/Miau/items/longbow.dhall b/Miau/items/longbow.dhall new file mode 100644 index 0000000..f66ce51 --- /dev/null +++ b/Miau/items/longbow.dhall @@ -0,0 +1,11 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Longbow" + , description = + "A normal longbow to shoot baddies with. Has unlimited arrows." + , weight = 1 + , kind = camp.ItemKind.Weapon + , cost = 50 + , sellValue = Some 20 + } diff --git a/Miau/items/longsword.dhall b/Miau/items/longsword.dhall new file mode 100644 index 0000000..1b57fb6 --- /dev/null +++ b/Miau/items/longsword.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Longsword" + , description = "A standard one-handed longsword to maul bad guys with." + , bonuses = [ camp.Bonus::{ amount = Some +1, stat = Some camp.Stat.ATK } ] + , kind = camp.ItemKind.Weapon + , cost = 30 + , sellValue = Some 7 + } diff --git a/Miau/items/maiden_armor.dhall b/Miau/items/maiden_armor.dhall new file mode 100644 index 0000000..10ea949 --- /dev/null +++ b/Miau/items/maiden_armor.dhall @@ -0,0 +1,23 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Maiden armor" + , description = + '' + Attractive armor for an attractive woman. + + Gives you extra charisma in town areas, but it may also make you appear more femme to certain people.'' + , bonuses = + [ camp.Bonus::{ + , amount = Some +2 + , area = Some "town" + , stat = Some camp.Stat.CHA + } + , camp.Bonus::{ amount = Some -1, stat = Some camp.Stat.DEF } + ] + , weight = 1 + , kind = camp.ItemKind.Armor + , cost = 30 + , sellValue = Some 10 + , legendary = True + } diff --git a/Miau/items/mihari_amulet.dhall b/Miau/items/mihari_amulet.dhall new file mode 100644 index 0000000..13eb2cd --- /dev/null +++ b/Miau/items/mihari_amulet.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Mihari's Amulet" + , description = + "An amulet that grants the ability to polymorph into a feline. A blessing of the godess Mihari." + , bonuses = [ camp.Bonus::{ polymorph = Some camp.Species.Feline } ] + , cost = 0 + , legendary = True + } diff --git a/Miau/items/mihari_armor.dhall b/Miau/items/mihari_armor.dhall new file mode 100644 index 0000000..37be0d0 --- /dev/null +++ b/Miau/items/mihari_armor.dhall @@ -0,0 +1,24 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Mihari's Armor" + , description = + "Armor fit for a goddess. Gives massive bonuses for defense and charisma to felines. Can cause the wearer to be mistaken as high society member." + , bonuses = + [ camp.Bonus::{ + , amount = Some +2 + , stat = Some camp.Stat.CHA + , species = Some camp.Species.Feline + } + , camp.Bonus::{ + , amount = Some +4 + , stat = Some camp.Stat.DEF + , species = Some camp.Species.Feline + } + ] + , weight = 1 + , kind = camp.ItemKind.Armor + , cost = 300 + , sellValue = Some 250 + , legendary = True + } diff --git a/Miau/items/package.dhall b/Miau/items/package.dhall new file mode 100644 index 0000000..22d0604 --- /dev/null +++ b/Miau/items/package.dhall @@ -0,0 +1,44 @@ +let shared = ../../shared/package.dhall + +let armor = + [ ./face_mask.dhall + , ./maiden_armor.dhall + , ./mihari_armor.dhall + , ./light_armor.dhall + , ./sand_robe.dhall + , ./sandshoes.dhall + ] + +let weapons = + [ ./bane_of_lizards_shortsword.dhall + , ./battleaxe.dhall + , ./blessed_dagger_of_stabbing.dhall + , ./boomerang.dhall + , ./dagger.dhall + , ./greatbow.dhall + , ./greatsword.dhall + , ./longbow.dhall + , ./longsword.dhall + , ./shortsword.dhall + , ./super_boomerang.dhall + , ./sword_of_two_truths.dhall + , ./tolkath_battleaxe.dhall + , ./whisperwind.dhall + , ./iron_shield.dhall + , ./shield.dhall + ] + +let trinkets = + [ ./amulet_of_bandacy.dhall + , ./amulet_of_focus.dhall + , ./amulet_of_the_old_ones.dhall + , ./gold_amulet.dhall + , ./mihari_amulet.dhall + , ./sandstorm_amulet.dhall + ] + +let consumables = [ ./cactus_fruit.dhall ] # shared.consumables + +let gear = [ ./torch.dhall ] + +in armor # weapons # consumables # gear # trinkets diff --git a/Miau/items/sand_robe.dhall b/Miau/items/sand_robe.dhall new file mode 100644 index 0000000..bb7342c --- /dev/null +++ b/Miau/items/sand_robe.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Sand Robe" + , description = "blocks the sand from your body" + , weight = 1 + , kind = camp.ItemKind.Armor + , cost = 5 + , sellValue = None Natural + } diff --git a/Miau/items/sandshoes.dhall b/Miau/items/sandshoes.dhall new file mode 100644 index 0000000..052a0a2 --- /dev/null +++ b/Miau/items/sandshoes.dhall @@ -0,0 +1,17 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Sandshoes" + , description = "Shoes that help you walk in the dunes" + , weight = 1 + , kind = camp.ItemKind.Armor + , bonuses = + [ camp.Bonus::{ + , stat = Some camp.Stat.DEX + , amount = Some +1 + , area = Some "wasteland" + } + ] + , cost = 15 + , sellValue = Some 2 + } diff --git a/Miau/items/sandstorm_amulet.dhall b/Miau/items/sandstorm_amulet.dhall new file mode 100644 index 0000000..f2eb7b3 --- /dev/null +++ b/Miau/items/sandstorm_amulet.dhall @@ -0,0 +1,9 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Sandstorm Amulet" + , description = "An amulet that controls the sandstorms in the area." + , cost = 0 + , sellValue = None Natural + , legendary = True + } diff --git a/Miau/items/shield.dhall b/Miau/items/shield.dhall new file mode 100644 index 0000000..0637322 --- /dev/null +++ b/Miau/items/shield.dhall @@ -0,0 +1,17 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Wooden Shield" + , description = "A normal shield to protect you from damage." + , weight = 1 + , kind = camp.ItemKind.Weapon + , bonuses = + [ camp.Bonus::{ + , amount = Some +1 + , area = None Text + , stat = Some camp.Stat.DEF + } + ] + , cost = 25 + , sellValue = Some 10 + } diff --git a/Miau/items/shortsword.dhall b/Miau/items/shortsword.dhall new file mode 100644 index 0000000..f5cdb56 --- /dev/null +++ b/Miau/items/shortsword.dhall @@ -0,0 +1,9 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Shortsword" + , description = "A standard one-handed sword to hurt bad guys with." + , kind = camp.ItemKind.Weapon + , cost = 30 + , sellValue = Some 7 + } diff --git a/Miau/items/super_boomerang.dhall b/Miau/items/super_boomerang.dhall new file mode 100644 index 0000000..a18ac71 --- /dev/null +++ b/Miau/items/super_boomerang.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Super Boomerang" + , description = "A boomerang stolen from a Major Boomerang Rat." + , kind = camp.ItemKind.Weapon + , bonuses = [ camp.Bonus::{ amount = Some +2, stat = Some camp.Stat.ATK } ] + , cost = 40 + , sellValue = Some 20 + } diff --git a/Miau/items/sword_of_two_truths.dhall b/Miau/items/sword_of_two_truths.dhall new file mode 100644 index 0000000..331d56f --- /dev/null +++ b/Miau/items/sword_of_two_truths.dhall @@ -0,0 +1,13 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Sword of Two Truths" + , description = + "The legendary Sword of Two Truths, bane of all those who practice deception." + , bonuses = [ camp.Bonus::{ amount = Some +2, stat = Some camp.Stat.ATK } ] + , weight = 1 + , kind = camp.ItemKind.Weapon + , cost = 60 + , sellValue = Some 45 + , legendary = True + } diff --git a/Miau/items/tolkath_battleaxe.dhall b/Miau/items/tolkath_battleaxe.dhall new file mode 100644 index 0000000..9c1fa55 --- /dev/null +++ b/Miau/items/tolkath_battleaxe.dhall @@ -0,0 +1,13 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Tol'kath's Battleaxe of Destruction" + , description = + "A two-handed battleaxe for mauling enemies into a fine powder." + , bonuses = [ camp.Bonus::{ amount = Some +4, stat = Some camp.Stat.ATK } ] + , kind = camp.ItemKind.Weapon + , cost = 150 + , weight = 3 + , sellValue = Some 150 + , legendary = True + } diff --git a/Miau/items/torch.dhall b/Miau/items/torch.dhall new file mode 100644 index 0000000..f35dbbd --- /dev/null +++ b/Miau/items/torch.dhall @@ -0,0 +1,16 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Torch" + , description = "A torch to light dark caves" + , weight = 1 + , kind = camp.ItemKind.Gear + , bonuses = + [ camp.Bonus::{ + , amount = Some +2 + , area = Some "cave" + , stat = Some camp.Stat.RISK + } + ] + , cost = 10 + } diff --git a/Miau/items/whisperwind.dhall b/Miau/items/whisperwind.dhall new file mode 100644 index 0000000..3f9cc68 --- /dev/null +++ b/Miau/items/whisperwind.dhall @@ -0,0 +1,13 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Whisperwind" + , description = + "Harness the whispers of the wind wherever you are with this legendary bow." + , bonuses = [ camp.Bonus::{ amount = Some +4, stat = Some camp.Stat.ATK } ] + , weight = 2 + , kind = camp.ItemKind.Weapon + , cost = 150 + , sellValue = Some 90 + , legendary = True + } diff --git a/Miau/md.dhall b/Miau/md.dhall new file mode 100644 index 0000000..d82e205 --- /dev/null +++ b/Miau/md.dhall @@ -0,0 +1 @@ +let toMD = ../types/toMD/campaign.dhall in toMD ./package.dhall diff --git a/Miau/monsters/bandit_scout.dhall b/Miau/monsters/bandit_scout.dhall new file mode 100644 index 0000000..17a9caf --- /dev/null +++ b/Miau/monsters/bandit_scout.dhall @@ -0,0 +1,19 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Bandit Scout" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 6 } + , hp = 10 + , armor = 1 + , exp = 150 + , items = + [ camp.MonsterItem::{ + , dice = Some camp.Roll::{ + , diceCount = Some 1 + , diceSides = 6 + , min = Some 6 + } + , item = ../items/amulet_of_bandacy.dhall + } + ] + } diff --git a/Miau/monsters/bandit_soilder.dhall b/Miau/monsters/bandit_soilder.dhall new file mode 100644 index 0000000..065d2ba --- /dev/null +++ b/Miau/monsters/bandit_soilder.dhall @@ -0,0 +1,22 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Bandit Soilder" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 8 } + , hp = 16 + , armor = 1 + , exp = 200 + , items = + [ camp.MonsterItem::{ + , dice = Some camp.Roll::{ + , diceCount = Some 1 + , diceSides = 6 + , min = Some 6 + } + , item = ../items/amulet_of_bandacy.dhall + } + , camp.MonsterItem::{ item = ../items/longsword.dhall } + , camp.MonsterItem::{ item = ../items/greatsword.dhall } + , camp.MonsterItem::{ item = ../items/battleaxe.dhall } + ] + } diff --git a/Miau/monsters/boomerang_rat.dhall b/Miau/monsters/boomerang_rat.dhall new file mode 100644 index 0000000..4453e1b --- /dev/null +++ b/Miau/monsters/boomerang_rat.dhall @@ -0,0 +1,10 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Boomerang Rat" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 4 } + , hp = 6 + , armor = 0 + , exp = 25 + , items = [ camp.MonsterItem::{ item = ../items/boomerang.dhall } ] + } diff --git a/Miau/monsters/great_sand_lizard.dhall b/Miau/monsters/great_sand_lizard.dhall new file mode 100644 index 0000000..cca84b0 --- /dev/null +++ b/Miau/monsters/great_sand_lizard.dhall @@ -0,0 +1,13 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Great Sand Lizard" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 6 } + , hp = 10 + , armor = 1 + , exp = 75 + , items = + [ camp.MonsterItem::{ item = ../items/dagger.dhall } + , camp.MonsterItem::{ item = ../items/shortsword.dhall } + ] + } diff --git a/Miau/monsters/major_boomerang_rat.dhall b/Miau/monsters/major_boomerang_rat.dhall new file mode 100644 index 0000000..8175b46 --- /dev/null +++ b/Miau/monsters/major_boomerang_rat.dhall @@ -0,0 +1,20 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Major Boomerang Rat" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 6 } + , hp = 12 + , armor = 1 + , exp = 100 + , items = + [ camp.MonsterItem::{ + , dice = Some camp.Roll::{ + , diceCount = Some 1 + , diceSides = 6 + , min = Some 6 + } + , item = ../items/super_boomerang.dhall + } + , camp.MonsterItem::{ item = ../items/boomerang.dhall } + ] + } diff --git a/Miau/monsters/major_sand_lizard.dhall b/Miau/monsters/major_sand_lizard.dhall new file mode 100644 index 0000000..680b2a7 --- /dev/null +++ b/Miau/monsters/major_sand_lizard.dhall @@ -0,0 +1,13 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Major Sand Lizard" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 8 } + , hp = 14 + , armor = 2 + , exp = 150 + , items = + [ camp.MonsterItem::{ item = ../items/dagger.dhall } + , camp.MonsterItem::{ item = ../items/shortsword.dhall } + ] + } diff --git a/Miau/monsters/package.dhall b/Miau/monsters/package.dhall new file mode 100644 index 0000000..38227d4 --- /dev/null +++ b/Miau/monsters/package.dhall @@ -0,0 +1,9 @@ +[ ./sand_lizard.dhall +, ./great_sand_lizard.dhall +, ./major_sand_lizard.dhall +, ./boomerang_rat.dhall +, ./major_boomerang_rat.dhall +, ./bandit_scout.dhall +, ./bandit_soilder.dhall +, ./tolkath_the_destroyer.dhall +] diff --git a/Miau/monsters/sand_lizard.dhall b/Miau/monsters/sand_lizard.dhall new file mode 100644 index 0000000..6dbd64e --- /dev/null +++ b/Miau/monsters/sand_lizard.dhall @@ -0,0 +1,9 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Sand Lizard" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 4 } + , hp = 5 + , armor = 0 + , exp = 25 + } diff --git a/Miau/monsters/tolkath_the_destroyer.dhall b/Miau/monsters/tolkath_the_destroyer.dhall new file mode 100644 index 0000000..3d8ea17 --- /dev/null +++ b/Miau/monsters/tolkath_the_destroyer.dhall @@ -0,0 +1,15 @@ +let camp = ../../package.dhall + +in camp.Monster::{ + , name = "Tol'kath the Destroyer" + , damage = camp.Roll::{ diceCount = Some 1, diceSides = 8 } + , hp = 22 + , armor = 3 + , exp = 400 + , items = + [ camp.MonsterItem::{ item = ../items/amulet_of_bandacy.dhall } + , camp.MonsterItem::{ item = ../items/tolkath_battleaxe.dhall } + ] + , drops = + [ ../items/sandstorm_amulet.dhall, ../items/amulet_of_bandacy.dhall ] + } diff --git a/Miau/oldideas.md b/Miau/oldideas.md new file mode 100644 index 0000000..7e49f3a --- /dev/null +++ b/Miau/oldideas.md @@ -0,0 +1,113 @@ +# Miau Campaign Ideas + +A campaign for The Source by Mai. + +Goal: return an amulet that controls the sandstorms that have been buffering the +city of Cihan so that trade can be restored and stuff. + +Takes place in the desert of Miau, where the cat people have lived in harmony +with the land. Think Gerudo from Breath of the Wild. + +## Suggested Characters + +* Fighter +* Cleric +* Wizard +* Thief/Wildcard + +Cat people have communication bonus of +1 in Cihan due to the citizens trusting +their own kind more. This applies to the shapeshifter's current form too. + +## Words + +* Ci /tʃi/ - safe, water (archaic) +* Cihan /tʃi.hʌn/ - new-safe +* Lum /lum/ - sand, desert +* Ag /ʌɡ/ - water +* Sivu /si.vu/ - hello +* Miau /miʌu/ - home +* Mihari /mi.hʌ.ri/ - name of a goddess of the desert, usually clad in decorative gold armor + +## Locales + +### Cihan + +Areas: + +* Armor shop, light armor suggested + * Sandshoes + * Sand robe + * Light armor + * Maiden armor +* Weapon shop, has rumor of the elemental wand cave + * Iron Dagger + * Sword of two truths + * Shield + * Torch + * Longbow + * Arrows +* Market, be sure to get a hydroflask + * Flask + * Cactus fruit + * Hydroflask + * Rations +* Alleys, more rumors of an elemental cave + +### Desert Wasteland + +Sandstorms have a 1d6=1 chance of causing damage to everyone, more sandstorms +when you get closer to Bandit's Den or Elemental Cave + +Areas: + +* Dunes +* Statues of heroes + * Shal'tash + * Tosen +* Ruins of the ancient city of Ci (-han is a suffix for new?) + +Items: + +* Cactus fruit, found on cactuses randomly, risky to try and take one, sells for + 1g +* (Very randomly) treasure chest with any one of the Cihan or Wasteland items, + or a healing item +* Basic Boomerang, +1 damage, 1d6=1 chance of flying away when thrown by a + player, sells for 1g +* Super Boomerang, +2 damage, 1d6=1 chance of flying away when thrown by a + player, sells for 5g + +### Ruins of Ci + +Open air dungeon, some treasure chests (randomly choose between the legendary +items in this quest) + +* Statue of Mihari + * Some fluff text about what Mihari did for the land and a puzzle to get + Mihari's amulet + +### Elemental Cave + +Items: + +* Torch near entrance, without a torch in the party risky moves get -2 +* Rocks, 1d4 damage when thrown at an enemy, does not sell +* Elemental wand, +2 damage to matching elemental spells, -1 to any other kind + of elemental spell, 1 gear slot, sells for 15g +* Elemental rod, 1 damage plus elemental effect on a 12, 7 or below has a chance + of breaking it +* *Elemental arrows, +2 damage plus an elemental effect on a 12 +* Mihari's armor (legendary), -4 damage to Felines person, 2 gear slots, does + not sell + +### Oasis + +Areas: + +* Shrine to Ma +* Ice water refreshments +* Can refill flasks here + +### Bandit's Den + +Simple dungeon that has a boss fight and the sandstorm amulet diff --git a/Miau/package.dhall b/Miau/package.dhall new file mode 100644 index 0000000..2ad4775 --- /dev/null +++ b/Miau/package.dhall @@ -0,0 +1,11 @@ +let camp = ../package.dhall + +in camp.Campaign::{ + , name = "Miau" + , description = + "In the desert of Miau, the town of Cihan has been cut off from trade with other towns due to weirdly strong sandstorms after an amulet was stolen from that town by the bandit leader Tol'Kath. Your goal is to venture through the wasteland and the ruins of Ci in order to get the amulet back and add yourselves to the scroll of legends for Cihan." + , areas = ./areas/package.dhall + , monsters = ./monsters/package.dhall + , items = ./items/package.dhall + , winCondition = ./winCondition.dhall + } diff --git a/Miau/winCondition.dhall b/Miau/winCondition.dhall new file mode 100644 index 0000000..3466fbb --- /dev/null +++ b/Miau/winCondition.dhall @@ -0,0 +1,6 @@ +let camp = ../package.dhall + +in camp.WinCondition::{ + , item = ./items/sandstorm_amulet.dhall + , area = ./areas/cihan.dhall + } diff --git a/Prelude.dhall b/Prelude.dhall new file mode 100644 index 0000000..59a43b4 --- /dev/null +++ b/Prelude.dhall @@ -0,0 +1 @@ +https://raw.githubusercontent.com/dhall-lang/dhall-lang/v19.0.0/Prelude/package.dhall diff --git a/README.md b/README.md new file mode 100644 index 0000000..b3bc98b --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Campaigns for The Source + +This is where we will put our prewritten campaigns/oneshots for [The +Source](https://withinstudios.itch.io/the-source) while they are being written. +They will be shipped as eBooks to Itch. This is the staging ground. + +These are also intended to act as inspiration for creating your own adventures. + +## Current Campaigns + +- [Sands of Miau](./Miau) diff --git a/campaigns.dhall b/campaigns.dhall new file mode 100644 index 0000000..1a59c87 --- /dev/null +++ b/campaigns.dhall @@ -0,0 +1 @@ +{ Miau = ./Miau/package.dhall } diff --git a/package.dhall b/package.dhall new file mode 100644 index 0000000..b9a856e --- /dev/null +++ b/package.dhall @@ -0,0 +1 @@ +./types/package.dhall diff --git a/shared/consumables/flask.dhall b/shared/consumables/flask.dhall new file mode 100644 index 0000000..55c8cd2 --- /dev/null +++ b/shared/consumables/flask.dhall @@ -0,0 +1,14 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Flask" + , description = "A flask of the good stuff." + , kind = camp.ItemKind.Consumable + , charges = Some 3 + , bonuses = + [ camp.Bonus::{ amount = Some -2, stat = Some camp.Stat.CHA } + , camp.Bonus::{ amount = Some +4, stat = Some camp.Stat.RISK } + ] + , cost = 30 + , sellValue = Some 10 + } diff --git a/shared/consumables/hydroflask.dhall b/shared/consumables/hydroflask.dhall new file mode 100644 index 0000000..05933a2 --- /dev/null +++ b/shared/consumables/hydroflask.dhall @@ -0,0 +1,11 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Hydroflask" + , description = "A flask of water." + , kind = camp.ItemKind.Consumable + , charges = Some 5 + , bonuses = [ camp.Bonus::{ amount = Some +2, stat = Some camp.Stat.HP } ] + , cost = 30 + , sellValue = Some 10 + } diff --git a/shared/consumables/package.dhall b/shared/consumables/package.dhall new file mode 100644 index 0000000..b87bc44 --- /dev/null +++ b/shared/consumables/package.dhall @@ -0,0 +1,5 @@ +[ + ./flask.dhall +, ./hydroflask.dhall +, ./ration.dhall +] diff --git a/shared/consumables/ration.dhall b/shared/consumables/ration.dhall new file mode 100644 index 0000000..622b9bc --- /dev/null +++ b/shared/consumables/ration.dhall @@ -0,0 +1,16 @@ +let camp = ../../package.dhall + +in camp.Item::{ + , name = "Ration" + , description = "Standard rations to restore HP" + , kind = camp.ItemKind.Consumable + , bonuses = + [ camp.Bonus::{ + , stat = Some camp.Stat.HP + , when = Some camp.Roll::{ diceSides = 6, level = True } + } + ] + , charges = Some 1 + , cost = 5 + , sellValue = None Natural + } diff --git a/shared/package.dhall b/shared/package.dhall new file mode 100644 index 0000000..38dd272 --- /dev/null +++ b/shared/package.dhall @@ -0,0 +1 @@ +{ consumables = ./consumables/package.dhall } diff --git a/types/Area.dhall b/types/Area.dhall new file mode 100644 index 0000000..91b1ec6 --- /dev/null +++ b/types/Area.dhall @@ -0,0 +1,27 @@ +let Monster = ./Monster.dhall + +let NPC = ./NPC.dhall + +let Item = ./Item.dhall + +in { Type = + { name : Text + , humanName : Text + , description : Text + , links : List Text + , monsters : List Monster.Type + , npcs : List NPC.Type + , items : List Item.Type + , kind : Text + } + , default = + { name = "unnamed" + , humanName = "unnamed area" + , description = "fill me in please" + , links = [] : List Text + , monsters = [] : List Monster.Type + , npcs = [] : List NPC.Type + , items = [] : List Item.Type + , kind = "" + } + } diff --git a/types/Bonus.dhall b/types/Bonus.dhall new file mode 100644 index 0000000..2039eb4 --- /dev/null +++ b/types/Bonus.dhall @@ -0,0 +1,23 @@ +let Stat = ./Stat.dhall + +let Species = ./Species.dhall + +let Roll = ./Roll.dhall + +in { Type = + { stat : Optional Stat + , amount : Optional Integer + , area : Optional Text + , when : Optional Roll.Type + , species : Optional Species + , polymorph : Optional Species + } + , default = + { stat = None Stat + , amount = None Integer + , area = None Text + , when = None Roll.Type + , species = None Species + , polymorph = None Species + } + } diff --git a/types/Campaign.dhall b/types/Campaign.dhall new file mode 100644 index 0000000..b4bc2be --- /dev/null +++ b/types/Campaign.dhall @@ -0,0 +1,25 @@ +let Area = ./Area.dhall + +let Monster = ./Monster.dhall + +let Item = ./Item.dhall + +let WinCondition = ./WinCondition.dhall + +in { Type = + { name : Text + , description : Text + , areas : List Area.Type + , monsters : List Monster.Type + , items : List Item.Type + , winCondition : WinCondition.Type + } + , default = + { name = "none" + , description = "fill me in" + , areas = [] : List Area.Type + , monsters = [] : List Monster.Type + , items = [] : List Item.Type + , winCondition = WinCondition::{=} + } + } diff --git a/types/Item.dhall b/types/Item.dhall new file mode 100644 index 0000000..34d5d05 --- /dev/null +++ b/types/Item.dhall @@ -0,0 +1,27 @@ +let Bonus = ./Bonus.dhall + +let ItemKind = ./ItemKind.dhall + +in { Type = + { name : Text + , description : Text + , weight : Natural + , kind : ItemKind + , bonuses : List Bonus.Type + , cost : Natural + , sellValue : Optional Natural + , charges : Optional Natural + , legendary : Bool + } + , default = + { name = "no name" + , description = "no description" + , weight = 1 + , kind = ItemKind.Trinket + , bonuses = [] : List Bonus.Type + , cost = 0 + , sellValue = None Natural + , charges = None Natural + , legendary = False + } + } diff --git a/types/ItemKind.dhall b/types/ItemKind.dhall new file mode 100644 index 0000000..d47a098 --- /dev/null +++ b/types/ItemKind.dhall @@ -0,0 +1 @@ +< Weapon | Armor | Trinket | Gear | Consumable > diff --git a/types/Monster.dhall b/types/Monster.dhall new file mode 100644 index 0000000..d9dc1b3 --- /dev/null +++ b/types/Monster.dhall @@ -0,0 +1,27 @@ +let MonsterItem = ./MonsterItem.dhall + +let Item = ./Item.dhall + +let Range = ./Range.dhall + +let Roll = ./Roll.dhall + +in { Type = + { name : Text + , damage : Roll.Type + , hp : Natural + , armor : Natural + , exp : Natural + , items : List MonsterItem.Type + , drops : List Item.Type + } + , default = + { name = "unnamed" + , damage = Roll::{=} + , hp = 1 + , armor = 0 + , exp = 25 + , items = [] : List MonsterItem.Type + , drops = [] : List Item.Type + } + } diff --git a/types/MonsterItem.dhall b/types/MonsterItem.dhall new file mode 100644 index 0000000..4ef82a9 --- /dev/null +++ b/types/MonsterItem.dhall @@ -0,0 +1,7 @@ +let Item = ./Item.dhall + +let Roll = ./Roll.dhall + +in { Type = { dice : Optional Roll.Type, item : Item.Type } + , default = { dice = None Roll.Type, item = Item::{=} } + } diff --git a/types/NPC.dhall b/types/NPC.dhall new file mode 100644 index 0000000..bb3b410 --- /dev/null +++ b/types/NPC.dhall @@ -0,0 +1,19 @@ +let Item = ./Item.dhall + +let Species = ./Species.dhall + +in { Type = + { name : Text + , job : Text + , sellItems : List Item.Type + , species : Species + , dialogue : List Text + } + , default = + { name = "no name" + , job = "no job" + , sellItems = [] : List Item.Type + , species = Species.Feline + , dialogue = [] : List Text + } + } diff --git a/types/Range.dhall b/types/Range.dhall new file mode 100644 index 0000000..142d586 --- /dev/null +++ b/types/Range.dhall @@ -0,0 +1 @@ +{ Type = { low : Natural, high : Natural }, default = { low = 0, high = 0 } } diff --git a/types/Roll.dhall b/types/Roll.dhall new file mode 100644 index 0000000..15476c3 --- /dev/null +++ b/types/Roll.dhall @@ -0,0 +1,15 @@ +{ Type = + { diceCount : Optional Natural + , diceSides : Natural + , min : Optional Natural + , level : Bool + , plus : Optional Natural + } +, default = + { diceCount = Some 1 + , diceSides = 6 + , min = None Natural + , level = False + , plus = None Natural + } +} diff --git a/types/Species.dhall b/types/Species.dhall new file mode 100644 index 0000000..36daee7 --- /dev/null +++ b/types/Species.dhall @@ -0,0 +1 @@ +< Human | Feline | Shark | Cetacean > diff --git a/types/Spell.dhall b/types/Spell.dhall new file mode 100644 index 0000000..dbdcce0 --- /dev/null +++ b/types/Spell.dhall @@ -0,0 +1,13 @@ +let Stat = ./Stat.dhall + +let Roll = ./Roll.dhall + +in { Type = + { stat : Stat, name : Text, description : Text, damage : Roll.Type } + , default = + { stat = Stat.INT + , name = "no name" + , description = "no description" + , damage = Roll::{=} + } + } diff --git a/types/Stat.dhall b/types/Stat.dhall new file mode 100644 index 0000000..1a3c8d1 --- /dev/null +++ b/types/Stat.dhall @@ -0,0 +1 @@ +< STR | DEX | CON | INT | WIS | CHA | ATK | DEF | RISK | HP > diff --git a/types/WinCondition.dhall b/types/WinCondition.dhall new file mode 100644 index 0000000..0ce6f2a --- /dev/null +++ b/types/WinCondition.dhall @@ -0,0 +1,7 @@ +let Item = ./Item.dhall + +let Area = ./Area.dhall + +in { Type = { item : Item.Type, area : Area.Type } + , default = { item = Item::{=}, area = Area::{=} } + } diff --git a/types/package.dhall b/types/package.dhall new file mode 100644 index 0000000..ffea6a5 --- /dev/null +++ b/types/package.dhall @@ -0,0 +1,15 @@ +{ Area = ./Area.dhall +, Bonus = ./Bonus.dhall +, Campaign = ./Campaign.dhall +, Item = ./Item.dhall +, ItemKind = ./ItemKind.dhall +, Monster = ./Monster.dhall +, MonsterItem = ./MonsterItem.dhall +, NPC = ./NPC.dhall +, Range = ./Range.dhall +, Roll = ./Roll.dhall +, Stat = ./Stat.dhall +, Species = ./Species.dhall +, Spell = ./Spell.dhall +, WinCondition = ./WinCondition.dhall +} diff --git a/types/toMD/area.dhall b/types/toMD/area.dhall new file mode 100644 index 0000000..2ca97ca --- /dev/null +++ b/types/toMD/area.dhall @@ -0,0 +1,84 @@ +let toMD = + { item = ./item.dhall + , monster = ./monster.dhall + , npc = ./npc.dhall + , roll = ./roll.dhall + } + +let Prelude = ../../Prelude.dhall + +let Area = ../Area.dhall + +let NPC = ../NPC.dhall + +let Monster = ../Monster.dhall + +let Item = ../Item.dhall + +in λ(area : Area.Type) → + let items = + if Prelude.Natural.greaterThan + (List/length Item.Type area.items) + 0 + then let doer = + λ(i : Item.Type) → + "* ${i.name} (${Natural/show i.cost})" + + let showItems = Prelude.Text.concatMapSep "\n" Item.Type doer + + in '' + Has the following items out in the open: + + ${showItems area.items} + '' + else "" + + let npcs = + if Prelude.Natural.greaterThan (List/length NPC.Type area.npcs) 0 + then let showNPCs = + Prelude.Text.concatMapSep "\n\n" NPC.Type toMD.npc + + in '' + ## NPCs + + ${showNPCs area.npcs} + '' + else "" + + let monsters = + if Prelude.Natural.greaterThan + (List/length Monster.Type area.monsters) + 0 + then let doer = + λ(m : Monster.Type) → + let hp = Natural/show m.hp + + let def = Natural/show m.armor + + let atk = toMD.roll m.damage + + in "* ${m.name} (${hp} HP, ${def} DEF, ${atk} ATK)" + + let showMonsters = + Prelude.Text.concatMapSep "\n" Monster.Type doer + + in '' + Has the following monsters out in the open: + + ${showMonsters area.monsters} + '' + else "" + + in '' + ### ${area.humanName} + + A ${area.kind} area. + + ${area.description} + + ${items} + + ${npcs} + + ${monsters} + '' diff --git a/types/toMD/bonus.dhall b/types/toMD/bonus.dhall new file mode 100644 index 0000000..0c4a04d --- /dev/null +++ b/types/toMD/bonus.dhall @@ -0,0 +1,48 @@ +let Bonus = ../Bonus.dhall + +let Stat = ../Stat.dhall + +let Species = ../Species.dhall + +let Roll = ../Roll.dhall + +let Prelude = ../../Prelude.dhall + +let toMD = + { stat = ./stat.dhall, species = ./species.dhall, roll = ./roll.dhall } + +in λ(bonus : Bonus.Type) → + let stat = merge { None = "", Some = toMD.stat } bonus.stat + + let amount = + merge + { None = "" + , Some = + λ(amount : Integer) → + if Prelude.Integer.greaterThan amount +0 + then " ${Integer/show amount} " + else " ${Integer/show amount} " + } + bonus.amount + + let area = + merge + { None = "", Some = λ(area : Text) → " when in ${area} " } + bonus.area + + let polymorph = + merge + { None = "" + , Some = + λ(species : Species) → " polymorph to ${toMD.species species}" + } + bonus.polymorph + + let condition = + merge + { None = "" + , Some = λ(roll : Roll.Type) → " if ${toMD.roll roll}" + } + bonus.when + + in "Grants${amount}${stat}${area}${polymorph}${condition}" diff --git a/types/toMD/campaign.dhall b/types/toMD/campaign.dhall new file mode 100644 index 0000000..23da552 --- /dev/null +++ b/types/toMD/campaign.dhall @@ -0,0 +1,45 @@ +let toMD = + { area = ./area.dhall + , monster = ./monster.dhall + , item = ./item.dhall + , winCondition = ./winCondition.dhall + } + +let Prelude = ../../Prelude.dhall + +let Area = ../Area.dhall + +let Campaign = ../Campaign.dhall + +let Monster = ../Monster.dhall + +let Item = ../Item.dhall + +in λ(camp : Campaign.Type) → + let areas = Prelude.Text.concatMapSep "\n" Area.Type toMD.area + + let monsters = Prelude.Text.concatMapSep "\n" Monster.Type toMD.monster + + let items = Prelude.Text.concatMapSep "\n" Item.Type toMD.item + + in '' + # ${camp.name} + + ${camp.description} + + ## Win Condition + + ${toMD.winCondition camp.winCondition} + + ## Areas + + ${areas camp.areas} + + ## Monsters + + ${monsters camp.monsters} + + ## Items + + ${items camp.items} + '' diff --git a/types/toMD/item.dhall b/types/toMD/item.dhall new file mode 100644 index 0000000..b230dc4 --- /dev/null +++ b/types/toMD/item.dhall @@ -0,0 +1,61 @@ +let toMD = { itemKind = ./itemKind.dhall, bonus = ./bonus.dhall } + +let Prelude = ../../Prelude.dhall + +let Item = ../Item.dhall + +let Bonus = ../Bonus.dhall + +in λ(item : Item.Type) → + let bonuses = + if Prelude.Natural.greaterThan + (List/length Bonus.Type item.bonuses) + 0 + then let doer = λ(bonus : Bonus.Type) → "* ${toMD.bonus bonus}" + + let showItems = Prelude.Text.concatMapSep "\n" Bonus.Type doer + + in '' + Grants the following bonuses: + + ${showItems item.bonuses} + '' + else "" + + let legendary = if item.legendary then "(legendary item)" else "" + + let charges = + merge + { None = "" + , Some = + λ(charges : Natural) → + '' + + Has a maximum of ${Natural/show charges} charges. + '' + } + item.charges + + let sellPrice = + merge + { None = "Unsellable" + , Some = + λ(price : Natural) → "Sells for ${Natural/show price} gold." + } + item.sellValue + + in '' + ### ${item.name} + + ${toMD.itemKind item.kind} ${legendary} ${charges} + + Weight: ${Natural/show item.weight} + + ${item.description} + + ${bonuses} + + Buy price: ${Natural/show item.cost} gold + + ${sellPrice} + '' diff --git a/types/toMD/itemKind.dhall b/types/toMD/itemKind.dhall new file mode 100644 index 0000000..e76b355 --- /dev/null +++ b/types/toMD/itemKind.dhall @@ -0,0 +1,14 @@ +let ItemKind = ../ItemKind.dhall + +let show = + λ(ik : ItemKind) → + merge + { Weapon = "Weapon" + , Armor = "Armor" + , Trinket = "Trinket" + , Gear = "Gear" + , Consumable = "Consumable" + } + ik + +in show diff --git a/types/toMD/monster.dhall b/types/toMD/monster.dhall new file mode 100644 index 0000000..c77350d --- /dev/null +++ b/types/toMD/monster.dhall @@ -0,0 +1,55 @@ +let toMD = { roll = ./roll.dhall, monsterItem = ./monsterItem.dhall } + +let Prelude = ../../Prelude.dhall + +let Monster = ../Monster.dhall + +let MonsterItem = ../MonsterItem.dhall + +let Item = ../Item.dhall + +in λ(monster : Monster.Type) → + let items = + if Prelude.Natural.greaterThan + (List/length MonsterItem.Type monster.items) + 0 + then let doer = + λ(item : MonsterItem.Type) → + "* ${toMD.monsterItem item}" + + let showItems = + Prelude.Text.concatMapSep "\n" MonsterItem.Type doer + + in '' + Has the following items: + ${showItems monster.items} + '' + else "" + + let drops = + if Prelude.Natural.greaterThan + (List/length Item.Type monster.drops) + 0 + then let doer = λ(item : Item.Type) → "* ${item.name}" + + let showItems = Prelude.Text.concatMapSep "\n" Item.Type doer + + in '' + Always drops the following items: + ${showItems monster.drops} + '' + else "" + + in '' + ### ${monster.name} + + ${Natural/show monster.hp} HP (${Natural/show monster.armor} armor) + + ${toMD.roll monster.damage} attack damage + + Grants ${Natural/show monster.exp} experience on defeat. + + ${items} + + ${drops} + '' diff --git a/types/toMD/monsterItem.dhall b/types/toMD/monsterItem.dhall new file mode 100644 index 0000000..b15d0b6 --- /dev/null +++ b/types/toMD/monsterItem.dhall @@ -0,0 +1,15 @@ +let toMD = { item = ./item.dhall, roll = ./roll.dhall } + +let MonsterItem = ../MonsterItem.dhall + +let Roll = ../Roll.dhall + +in λ(monsterItem : MonsterItem.Type) → + let roll = + merge + { None = "" + , Some = λ(dice : Roll.Type) → " drops if ${toMD.roll dice}" + } + monsterItem.dice + + in "${monsterItem.item.name}${roll}" diff --git a/types/toMD/npc.dhall b/types/toMD/npc.dhall new file mode 100644 index 0000000..f14f466 --- /dev/null +++ b/types/toMD/npc.dhall @@ -0,0 +1,50 @@ +let toMD = { species = ./species.dhall, item = ./item.dhall } + +let Prelude = ../../Prelude.dhall + +let NPC = ../NPC.dhall + +let Item = ../Item.dhall + +in λ(npc : NPC.Type) → + let items = + if Prelude.Natural.greaterThan + (List/length Item.Type npc.sellItems) + 0 + then let doer = + λ(i : Item.Type) → + "* ${i.name} (${Natural/show i.cost} gold)" + + let showItems = Prelude.Text.concatMapSep "\n" Item.Type doer + + in '' + Has the following items for sale: + + ${showItems npc.sellItems} + '' + else "" + + let dialogue = + if Prelude.Natural.greaterThan (List/length Text npc.dialogue) 0 + then let showDia = + Prelude.Text.concatMapSep + "\n" + Text + (λ(t : Text) → "* ${t}") + + in '' + Dialogue: + + ${showDia npc.dialogue} + '' + else "" + + in '' + #### ${npc.name} + + A ${toMD.species npc.species} ${npc.job}. + + ${items} + + ${dialogue} + '' diff --git a/types/toMD/roll.dhall b/types/toMD/roll.dhall new file mode 100644 index 0000000..226d31c --- /dev/null +++ b/types/toMD/roll.dhall @@ -0,0 +1,23 @@ +let Roll = ../Roll.dhall + +in λ(roll : Roll.Type) → + let diceCount = + if roll.level + then "user's level " + else merge { None = "", Some = Natural/show } roll.diceCount + + let plus = + merge + { None = "", Some = λ(plus : Natural) → "+${Natural/show plus}" } + roll.plus + + let minimum = + merge + { None = "" + , Some = + λ(minus : Natural) → + " is greater than or equal to ${Natural/show minus}" + } + roll.min + + in "${diceCount}d${Natural/show roll.diceSides}${plus}${minimum}" diff --git a/types/toMD/species.dhall b/types/toMD/species.dhall new file mode 100644 index 0000000..f0a35e9 --- /dev/null +++ b/types/toMD/species.dhall @@ -0,0 +1,10 @@ +let Species = ../Species.dhall + +in λ(species : Species) → + merge + { Human = "Human" + , Feline = "Feline" + , Shark = "Shark" + , Cetacean = "Cetacean" + } + species diff --git a/types/toMD/spell.dhall b/types/toMD/spell.dhall new file mode 100644 index 0000000..f35bcf7 --- /dev/null +++ b/types/toMD/spell.dhall @@ -0,0 +1,12 @@ +let toMD = { stat = ./stat.dhall, roll = ./roll.dhall } + +let Spell = ../Spell.dhall + +in λ(spell : Spell.Type) → + '' + ### ${spell.name} (${toMD.stat spell.stat}) + + ${spell.description} + + Deals ${toMD.roll spell.damage} + '' diff --git a/types/toMD/stat.dhall b/types/toMD/stat.dhall new file mode 100644 index 0000000..ba1129f --- /dev/null +++ b/types/toMD/stat.dhall @@ -0,0 +1,16 @@ +let Stat = ../Stat.dhall + +in λ(stat : Stat) → + merge + { STR = "STR" + , DEX = "DEX" + , CON = "CON" + , INT = "INT" + , WIS = "WIS" + , CHA = "CHA" + , ATK = "ATK" + , DEF = "DEF" + , RISK = "RISK" + , HP = "HP" + } + stat diff --git a/types/toMD/winCondition.dhall b/types/toMD/winCondition.dhall new file mode 100644 index 0000000..a0bfae7 --- /dev/null +++ b/types/toMD/winCondition.dhall @@ -0,0 +1,4 @@ +let WinCondition = ../WinCondition.dhall + +in λ(winCondition : WinCondition.Type) → + "Take the ${winCondition.item.name} to ${winCondition.area.humanName}"