Skip to content

Commit

Permalink
lost page stuff, tweaks, more book work
Browse files Browse the repository at this point in the history
  • Loading branch information
eerussianguy committed Oct 13, 2024
1 parent ff838b8 commit f7c7139
Show file tree
Hide file tree
Showing 16 changed files with 126 additions and 50 deletions.
9 changes: 6 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changes

- Fixes to zombified piglins
- Fix crash bugs with aqueducts
- Make soul clay more common
- Added Ancient Altars
- Added Lost Pages
- Added a sacrifice system, utilizing Lost Pages (found in chests) and Ancient Altars (crafted) to transform items into other items, at a cost. More recipes for this are TBD.
- Added Slimed Netherrack, an ore.
- Added a config for whether the portal-opening sacrifice works or not.
- Added some recipes for making Blackstone from Soot and overworld rocks.
2 changes: 1 addition & 1 deletion resources/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ class Rock(NamedTuple):
'beneath.screen.lost_page.cost': 'Cost',
'beneath.screen.lost_page.reward': 'Reward',
'beneath.screen.lost_page.punishment': 'Punishment',
'beneath.lost_page.stone_bricks': 'Any Stone Bricks',
'beneath.lost_page.cobble': 'Any Cobblestone',
'beneath.punishment': 'You have been given the punishment of... %s',
'beneath.enum.punishment.none': 'No punishment at all!',
'beneath.enum.punishment.levitation': 'Levitation!',
Expand Down
2 changes: 1 addition & 1 deletion resources/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ def generate(rm: ResourceManager):
lost_page(rm, 'cursed_hide', 'beneath:cursed_hide', 'tfc:large_raw_hide', [1], [1], ['none', 'levitation' 'drunkenness'])
lost_page(rm, 'cursed_hide2', 'beneath:cursed_hide', 'tfc:large_raw_hide', [2, 3], [2, 3], ['none', 'levitation' 'drunkenness'])
lost_page(rm, 'cursed_hide3', 'beneath:cursed_hide', 'tfc:large_raw_hide', [4, 5, 6], [4, 5, 6], ['none', 'levitation' 'drunkenness'])
lost_page(rm, 'blackstone', '#forge:cobblestone', 'minecraft:blackstone', [48, 64, 64, 64, 72, 78], [48, 52, 52, 64, 74], ['none', 'infestation'], ingredient_translation='beneath.lost_page.stone_bricks')
lost_page(rm, 'blackstone', '#forge:cobblestone', 'minecraft:blackstone', [48, 64, 64, 64, 72, 78], [48, 52, 52, 64, 74], ['none', 'infestation'], ingredient_translation='beneath.lost_page.cobble')

