Compare commits

...

5 Commits

Author SHA1 Message Date
isaiah658 3d2e5db511 Add new NPC settings 2022-08-14 23:02:26 +02:00
isaiah658 f27e65c6d5 Use max nearby npcs setting 2022-08-14 22:55:34 +02:00
isaiah658 9ed97c9e4b Adjust code comment 2022-08-14 22:52:48 +02:00
isaiah658 f7dba65c21 Add new NPC village settings 2022-08-14 22:52:21 +02:00
isaiah658 e1900a0d7f Reword several pages 2022-08-14 20:20:29 +02:00
5 changed files with 27 additions and 17 deletions

View File

@ -111,11 +111,11 @@ guide_book.basics.navigation = fs.image_button(0, 0.5, 10, 0.5, "zoonami_blank",
guide_book.basics.page_1 = "textarea[0.5,1.25;9,7;;;Welcome to Zoonami! This chapter covers everything players need to know to start playing. This includes using the backpack, choosing a starter monster, healing monsters, and battling wild monsters.]"
guide_book.basics.page_2 = "textarea[0.5,1.25;9,7;;;All new players are given a Zoonami Backpack. While holding this item, right click to open up the backpack menu. This menu has several pages.\n\nThe monsters page is used for viewing and managing monsters in your party. The items page has item slots to hold items to be used in battle. The settings page has options for changing formspec sizes, music volume, and more. Lastly, the player stats page lists different stats about you.]"
guide_book.basics.page_3 = "textarea[0.5,1.25;9,7;;;In order to choose a starter monster, navigate to the monsters page in the backpack menu. There are three monsters to choose from. This is a one time choice, however, you can always find the starter monsters roaming around in the wild.]"
guide_book.basics.page_4 = "textarea[0.5,1.25;9,7;;;To heal monsters in your party, you'll need to right click on a Zoonami healer. All new players are given one healer. Be very careful! A healer drops no items when broken. Choose wisely before placing a healer down. If it's necessary to remove a healer, it can only be broken with a mid-tier or higher pickaxe.]"
guide_book.basics.page_4 = "textarea[0.5,1.25;9,7;;;To heal monsters in your party, you'll need to right click on a Zoonami healer. Be very careful! A healer drops no items when broken. Choose wisely before placing a healer down. If it's necessary to remove a healer, it can only be broken with a mid-tier or higher pickaxe.]"
guide_book.basics.page_5 = "textarea[0.5,1.25;9,7;;;To craft a healer, you will need to find crystals underground. The inside of crystals are hollow and contain a crystal fragment. Before the fragment can be broken, the light puzzle on the floor of the crystal must be solved.\n\nAll lights need to be turned off. Right clicking on any light, both on or off, inverts the light and all adjacent lights. Once the lights are off, the crystal fragment can be collected. If it still can't be collected, check for other nearby crystals and solve those puzzles as well.]"
guide_book.basics.page_6 = "textarea[0.5,1.25;9,7;;;While underground, you may also stumble upon excavation sites. Excavation sites consist of a core node surrounded by debris nodes. Debris nodes look similar to fossils. You need to mine around the debris nodes so they only have air or a debris node above them. After that, mine the core node.\n\nIf done correctly, you'll have a good chance of receiving random loot. If done incorrectly, the entire excavation site is destroyed.]"
guide_book.basics.page_7 = "textarea[0.5,1.25;9,7;;;Wild monsters can be found roaming around almost anywhere. Each wild monster has different spawning conditions such as rarity, nodes that it spawns on, time of day, light level, and height level. Right clicking on a wild monster will start a battle. You must have a monster with at least one health to start a battle. When a battle starts, the wild monster will vanish and appear in the battle formspec.]"
guide_book.basics.page_8 = "textarea[0.5,1.25;9,7;;;The battle formspec consists of four menus. The battle menu is for selecting a move to use. The party menu is for viewing and switching to other monsters in your party. The items menu is for using items in battle. The skip button skips your turn in case your monster needs to recover energy or if you predict your opponent will use a defense move.]"
guide_book.basics.page_8 = "textarea[0.5,1.25;9,7;;;The battle formspec consists of four menus. The battle menu is for selecting a move to use. The party menu is for viewing and switching to other monsters in your party. The items menu is for using items in battle. The skip button skips your turn in case your monster needs to recover energy.]"
guide_book.basics.page_9 = "textarea[0.5,1.25;9,7;;;During wild monster battles, exiting the battle formspec before a battle finishes is treated as running away. This can be useful if a wild monster is too strong to battle. However, during a PVP battle, exiting the battle formspec counts as a forfeit. PVP wins, loses, and forfeits are saved under player stats. These stats are visible to other players and may affect if another player wants to battle you. Additionally, other penalties may be introduced in future updates.]"
guide_book.basics.page_10 = "textarea[0.5,1.25;9,7;;;Congratulations! You have finished the basics chapter and can get started playing Zoonami! It is recommended to read other chapters as you progress through the game to avoid information overload.]"
@ -127,9 +127,9 @@ guide_book.taming.navigation = fs.image_button(0, 0.5, 10, 0.5, "zoonami_blank",
fs.button(1, 9.2, 0.8, 0.8, "back", "")..
fs.button(4, 9.2, 2, 0.8, "index", "Index")..
fs.button(8.2, 9.2, 0.8, 0.8, "next", "")
guide_book.taming.page_1 = "textarea[0.5,1.25;9,7;;;Taming wild monsters is an essential part of Zoonami. To tame monsters, you will first need to collect berries. Berry bushes can be found growing in the wild and are the primary way to collect berries. Right clicking on a berry bush that has berries will pick the berries. Breaking a berry bush will drop it as an item allowing it to be planted somewhere else. Another option for getting berries is to defeat wild monsters in battle. Most monsters have a chance of dropping a berry as reward. A third option is to purchase berries from vending machines.]"
guide_book.taming.page_1 = "textarea[0.5,1.25;9,7;;;Taming wild monsters is an essential part of Zoonami. To tame monsters, you need to collect berries. Berry bushes are the primary way to collect berries. Right click on a berry bush that has berries to pick the berries. Breaking a berry bush will drop it as an item allowing it to be planted somewhere else. Another option for getting berries is to defeat wild monsters. Most monsters have a chance of dropping berries as rewards. A third option is to purchase berries from vending machines or merchants.]"
guide_book.taming.page_2 = "textarea[0.5,1.25;9,7;;;After you have collected at least four berries of the same color, place them in a 2x2 crafting grid to turn them into basic jelly jars. A 2x2 of basic jelly jars turns into improved jelly jars. A 2x2 of improved jelly jars turns into advanced jelly jars. Higher quality jelly has an increased chance of taming a monster.]"
guide_book.taming.page_3 = "textarea[0.5,1.25;9,7;;;Before you start battling, place your jelly jars in the items menu in your backpack. Only items in these item slots are avalible to use during battle. During a battle, open the items menu to use the jelly. Lowering the monsters health and using a jelly that the monster prefers increases the chance of taming them.]"
guide_book.taming.page_3 = "textarea[0.5,1.25;9,7;;;Before you start battling, place your jelly jars in the items menu in your backpack. Only items in these item slots are avalible to use during battle.\n\nDuring a battle, open the items menu to use the jelly. Lowering the monsters health and using a jelly that the monster prefers increases the chance of taming them.]"
guide_book.taming.page_4 = "textarea[0.5,1.25;9,7;;;Aquatic, avian, and spirit monsters prefer blue jelly.\n\nBeast, warrior, mutant, and fire monsters prefer red jelly.\n\nRodent, robotic, and rock monsters prefer orange jelly.\n\nPlant, insect, and reptile monsters prefer green jelly.]"
guide_book.taming.page_5 = "textarea[0.5,1.25;9,7;;;When a monster is tamed, the monster is placed in your party or folder 1 box 1 in your computer. If both locations are full, you will not be able to tame monsters.]"
@ -141,7 +141,7 @@ guide_book.monster_types.navigation = fs.image_button(0, 0.5, 10, 0.5, "zoonami_
fs.button(1, 9.2, 0.8, 0.8, "back", "")..
fs.button(4, 9.2, 2, 0.8, "index", "Index")..
fs.button(8.2, 9.2, 0.8, 0.8, "next", "")
guide_book.monster_types.page_1 = "textarea[0.5,1.25;9,7;;;Monsters and most monster moves have 13 different types. Each type has strengths and weaknesses against other types. For example, if a monster uses an aquatic move against a fire monster, the move will do increased damage. Additionally, if the monster attacking uses a move that matches it's own type, such as an aquatic monster using an aquatic move, it will also do increased damage. The 13 types are plant, rodent, beast, warrior, insect, aquatic, robotic, reptile, avian, spirit, mutant, rock, and fire. The next page has a chart that shows all the strengths and weaknesses.]"
guide_book.monster_types.page_1 = "textarea[0.5,1.25;9,7;;;Monsters and most monster moves have 13 different types. Each type has strengths and weaknesses against other types. For example, an aquatic move against a fire monster will do increased damage. Additionally, if the monster attacking uses a move that matches it's own type, such as an aquatic monster using an aquatic move, it will also do increased damage. The 13 types are plant, rodent, beast, warrior, insect, aquatic, robotic, reptile, avian, spirit, mutant, rock, and fire. The next page has a chart that shows all the strengths and weaknesses.]"
guide_book.monster_types.page_2 = fs.image(0.85, 0.5, 8, 8, "zoonami_type_chart.png")
-- Move Types
@ -155,7 +155,7 @@ guide_book.move_types.navigation = fs.image_button(0, 0.5, 10, 0.5, "zoonami_bla
guide_book.move_types.page_1 = "textarea[0.5,1.25;9,7;;;Not all moves that monsters learn are the same. Moves are divided into categories. Each category defines in general what a move does such as attacking, recovering, etc.]"
guide_book.move_types.page_2 = "textarea[0.5,1.25;9,7;;;Basic moves are the simplest form of attacking.\n\nThe energy value is the cost to use the move. The attack value is a percentage that is used when determining how much damage is dealt. The move type determines the strength and weakness against monsters. Read the \"Monster Types\" section in the guide book to learn more about types.]"
guide_book.move_types.page_3 = "textarea[0.5,1.25;9,7;;;Static moves are unique in that they always deal a set amount of damage.\n\nThe energy value is the cost to use the move. The attack value is a percentage of the opponent's max health that will be dealt as damage. The damage is rounded up to the nearest integer.\n\nFor example, a static move with an attack value of 20% against an enemy with 100 max health will always deal 20 damage.]"
guide_book.move_types.page_4 = "textarea[0.5,1.25;9,7;;;Additionally, all moves have a priority value. This priority value is used when determining which monster attacks first. When monsters attack, the first value checked is the move priority. The move with the highest priority always goes first. If both moves have the same priority, the monster with the highest agility goes first. The both monsters have the same agility, one of the monsters is randomly selected to go first.]"
guide_book.move_types.page_4 = "textarea[0.5,1.25;9,7;;;Additionally, all moves have a priority value. This priority value is used when determining which monster attacks first.\n\nWhen monsters attack, the first value checked is the move priority. The move with the highest priority always goes first. If both moves have the same priority, the monster with the highest agility goes first. If both monsters have the same agility, one of the monsters is randomly selected to go first.]"
-- Training
guide_book.training = {}
@ -204,7 +204,7 @@ guide_book.trading.page_1 = "textarea[0.5,1.25;9,7;;;For many, trying to tame ev
guide_book.trading.page_2 = "textarea[0.5,1.25;9,7;;;A trading machine allows trading monsters with other players. Unlike most other Zoonami machines, the trading machine can be picked up after being placed as long as no one is using it.\n\nTo begin, both players will need to right click on the same trading machine.]"
guide_book.trading.page_3 = "textarea[0.5,1.25;9,7;;;The trading interface consists of two sides. Players will always see themselves on the left side. The person they are trading with will always appear on the right side.\n\nPlayers will see a list of monsters in their party. When a player selects a monster, both players can see the stats of the monster. If you want to change the monster you selected, click the cancel button.]"
guide_book.trading.page_4 = "textarea[0.5,1.25;9,7;;;After both players have selected a monster, the trade button is now active. When one player clicks the trade button, both players can see that the player's status says ready.\n\nOnce the second player clicks trade, the trade will immediately take place and the interface will close. If either player clicks cancel, the ready status is removed.]"
guide_book.trading.page_5 = "textarea[0.5,1.25;9,7;;;One thing to note with trading is that starter monsters can't be traded. If you try to select a starter monster, you will instead see a message that says it can't be traded.\n\nThat's everything you need to know to get started with trading. Trading can be a great way for players to work together. Just make sure to double check both monsters before clicking the trade button.]"
guide_book.trading.page_5 = "textarea[0.5,1.25;9,7;;;One thing to note with trading is that starter monsters can't be traded. If you try to select a starter monster, you will instead see a message that says it can't be traded.\n\nThat's everything you need to know to get started with trading. Trading can be a great way for players to work together. Just make sure to double check both monsters are correct before clicking the trade button.]"
-- Journals
guide_book.journals = {}

View File

@ -7,10 +7,12 @@ local group = dofile(mod_path .. "/lua/group.lua")
-- Mob settings
local settings = minetest.settings
local prepopulate_world = settings:get_bool("zoonami_prepopulate_world") ~= false
local prepopulate_world_multiplier = tonumber(settings:get("zoonami_prepopulate_world_multiplier") or 1)
local generate_villages = settings:get_bool("zoonami_generate_villages") ~= false
local village_multiplier = tonumber(settings:get("zoonami_village_multiplier") or 1)
local prepopulate_villages = settings:get_bool("zoonami_prepopulate_villages") ~= false
local prepopulate_villages_multiplier = tonumber(settings:get("zoonami_prepopulate_villages_multiplier") or 1)
local prepopulate_world = settings:get_bool("zoonami_prepopulate_world") ~= false
local prepopulate_world_multiplier = tonumber(settings:get("zoonami_prepopulate_world_multiplier") or 1)
local generate_berry_bushes = settings:get_bool("zoonami_generate_berry_bushes") ~= false
local generate_flowers = settings:get_bool("zoonami_generate_flowers") ~= false
local mg_name = minetest.get_mapgen_setting("mg_name")
@ -41,6 +43,7 @@ end
village_fill_ratio = generate_villages and village_fill_ratio or 0
bushes_fill_ratio = generate_berry_bushes and bushes_fill_ratio or 0
flowers_fill_ratio = generate_flowers and flowers_fill_ratio or 0
prepopulate_villages_multiplier = prepopulate_villages and prepopulate_villages_multiplier or 0
prepopulate_world_multiplier = prepopulate_world and prepopulate_world_multiplier or 0
-- Berry Bushes
@ -270,7 +273,7 @@ minetest.register_decoration({
deco_type = "simple",
place_on = {group.cracky, group.crumbly, group.sand, group.snowy, group.soil, group.stone},
sidelen = 16,
fill_ratio = 0.02,
fill_ratio = 0.02 * prepopulate_villages_multiplier,
y_max = 20,
y_min = 3,
decoration = "zoonami:npc_mapgen_spawn",

View File

@ -135,7 +135,7 @@ for k, v in pairs(npc_stats.npc) do
end
end
-- Spawn mobs in the wild near players
-- Spawn mobs in the wild and in villages near players
if mobs_spawn_around_players then
minetest.register_globalstep(mobs_api.mob.spawn_step)
end

View File

@ -350,6 +350,7 @@ end
-- Mob spawn step settings
local spawn_in_protected_areas = settings:get_bool("zoonami_spawn_in_protected_areas") ~= false
local max_nearby_npcs = tonumber(settings:get("zoonami_max_nearby_npcs") or 0)
local max_nearby_mobs = tonumber(settings:get("zoonami_max_nearby_mobs") or 2)
local spawn_interval = tonumber(settings:get("zoonami_spawn_interval") or 8)
local spawn_timer = spawn_interval
@ -385,7 +386,7 @@ function mobs_api.mob.spawn_step(dtime)
if luaent and luaent.name:find('zoonami:') then
if not npc_spawn or npc_spawn and luaent.type == "npc" then
nearby_mobs = nearby_mobs + 1
if npc_spawn and nearby_mobs > 0 or not npc_spawn and nearby_mobs > max_nearby_mobs then
if npc_spawn and nearby_mobs > max_nearby_npcs or not npc_spawn and nearby_mobs > max_nearby_mobs then
return
end
end

View File

@ -13,22 +13,28 @@ zoonami_prepopulate_villages (Prepopulate villages) bool true
# If true, monsters and NPCs spawn in the wild during mapgen.
zoonami_prepopulate_world (Prepopulate world) bool true
# Controls amount of mobs to spawn during mapgen.
# Controls the amount of NPCs that spawn in villages during mapgen.
zoonami_prepopulate_villages_multiplier (Prepopulate villages multiplier) float 1.0
# Controls the amount of monsters and NPCs that spawn in the wild during mapgen.
zoonami_prepopulate_world_multiplier (Prepopulate world multiplier) float 1.0
# Controls amount of villages to spawn during mapgen.
# Controls the amount of villages that generate during mapgen.
zoonami_village_multiplier (Village multiplier) float 1.0
# If true, monsters and NPCs continue to spawn around players on an interval.
# If true, monsters and NPCs will spawn in the wild and in villages around players on an interval.
zoonami_mobs_spawn_around_players (Mobs spawn around players) bool true
# If true, monsters and NPCs that spawn around players can spawn in player protected areas.
# If true, monsters and NPCs that spawn in the wild and in villages around players can spawn in player protected areas.
zoonami_spawn_in_protected_areas (Mobs can spawn in protected areas) bool false
# Number of seconds between attempting to spawn monsters and NPCs around players.
zoonami_spawn_interval (Spawning interval around players) float 8.0
# Maximum nearby mobs when monsters and NPCs spawn around players.
# Maximum nearby NPCs when NPCs spawn in villages around players.
zoonami_max_nearby_npcs (Max nearby NPCs when spawning) int 0
# Maximum nearby mobs when monsters and NPCs spawn in the wild around players.
zoonami_max_nearby_mobs (Max nearby mobs when spawning) int 2
# If true, monsters and NPCs roam around.