diff --git a/CHANGELOG.md b/CHANGELOG.md index 34fdd89..a201b6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Jul 18th - **STILL UNDERDEVELOPMENT** 2024] Major Update: The Unnamed Update +## [Jul 18th - **STILL UNDER DEVELOPMENT** 2024] Update: The Unnamed Update This update contains breaking changes! @@ -22,6 +22,9 @@ This update contains breaking changes! - Added wind warrior boss battle - Added windballs - Added ocean ruins +- Added necromancer boss battle +- Remove light's ability to change the time +- PyuTest now has an offical name: Nodelands! ## [Jul 17th 2024] Unnamed Minor Update @@ -83,12 +86,12 @@ This update contains breaking changes! - Added Rubies - Granite and andesite will spawn underground as large blobs - Added different types of ore clusters -- Change classification of a "major" update +- Change classification of a "major" update ## [Jul 10th 2024] Unnamed Minor Update - Add Unified Inventory categories -- Fixed ocean biomes messing up caves +- Fixed ocean biomes messing up caves ## [Jul 9th 2024] Unnamed Minor Update @@ -293,7 +296,7 @@ Now that I think of it, this wasn't much of an "adventure" update.. - Added Griefer's Dream Lootbox - Added Liquid Sources Lootbox - Added Lighting Lootbox -- Lootboxes spawn across various biomes +- Lootboxes spawn across various biomes - Revamped Bomb ## [Jun 14th 2024] Update: Items and Utilites Update @@ -352,7 +355,7 @@ Now that I think of it, this wasn't much of an "adventure" update.. ## [Jun 7-8 2024] Initial Creation -- Added Grass, Dirt, Stone, Light, Torch, Sponge, Glass, Flower (Now called Rose), Iron +- Added Grass, Dirt, Stone, Light, Torch, Sponge, Glass, Flower (Now called Rose), Iron - Added Block Sounds - Added Water - Added Sticks and Pickaxe diff --git a/README.md b/README.md index e364033..03a61c4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PyuTest +# Nodelands (Formerly PyuTest) Pyu's Minetest Game @@ -29,4 +29,4 @@ A lot of the games item textures are modeled after Minecraft's (For example the ## License Project source code is licensed under the GNU LGPL License. -Project textures, sounds, and models are licensed under the CC BY 4.0 License. +Project textures, sounds, and models are licensed under the CC BY 4.0 License. diff --git a/game.conf b/game.conf index e4887b9..aa0aea8 100644 --- a/game.conf +++ b/game.conf @@ -1,4 +1,4 @@ -title = PyuTest +title = Nodelands description = Pyu's Minetest Game disallowed_mapgens = v6 min_minetest_version = 5.8 diff --git a/mods/pyutest/README.md b/mods/pyutest/README.md new file mode 100644 index 0000000..e69de29 diff --git a/mods/pyutest/pyutest_cmds/README.md b/mods/pyutest/pyutest_cmds/README.md index c6a1a56..68dcdc7 100644 --- a/mods/pyutest/pyutest_cmds/README.md +++ b/mods/pyutest/pyutest_cmds/README.md @@ -1,3 +1,3 @@ # pyutest_cmds -Chat Commands for PyuTest +Chat Commands for Nodelands diff --git a/mods/pyutest/pyutest_core/blocks.lua b/mods/pyutest/pyutest_core/blocks.lua index 8001cca..baccf80 100644 --- a/mods/pyutest/pyutest_core/blocks.lua +++ b/mods/pyutest/pyutest_core/blocks.lua @@ -307,14 +307,7 @@ PyuTestCore.make_node("pyutest_core:light", "Light", { walkable = false, paramtype = "light", sunlight_propagates = true, - light_source = minetest.LIGHT_MAX, - on_rightclick = function () - if minetest.get_timeofday() >= 0.5 then - minetest.set_timeofday(0) - else - minetest.set_timeofday(0.5) - end - end + light_source = minetest.LIGHT_MAX }) PyuTestCore.make_node("pyutest_core:torch", "Torch", { diff --git a/mods/pyutest/pyutest_core/combat.lua b/mods/pyutest/pyutest_core/combat.lua index 3eb6b87..4b0a6b5 100644 --- a/mods/pyutest/pyutest_core/combat.lua +++ b/mods/pyutest/pyutest_core/combat.lua @@ -1,4 +1,4 @@ -PyuTestCore.make_sword = function (nsname, desc, texture, damage, durability) +PyuTestCore.make_sword = function (nsname, desc, texture, damage, durability, atkspeed) PyuTestCore.make_tool(nsname, desc, {}, texture, { stack_max = 1, tool_capabilities = { @@ -8,12 +8,13 @@ PyuTestCore.make_sword = function (nsname, desc, texture, damage, durability) } }, punch_attack_uses = durability, - damage_groups = {fleshy = damage} + damage_groups = {fleshy = damage}, + full_punch_interval = atkspeed or 1 } }) end -PyuTestCore.make_sword("pyutest_core:wooden_sword", "Wooden Sword", "wooden-sword.png", 4, 200) -PyuTestCore.make_sword("pyutest_core:stone_sword", "Stone Sword", "stone-sword.png", 5, 450) -PyuTestCore.make_sword("pyutest_core:iron_sword", "Iron Sword", "iron-sword.png", 7, 750) -PyuTestCore.make_sword("pyutest_core:diamond_sword", "Diamond Sword", "diamond-sword.png", 12, 1200) +PyuTestCore.make_sword("pyutest_core:wooden_sword", "Wooden Sword", "wooden-sword.png", 4, 200, 1.8) +PyuTestCore.make_sword("pyutest_core:stone_sword", "Stone Sword", "stone-sword.png", 5, 450, 1.5) +PyuTestCore.make_sword("pyutest_core:iron_sword", "Iron Sword", "iron-sword.png", 7, 750, 1.2) +PyuTestCore.make_sword("pyutest_core:diamond_sword", "Diamond Sword", "diamond-sword.png", 12, 1200, 0.8) diff --git a/mods/pyutest/pyutest_core/flowers.lua b/mods/pyutest/pyutest_core/flowers.lua index a5ecc98..4369d7a 100644 --- a/mods/pyutest/pyutest_core/flowers.lua +++ b/mods/pyutest/pyutest_core/flowers.lua @@ -79,7 +79,7 @@ PyuTestCore.make_node("pyutest_core:vines", "Vines", { inventory_image = "vines.png" }) -PyuTestCore.make_flower("pyutest_core:kelp", "Kelp", "kelp.png", "pyutest_core:green_dye", true, "plantlike_rooted", { +PyuTestCore.make_flower("pyutest_core:kelp", "Kelp", "kelp.png", "pyutest_core:green_dye", false, "plantlike_rooted", { paramtype2 = "leveled", place_param2 = 128, wield_image = "kelp.png", diff --git a/mods/pyutest/pyutest_core/leaves.lua b/mods/pyutest/pyutest_core/leaves.lua index ae89efb..198983d 100644 --- a/mods/pyutest/pyutest_core/leaves.lua +++ b/mods/pyutest/pyutest_core/leaves.lua @@ -9,7 +9,7 @@ PyuTestCore.make_leaves = function (id, desc, tiles) is_ground_content = false }) - local leaves_id = id ~= nil and id .. "_leaves_block" or "pyutest_core:leaves_block" + local leaves_id = _id.."_block" minetest.override_item(leaves_id, { drop = { max_items = 1, diff --git a/mods/pyutest/pyutest_core/magic.lua b/mods/pyutest/pyutest_core/magic.lua index ff23b22..00b7c31 100644 --- a/mods/pyutest/pyutest_core/magic.lua +++ b/mods/pyutest/pyutest_core/magic.lua @@ -113,7 +113,7 @@ minetest.register_craft({ } }) -PyuTestCore.make_sword("pyutest_core:enchanted_sword", "Enchanted Sword", "enchanted-sword.png", 15, 3600) +PyuTestCore.make_sword("pyutest_core:enchanted_sword", "Enchanted Sword", "enchanted-sword.png", 15, 3600, 0.6) minetest.register_craft({ diff --git a/mods/pyutest/pyutest_core/player.lua b/mods/pyutest/pyutest_core/player.lua index 142ea0e..9cc67af 100644 --- a/mods/pyutest/pyutest_core/player.lua +++ b/mods/pyutest/pyutest_core/player.lua @@ -37,7 +37,7 @@ minetest.register_globalstep(function(dtime) for p=1, #players do local ctrl = players[p]:get_player_control() if ctrl.aux1 then - set_player_speed(players[p], 1.55) + set_player_speed(players[p], 1.60) else set_player_speed(players[p], 1) end diff --git a/mods/pyutest/pyutest_inventory/README.md b/mods/pyutest/pyutest_inventory/README.md index 98285c2..adfb5f8 100644 --- a/mods/pyutest/pyutest_inventory/README.md +++ b/mods/pyutest/pyutest_inventory/README.md @@ -1,3 +1,3 @@ # pyutest_inventory -PyuTest support for unified_inventory +Nodelands support for unified_inventory diff --git a/mods/pyutest/pyutest_mobs/README.md b/mods/pyutest/pyutest_mobs/README.md new file mode 100644 index 0000000..e80dad1 --- /dev/null +++ b/mods/pyutest/pyutest_mobs/README.md @@ -0,0 +1,3 @@ +# pyutest_mobs + +Mobs and entities diff --git a/mods/pyutest/pyutest_mobs/basic.lua b/mods/pyutest/pyutest_mobs/basic.lua index 57b8c32..be28a47 100644 --- a/mods/pyutest/pyutest_mobs/basic.lua +++ b/mods/pyutest/pyutest_mobs/basic.lua @@ -34,7 +34,7 @@ mobs:register_mob("pyutest_mobs:human", { hp_max = 20, hp_min = 20, walk_velocity = 1, - run_velocity = 6, + run_velocity = 5, armor = 100, passive = true, walk_chance = 50, diff --git a/mods/pyutest/pyutest_mobs/init.lua b/mods/pyutest/pyutest_mobs/init.lua index 971f199..1b6c295 100644 --- a/mods/pyutest/pyutest_mobs/init.lua +++ b/mods/pyutest/pyutest_mobs/init.lua @@ -6,9 +6,10 @@ PyuTestMobs.HUMAN_LIKE_CBOX = {-0.25, -1, -0.25, 0.25, 1, 0.25} mobs.fallback_node = "pyutest_core:dirt_block" -dofile(PyuTestMobs_Path.."/basic.lua") -- Humans, Monsters, Mimics, Fireflies and future basic mobs -dofile(PyuTestMobs_Path.."/snowman.lua") -- Snowman -dofile(PyuTestMobs_Path.."/wind_warrior.lua") -- Wind Warrior +dofile(PyuTestMobs_Path.."/basic.lua") +dofile(PyuTestMobs_Path.."/snowman.lua") +dofile(PyuTestMobs_Path.."/wind_warrior.lua") +dofile(PyuTestMobs_Path.."/necromancer.lua") local mapgen = minetest.get_mapgen_params().mgname or "???" if mapgen ~= "flat" and mapgen ~= "singlenode" then diff --git a/mods/pyutest/pyutest_mobs/necromancer.lua b/mods/pyutest/pyutest_mobs/necromancer.lua new file mode 100644 index 0000000..35f5370 --- /dev/null +++ b/mods/pyutest/pyutest_mobs/necromancer.lua @@ -0,0 +1,90 @@ +local necroball_hit_player = function (self, player) + player:punch(self.object, nil, { + damage_groups = {fleshy = 3} + }, nil) +end + +mobs:register_arrow("pyutest_mobs:arrow_necroball", { + visual = "sprite", + visual_size = {x = 1, y = 1}, + textures = {"necroball.png"}, + hit_player = necroball_hit_player, + hit_mob = necroball_hit_player, + + on_step = function (self, dt) + math.randomseed(os.time()) + local rng = math.random(1, 4) + if math.floor(dt * 100) == 5 then + + math.randomseed(os.time()) + local num_minions = math.random(2, 3) + local minions = { + "pyutest_mobs:monster", + "pyutest_mobs:mimic" + } + local m = minions[math.random(#minions)] + + for i = 1, num_minions do + mobs:add_mob(vector.add(self.object:get_pos(), vector.new(0, 1, 0)), { + name = m, + child = false, + nametag = "Necromancer Minion", + ignore_count = true + }) + end + + self.object:remove() + end + end, + velocity = 9, + collisionbox = { + -1.5, -1.5, -1.5, 1.5, 1.5, 1.5 + } +}) + +mobs:register_mob("pyutest_mobs:necromancer", { + type = "monster", + hp_max = 225, + hp_min = 225, + walk_velocity = 2, + run_velocity = 4, + armor = 100, + passive = false, + visual = "upright_sprite", + visual_size = {x = 1, y = 2}, + collisionbox = PyuTestMobs.HUMAN_LIKE_CBOX, + physical = true, + blood_amount = PyuTestMobs.ENTITY_BLOOD_AMOUNT, + view_range = 25, + reach = 2, + jump = 1, + group_attack = true, + group_helper = { + "pyutest_mobs:monster", + "pyutest_mobs:mimic" + }, + makes_footstep_sound = true, + textures = { + "necromancer.png", "necromancer_back.png" + }, + drops = { + { + name = "pyutest_core:magic_shards", + min = 2, + max = 5, + chance = 1 + }, + }, + + damage = 4, + attack_chance = 1, + attack_type = "dogshoot", + arrow = "pyutest_mobs:arrow_necroball", + shoot_interval = 2.5, + shoot_offset = 1, + pathfinding = 1, + dogshoot_switch = 1, + dogshoot_count_max = 5, + dogshoot_count2_max = 6, +}) +mobs:register_egg("pyutest_mobs:necromancer", "Necromancer Spawn Egg", "egg.png^[multiply:dimgray", 0) diff --git a/mods/pyutest/pyutest_mobs/wind_warrior.lua b/mods/pyutest/pyutest_mobs/wind_warrior.lua index 40329c1..11076e7 100644 --- a/mods/pyutest/pyutest_mobs/wind_warrior.lua +++ b/mods/pyutest/pyutest_mobs/wind_warrior.lua @@ -68,4 +68,4 @@ mobs:register_mob("pyutest_mobs:wind_warrior", { } } }) -mobs:register_egg("pyutest_mobs:wind_warrior", "Wind Warrior Spawn Egg", "egg.png^[multiply:navy", 0) +mobs:register_egg("pyutest_mobs:wind_warrior", "Wind Warrior Spawn Egg", "egg.png^[multiply:white", 0) diff --git a/textures/necroball.png b/textures/necroball.png new file mode 100644 index 0000000..85172e8 Binary files /dev/null and b/textures/necroball.png differ diff --git a/textures/necromancer.png b/textures/necromancer.png new file mode 100644 index 0000000..b33e433 Binary files /dev/null and b/textures/necromancer.png differ diff --git a/textures/necromancer_back.png b/textures/necromancer_back.png new file mode 100644 index 0000000..38526ad Binary files /dev/null and b/textures/necromancer_back.png differ diff --git a/textures/snowman.png b/textures/snowman.png index 281df7b..2f19d42 100644 Binary files a/textures/snowman.png and b/textures/snowman.png differ diff --git a/textures/wind-warrior.png b/textures/wind-warrior.png index 1766bea..ae31b3f 100644 Binary files a/textures/wind-warrior.png and b/textures/wind-warrior.png differ diff --git a/textures/wind-warrior_back.png b/textures/wind-warrior_back.png index 8bd1d49..36c7fbe 100644 Binary files a/textures/wind-warrior_back.png and b/textures/wind-warrior_back.png differ diff --git a/textures/windball.png b/textures/windball.png index df60b53..5f0c8c0 100644 Binary files a/textures/windball.png and b/textures/windball.png differ