### DAMAGE TYPES ###
damage_type(rm, 'sulfur')
Expand Down
40 changes: 30 additions & 10 deletions resources/generate_book.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,15 @@ def make_book(rm: ResourceManager, i18n: I18n, local_instance: bool = False, rev
)),
entry('ores_and_minerals', 'Ores and Minerals', 'beneath:ore/normal_nether_gold', pages=(
text('Beneath the overworld, you will still find ore veins to exploit. It is important to note that $(thing)Netherrack$() does not collapse, like raw stone would. However, $(thing)Blackstone$(), $(thing)Nether Bricks$(), $(thing)Cobblerack$() and miscellaneous other blocks do. Prospecting will still work Beneath the overworld.'),
block_spotlight('Nether Gold', 'Nether Gold replaces netherrack, and is common. Beneath lava, there is more gold, and richer.', 'beneath:ore/normal_nether_gold'),
block_spotlight('Cursecoal', 'Cursecoal is a powerful fuel. It replaces netherrack above level 80.', 'beneath:ore/nether_cursecoal'),
block_spotlight('Sylvite', 'Sylvite replaces basalt at any level.', 'beneath:ore/blackstone_sylvite'),
block_spotlight('Nether Quartz', 'Nether quartz replaces netherrack at all levels, and is common.', 'minecraft:nether_quartz_ore'),
empty_last_page()
block_spotlight('Nether Gold', 'Nether Gold replaces netherrack, and is common. Beneath lava, there is more gold, and richer.', 'beneath:ore/normal_nether_gold').anchor('nether_gold'),
block_spotlight('Cursecoal', 'Cursecoal is a powerful $(l:beneath/hellforge)fuel$(). It replaces netherrack above level 80.', 'beneath:ore/nether_cursecoal').anchor('cursecoal'),
block_spotlight('Sylvite', 'Sylvite replaces basalt at any level.', 'beneath:ore/blackstone_sylvite').anchor('sylvite'),
block_spotlight('Nether Quartz', 'Nether Quartz replaces netherrack at all levels, and is common.', 'minecraft:nether_quartz_ore').anchor('quartz'),
block_spotlight('Slimed Netherrack', 'Slimed Netherrack occasionally replaces Netherrack above lava level.', 'beneath:ore/slimed_netherrack').anchor('slimed_netherrack'),
)),
entry('curious_blocks', 'Curious Blocks', 'beneath:soul_clay', pages=(
non_text_first_page(),
block_spotlight('Soul Clay', 'Soul clay may be discovered in soul sand valleys. It is a source of regular clay.', 'beneath:soul_clay'),
block_spotlight('Soul Clay', 'Soul Clay may be discovered in soul sand valleys. It is a source of regular clay.', 'beneath:soul_clay'),
block_spotlight('Sulfur', 'Sulfur can be broken with a shovel. Be careful, though: iron-containing items (including steel) explode in contact with sulfur!', 'beneath:sulfur'),
block_spotlight('Thatch', 'Cutting grass will yield you warped or crimson straw. This can be made into thatch, the normal way.', 'beneath:warped_thatch'),
crafting('beneath:crafting/blackstone_aqueduct', text_contents='The blackstone aqueduct allows lava to be conducted at any distance.'),
Expand All @@ -105,25 +105,45 @@ def make_book(rm: ResourceManager, i18n: I18n, local_instance: bool = False, rev
entry('burpflower', 'Burpflowers', 'beneath:burpflower', pages=(
text('The $(thing)Burpflower$() has the power to put a helpful curse on other blocks. It can be found all around the Beneath. The Burpflower has a facing direction, which is the direction that it performs the action in. Behind it, place a $(thing)Sulfur$() block to charge it.'),
text('Soon, if there is sulfur, the burpflower will charge, and have a yellow sulfuric flower. It then soon will make a burping sound and expel sulfuric smoke. This smoke has the power to change blocks into other blocks.'),
text('First, Nether Bricks can be changed into $(thing)Hellbricks$(). Charcoal piles can be transformed into $(thing)Cursecoal Piles$(). Further, $(thing)Decay$() can be added to $(thing)Soul Farmland$().'),
text('First, Nether Bricks can be changed into $(thing)Hellbricks$(). Charcoal piles can be transformed into $(l:beneath/ores_and_minerals#cursecoal)Cursecoal Piles$(). Further, $(thing)Decay$() can be added to $(thing)Soul Farmland$().'),
empty_last_page(),
)),
entry('unposter', 'The Unposter', 'beneath:unposter', pages=(
text('The $(thing)Unposter$() is used to grow mushrooms. Mushrooms, ghast tears, and nether crops can be deposited into it. When it is by a mushroom, it will consume the items inside to multiply that mushroom in the area around it, once a day.'),
crafting('beneath:crafting/unposter'),
)),
entry('hellforge', 'The Hellforge', 'beneath:cursecoal', pages=(
text('The $(thing)Hellforge$() is a gratuitously large forge, with high capacity for fuel, products, and heating. It is constructed from Hellbricks, Cursecoal, and Blackstone Aqueducts.'),
text('The $(thing)Hellforge$() is a gratuitously large forge, with high capacity for fuel, products, and heating. It is constructed from Hellbricks, $(l:beneath/ores_and_minerals#cursecoal)Cursecoal$(), and Blackstone Aqueducts.'),
multiblock('Hellforge', '', pattern=(
('ZXXXZ', 'XYYYX', 'XY0YX', 'XYYYX', 'ZXXXZ'),
(' ', ' XXX ', ' XXX ', ' XXX ', ' ')
), mapping={'Z': 'beneath:blackstone_aqueduct[fluid=lava]', 'Y': 'beneath:hellforge_side', '0': 'beneath:hellforge', 'X': 'beneath:hellbricks',}),
text('The Hellforge requires lava to flow in aqueducts in its four corners, as well as 21 hellbricks. The 3x3 center must be filled with Cursecoal piles, which then may be lit to start the forge.'),
text('The Hellforge requires lava to flow in aqueducts in its four corners, as well as 21 hellbricks. The 3x3 center must be filled with $(l:beneath/ores_and_minerals#cursecoal)Cursecoal$() piles, which then may be lit to start the forge.'),
text('The item slots of the Hellforge may contain fuel, or things to be smelted; there is no distinction. Be careful what you put in! There are also slots for melting things, as with the charcoal forge. The lava meter on the screen indicates temperature (as well as the visual movement of its items in world).')
)),
entry('how_to_go_beneath', 'How To Go Beneath', 'minecraft:flint_and_steel', pages=(
text('The sacrifice needed to go Beneath is great. First, hold a $(thing)Scythe$(). Find a Pig, Goat, or Sheep. Then, obtain seven offerings. Valid offerings are skulls, anvils, placed gold, pig iron, or black steel ingots, and gold or black steel plated blocks.'),
text('Kill the animal within a 5 block radius of the offerings. A portal will be created, but be warned! The Beneath will temporarily invade your world, wreaking havoc and causing confusion.')
text('Kill the animal within a 5 block radius of the offerings. A portal will be created, but be warned! The Beneath will temporarily invade your world, wreaking havoc and causing confusion.'),
text('For the more common types of sacrifices, that do not open portals to other realms, see the chapter on $(l:beneath/ancient_altar)Ancient Altars$().'),
empty_last_page(),
)),
entry('ancient_altar', 'Ancient Altars', 'beneath:lost_page', pages=(
text('There are more routine types of $(thing)Sacrifices$() that can be done when you are Beneath. These require the obtaining of $(thing)Lost Pages$(), fragments of forbidden knowledge left behind. These are found in structures like the $(thing)Fortress$(), $(thing)Ruined Portal$(), and $(thing)Bastion remnant$().'),
crafting('beneath:crafting/ancient_altar', text_contents='The $(thing)Ancient Altar$() can hold and display up to a stack of any item. $(item)$(k:key.use)$() is used to insert or swap items in the altar.'),
page_break(),
text('If $(thing)Blackstone$() is not readily available for crafting an Ancient Altar, it may be crafted from $(thing)Soot$() and regular stone.'),
crafting('beneath:crafting/blackstone_from_soot', 'beneath:crafting/blackstone_bricks_from_soot'),
page_break(),
text('Most sacrifices require a cut $(thing)Gem$() of any kind to activate, and consume the gem upon completion. The most basic sacrifice is that of reading the information on the Lost Page. To do this, place a blank page on the altar and $(item)$(k:key.use)$() with the gem. To open a page and read its contents, hold it and press $(item)$(k:key.use)$().'),
text('Lost Pages have three items of interest: their $(thing)Cost$(), $(thing)Reward$(), and $(thing)Punishment$(). These values are fixed when the page is activated, but are randomized from a fixed set of values otherwise. This means that two pages which perform the same cost and reward may have different levels of utility.'),
text('The $(thing)Cost$() of a sacrifice is a single ingredient, much like crafting, with an amount. This cost is to be placed on other ancient altars, placed on the same level within 5 blocks of the center altar, on which the lost page goes. Stacks containing items in excess of the total cost of the sacrifice may still be consumed, so be precise!'),
text('The $(thing)Reward$() of a sacrifice is obtained by $(item)$(k:key.use)$() on the altar with the page, if the cost is present. The reward is spawned as items above the altar. $(thing)Rewards are reduced by half$() if performed in the Overworld.'),
text('The $(thing)Punishment$() of a sacrifice can range from \'No Punishment\', to some extra items, to an attack from some dangerous monsters. The punishment is always known in advance, as it is written on the page. There is no detailed list of punishments, but feel free to experiment (also, it is not hard to figure out what the punishments are, if you know where to look).'),
text('The list of sacrifices is detailed in the $(l:beneath/list_of_sacrifices)List of Sacrifices$() chapter for easy reading.'),
)),
entry('list_of_sacrifices', 'List of Sacrifices', 'tfc:gem/diamond', pages=(
text('This entry details the possible costs and rewards for the different $(l:beneath/ancient_altar)Sacrifices$() one can make in Beneath.'),
text('$(li)Raw Slime$() -> Rich Garnierite$()$(li)Cursed Hide -> Large Raw Hide$()$(li)Cobblestone -> Blackstone$()'),
)),
))

Expand Down
Loading

0 comments on commit f7c7139

Please sign in to comment.