Lotta changes, game has an offical name now
13
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
|
||||
|
@ -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.
|
||||
|
@ -1,4 +1,4 @@
|
||||
title = PyuTest
|
||||
title = Nodelands
|
||||
description = Pyu's Minetest Game
|
||||
disallowed_mapgens = v6
|
||||
min_minetest_version = 5.8
|
||||
|
0
mods/pyutest/README.md
Normal file
@ -1,3 +1,3 @@
|
||||
# pyutest_cmds
|
||||
|
||||
Chat Commands for PyuTest
|
||||
Chat Commands for Nodelands
|
||||
|
@ -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", {
|
||||
|
@ -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)
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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({
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
# pyutest_inventory
|
||||
|
||||
PyuTest support for unified_inventory
|
||||
Nodelands support for unified_inventory
|
||||
|
3
mods/pyutest/pyutest_mobs/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# pyutest_mobs
|
||||
|
||||
Mobs and entities
|
@ -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,
|
||||
|
@ -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
|
||||
|
90
mods/pyutest/pyutest_mobs/necromancer.lua
Normal file
@ -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)
|
@ -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)
|
||||
|
BIN
textures/necroball.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/necromancer.png
Normal file
After Width: | Height: | Size: 244 B |
BIN
textures/necromancer_back.png
Normal file
After Width: | Height: | Size: 219 B |
Before Width: | Height: | Size: 276 B After Width: | Height: | Size: 307 B |
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 265 B |
Before Width: | Height: | Size: 247 B After Width: | Height: | Size: 237 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 180 B |