diff --git a/README.txt b/README.txt index 1132309..df5416c 100644 --- a/README.txt +++ b/README.txt @@ -1,4 +1,4 @@ -A subgame by 1248 +A Game by 1248 Thanks to: / @@ -12,7 +12,7 @@ Collect resources and rebuild the old castle License: See README.txt in each mod for more information -Every code written by me is LGPLv2.1 and CC-BY-SA +Every code written by me is LGPLv2.1 notes: wood door in doors mod changed diff --git a/menu/Thumbs.db b/menu/Thumbs.db index 3ffa3e5..639b089 100644 Binary files a/menu/Thumbs.db and b/menu/Thumbs.db differ diff --git a/mods/beds/api.lua b/mods/beds/api.lua index 97dde43..9349545 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -49,21 +49,24 @@ function beds.register_bed(name, def) local node = minetest.get_node(under) local udef = minetest.registered_nodes[node.name] if udef and udef.on_rightclick and - not (placer and placer:get_player_control().sneak) then + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return udef.on_rightclick(under, node, placer, itemstack, pointed_thing) or itemstack end local pos - if minetest.registered_items[minetest.get_node(under).name].buildable_to then + if udef and udef.buildable_to then pos = under else pos = pointed_thing.above end - if minetest.is_protected(pos, placer:get_player_name()) and - not minetest.check_player_privs(placer, "protection_bypass") then - minetest.record_protection_violation(pos, placer:get_player_name()) + local player_name = placer and placer:get_player_name() or "" + + if minetest.is_protected(pos, player_name) and + not minetest.check_player_privs(player_name, "protection_bypass") then + minetest.record_protection_violation(pos, player_name) return itemstack end @@ -72,12 +75,13 @@ function beds.register_bed(name, def) return itemstack end - local dir = minetest.dir_to_facedir(placer:get_look_dir()) + local dir = placer and placer:get_look_dir() and + minetest.dir_to_facedir(placer:get_look_dir()) or 0 local botpos = vector.add(pos, minetest.facedir_to_dir(dir)) - if minetest.is_protected(botpos, placer:get_player_name()) and - not minetest.check_player_privs(placer, "protection_bypass") then - minetest.record_protection_violation(botpos, placer:get_player_name()) + if minetest.is_protected(botpos, player_name) and + not minetest.check_player_privs(player_name, "protection_bypass") then + minetest.record_protection_violation(botpos, player_name) return itemstack end @@ -90,7 +94,7 @@ function beds.register_bed(name, def) minetest.set_node(botpos, {name = name .. "_top", param2 = dir}) if not (creative and creative.is_enabled_for - and creative.is_enabled_for(placer:get_player_name())) then + and creative.is_enabled_for(player_name)) then itemstack:take_item() end return itemstack diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 4d8f467..ce67e91 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -230,7 +230,8 @@ minetest.register_craftitem("boats:boat", { local node = minetest.get_node(under) local udef = minetest.registered_nodes[node.name] if udef and udef.on_rightclick and - not (placer and placer:get_player_control().sneak) then + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return udef.on_rightclick(under, node, placer, itemstack, pointed_thing) or itemstack end @@ -244,9 +245,12 @@ minetest.register_craftitem("boats:boat", { pointed_thing.under.y = pointed_thing.under.y + 0.5 boat = minetest.add_entity(pointed_thing.under, "boats:boat") if boat then - boat:setyaw(placer:get_look_horizontal()) - if not (creative and creative.is_enabled_for - and creative.is_enabled_for(placer:get_player_name())) then + if placer then + boat:setyaw(placer:get_look_horizontal()) + end + local player_name = placer and placer:get_player_name() or "" + if not (creative and creative.is_enabled_for and + creative.is_enabled_for(player_name)) then itemstack:take_item() end end diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 9583bc2..8688fa1 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -68,6 +68,12 @@ minetest.register_node("bones:bones", { on_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) if meta:get_inventory():is_empty("main") then + local inv = player:get_inventory() + if inv:room_for_item("main", {name = "bones:bones"}) then + inv:add_item("main", {name = "bones:bones"}) + else + minetest.add_item(pos, "bones:bones") + end minetest.remove_node(pos) end end, diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 5076dec..62392e9 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -69,7 +69,8 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name -- Call on_rightclick if the pointed node defines it if ndef and ndef.on_rightclick and - user and not user:get_player_control().sneak then + not (user and user:is_player() and + user:get_player_control().sneak) then return ndef.on_rightclick( pointed_thing.under, node, user, diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index a19da64..031e456 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -58,7 +58,8 @@ end function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) local pos = self.object:getpos() - if not self.railtype then + local vel = self.object:getvelocity() + if not self.railtype or vector.equals(vel, {x=0, y=0, z=0}) then local node = minetest.get_node(pos).name self.railtype = minetest.get_item_group(node, "connect_to_raillike") end @@ -105,7 +106,6 @@ function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, return end -- Player punches cart to alter velocity - local vel = self.object:getvelocity() if puncher:get_player_name() == self.driver then if math.abs(vel.x + vel.z) > carts.punch_speed_max then return @@ -367,7 +367,8 @@ minetest.register_craftitem("carts:cart", { local node = minetest.get_node(under) local udef = minetest.registered_nodes[node.name] if udef and udef.on_rightclick and - not (placer and placer:get_player_control().sneak) then + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return udef.on_rightclick(under, node, placer, itemstack, pointed_thing) or itemstack end diff --git a/mods/carts/functions.lua b/mods/carts/functions.lua index a471719..9b7e2c6 100644 --- a/mods/carts/functions.lua +++ b/mods/carts/functions.lua @@ -159,23 +159,29 @@ function carts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) end function carts:pathfinder(pos_, old_pos, old_dir, ctrl, pf_switch, railtype) + if vector.equals(old_pos, pos_) then + return true + end + local pos = vector.round(pos_) local pf_pos = vector.round(old_pos) local pf_dir = vector.new(old_dir) for i = 1, 3 do - if vector.equals(pf_pos, pos) then - -- Success! Cart moved on correctly - return true - end + pf_dir, pf_switch = carts:get_rail_direction( + pf_pos, pf_dir, ctrl, pf_switch, railtype) - pf_dir, pf_switch = carts:get_rail_direction(pf_pos, pf_dir, ctrl, pf_switch, railtype) if vector.equals(pf_dir, {x=0, y=0, z=0}) then -- No way forwards return false end pf_pos = vector.add(pf_pos, pf_dir) + + if vector.equals(pf_pos, pos) then + -- Success! Cart moved on correctly + return true + end end -- Cart not found return false @@ -211,7 +217,12 @@ end function carts:get_rail_groups(additional_groups) -- Get the default rail groups and add more when a table is given - local groups = {dig_immediate = 2, attached_node = 1, rail = 1, connect_to_raillike = 1} + local groups = { + dig_immediate = 2, + attached_node = 1, + rail = 1, + connect_to_raillike = minetest.raillike_group("rail") + } if type(additional_groups) == "table" then for k, v in pairs(additional_groups) do groups[k] = v diff --git a/mods/castrum/Chapter3.lua b/mods/castrum/Chapter3.lua new file mode 100644 index 0000000..23d079b --- /dev/null +++ b/mods/castrum/Chapter3.lua @@ -0,0 +1,304 @@ +local list = { + {1, {x=-173, y=9, z=-70},{x=-172, y=9, z=-70},2}, + {2, {x=-173, y=9, z=-62},{x=-172, y=9, z=-62},2}, + {3, {x=-171, y=9, z=-69},{x=-170, y=9, z=-69},2}, + {4, {x=-171, y=9, z=-63},{x=-170, y=9, z=-63},2}, + {5, {x=-170, y=9, z=-67},{x=-169, y=9, z=-67},2}, + {6, {x=-170, y=9, z=-65},{x=-169, y=9, z=-65},2}, + {7, {x=-172, y=9, z=-70},{x=-171, y=9, z=-71},2}, + {8, {x=-172, y=9, z=-62},{x=-171, y=9, z=-61},2}, + {9, {x=-171, y=9, z=-71},{x=-170, y=9, z=-71},2}, + {10, {x=-171, y=9, z=-61},{x=-170, y=9, z=-61},2}, + {11, {x=-170, y=9, z=-70},{x=-169, y=9, z=-70},2}, + {12, {x=-170, y=9, z=-62},{x=-169, y=9, z=-62},2}, + {13, {x=-170, y=9, z=-69},{x=-169, y=9, z=-69},2}, + {14, {x=-170, y=9, z=-63},{x=-169, y=9, z=-63},2}, + {15, {x=-169, y=9, z=-68},{x=-168, y=9, z=-68},2}, + {16, {x=-169, y=9, z=-64},{x=-168, y=9, z=-64},2}, + {17, {x=-169, y=9, z=-67},{x=-168, y=9, z=-67},2}, + {18, {x=-169, y=9, z=-65},{x=-168, y=9, z=-65},2}, + {19, {x=-168, y=9, z=-66},{x=-167, y=9, z=-66},2}, + {20, {x=-170, y=9, z=-71},{x=-169, y=9, z=-71},2}, + {21, {x=-170, y=9, z=-61},{x=-169, y=9, z=-61},2}, + {22, {x=-169, y=9, z=-70},{x=-168, y=9, z=-70},2}, + {23, {x=-169, y=9, z=-62},{x=-168, y=9, z=-62},2}, + {24, {x=-169, y=9, z=-69},{x=-168, y=9, z=-69},2}, + {25, {x=-169, y=9, z=-63},{x=-168, y=9, z=-63},2}, + {26, {x=-168, y=9, z=-68},{x=-167, y=9, z=-68},2}, + {27, {x=-168, y=9, z=-64},{x=-167, y=9, z=-64},2}, + {28, {x=-168, y=9, z=-67},{x=-167, y=9, z=-67},2}, + {29, {x=-168, y=9, z=-65},{x=-167, y=9, z=-65},2}, + {30, {x=-167, y=9, z=-66},{x=-166, y=9, z=-66},2}, + {31, {x=-169, y=9, z=-71},{x=-168, y=9, z=-71},2}, + {32, {x=-169, y=9, z=-61},{x=-168, y=9, z=-61},2}, + {33, {x=-168, y=9, z=-70},{x=-167, y=9, z=-70},2}, + {34, {x=-168, y=9, z=-62},{x=-167, y=9, z=-62},2}, + {35, {x=-168, y=9, z=-69},{x=-167, y=9, z=-69},2}, + {36, {x=-168, y=9, z=-63},{x=-167, y=9, z=-63},2}, + {37, {x=-167, y=9, z=-68},{x=-166, y=9, z=-68},2}, + {38, {x=-167, y=9, z=-64},{x=-166, y=9, z=-64},2}, + {39, {x=-167, y=9, z=-67},{x=-166, y=9, z=-67},2}, + {40, {x=-167, y=9, z=-65},{x=-166, y=9, z=-65},2}, + {41, {x=-166, y=9, z=-66},{x=-165, y=9, z=-66},2}, + {42, {x=-168, y=9, z=-71},{x=-167, y=9, z=-72},2}, + {43, {x=-168, y=9, z=-61},{x=-167, y=9, z=-60},2}, + {44, {x=-167, y=9, z=-70},{x=-166, y=9, z=-70},2}, + {45, {x=-167, y=9, z=-62},{x=-166, y=9, z=-62},2}, + {46, {x=-167, y=9, z=-69},{x=-166, y=9, z=-69},2}, + {47, {x=-167, y=9, z=-63},{x=-166, y=9, z=-63},2}, + {48, {x=-166, y=9, z=-68},{x=-165, y=9, z=-68},2}, + {49, {x=-166, y=9, z=-64},{x=-165, y=9, z=-64},2}, + {50, {x=-166, y=9, z=-67},{x=-165, y=9, z=-67},2}, + {51, {x=-166, y=9, z=-65},{x=-165, y=9, z=-65},2}, + {52, {x=-165, y=9, z=-66},{x=-164, y=9, z=-66},2}, + {53, {x=-167, y=9, z=-72},{x=-166, y=9, z=-73},2}, + {54, {x=-167, y=9, z=-60},{x=-166, y=9, z=-59},2}, + {55, {x=-166, y=9, z=-70},{x=-165, y=9, z=-71},2}, + {56, {x=-166, y=9, z=-62},{x=-165, y=9, z=-61},2}, + {57, {x=-166, y=9, z=-69},{x=-165, y=9, z=-69},2}, + {58, {x=-166, y=9, z=-63},{x=-165, y=9, z=-63},2}, + {59, {x=-165, y=9, z=-68},{x=-164, y=9, z=-68},2}, + {60, {x=-165, y=9, z=-64},{x=-164, y=9, z=-64},2}, + {61, {x=-165, y=9, z=-67},{x=-164, y=9, z=-67},2}, + {62, {x=-165, y=9, z=-65},{x=-164, y=9, z=-65},2}, + {63, {x=-164, y=9, z=-66},{x=-163, y=9, z=-66},2}, + {64, {x=-166, y=9, z=-73},{x=-165, y=9, z=-73},2}, + {65, {x=-166, y=9, z=-59},{x=-165, y=9, z=-59},2}, + {66, {x=-165, y=9, z=-71},{x=-164, y=9, z=-71},2}, + {67, {x=-165, y=9, z=-61},{x=-164, y=9, z=-61},2}, + {68, {x=-165, y=9, z=-69},{x=-164, y=9, z=-69},2}, + {69, {x=-165, y=9, z=-63},{x=-164, y=9, z=-63},2}, + {70, {x=-164, y=9, z=-68},{x=-163, y=9, z=-68},2}, + {71, {x=-164, y=9, z=-64},{x=-163, y=9, z=-64},2}, + {72, {x=-164, y=9, z=-67},{x=-163, y=9, z=-67},2}, + {73, {x=-164, y=9, z=-65},{x=-163, y=9, z=-65},2}, + {74, {x=-163, y=9, z=-66},{x=-162, y=9, z=-66},2}, + {75, {x=-165, y=9, z=-73},{x=-164, y=9, z=-74},2}, + {76, {x=-165, y=9, z=-59},{x=-164, y=9, z=-58},2}, + {77, {x=-164, y=9, z=-71},{x=-163, y=9, z=-72},2}, + {78, {x=-164, y=9, z=-61},{x=-163, y=9, z=-60},2}, + {79, {x=-164, y=9, z=-69},{x=-163, y=9, z=-69},2}, + {80, {x=-164, y=9, z=-63},{x=-163, y=9, z=-63},2}, + {81, {x=-163, y=9, z=-68},{x=-162, y=9, z=-68},2}, + {82, {x=-163, y=9, z=-64},{x=-162, y=9, z=-64},2}, + {83, {x=-163, y=9, z=-67},{x=-162, y=9, z=-67},2}, + {84, {x=-163, y=9, z=-65},{x=-162, y=9, z=-65},2}, + {85, {x=-162, y=9, z=-66},{x=-161, y=9, z=-66},2}, + {86, {x=-164, y=9, z=-74},{x=-163, y=9, z=-74},2}, + {87, {x=-164, y=9, z=-58},{x=-163, y=9, z=-58},2}, + {88, {x=-163, y=9, z=-72},{x=-162, y=9, z=-72},2}, + {89, {x=-163, y=9, z=-60},{x=-162, y=9, z=-60},2}, + {90, {x=-163, y=9, z=-69},{x=-162, y=9, z=-70},2}, + {91, {x=-163, y=9, z=-63},{x=-162, y=9, z=-62},2}, + {92, {x=-162, y=9, z=-68},{x=-161, y=9, z=-68},2}, + {93, {x=-162, y=9, z=-64},{x=-161, y=9, z=-64},2}, + {94, {x=-162, y=9, z=-67},{x=-161, y=9, z=-67},2}, + {95, {x=-162, y=9, z=-65},{x=-161, y=9, z=-65},2}, + {96, {x=-161, y=9, z=-66},{x=-160, y=9, z=-66},2}, + {97, {x=-163, y=9, z=-74},{x=-162, y=9, z=-75},2}, + {98, {x=-163, y=9, z=-58},{x=-162, y=9, z=-57},2}, + {99, {x=-162, y=9, z=-72},{x=-161, y=9, z=-73},2}, + {100, {x=-162, y=9, z=-60},{x=-161, y=9, z=-59},2}, + {101, {x=-162, y=9, z=-70},{x=-161, y=9, z=-70},2}, + {102, {x=-162, y=9, z=-62},{x=-161, y=9, z=-62},2}, + {103, {x=-161, y=9, z=-68},{x=-160, y=9, z=-68},2}, + {104, {x=-161, y=9, z=-64},{x=-160, y=9, z=-64},2}, + {105, {x=-161, y=9, z=-67},{x=-160, y=9, z=-67},2}, + {106, {x=-161, y=9, z=-65},{x=-160, y=9, z=-65},2}, + {107, {x=-160, y=9, z=-66},{x=-159, y=9, z=-66},2}, + {108, {x=-162, y=9, z=-75},{x=-161, y=9, z=-75},2}, + {109, {x=-162, y=9, z=-57},{x=-161, y=9, z=-57},2}, + {110, {x=-161, y=9, z=-73},{x=-160, y=9, z=-73},2}, + {111, {x=-161, y=9, z=-59},{x=-160, y=9, z=-59},2}, + {112, {x=-161, y=9, z=-70},{x=-160, y=9, z=-71},2}, + {113, {x=-161, y=9, z=-62},{x=-160, y=9, z=-61},2}, + {114, {x=-160, y=9, z=-68},{x=-159, y=9, z=-69},2}, + {115, {x=-160, y=9, z=-64},{x=-159, y=9, z=-63},2}, + {116, {x=-160, y=9, z=-67},{x=-159, y=9, z=-67},2}, + {117, {x=-160, y=9, z=-65},{x=-159, y=9, z=-65},2}, + {118, {x=-159, y=9, z=-66},{x=-158, y=9, z=-66},2}, + {119, {x=-161, y=9, z=-75},{x=-160, y=9, z=-76},2}, + {120, {x=-161, y=9, z=-57},{x=-160, y=9, z=-56},2}, + {121, {x=-160, y=9, z=-73},{x=-159, y=9, z=-74},2}, + {122, {x=-160, y=9, z=-59},{x=-159, y=9, z=-58},2}, + {123, {x=-160, y=9, z=-71},{x=-159, y=9, z=-71},2}, + {124, {x=-160, y=9, z=-61},{x=-159, y=9, z=-61},2}, + {125, {x=-159, y=9, z=-69},{x=-158, y=9, z=-69},2}, + {126, {x=-159, y=9, z=-63},{x=-158, y=9, z=-63},2}, + {127, {x=-159, y=9, z=-67},{x=-158, y=9, z=-67},2}, + {128, {x=-159, y=9, z=-65},{x=-158, y=9, z=-65},2}, + {129, {x=-160, y=9, z=-76},{x=-159, y=9, z=-76},2}, + {130, {x=-160, y=9, z=-56},{x=-159, y=9, z=-56},2}, + {131, {x=-159, y=9, z=-74},{x=-158, y=9, z=-74},2}, + {132, {x=-159, y=9, z=-58},{x=-158, y=9, z=-58},2}, + {133, {x=-159, y=9, z=-71},{x=-158, y=9, z=-71},2}, + {134, {x=-159, y=9, z=-61},{x=-158, y=9, z=-61},2}, + {135, {x=-159, y=9, z=-76},{x=-158, y=9, z=-76},2}, + {136, {x=-159, y=9, z=-56},{x=-158, y=9, z=-56},2}, + {137, {x=-158, y=9, z=-76},{x=-157, y=9, z=-75},2}, + {138, {x=-158, y=9, z=-56},{x=-157, y=9, z=-57},2}, + {139, {x=-157, y=9, z=-75},{x=-156, y=9, z=-75},2}, + {140, {x=-157, y=9, z=-57},{x=-156, y=9, z=-57},2}, + {141, {x=-158, y=9, z=-74},{x=-157, y=9, z=-73},2}, + {142, {x=-158, y=9, z=-58},{x=-157, y=9, z=-59},2}, + {143, {x=-158, y=9, z=-71},{x=-157, y=9, z=-71},2}, + {144, {x=-158, y=9, z=-61},{x=-157, y=9, z=-61},2}, + {145, {x=-156, y=9, z=-75},{x=-155, y=9, z=-75},2}, + {146, {x=-156, y=9, z=-57},{x=-155, y=9, z=-57},2}, + {147, {x=-157, y=9, z=-73},{x=-156, y=9, z=-73},2}, + {148, {x=-157, y=9, z=-59},{x=-156, y=9, z=-59},2}, + {149, {x=-157, y=9, z=-71},{x=-156, y=9, z=-70},2}, + {150, {x=-157, y=9, z=-61},{x=-156, y=9, z=-62},2}, + {151, {x=-158, y=9, z=-69},{x=-157, y=9, z=-69},2}, + {152, {x=-158, y=9, z=-63},{x=-157, y=9, z=-63},2}, + {153, {x=-158, y=9, z=-67},{x=-157, y=9, z=-67},2}, + {154, {x=-158, y=9, z=-65},{x=-157, y=9, z=-65},2}, + {155, {x=-155, y=9, z=-75},{x=-154, y=9, z=-74},2}, + {156, {x=-155, y=9, z=-57},{x=-154, y=9, z=-58},2}, + {157, {x=-156, y=9, z=-73},{x=-155, y=9, z=-72},2}, + {158, {x=-156, y=9, z=-59},{x=-155, y=9, z=-60},2}, + {159, {x=-156, y=9, z=-70},{x=-155, y=9, z=-70},2}, + {160, {x=-156, y=9, z=-62},{x=-155, y=9, z=-62},2}, + {161, {x=-157, y=9, z=-69},{x=-156, y=9, z=-68},2}, + {162, {x=-157, y=9, z=-63},{x=-156, y=9, z=-64},2}, + {163, {x=-157, y=9, z=-67},{x=-156, y=9, z=-67},2}, + {164, {x=-157, y=9, z=-65},{x=-156, y=9, z=-65},2}, + {165, {x=-158, y=9, z=-66},{x=-157, y=9, z=-66},2}, + {166, {x=-154, y=9, z=-74},{x=-153, y=9, z=-74},2}, + {167, {x=-154, y=9, z=-58},{x=-153, y=9, z=-58},2}, + {168, {x=-155, y=9, z=-72},{x=-154, y=9, z=-72},2}, + {169, {x=-155, y=9, z=-60},{x=-154, y=9, z=-60},2}, + {170, {x=-155, y=9, z=-70},{x=-154, y=9, z=-70},2}, + {171, {x=-155, y=9, z=-62},{x=-154, y=9, z=-62},2}, + {172, {x=-156, y=9, z=-68},{x=-155, y=9, z=-68},2}, + {173, {x=-156, y=9, z=-64},{x=-155, y=9, z=-64},2}, + {174, {x=-156, y=9, z=-67},{x=-155, y=9, z=-67},2}, + {175, {x=-156, y=9, z=-65},{x=-155, y=9, z=-65},2}, + {176, {x=-157, y=9, z=-66},{x=-156, y=9, z=-66},2}, + {177, {x=-153, y=9, z=-74},{x=-152, y=9, z=-74},2}, + {178, {x=-153, y=9, z=-58},{x=-152, y=9, z=-58},2}, + {179, {x=-154, y=9, z=-72},{x=-153, y=9, z=-72},2}, + {180, {x=-154, y=9, z=-60},{x=-153, y=9, z=-60},2}, + {181, {x=-154, y=9, z=-70},{x=-153, y=9, z=-69},2}, + {182, {x=-154, y=9, z=-62},{x=-153, y=9, z=-63},2}, + {183, {x=-155, y=9, z=-68},{x=-154, y=9, z=-68},2}, + {184, {x=-155, y=9, z=-64},{x=-154, y=9, z=-64},2}, + {185, {x=-155, y=9, z=-67},{x=-154, y=9, z=-67},2}, + {186, {x=-155, y=9, z=-65},{x=-154, y=9, z=-65},2}, + {187, {x=-156, y=9, z=-66},{x=-155, y=9, z=-66},2}, + {188, {x=-152, y=9, z=-74},{x=-151, y=9, z=-73},2}, + {189, {x=-152, y=9, z=-58},{x=-151, y=9, z=-59},2}, + {190, {x=-153, y=9, z=-72},{x=-152, y=9, z=-71},2}, + {191, {x=-153, y=9, z=-60},{x=-152, y=9, z=-61},2}, + {192, {x=-153, y=9, z=-69},{x=-152, y=9, z=-69},2}, + {193, {x=-153, y=9, z=-63},{x=-152, y=9, z=-63},2}, + {194, {x=-154, y=9, z=-68},{x=-153, y=9, z=-68},2}, + {195, {x=-154, y=9, z=-64},{x=-153, y=9, z=-64},2}, + {196, {x=-154, y=9, z=-67},{x=-153, y=9, z=-67},2}, + {197, {x=-154, y=9, z=-65},{x=-153, y=9, z=-65},2}, + {198, {x=-155, y=9, z=-66},{x=-154, y=9, z=-66},2}, + {199, {x=-151, y=9, z=-73},{x=-150, y=9, z=-73},2}, + {200, {x=-151, y=9, z=-59},{x=-150, y=9, z=-59},2}, + {201, {x=-152, y=9, z=-71},{x=-151, y=9, z=-71},2}, + {202, {x=-152, y=9, z=-61},{x=-151, y=9, z=-61},2}, + {203, {x=-152, y=9, z=-69},{x=-151, y=9, z=-69},2}, + {204, {x=-152, y=9, z=-63},{x=-151, y=9, z=-63},2}, + {205, {x=-153, y=9, z=-68},{x=-152, y=9, z=-68},2}, + {206, {x=-153, y=9, z=-64},{x=-152, y=9, z=-64},2}, + {207, {x=-153, y=9, z=-67},{x=-152, y=9, z=-67},2}, + {208, {x=-153, y=9, z=-65},{x=-152, y=9, z=-65},2}, + {209, {x=-154, y=9, z=-66},{x=-153, y=9, z=-66},2}, + {210, {x=-150, y=9, z=-73},{x=-149, y=9, z=-73},2}, + {211, {x=-150, y=9, z=-59},{x=-149, y=9, z=-59},2}, + {212, {x=-151, y=9, z=-71},{x=-150, y=9, z=-71},2}, + {213, {x=-151, y=9, z=-61},{x=-150, y=9, z=-61},2}, + {214, {x=-151, y=9, z=-69},{x=-150, y=9, z=-69},2}, + {215, {x=-151, y=9, z=-63},{x=-150, y=9, z=-63},2}, + {216, {x=-152, y=9, z=-68},{x=-151, y=9, z=-68},2}, + {217, {x=-152, y=9, z=-64},{x=-151, y=9, z=-64},2}, + {218, {x=-152, y=9, z=-67},{x=-151, y=9, z=-67},2}, + {219, {x=-152, y=9, z=-65},{x=-151, y=9, z=-65},2}, + {220, {x=-153, y=9, z=-66},{x=-152, y=9, z=-66},2}, + {221, {x=-149, y=9, z=-73},{x=-148, y=9, z=-72},2}, + {222, {x=-149, y=9, z=-59},{x=-148, y=9, z=-60},2}, + {223, {x=-150, y=9, z=-71},{x=-149, y=9, z=-70},2}, + {224, {x=-150, y=9, z=-61},{x=-149, y=9, z=-62},2}, + {225, {x=-150, y=9, z=-69},{x=-149, y=9, z=-69},2}, + {226, {x=-150, y=9, z=-63},{x=-149, y=9, z=-63},2}, + {227, {x=-151, y=9, z=-68},{x=-150, y=9, z=-68},2}, + {228, {x=-151, y=9, z=-64},{x=-150, y=9, z=-64},2}, + {229, {x=-151, y=9, z=-67},{x=-150, y=9, z=-67},2}, + {230, {x=-151, y=9, z=-65},{x=-150, y=9, z=-65},2}, + {231, {x=-152, y=9, z=-66},{x=-151, y=9, z=-66},2}, + {232, {x=-148, y=9, z=-72},{x=-147, y=9, z=-72},2}, + {233, {x=-148, y=9, z=-60},{x=-147, y=9, z=-60},2}, + {234, {x=-149, y=9, z=-70},{x=-148, y=9, z=-70},2}, + {235, {x=-149, y=9, z=-62},{x=-148, y=9, z=-62},2}, + {236, {x=-149, y=9, z=-69},{x=-148, y=9, z=-69},2}, + {237, {x=-149, y=9, z=-63},{x=-148, y=9, z=-63},2}, + {238, {x=-150, y=9, z=-68},{x=-149, y=9, z=-68},2}, + {239, {x=-150, y=9, z=-64},{x=-149, y=9, z=-64},2}, + {240, {x=-150, y=9, z=-67},{x=-149, y=9, z=-67},2}, + {241, {x=-150, y=9, z=-65},{x=-149, y=9, z=-65},2}, + {242, {x=-151, y=9, z=-66},{x=-150, y=9, z=-66},2}, + {243, {x=-147, y=9, z=-72},{x=-146, y=9, z=-72},2}, + {244, {x=-147, y=9, z=-60},{x=-146, y=9, z=-60},2}, + {245, {x=-148, y=9, z=-70},{x=-147, y=9, z=-70},2}, + {246, {x=-148, y=9, z=-62},{x=-147, y=9, z=-62},2}, + {247, {x=-148, y=9, z=-69},{x=-147, y=9, z=-69},2}, + {248, {x=-148, y=9, z=-63},{x=-147, y=9, z=-63},2}, + {249, {x=-149, y=9, z=-68},{x=-148, y=9, z=-68},2}, + {250, {x=-149, y=9, z=-64},{x=-148, y=9, z=-64},2}, + {251, {x=-149, y=9, z=-67},{x=-148, y=9, z=-67},2}, + {252, {x=-149, y=9, z=-65},{x=-148, y=9, z=-65},2}, + {253, {x=-150, y=9, z=-66},{x=-149, y=9, z=-66},2}, + {254, {x=-146, y=9, z=-72},{x=-145, y=9, z=-71},2}, + {255, {x=-146, y=9, z=-60},{x=-145, y=9, z=-61},2}, + {256, {x=-147, y=9, z=-70},{x=-146, y=9, z=-70},2}, + {257, {x=-147, y=9, z=-62},{x=-146, y=9, z=-62},2}, + {258, {x=-145, y=9, z=-71},{x=-144, y=9, z=-71},2}, + {259, {x=-145, y=9, z=-61},{x=-144, y=9, z=-61},2}, + {260, {x=-146, y=9, z=-70},{x=-145, y=9, z=-70},2}, + {261, {x=-146, y=9, z=-62},{x=-145, y=9, z=-62},2}, + {262, {x=-147, y=9, z=-69},{x=-146, y=9, z=-69},2}, + {263, {x=-147, y=9, z=-63},{x=-146, y=9, z=-63},2}, + {264, {x=-148, y=9, z=-68},{x=-147, y=9, z=-68},2}, + {265, {x=-148, y=9, z=-64},{x=-147, y=9, z=-64},2}, + {266, {x=-144, y=9, z=-71},{x=-144, y=9, z=-70},2}, + {267, {x=-144, y=9, z=-61},{x=-144, y=9, z=-62},2}, + {268, {x=-145, y=9, z=-70},{x=-145, y=9, z=-69},2}, + {269, {x=-145, y=9, z=-62},{x=-145, y=9, z=-63},2}, + {270, {x=-147, y=9, z=-68},{x=-146, y=9, z=-68},2}, + {271, {x=-147, y=9, z=-64},{x=-146, y=9, z=-64},2}, + {272, {x=-148, y=9, z=-67},{x=-147, y=9, z=-67},2}, + {273, {x=-148, y=9, z=-65},{x=-147, y=9, z=-65},2}, + {274, {x=-149, y=9, z=-66},{x=-148, y=9, z=-66},2}, + {275, {x=-147, y=9, z=-67},{x=-146, y=9, z=-67},2}, + {276, {x=-147, y=9, z=-65},{x=-146, y=9, z=-65},2}, + {277, {x=-148, y=9, z=-66},{x=-147, y=9, z=-66},2}, + {278, {x=-146, y=9, z=-69},{x=-145, y=9, z=-68},2}, + {279, {x=-146, y=9, z=-63},{x=-145, y=9, z=-64},2}, + {280, {x=-144, y=9, z=-70},{x=-144, y=9, z=-69},2}, + {281, {x=-144, y=9, z=-62},{x=-144, y=9, z=-63},2}, + {282, {x=-145, y=9, z=-68},{x=-144, y=9, z=-67},2}, + {283, {x=-145, y=9, z=-64},{x=-144, y=9, z=-65},2}, + {284, {x=-147, y=9, z=-66},{x=-146, y=9, z=-66},2}, + {285, {x=-146, y=9, z=-67},{x=-145, y=9, z=-67},2}, + {286, {x=-146, y=9, z=-65},{x=-145, y=9, z=-65},2}, + {287, {x=-146, y=9, z=-66},{x=-145, y=9, z=-66},2}, + {288, {x=-146, y=9, z=-68},{x=-146, y=9, z=-67},2}, + {289, {x=-146, y=9, z=-64},{x=-146, y=9, z=-65},2}, + {290, {x=-145, y=9, z=-69},{x=-145, y=9, z=-68},2}, + {291, {x=-145, y=9, z=-63},{x=-145, y=9, z=-64},2}, + {292, {x=-144, y=9, z=-69},{x=-144, y=9, z=-68},2}, + {293, {x=-144, y=9, z=-63},{x=-144, y=9, z=-64},2}, + {294, {x=-146, y=9, z=-67},{x=-145, y=9, z=-67},2}, + {295, {x=-146, y=9, z=-65},{x=-145, y=9, z=-65},2}, + {296, {x=-145, y=9, z=-68},{x=-145, y=9, z=-67},2}, + {297, {x=-145, y=9, z=-64},{x=-145, y=9, z=-65},2}, + {298, {x=-144, y=9, z=-68},{x=-144, y=9, z=-67},2}, + {299, {x=-144, y=9, z=-64},{x=-144, y=9, z=-65},2}, +} +function Chapter3() + return list +end \ No newline at end of file diff --git a/mods/castrum/fight.lua b/mods/castrum/fight.lua index 2167bc7..03d71be 100644 --- a/mods/castrum/fight.lua +++ b/mods/castrum/fight.lua @@ -47,18 +47,34 @@ end minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "castrum:fight2" then local dig = false - local dignum = 0 + local dignum = math.random(4) + local com = 0 if node.name == "castrum:knight_dark" then dig = true elseif node.name == "castrum:knight_lv1_dark" then local fightnode = puncher:get_attribute("fightnode") if fightnode == "1" then - dignum = math.random(2) - else - dignum = 1 + com = 3 + elseif fightnode == "2" then + com = 4 + elseif fightnode == "6" then + com = 3 + elseif fightnode == "7" then + com = 4 + end + elseif node.name == "castrum:knight_lv2_dark" then + local fightnode = puncher:get_attribute("fightnode") + if fightnode == "1" then + com = 2 + elseif fightnode == "2" then + com = 3 + elseif fightnode == "6" then + com = 2 + elseif fightnode == "7" then + com = 3 end end - if dignum == 1 then + if dignum < com then dig = true end if dig == true then @@ -70,6 +86,30 @@ minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) if fightnode == "1" then minetest.set_node(minetest.string_to_pos(fightpos), {name="castrum:knight_lv1"}) screwdriver_handler(puncher, {type="node", under=minetest.string_to_pos(fightpos), above=minetest.string_to_pos(fightpos)}, 1) + local inv = puncher:get_inventory() + inv:remove_item("main", "castrum:knight_lv1") + end + if fightnode == "2" then + minetest.set_node(minetest.string_to_pos(fightpos), {name="castrum:knight_lv2"}) + screwdriver_handler(puncher, {type="node", under=minetest.string_to_pos(fightpos), above=minetest.string_to_pos(fightpos)}, 1) + local inv = puncher:get_inventory() + inv:remove_item("main", "castrum:knight_lv2") + end + if fightnode == "6" then + local pos = minetest.string_to_pos(fightpos) + minetest.set_node({x=pos.x,y=pos.y,z=pos.z}, {name="castrum:horse1"}) + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="castrum:knight_lv1_sit"}) + screwdriver_handler(puncher, {type="node", under={x=pos.x,y=pos.y+1,z=pos.z}, above={x=pos.x,y=pos.y+2,z=pos.z}}, 1) + local inv = puncher:get_inventory() + inv:remove_item("main", "castrum:horse1_item_1") + end + if fightnode == "7" then + local pos = minetest.string_to_pos(fightpos) + minetest.set_node({x=pos.x,y=pos.y,z=pos.z}, {name="castrum:horse1"}) + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="castrum:knight_lv2_sit"}) + screwdriver_handler(puncher, {type="node", under={x=pos.x,y=pos.y+1,z=pos.z}, above={x=pos.x,y=pos.y+2,z=pos.z}}, 1) + local inv = puncher:get_inventory() + inv:remove_item("main", "castrum:horse1_item_2") end for j=144,174 do for i=51,81 do @@ -77,59 +117,96 @@ minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) end end fight_step2(puncher) - local inv = puncher:get_inventory() - inv:remove_item("main", "castrum:knight_lv1") puncher:set_attribute("fightdig", "false") end end) function get_fight(level,player) - for j=144,174 do - for i=51,81 do - minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) - minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) - end - end - for i=67,76 do - minetest.set_node({x=-144, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - for i=56,65 do - minetest.set_node({x=-144, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - for i=57,75 do - minetest.set_node({x=-145, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - for i=58,74 do - minetest.set_node({x=-146, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - for i=59,73 do - minetest.set_node({x=-147, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - for i=61,71 do - minetest.set_node({x=-148, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - for i=63,69 do - minetest.set_node({x=-149, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - for i=65,67 do - minetest.set_node({x=-150, y=8, z=i*(-1)}, {name="castrum:fight1"}) - end - minetest.set_node({x=-144, y=9, z=-66}, {name="castrum:castrum_knight1"}) - minetest.set_node({x=-174, y=9, z=-66}, {name="castrum:knight_dark"}) - player:setpos({x=-135, y=8.5, z=-66}) - screwdriver_handler(player, {type="node", under={x=-144, y=9, z=-66}, above={x=-144, y=9, z=-66}}, 1) - screwdriver_handler(player, {type="node", under={x=-174, y=9, z=-66}, above={x=-174, y=9, z=-66}}, 1) - screwdriver_handler(player, {type="node", under={x=-174, y=9, z=-66}, above={x=-174, y=9, z=-66}}, 1) - screwdriver_handler(player, {type="node", under={x=-174, y=9, z=-66}, above={x=-174, y=9, z=-66}}, 1) - file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") + player:set_attribute("fightkill1", "0") + player:set_attribute("fightkill2", "0") + player:set_attribute("fighthkill1", "0") + file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") local knight_1 = file:read("*l") file:close() - local inv = player:get_inventory() - if tonumber(knight_1) > 0 then - inv:add_item("main","castrum:knight_lv1 "..knight_1) - end - player:set_attribute("fight", "false") - set_fight(player,level) + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() + local inv = player:get_inventory() + local num = 0 + for i=1,32 do + if inv:get_stack("main", i):is_empty() then + num = num+1 + end + end + if tonumber(knight_1) > 0 or tonumber(knight_2) > 0 then + if num > 9 then + for j=144,174 do + for i=51,81 do + minetest.set_node({x=j*(-1), y=10, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) + end + end + for i=67,76 do + minetest.set_node({x=-144, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + for i=56,65 do + minetest.set_node({x=-144, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + for i=57,75 do + minetest.set_node({x=-145, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + for i=58,74 do + minetest.set_node({x=-146, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + for i=59,73 do + minetest.set_node({x=-147, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + for i=61,71 do + minetest.set_node({x=-148, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + for i=63,69 do + minetest.set_node({x=-149, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + for i=65,67 do + minetest.set_node({x=-150, y=8, z=i*(-1)}, {name="castrum:fight1"}) + end + minetest.set_node({x=-144, y=9, z=-66}, {name="castrum:castrum_knight1"}) + minetest.set_node({x=-174, y=9, z=-66}, {name="castrum:knight_dark"}) + player:setpos({x=-135, y=8.5, z=-66}) + screwdriver_handler(player, {type="node", under={x=-144, y=9, z=-66}, above={x=-144, y=9, z=-66}}, 1) + screwdriver_handler(player, {type="node", under={x=-174, y=9, z=-66}, above={x=-174, y=9, z=-66}}, 1) + screwdriver_handler(player, {type="node", under={x=-174, y=9, z=-66}, above={x=-174, y=9, z=-66}}, 1) + screwdriver_handler(player, {type="node", under={x=-174, y=9, z=-66}, above={x=-174, y=9, z=-66}}, 1) + file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") + local knight_1 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "r") + local horse_1 = file:read("*l") + file:close() + if tonumber(knight_1) > 0 then + inv:add_item("main","castrum:knight_lv1 "..knight_1) + end + if tonumber(knight_2) > 0 then + inv:add_item("main","castrum:knight_lv2 "..knight_2) + end + if tonumber(horse_1) > 0 then + inv:add_item("main","castrum:horse1_item "..horse_1) + end + player:set_attribute("fight", "false") + set_fight(player,level) + else + minetest.chat_send_player(player:get_player_name(), "you have not enough space in your inventory") + end + else + minetest.chat_send_player(player:get_player_name(), "you have no knights") + end end function set_fight(player,level) if level == 1 then @@ -176,6 +253,33 @@ function set_fight(player,level) turn(player,{x=-170, y=9, z=-62},3) minetest.set_node({x=-169, y=9, z=-64}, {name="castrum:knight_lv1_dark"}) turn(player,{x=-169, y=9, z=-64},3) + elseif level == 3 then + minetest.set_node({x=-173, y=9, z=-65}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-173, y=9, z=-65},3) + minetest.set_node({x=-173, y=9, z=-67}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-173, y=9, z=-67},3) + minetest.set_node({x=-173, y=9, z=-62}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-173, y=9, z=-62},3) + minetest.set_node({x=-173, y=9, z=-70}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-173, y=9, z=-70},3) + minetest.set_node({x=-171, y=9, z=-69}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-171, y=9, z=-69},3) + minetest.set_node({x=-171, y=9, z=-63}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-171, y=9, z=-63},3) + minetest.set_node({x=-170, y=9, z=-65}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-170, y=9, z=-65},3) + minetest.set_node({x=-170, y=9, z=-67}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-170, y=9, z=-67},3) + minetest.set_node({x=-170, y=9, z=-70}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-170, y=9, z=-70},3) + minetest.set_node({x=-169, y=9, z=-68}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-169, y=9, z=-68},3) + minetest.set_node({x=-168, y=9, z=-66}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-168, y=9, z=-66},3) + minetest.set_node({x=-170, y=9, z=-62}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-170, y=9, z=-62},3) + minetest.set_node({x=-169, y=9, z=-64}, {name="castrum:knight_lv2_dark"}) + turn(player,{x=-169, y=9, z=-64},3) end player:set_attribute("fightlv", ""..level) end @@ -185,7 +289,10 @@ function fight_step1(player) local start = false for j=144,174 do for i=51,81 do - if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" then + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2" then + start = true + end + if minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then start = true end end @@ -195,9 +302,11 @@ function fight_step1(player) else player:set_attribute("fight", "true") player:set_attribute("fightmove", "1") - player:set_attribute("fightkill", "0") + local inv = player:get_inventory() inv:remove_item("main", "castrum:knight_lv1 80") + inv:remove_item("main", "castrum:knight_lv2 80") + inv:remove_item("main", "castrum:horse1_item 5") for j=144,174 do for i=51,81 do minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) @@ -217,6 +326,8 @@ function fight_step2(player) list = Chapter1() elseif tonumber(chapter) == 2 then list = Chapter2() + elseif tonumber(chapter) == 3 then + list = Chapter3() end local move2 = move local d = 0 @@ -224,54 +335,473 @@ function fight_step2(player) local dignum = 0 for j=144,174 do for i=51,81 do - dignum = math.random(2) - if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1_dark" and dignum == 1 then - if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:castrum_knight1" then + dignum = math.random(4) + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1_dark" and dignum < 3 then + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)-1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)+1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)-1}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)-1}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1), y=9, z=i*(-1)-1}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)+1}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)+1}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - if (minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1") and dd == 0 then + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1" and dd == 0 then minetest.set_node({x=j*(-1), y=9, z=i*(-1)+1}, {name="air"}) - player:set_attribute("fightkill", ""..(player:get_attribute("fightkill")+1)) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) dd = 1 end - + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1_dark" and dignum < 2 then + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)-1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv12_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)+1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)-1}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)-1}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1), y=9, z=i*(-1)-1}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)+1}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)+1}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" and dd == 0 then + minetest.set_node({x=j*(-1), y=9, z=i*(-1)+1}, {name="air"}) + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + end + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2_dark" and dignum < 4 then + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)-1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)+1}).name == "castrum:knight_lv1_sit" then + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)-1}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)-1}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1), y=9, z=i*(-1)-1}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)+1}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)+1}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:castrum_knight1" and dd == 0 then + minetest.set_node({x=j*(-1), y=9, z=i*(-1)+1}, {name="air"}) + player:set_attribute("fightkill1", ""..(player:get_attribute("fightkill1")+1)) + dd = 1 + end + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2_dark" and dignum < 3 then + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)-1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)-1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)-1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)-1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)-1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)-1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)-1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)-1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)-1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1)+1, y=10, z=i*(-1)+1}).name == "castrum:knight_lv12_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1)+1, y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1)+1, y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1)+1, y=10, z=i*(-1)+1}, {name="air"}) + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)+1}).name == "castrum:knight_lv2_sit" then + player:set_attribute("fightkill2", ""..(player:get_attribute("fightkill2")+1)) + dd = 1 + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)+1}).name == "castrum:horse1" then + player:set_attribute("fighthkill1", ""..(player:get_attribute("fighthkill1")+1)) + end + minetest.set_node({x=j*(-1), y=9, z=i*(-1)+1}, {name="air"}) + minetest.set_node({x=j*(-1), y=10, z=i*(-1)+1}, {name="air"}) + end end end end @@ -301,15 +831,28 @@ function fight_step2(player) move2 = move2+1 end end + while d == 0 and move2 < 300 and dd == 0 and tonumber(chapter) == 3 do + if minetest.get_node(list[move2][2]).name == "castrum:knight_lv2_dark" then + minetest.set_node(list[move2][2], {name="air"}) + minetest.set_node(list[move2][3], {name="castrum:knight_lv2_dark"}) + player:set_attribute("fightmove", ""..(move2+1)) + screwdriver_handler(player, {type="node", under=list[move2][3], above=list[move2][3]}, 1) + screwdriver_handler(player, {type="node", under=list[move2][3], above=list[move2][3]}, 1) + screwdriver_handler(player, {type="node", under=list[move2][3], above=list[move2][3]}, 1) + d = 1 + else + move2 = move2+1 + end + end local kg = 0 local ky = 0 local tg = 0 local ty = 0 for j=144,174 do for i=51,81 do - if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1_dark" then + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2_dark" then tg = 1 - elseif minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" then + elseif minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then ty = 1 elseif minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:castrum_knight1" then ky = 1 @@ -323,6 +866,9 @@ function fight_step2(player) player:setpos({x=-74, y=8.5, z=-77}) local inv = player:get_inventory() inv:remove_item("main", "castrum:knight_lv1 80") + inv:remove_item("main", "castrum:knight_lv2 80") + inv:remove_item("main", "castrum:horse1_item_1 5") + inv:remove_item("main", "castrum:horse1_item_2 5") file = io.open(minetest.get_worldpath().."/SAVE/Chapter.txt", "r") local chapter = file:read("*l") file:close() @@ -333,29 +879,157 @@ function fight_step2(player) local knight_1 = file:read("*l") file:close() file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "w") - file:write((tonumber(knight_1)-player:get_attribute("fightkill"))) + file:write((tonumber(knight_1)-player:get_attribute("fightkill1"))) + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "w") + file:write((tonumber(knight_2)-player:get_attribute("fightkill2"))) + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "r") + local horse_1 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "w") + file:write((tonumber(horse_1)-player:get_attribute("fighthkill1"))) file:close() Update_knight(player) + Update_horse(player) elseif ky == 0 or ty == 0 then minetest.chat_send_player(player:get_player_name(), "you lose") player:setpos({x=-74, y=8.5, z=-77}) local inv = player:get_inventory() inv:remove_item("main", "castrum:knight_lv1 80") + inv:remove_item("main", "castrum:knight_lv2 80") + inv:remove_item("main", "castrum:horse1_item_1 5") + inv:remove_item("main", "castrum:horse1_item_2 5") file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") local knight_1 = file:read("*l") file:close() file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "w") - file:write((tonumber(knight_1)-player:get_attribute("fightkill"))) + file:write((tonumber(knight_1)-player:get_attribute("fightkill1"))) + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "w") + file:write((tonumber(knight_2)-player:get_attribute("fightkill2"))) + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "r") + local horse_1 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "w") + file:write((tonumber(horse_1)-player:get_attribute("fighthkill1"))) file:close() Update_knight(player) + Update_horse(player) end end +local start_fight = {} +start_fight.get_formspec = function(player, pos) + if player == nil then + return + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."button[0,2;5,1;;Start Fight]" + .."button[0,3;5,1;;Go Back]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end +local go_back = {} +go_back.get_formspec = function(player, pos) + if player == nil then + return + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,1.4;If you go back, you will lose your placed knights and horses!]" + .."label[0,1.7;Go Back?]" + .."button[0,2;2.5,1;;Yes]" + .."button[2.5,2;2.5,1;;No]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end minetest.register_node("castrum:start_fight",{ - tiles = {"castrum_bridge_status.png"}, + tiles = {"default_diamond_block.png"}, description = "Start fight", --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, on_punch = function(pos, node, player, pointed_thing) - fight_step1(player) - + minetest.show_formspec(player:get_player_name(), "start_fight" , start_fight.get_formspec(player)) end, -}) \ No newline at end of file +}) +minetest.register_on_player_receive_fields(function(player, formname, fields) + local player_inv = player:get_inventory() + if formname == "start_fight" then + for k, v in pairs(fields) do + if v == "Start Fight" then + fight_step1(player) + minetest.show_formspec(player:get_player_name(), "", "") + elseif v == "Go Back" then + minetest.show_formspec(player:get_player_name(), "go_back", go_back.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end + if formname == "go_back" then + for k, v in pairs(fields) do + if v == "Yes" then + local k1 = player:get_attribute("fightkill1") + local k2 = player:get_attribute("fightkill2") + local h1 = player:get_attribute("fighthkill1") + for j=144,174 do + for i=51,81 do + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv1" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv1_sit" then + k1 = k1+1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:knight_lv2" or minetest.get_node({x=j*(-1), y=10, z=i*(-1)}).name == "castrum:knight_lv2_sit" then + k2 = k2+1 + end + if minetest.get_node({x=j*(-1), y=9, z=i*(-1)}).name == "castrum:horse1" then + h1 = h1+1 + end + end + end + file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") + local knight_1 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "w") + file:write((tonumber(knight_1)-k1)) + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "w") + file:write((tonumber(knight_2)-k2)) + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "r") + local horse_1 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "w") + file:write((tonumber(horse_1)-h1)) + file:close() + Update_knight(player) + Update_horse(player) + player:setpos({x=-74, y=8.5, z=-77}) + local inv = player:get_inventory() + inv:remove_item("main", "castrum:knight_lv1 80") + inv:remove_item("main", "castrum:knight_lv2 80") + inv:remove_item("main", "castrum:horse1_item 5") + inv:remove_item("main", "castrum:horse1_item_1 5") + inv:remove_item("main", "castrum:horse1_item_2 5") + + minetest.show_formspec(player:get_player_name(), "", "") + elseif v == "No" then + minetest.show_formspec(player:get_player_name(), "", "") + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end +end) \ No newline at end of file diff --git a/mods/castrum/init.lua b/mods/castrum/init.lua index bac4d2d..607e7e9 100644 --- a/mods/castrum/init.lua +++ b/mods/castrum/init.lua @@ -6,7 +6,7 @@ minetest.register_on_joinplayer(function(player) offset = {x=0, y=10}, alignment = {x=1, y=0}, number = 0xFFFFFF , - text = "For Minetest : 0.4.16", + text = "For Minetest : 0.4.17.x", }) player:hud_add({ hud_elem_type = "text", @@ -14,15 +14,15 @@ minetest.register_on_joinplayer(function(player) offset = {x=0, y=30}, alignment = {x=1, y=0}, number = 0xFFFFFF , - text = "Game Version : 1.3.0", + text = "Game Version : 1.5.0", }) - player:hud_add({ + player:hud_add({ hud_elem_type = "text", position = {x=0, y=0.85}, offset = {x=0, y=50}, alignment = {x=1, y=0}, number = 0xFFFFFF , - text = "Map Version : 4", + text = "Map Version : 8", }) end) function file_check(file_name) @@ -107,9 +107,65 @@ minetest.register_on_joinplayer(function(player) file:write("0") file:close() end + if file_check(minetest.get_worldpath().."/SAVE/Cactusfarm.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Cactusfarm.txt", "w") + file:write("0") + file:close() + end + if file_check(minetest.get_worldpath().."/SAVE/Camp2.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "w") + file:write("0") + file:close() + end + if file_check(minetest.get_worldpath().."/SAVE/Island_Smithy.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Island_Smithy.txt", "w") + file:write("0") + file:close() + end + if file_check(minetest.get_worldpath().."/SAVE/Knight_2.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "w") + file:write("0") + file:close() + end + if file_check(minetest.get_worldpath().."/SAVE/Lake2.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Lake2.txt", "w") + file:write("0") + file:close() + end + + if file_check(minetest.get_worldpath().."/SAVE/Horse_1.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "w") + file:write("0") + file:close() + end + if file_check(minetest.get_worldpath().."/SAVE/Mountain_Quarry.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Quarry.txt", "w") + file:write("0") + file:close() + end + if file_check(minetest.get_worldpath().."/SAVE/Mountain_Fountain.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Fountain.txt", "w") + file:write("0") + file:close() + end + if file_check(minetest.get_worldpath().."/SAVE/Island_Home1.txt") == true then + else + file = io.open(minetest.get_worldpath().."/SAVE/Island_Home1.txt", "w") + file:write("0") + file:close() + end end) dofile(minetest.get_modpath("castrum").."/Chapter1.lua") dofile(minetest.get_modpath("castrum").."/Chapter2.lua") +dofile(minetest.get_modpath("castrum").."/Chapter3.lua") dofile(minetest.get_modpath("castrum").."/fight.lua") dofile(minetest.get_modpath("castrum").."/update.lua") local timer = 0 @@ -118,11 +174,14 @@ local timer3 = 0 local timer4 = 0 local timer5 = 0 local timer6 = 0 +local timer7 = 0 +local timer8 = 0 +local timer9 = 0 local tree2 = 0 local quarry2 = 0 local mine2 = 0 local sandmine2 = 0 -local last = {x=0,y=0,z=0} +local last = {x=-40,y=8.5,z=-5} minetest.register_globalstep(function(dtime) timer = timer + dtime; timer2 = timer2 + dtime; @@ -130,26 +189,71 @@ minetest.register_globalstep(function(dtime) timer4 = timer4 + dtime; timer5 = timer5 + dtime; timer6 = timer6 + dtime; + timer7 = timer7 + dtime; + timer8 = timer8 + dtime; + timer9 = timer9 + dtime; local players = minetest.get_connected_players() for _,player in ipairs(players) do local pos = player:getpos() - if pos.x < -9.5 and pos.x > -15.5 and pos.z > -62.5 and pos.z < -54 then + file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "r") + local ship1 = file:read("*l") + file:close() + if pos.x < -9.5 and pos.x > -15.5 and pos.z > -62.5 and pos.z < -54 and tonumber(ship1) > 1 then last = pos - elseif pos.x < -10.5 and pos.x > -14.5 and pos.z > -63.5 and pos.z < -62.5 then + elseif pos.x < -10.5 and pos.x > -14.5 and pos.z > -63.5 and pos.z < -62.5 and tonumber(ship1) > 1 then last = pos - elseif pos.x < -11.5 and pos.x > -13.5 and pos.z > -64.5 and pos.z < -63.5 then + elseif pos.x < -11.5 and pos.x > -13.5 and pos.z > -64.5 and pos.z < -63.5 and tonumber(ship1) > 1 then last = pos elseif pos.x < 132.5 and pos.x > 127.5 and pos.z > 39.5 and pos.z < 48.5 then last = pos elseif pos.x < 131.5 and pos.x > 128.5 and pos.z > 48.5 and pos.z < 49.5 then last = pos elseif pos.x < 130.5 and pos.x > 129.5 and pos.z > 49.5 and pos.z < 50.5 then + last = pos + elseif pos.x < 320.5 and pos.x > 315.5 and pos.z > 39.5 and pos.z < 48.5 then + last = pos + elseif pos.x < 319.5 and pos.x > 316.5 and pos.z > 48.5 and pos.z < 49.5 then + last = pos + elseif pos.x < 318.5 and pos.x > 317.5 and pos.z > 49.5 and pos.z < 50.5 then last = pos elseif pos.y < 8 then player:setpos(last) elseif minetest.get_node({x=pos.x, y=(pos.y-0.5),z=pos.z}).name ~= "air" then last = pos end + + if minetest.get_node({x=-4, y=8,z=-52}).name == "default:wood" or minetest.get_node({x=-8, y=8,z=-65}).name == "default:wood" or minetest.get_node({x=121, y=8,z=38}).name == "default:wood" or minetest.get_node({x=125, y=8,z=51}).name == "default:wood" then + file = io.open(minetest.get_worldpath().."/SAVE/Pier.txt", "r") + local level = file:read("*l") + file:close() + if tonumber(level) > 5 then + Pier(6,player) + end + end + if minetest.get_node({x=-13, y=8,z=-65}).name == "default:wood" or minetest.get_node({x=-13, y=8,z=-53}).name == "default:wood" or minetest.get_node({x=130, y=8,z=51}).name == "default:wood" or minetest.get_node({x=130, y=8,z=39}).name == "default:wood" then + file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "r") + local level = file:read("*l") + file:close() + if tonumber(level) > 5 then + Ship1(6,player) + end + end + if minetest.get_node({x=-4, y=8,z=-52}).name == "default:junglewood" or minetest.get_node({x=-8, y=8,z=-65}).name == "default:junglewood" or minetest.get_node({x=121, y=8,z=38}).name == "default:junglewood" or minetest.get_node({x=125, y=8,z=51}).name == "default:junglewood" then + file = io.open(minetest.get_worldpath().."/SAVE/Pier.txt", "r") + local level = file:read("*l") + file:close() + if tonumber(level) < 6 then + Pier(0,player) + end + end + if minetest.get_node({x=-13, y=8,z=-65}).name == "default:junglewood" or minetest.get_node({x=-13, y=8,z=-53}).name == "default:junglewood" or minetest.get_node({x=130, y=8,z=51}).name == "default:junglewood" or minetest.get_node({x=130, y=8,z=39}).name == "default:junglewood" then + file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "r") + local level = file:read("*l") + file:close() + if tonumber(level) < 6 then + Ship1(0,player) + end + end file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "r") local ship1 = file:read("*l") file:close() @@ -168,6 +272,15 @@ minetest.register_globalstep(function(dtime) file = io.open(minetest.get_worldpath().."/SAVE/Sandmine.txt", "r") local sandmine = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Lake2.txt", "r") + local lake2 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Cactusfarm.txt", "r") + local cactusfarm = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Quarry.txt", "r") + local mountain_quarry = file:read("*l") + file:close() local quarrytime = 0 local quarrynum = 1 if tonumber(quarry) == 0 then @@ -178,6 +291,9 @@ minetest.register_globalstep(function(dtime) quarrynum = 1 elseif tonumber(quarry) == 2 then quarrytime = 2.5 + quarrynum = 2 + elseif tonumber(quarry) == 3 then + quarrytime = 2 quarrynum = 2 end local treetime = 0 @@ -190,6 +306,9 @@ minetest.register_globalstep(function(dtime) treenum = 1 elseif tonumber(tree) == 3 then treetime = 4 + treenum = 2 + elseif tonumber(tree) == 4 then + treetime = 3 treenum = 2 end local minetime = 0 @@ -211,6 +330,8 @@ minetest.register_globalstep(function(dtime) laketime = 9 elseif tonumber(lake) == 3 then laketime = 6.5 + elseif tonumber(lake) == 4 then + laketime = 5 end local sandminetime = 0 local sandminenum = 1 @@ -223,6 +344,24 @@ minetest.register_globalstep(function(dtime) elseif tonumber(quarry) == 2 then sandminetime = 2.5 sandminenum = 2 + end + local lake2time = 0 + if tonumber(lake2) == 1 then + lake2time = 18 + elseif tonumber(lake2) == 2 then + lake2time = 13.5 + end + local cactusfarmtime = 0 + if tonumber(cactusfarm) == 1 then + cactusfarmtime = 15 + elseif tonumber(cactusfarm) == 2 then + cactusfarmtime = 11.5 + end + local mountain_quarrytime = 0 + local mountain_quarrynum = 1 + if tonumber(mountain_quarry) == 0 then + mountain_quarrytime = 8 + mountain_quarrynum = 1 end if timer >= quarrytime then if tonumber(quarry) > -1 then @@ -297,6 +436,33 @@ minetest.register_globalstep(function(dtime) end timer6 = 0 end + if timer7 >= lake2time then + if tonumber(lake2) > 0 then + local inv = minetest.get_inventory({type="node", pos={x=-34, y=9, z=-67}}) + if inv then + inv:add_item("main", "castrum:bucket_river_water") + end + end + timer7 = 0 + end + if timer8 >= cactusfarmtime then + if tonumber(cactusfarm) > 0 then + local inv = minetest.get_inventory({type="node", pos={x=132, y=9, z=1}}) + if inv then + inv:add_item("main", "default:cactus") + end + end + timer8 = 0 + end + if timer9 >= mountain_quarrytime then + if tonumber(mountain_quarry) > -1 and tonumber(ship1) > 5 then + local inv = minetest.get_inventory({type="node", pos={x=345, y=40, z=-16}}) + if inv then + inv:add_item("main", "default:mossycobble") + end + end + timer9 = 0 + end end end) minetest.register_on_joinplayer(function(player) @@ -342,63 +508,161 @@ end) minetest.register_on_dignode(function(pos, node, digger) local fightdig = digger:get_attribute("fightdig") local fight = digger:get_attribute("fight") - if node.name == "castrum:knight_lv1" and fightdig ~= "true" and fight == "true" then + if (node.name == "castrum:knight_lv1" or node.name == "castrum:knight_lv2") and fightdig ~= "true" and fight == "true" then local inv = digger:get_inventory() inv:add_item("main", ""..node.name) digger:set_attribute("fightpos", minetest.pos_to_string(pos)) - if minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x-1, y=8, z=pos.z}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x-1, y=8, z=pos.z}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x-1, y=8, z=pos.z}).name ~= "default:gravel" then minetest.set_node({x=pos.x-1, y=8, z=pos.z}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x-1, y=8, z=pos.z-1}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x-1, y=8, z=pos.z-1}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x-1, y=8, z=pos.z-1}).name ~= "default:gravel" then minetest.set_node({x=pos.x-1, y=8, z=pos.z-1}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x-1, y=8, z=pos.z+1}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x-1, y=8, z=pos.z+1}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x-1, y=8, z=pos.z+1}).name ~= "default:gravel" then minetest.set_node({x=pos.x-1, y=8, z=pos.z+1}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x, y=8, z=pos.z}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x, y=9, z=pos.z}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x, y=8, z=pos.z}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x, y=9, z=pos.z}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x, y=9, z=pos.z}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x, y=8, z=pos.z}).name ~= "default:gravel" then minetest.set_node({x=pos.x, y=8, z=pos.z}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x, y=8, z=pos.z-1}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x, y=8, z=pos.z-1}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x, y=8, z=pos.z-1}).name ~= "default:gravel" then minetest.set_node({x=pos.x, y=8, z=pos.z-1}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x, y=8, z=pos.z+1}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x, y=8, z=pos.z+1}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x, y=8, z=pos.z+1}).name ~= "default:gravel" then minetest.set_node({x=pos.x, y=8, z=pos.z+1}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x+1, y=8, z=pos.z}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x+1, y=8, z=pos.z}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x+1, y=8, z=pos.z}).name ~= "default:gravel" then minetest.set_node({x=pos.x+1, y=8, z=pos.z}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x+1, y=8, z=pos.z-1}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x+1, y=8, z=pos.z-1}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x+1, y=8, z=pos.z-1}).name ~= "default:gravel" then minetest.set_node({x=pos.x+1, y=8, z=pos.z-1}, {name="castrum:fight1"}) end - if minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_dark" then + if minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_dark" then minetest.set_node({x=pos.x+1, y=8, z=pos.z+1}, {name="castrum:fight2"}) - elseif minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x+1, y=8, z=pos.z+1}).name ~= "default:gravel" then + elseif (minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" or minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv2") and minetest.get_node({x=pos.x+1, y=8, z=pos.z+1}).name ~= "default:gravel" then minetest.set_node({x=pos.x+1, y=8, z=pos.z+1}, {name="castrum:fight1"}) end if node.name == "castrum:knight_lv1" then digger:set_attribute("fightnode", "1") end + if node.name == "castrum:knight_lv2" then + digger:set_attribute("fightnode", "2") + end + digger:set_attribute("fightdig", "true") + elseif node.name == "castrum:horse1" and fightdig ~= "true" and fight == "true" and pos.x < -134 then + local inv = digger:get_inventory() + local knight = 0 + if minetest.get_node({x=pos.x, y=10, z=pos.z}).name == "castrum:knight_lv1_sit" then + minetest.set_node({x=pos.x, y=10, z=pos.z}, {name="air"}) + knight = 1 + elseif minetest.get_node({x=pos.x, y=10, z=pos.z}).name == "castrum:knight_lv2_sit" then + minetest.set_node({x=pos.x, y=10, z=pos.z}, {name="air"}) + knight = 2 + end + inv:add_item("main", "castrum:horse1_item_"..knight) + digger:set_attribute("fightpos", minetest.pos_to_string(pos)) + + local list = { + {x=pos.x-2, y=9, z=pos.z}, + {x=pos.x-2, y=9, z=pos.z-1}, + {x=pos.x-2, y=9, z=pos.z-2}, + {x=pos.x-2, y=9, z=pos.z+1}, + {x=pos.x-2, y=9, z=pos.z+2}, + {x=pos.x+2, y=9, z=pos.z}, + {x=pos.x+2, y=9, z=pos.z-1}, + {x=pos.x+2, y=9, z=pos.z-2}, + {x=pos.x+2, y=9, z=pos.z+1}, + {x=pos.x+2, y=9, z=pos.z+2}, + {x=pos.x-1, y=9, z=pos.z-2}, + {x=pos.x-1, y=9, z=pos.z+2}, + {x=pos.x, y=9, z=pos.z-2}, + {x=pos.x, y=9, z=pos.z+2}, + {x=pos.x+1, y=9, z=pos.z-2}, + {x=pos.x+1, y=9, z=pos.z+2}, + {x=pos.x-1, y=9, z=pos.z}, + {x=pos.x-1, y=9, z=pos.z-1}, + {x=pos.x-1, y=9, z=pos.z+1}, + {x=pos.x, y=9, z=pos.z}, + {x=pos.x, y=9, z=pos.z-1}, + {x=pos.x, y=9, z=pos.z+1}, + {x=pos.x+1, y=9, z=pos.z}, + {x=pos.x+1, y=9, z=pos.z-1}, + {x=pos.x+1, y=9, z=pos.z+1}, + } + local list2 = { + {x=pos.x-2, y=8, z=pos.z}, + {x=pos.x-2, y=8, z=pos.z-1}, + {x=pos.x-2, y=8, z=pos.z-2}, + {x=pos.x-2, y=8, z=pos.z+1}, + {x=pos.x-2, y=8, z=pos.z+2}, + {x=pos.x+2, y=8, z=pos.z}, + {x=pos.x+2, y=8, z=pos.z-1}, + {x=pos.x+2, y=8, z=pos.z-2}, + {x=pos.x+2, y=8, z=pos.z+1}, + {x=pos.x+2, y=8, z=pos.z+2}, + {x=pos.x-1, y=8, z=pos.z-2}, + {x=pos.x-1, y=8, z=pos.z+2}, + {x=pos.x, y=8, z=pos.z-2}, + {x=pos.x, y=8, z=pos.z+2}, + {x=pos.x+1, y=8, z=pos.z-2}, + {x=pos.x+1, y=8, z=pos.z+2}, + {x=pos.x-1, y=8, z=pos.z}, + {x=pos.x-1, y=8, z=pos.z-1}, + {x=pos.x-1, y=8, z=pos.z+1}, + {x=pos.x, y=8, z=pos.z}, + {x=pos.x, y=8, z=pos.z-1}, + {x=pos.x, y=8, z=pos.z+1}, + {x=pos.x+1, y=8, z=pos.z}, + {x=pos.x+1, y=8, z=pos.z-1}, + {x=pos.x+1, y=8, z=pos.z+1}, + + + } + for i=1,25 do + if (minetest.get_node(list[i]).name == "castrum:knight_lv1_dark" or minetest.get_node(list[i]).name == "castrum:knight_lv2_dark" or minetest.get_node(list[i]).name == "castrum:knight_dark") and i > 16 then + minetest.set_node(list2[i], {name="castrum:fight2"}) + elseif minetest.get_node(list[i]).name == "air" and minetest.get_node(list2[i]).name ~= "default:gravel" then + minetest.set_node(list2[i], {name="castrum:fight1"}) + end + end + if node.name == "castrum:knight_lv1" then + digger:set_attribute("fightnode", "1") + end + if node.name == "castrum:knight_lv2" then + digger:set_attribute("fightnode", "2") + end + if node.name == "castrum:horse1" then + digger:set_attribute("fightnode", ""..(knight+5)) + end digger:set_attribute("fightdig", "true") else minetest.set_node(pos, {name=node.name}) - if node.name == "castrum:knight_lv1" then + if node.name == "castrum:knight_lv1" or node.name == "castrum:knight_lv2" then screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1) + end + if node.name == "castrum:horse1" then + screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1) + screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1) + end + if node.name == "doors:gate_wood_closed" or node.name == "doors:gate_wood_open" then + screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1) + screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1) + screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1) end end end) @@ -421,6 +685,21 @@ minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack end fight_step2(placer) end + elseif minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "castrum:fight1" and newnode.name == "castrum:knight_lv2" then + minetest.set_node(pos, {name="castrum:knight_lv2"}) + screwdriver_handler(placer, {type="node", under=pos, above=pos}, 1) + local inv = placer:get_inventory() + inv:remove_item("main", "castrum:knight_lv2") + local fight = placer:get_attribute("fight") + placer:set_attribute("fightdig", "false") + if fight == "true" then + for j=144,174 do + for i=51,81 do + minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) + end + end + fight_step2(placer) + end else minetest.set_node(pos, {name=oldnode.name}) return itemstack @@ -572,6 +851,16 @@ function Home2(v,player) minetest.set_node({x=-54, y=9, z=-19}, {name="castrum:character1"}) screwdriver_handler(player, {type="node", under={x=-54, y=9, z=-19}, above={x=-54, y=9, z=-19}}, 1) screwdriver_handler(player, {type="node", under={x=-54, y=9, z=-19}, above={x=-54, y=9, z=-19}}, 1) + elseif v+0 == 7 then + for i=48,54 do + for j=19,25 do + for k=9,14 do + if minetest.get_node({x=i*(-1), y=k, z=j*(-1)}).name == "default:wood" then + minetest.set_node({x=i*(-1), y=k, z=j*(-1)}, {name="default:junglewood"}) + end + end + end + end elseif v+0 == 0 then for i=48,54 do for j=19,25 do @@ -683,7 +972,7 @@ end function Moat_south(v,player) if v+0 == 1 then for i=0,83 do - if minetest.get_node({x=i*(-1), y=8, z=-36}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=-36}).name ~= "castrum:bridge" then + if minetest.get_node({x=i*(-1), y=8, z=-36}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=-36}).name ~= "castrum:bridge" and minetest.get_node({x=i*(-1), y=8, z=-36}).name ~= "default:junglewood" then minetest.set_node({x=i*(-1), y=8, z=-36}, {name="air"}) end end @@ -693,7 +982,7 @@ function Moat_south(v,player) elseif v+0 == 2 then for j=35,37 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" then + if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:junglewood" then minetest.set_node({x=i*(-1), y=8, z=j*(-1)}, {name="air"}) end end @@ -702,9 +991,7 @@ function Moat_south(v,player) end end for i=0,83 do - if minetest.get_node({x=i*(-1), y=7, z=-36}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=7, z=-36}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=7, z=-36}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=7, z=-36}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=7, z=-36}, {name="air"}) @@ -712,7 +999,7 @@ function Moat_south(v,player) elseif v+0 == 3 then for j=34,38 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" then + if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:junglewood" then minetest.set_node({x=i*(-1), y=8, z=j*(-1)}, {name="air"}) end end @@ -722,18 +1009,14 @@ function Moat_south(v,player) end for j=35,37 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=7, z=j*(-1)}, {name="air"}) end end for i=0,83 do - if minetest.get_node({x=i*(-1), y=6, z=-36}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=6, z=-36}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=6, z=-36}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=6, z=-36}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=6, z=-36}, {name="air"}) @@ -741,7 +1024,7 @@ function Moat_south(v,player) elseif v+0 == 4 then for j=33,39 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" then + if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:junglewood" then minetest.set_node({x=i*(-1), y=8, z=j*(-1)}, {name="air"}) end end @@ -751,9 +1034,7 @@ function Moat_south(v,player) end for j=34,38 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=7, z=j*(-1)}, {name="air"}) @@ -761,18 +1042,14 @@ function Moat_south(v,player) end for j=35,37 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=6, z=j*(-1)}, {name="air"}) end end for i=0,83 do - if minetest.get_node({x=i*(-1), y=5, z=-36}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=5, z=-36}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=5, z=-36}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=5, z=-36}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=5, z=-36}, {name="air"}) @@ -780,7 +1057,7 @@ function Moat_south(v,player) elseif v+0 == 5 then for j=32,40 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" then + if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:junglewood" then minetest.set_node({x=i*(-1), y=8, z=j*(-1)}, {name="air"}) end end @@ -790,9 +1067,7 @@ function Moat_south(v,player) end for j=33,39 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=7, z=j*(-1)}, {name="air"}) @@ -800,9 +1075,7 @@ function Moat_south(v,player) end for j=34,38 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=6, z=j*(-1)}, {name="air"}) @@ -810,18 +1083,14 @@ function Moat_south(v,player) end for j=35,37 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=5, z=j*(-1)}, {name="air"}) end end for i=0,83 do - if minetest.get_node({x=i*(-1), y=4, z=-36}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=4, z=-36}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=4, z=-36}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=4, z=-36}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=4, z=-36}, {name="air"}) @@ -829,9 +1098,7 @@ function Moat_south(v,player) elseif v+0 == 6 then for j=32,40 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=7, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=7, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=7, z=j*(-1)}, {name="air"}) @@ -839,9 +1106,7 @@ function Moat_south(v,player) end for j=33,39 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=6, z=j*(-1)}, {name="air"}) @@ -849,9 +1114,7 @@ function Moat_south(v,player) end for j=34,38 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=5, z=j*(-1)}, {name="air"}) @@ -859,9 +1122,7 @@ function Moat_south(v,player) end for j=35,37 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=4, z=j*(-1)}, {name="air"}) @@ -870,9 +1131,7 @@ function Moat_south(v,player) elseif v+0 == 7 then for j=32,40 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=6, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=6, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=6, z=j*(-1)}, {name="air"}) @@ -880,9 +1139,7 @@ function Moat_south(v,player) end for j=33,39 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=5, z=j*(-1)}, {name="air"}) @@ -890,9 +1147,7 @@ function Moat_south(v,player) end for j=34,38 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=4, z=j*(-1)}, {name="air"}) @@ -901,9 +1156,7 @@ function Moat_south(v,player) elseif v+0 == 8 then for j=32,40 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=5, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=5, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=5, z=j*(-1)}, {name="air"}) @@ -911,9 +1164,7 @@ function Moat_south(v,player) end for j=33,39 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=4, z=j*(-1)}, {name="air"}) @@ -922,9 +1173,7 @@ function Moat_south(v,player) elseif v+0 == 9 then for j=32,40 do for i=0,83 do - if minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=4, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) - end + minetest.set_node({x=i*(-1), y=4, z=j*(-1)}, {name="air"}) end for i=1,3 do minetest.set_node({x=i, y=4, z=j*(-1)}, {name="air"}) @@ -953,11 +1202,11 @@ function Moat_south(v,player) for j=32,40 do for i=0,83 do if minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "default:wood" and minetest.get_node({x=i*(-1), y=8, z=j*(-1)}).name ~= "castrum:bridge" then - minetest.set_node({x=i*(-1), y=8, z=j*(-1)}, {name="default:dirt_with_grass"}) + minetest.set_node({x=i*(-1), y=8, z=j*(-1)}, {name="castrum:dirt_with_grass"}) end end for i=1,3 do - minetest.set_node({x=i, y=8, z=j*(-1)}, {name="default:dirt_with_grass"}) + minetest.set_node({x=i, y=8, z=j*(-1)}, {name="castrum:dirt_with_grass"}) end end end @@ -1310,18 +1559,18 @@ function Moat_east(v,player) end for j=0,5 do for i=0,31 do - minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) + minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="castrum:dirt_with_grass"}) end for i=0,37 do - minetest.set_node({x=j*(-1), y=8, z=i}, {name="default:dirt_with_grass"}) + minetest.set_node({x=j*(-1), y=8, z=i}, {name="castrum:dirt_with_grass"}) end end for j=0,3 do for i=0,31 do - minetest.set_node({x=j, y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) + minetest.set_node({x=j, y=8, z=i*(-1)}, {name="castrum:dirt_with_grass"}) end for i=0,37 do - minetest.set_node({x=j, y=8, z=i}, {name="default:dirt_with_grass"}) + minetest.set_node({x=j, y=8, z=i}, {name="castrum:dirt_with_grass"}) end end end @@ -1548,10 +1797,10 @@ function Moat_north(v,player) end for j=38,46 do for i=0,83 do - minetest.set_node({x=i*(-1), y=8, z=j}, {name="default:dirt_with_grass"}) + minetest.set_node({x=i*(-1), y=8, z=j}, {name="castrum:dirt_with_grass"}) end for i=1,3 do - minetest.set_node({x=i, y=8, z=j}, {name="default:dirt_with_grass"}) + minetest.set_node({x=i, y=8, z=j}, {name="castrum:dirt_with_grass"}) end end end @@ -1791,6 +2040,76 @@ function Wall_south(v,player) end end end + elseif v+0 == 17 then + for i=45,66 do + if i%4 == 2 then + minetest.set_node({x=i*(-1), y=20, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=16, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=12, z=-31}, {name="default:desert_cobble"}) + end + end + for i=14,35 do + if i%4 == 2 then + minetest.set_node({x=i*(-1), y=20, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=16, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=12, z=-31}, {name="default:desert_cobble"}) + + end + end + for i=45,66 do + if i%2 == 1 then + minetest.set_node({x=i*(-1), y=19, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=17, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=15, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=13, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=11, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=9, z=-31}, {name="default:desert_cobble"}) + end + end + for i=14,35 do + if i%2 == 1 then + minetest.set_node({x=i*(-1), y=19, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=17, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=15, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=13, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=11, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=9, z=-31}, {name="default:desert_cobble"}) + end + end + for i=45,66 do + if i%4 == 0 then + minetest.set_node({x=i*(-1), y=18, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=14, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=10, z=-31}, {name="default:desert_cobble"}) + end + end + for i=14,35 do + if i%4 == 0 then + minetest.set_node({x=i*(-1), y=18, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=14, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=10, z=-31}, {name="default:desert_cobble"}) + end + end + minetest.set_node({x=-42, y=20, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=-43, y=19, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=-44, y=18, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=-38, y=20, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=-37, y=19, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=-36, y=18, z=-31}, {name="default:desert_cobble"}) + for k=9,20 do + if k%2 == 1 then + minetest.set_node({x=-45, y=k, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-35, y=k, z=-29}, {name="default:desert_cobble"}) + end + end + minetest.set_node({x=-35, y=10, z=-30}, {name="default:desert_cobble"}) + minetest.set_node({x=-35, y=14, z=-30}, {name="default:desert_cobble"}) + minetest.set_node({x=-35, y=18, z=-30}, {name="default:desert_cobble"}) + minetest.set_node({x=-45, y=10, z=-30}, {name="default:desert_cobble"}) + minetest.set_node({x=-45, y=14, z=-30}, {name="default:desert_cobble"}) + minetest.set_node({x=-45, y=18, z=-30}, {name="default:desert_cobble"}) + minetest.set_node({x=-37, y=19, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-43, y=19, z=-29}, {name="default:desert_cobble"}) elseif v+0 == 0 then for i=14,66 do for j=28,31 do @@ -1914,6 +2233,35 @@ function Fountain(v,player) end end end + elseif v+0 == 7 then + minetest.set_node({x=-41, y=9, z=-2}, {name="default:desert_cobble"}) + minetest.set_node({x=-40, y=10, z=-2}, {name="default:desert_cobble"}) + minetest.set_node({x=-39, y=9, z=-2}, {name="default:desert_cobble"}) + minetest.set_node({x=-38, y=10, z=-1}, {name="default:desert_cobble"}) + minetest.set_node({x=-37, y=9, z=-1}, {name="default:desert_cobble"}) + minetest.set_node({x=-36, y=10, z=0}, {name="default:desert_cobble"}) + minetest.set_node({x=-36, y=9, z=1}, {name="default:desert_cobble"}) + minetest.set_node({x=-35, y=10, z=2}, {name="default:desert_cobble"}) + minetest.set_node({x=-35, y=9, z=3}, {name="default:desert_cobble"}) + minetest.set_node({x=-35, y=10, z=4}, {name="default:desert_cobble"}) + minetest.set_node({x=-36, y=9, z=5}, {name="default:desert_cobble"}) + minetest.set_node({x=-36, y=10, z=6}, {name="default:desert_cobble"}) + minetest.set_node({x=-37, y=9, z=7}, {name="default:desert_cobble"}) + minetest.set_node({x=-38, y=10, z=7}, {name="default:desert_cobble"}) + minetest.set_node({x=-39, y=9, z=8}, {name="default:desert_cobble"}) + minetest.set_node({x=-40, y=10, z=8}, {name="default:desert_cobble"}) + minetest.set_node({x=-41, y=9, z=8}, {name="default:desert_cobble"}) + minetest.set_node({x=-42, y=10, z=7}, {name="default:desert_cobble"}) + minetest.set_node({x=-43, y=9, z=7}, {name="default:desert_cobble"}) + minetest.set_node({x=-44, y=10, z=6}, {name="default:desert_cobble"}) + minetest.set_node({x=-44, y=9, z=5}, {name="default:desert_cobble"}) + minetest.set_node({x=-45, y=10, z=4}, {name="default:desert_cobble"}) + minetest.set_node({x=-45, y=9, z=3}, {name="default:desert_cobble"}) + minetest.set_node({x=-45, y=10, z=2}, {name="default:desert_cobble"}) + minetest.set_node({x=-44, y=9, z=1}, {name="default:desert_cobble"}) + minetest.set_node({x=-44, y=10, z=0}, {name="default:desert_cobble"}) + minetest.set_node({x=-43, y=9, z=-1}, {name="default:desert_cobble"}) + minetest.set_node({x=-42, y=10, z=-1}, {name="default:desert_cobble"}) elseif v+0 == 0 then for k=9,14 do for i=35,45 do @@ -2268,6 +2616,74 @@ function Tower1(v,player) end end end + elseif v+0 == 21 then + for i=6,13 do + if i%4 == 2 then + minetest.set_node({x=i*(-1), y=20, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=16, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=12, z=-31}, {name="default:desert_cobble"}) + end + end + for i=6,13 do + if i%2 == 1 then + minetest.set_node({x=i*(-1), y=19, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=17, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=15, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=13, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=11, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=9, z=-31}, {name="default:desert_cobble"}) + end + end + for i=6,13 do + if i%4 == 0 then + minetest.set_node({x=i*(-1), y=18, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=14, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=10, z=-31}, {name="default:desert_cobble"}) + end + end + for i=24,31 do + if i%4 == 3 then + minetest.set_node({x=-6, y=20, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=16, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=12, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=24,31 do + if i%2 == 0 then + minetest.set_node({x=-6, y=19, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=17, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=15, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=13, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=11, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=9, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=24,31 do + if i%4 == 1 then + minetest.set_node({x=-6, y=18, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=14, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=10, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for k=9,20 do + if k%2 == 1 then + minetest.set_node({x=-7, y=k, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-9, y=k, z=-25}, {name="default:desert_cobble"}) + minetest.set_node({x=-11, y=k, z=-26}, {name="default:desert_cobble"}) + minetest.set_node({x=-12, y=k, z=-28}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=k, z=-30}, {name="default:desert_cobble"}) + end + end + minetest.set_node({x=-8, y=10, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-8, y=14, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-8, y=18, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-10, y=12, z=-25}, {name="default:desert_cobble"}) + minetest.set_node({x=-10, y=16, z=-25}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=10, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=14, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=18, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-12, y=12, z=-27}, {name="default:desert_cobble"}) + minetest.set_node({x=-12, y=16, z=-27}, {name="default:desert_cobble"}) elseif v+0 == 0 then for j=6,13 do for i=24,31 do @@ -2618,6 +3034,75 @@ function Tower2(v,player) end end end + elseif v+0 == 21 then + for i=67,74 do + if i%4 == 2 then + minetest.set_node({x=i*(-1), y=20, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=16, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=12, z=-31}, {name="default:desert_cobble"}) + end + end + for i=67,74 do + if i%2 == 1 then + minetest.set_node({x=i*(-1), y=19, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=17, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=15, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=13, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=11, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=9, z=-31}, {name="default:desert_cobble"}) + end + end + for i=67,74 do + if i%4 == 0 then + minetest.set_node({x=i*(-1), y=18, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=14, z=-31}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=10, z=-31}, {name="default:desert_cobble"}) + end + end + for i=24,31 do + if i%4 == 3 then + minetest.set_node({x=-74, y=20, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=16, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=12, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=24,31 do + if i%2 == 0 then + minetest.set_node({x=-74, y=19, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=17, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=15, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=13, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=11, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=9, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=24,31 do + if i%4 == 1 then + minetest.set_node({x=-74, y=18, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=14, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=10, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for k=9,20 do + if k%2 == 1 then + minetest.set_node({x=-73, y=k, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-71, y=k, z=-25}, {name="default:desert_cobble"}) + minetest.set_node({x=-69, y=k, z=-26}, {name="default:desert_cobble"}) + minetest.set_node({x=-68, y=k, z=-28}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=k, z=-30}, {name="default:desert_cobble"}) + end + end + + minetest.set_node({x=-72, y=10, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-72, y=14, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-72, y=18, z=-24}, {name="default:desert_cobble"}) + minetest.set_node({x=-70, y=12, z=-25}, {name="default:desert_cobble"}) + minetest.set_node({x=-70, y=16, z=-25}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=10, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=14, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=18, z=-29}, {name="default:desert_cobble"}) + minetest.set_node({x=-68, y=12, z=-27}, {name="default:desert_cobble"}) + minetest.set_node({x=-68, y=16, z=-27}, {name="default:desert_cobble"}) elseif v+0 == 0 then for j=67,74 do for i=24,31 do @@ -2969,6 +3454,74 @@ function Tower3(v,player) end end end + elseif v+0 == 21 then + for i=30,37 do + if i%4 == 1 then + minetest.set_node({x=-74, y=20, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=16, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=12, z=i}, {name="default:desert_cobble"}) + end + end + for i=30,37 do + if i%2 == 0 then + minetest.set_node({x=-74, y=19, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=17, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=15, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=13, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=11, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=9, z=i}, {name="default:desert_cobble"}) + end + end + for i=30,37 do + if i%4 == 3 then + minetest.set_node({x=-74, y=18, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=14, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=10, z=i}, {name="default:desert_cobble"}) + end + end + for i=67,74 do + if i%4 == 2 then + minetest.set_node({x=i*(-1), y=20, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=16, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=12, z=37}, {name="default:desert_cobble"}) + end + end + for i=67,74 do + if i%2 == 1 then + minetest.set_node({x=i*(-1), y=19, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=17, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=15, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=13, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=11, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=9, z=37}, {name="default:desert_cobble"}) + end + end + for i=67,74 do + if i%4 == 0 then + minetest.set_node({x=i*(-1), y=18, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=14, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=10, z=37}, {name="default:desert_cobble"}) + end + end + for k=9,20 do + if k%2 == 1 then + minetest.set_node({x=-73, y=k, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-71, y=k, z=31}, {name="default:desert_cobble"}) + minetest.set_node({x=-69, y=k, z=32}, {name="default:desert_cobble"}) + minetest.set_node({x=-68, y=k, z=34}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=k, z=36}, {name="default:desert_cobble"}) + end + end + minetest.set_node({x=-72, y=10, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-72, y=14, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-72, y=18, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-70, y=12, z=31}, {name="default:desert_cobble"}) + minetest.set_node({x=-70, y=16, z=31}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=10, z=35}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=14, z=35}, {name="default:desert_cobble"}) + minetest.set_node({x=-67, y=18, z=35}, {name="default:desert_cobble"}) + minetest.set_node({x=-68, y=12, z=33}, {name="default:desert_cobble"}) + minetest.set_node({x=-68, y=16, z=33}, {name="default:desert_cobble"}) elseif v+0 == 0 then for j=67,74 do for i=30,37 do @@ -3323,6 +3876,75 @@ function Tower4(v,player) end end end + elseif v+0 == 21 then + for i=30,37 do + if i%4 == 1 then + minetest.set_node({x=-6, y=20, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=16, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=12, z=i}, {name="default:desert_cobble"}) + end + end + for i=30,37 do + if i%2 == 0 then + minetest.set_node({x=-6, y=19, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=17, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=15, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=13, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=11, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=9, z=i}, {name="default:desert_cobble"}) + end + end + for i=30,37 do + if i%4 == 3 then + minetest.set_node({x=-6, y=18, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=14, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=10, z=i}, {name="default:desert_cobble"}) + end + end + for i=6,13 do + if i%4 == 2 then + minetest.set_node({x=i*(-1), y=20, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=16, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=12, z=37}, {name="default:desert_cobble"}) + end + end + for i=6,13 do + if i%2 == 1 then + minetest.set_node({x=i*(-1), y=19, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=17, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=15, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=13, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=11, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=9, z=37}, {name="default:desert_cobble"}) + end + end + for i=6,13 do + if i%4 == 0 then + minetest.set_node({x=i*(-1), y=18, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=14, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=10, z=37}, {name="default:desert_cobble"}) + end + end + + for k=9,20 do + if k%2 == 1 then + minetest.set_node({x=-7, y=k, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-9, y=k, z=31}, {name="default:desert_cobble"}) + minetest.set_node({x=-11, y=k, z=32}, {name="default:desert_cobble"}) + minetest.set_node({x=-12, y=k, z=34}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=k, z=36}, {name="default:desert_cobble"}) + end + end + minetest.set_node({x=-8, y=10, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-8, y=14, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-8, y=18, z=30}, {name="default:desert_cobble"}) + minetest.set_node({x=-10, y=12, z=31}, {name="default:desert_cobble"}) + minetest.set_node({x=-10, y=16, z=31}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=10, z=35}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=14, z=35}, {name="default:desert_cobble"}) + minetest.set_node({x=-13, y=18, z=35}, {name="default:desert_cobble"}) + minetest.set_node({x=-12, y=12, z=33}, {name="default:desert_cobble"}) + minetest.set_node({x=-12, y=16, z=33}, {name="default:desert_cobble"}) elseif v+0 == 0 then for j=6,13 do for i=30,37 do @@ -3520,6 +4142,55 @@ function Wall_east(v,player) end end end + elseif v+0 == 17 then + for i=0,29 do + if i%4 == 1 then + minetest.set_node({x=-6, y=20, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=16, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=12, z=i}, {name="default:desert_cobble"}) + end + end + for i=0,23 do + if i%4 == 3 then + minetest.set_node({x=-6, y=20, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=16, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=12, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=0,29 do + if i%2 == 0 then + minetest.set_node({x=-6, y=19, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=17, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=15, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=13, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=11, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=9, z=i}, {name="default:desert_cobble"}) + end + end + for i=0,23 do + if i%2 == 0 then + minetest.set_node({x=-6, y=19, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=17, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=15, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=13, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=11, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=9, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=0,29 do + if i%4 == 3 then + minetest.set_node({x=-6, y=18, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=14, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=10, z=i}, {name="default:desert_cobble"}) + end + end + for i=0,23 do + if i%4 == 1 then + minetest.set_node({x=-6, y=18, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=14, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-6, y=10, z=i*(-1)}, {name="default:desert_cobble"}) + end + end elseif v+0 == 0 then for i=6,9 do for k=9,21 do @@ -3708,6 +4379,55 @@ function Wall_west(v,player) end end end + elseif v+0 == 17 then + for i=0,29 do + if i%4 == 1 then + minetest.set_node({x=-74, y=20, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=16, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=12, z=i}, {name="default:desert_cobble"}) + end + end + for i=0,23 do + if i%4 == 3 then + minetest.set_node({x=-74, y=20, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=16, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=12, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=0,29 do + if i%2 == 0 then + minetest.set_node({x=-74, y=19, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=17, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=15, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=13, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=11, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=9, z=i}, {name="default:desert_cobble"}) + end + end + for i=0,23 do + if i%2 == 0 then + minetest.set_node({x=-74, y=19, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=17, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=15, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=13, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=11, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=9, z=i*(-1)}, {name="default:desert_cobble"}) + end + end + for i=0,29 do + if i%4 == 3 then + minetest.set_node({x=-74, y=18, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=14, z=i}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=10, z=i}, {name="default:desert_cobble"}) + end + end + for i=0,23 do + if i%4 == 1 then + minetest.set_node({x=-74, y=18, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=14, z=i*(-1)}, {name="default:desert_cobble"}) + minetest.set_node({x=-74, y=10, z=i*(-1)}, {name="default:desert_cobble"}) + end + end elseif v+0 == 0 then for i=71,74 do for k=9,21 do @@ -3833,6 +4553,31 @@ function Wall_north(v,player) end end end + elseif v+0 == 17 then + for i=14,66 do + if i%4 == 2 then + minetest.set_node({x=i*(-1), y=20, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=16, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=12, z=37}, {name="default:desert_cobble"}) + end + end + for i=14,66 do + if i%2 == 1 then + minetest.set_node({x=i*(-1), y=19, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=17, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=15, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=13, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=11, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=9, z=37}, {name="default:desert_cobble"}) + end + end + for i=14,66 do + if i%4 == 0 then + minetest.set_node({x=i*(-1), y=18, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=14, z=37}, {name="default:desert_cobble"}) + minetest.set_node({x=i*(-1), y=10, z=37}, {name="default:desert_cobble"}) + end + end elseif v+0 == 0 then for i=14,66 do for j=34,37 do @@ -4066,10 +4811,10 @@ function Moat_west(v,player) end for j=75,83 do for i=0,31 do - minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) + minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="castrum:dirt_with_grass"}) end for i=0,37 do - minetest.set_node({x=j*(-1), y=8, z=i}, {name="default:dirt_with_grass"}) + minetest.set_node({x=j*(-1), y=8, z=i}, {name="castrum:dirt_with_grass"}) end end end @@ -4156,6 +4901,25 @@ function Smithy(v,player) end minetest.set_node({x=-68, y=10, z=-13}, {name="default:lava_source"}) minetest.set_node({x=-68, y=10, z=-12}, {name="default:lava_source"}) + elseif v+0 == 7 then + for j=61,69 do + for i=6,14 do + for k=9,14 do + if minetest.get_node({x=j*(-1), y=k, z=i*(-1)}).name == "default:cobble" then + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="default:stone_block"}) + end + end + end + end + minetest.set_node({x=-61, y=9, z=-8}, {name="stairs:stair_stone_block"}) + minetest.set_node({x=-61, y=9, z=-9}, {name="stairs:stair_stone_block"}) + screwdriver_handler(player, {type="node", under={x=-61, y=9, z=-8}, above={x=-61, y=9, z=-8}}, 1) + screwdriver_handler(player, {type="node", under={x=-61, y=9, z=-8}, above={x=-61, y=9, z=-8}}, 1) + screwdriver_handler(player, {type="node", under={x=-61, y=9, z=-8}, above={x=-61, y=9, z=-8}}, 1) + + screwdriver_handler(player, {type="node", under={x=-61, y=9, z=-9}, above={x=-61, y=9, z=-9}}, 1) + screwdriver_handler(player, {type="node", under={x=-61, y=9, z=-9}, above={x=-61, y=9, z=-9}}, 1) + screwdriver_handler(player, {type="node", under={x=-61, y=9, z=-9}, above={x=-61, y=9, z=-9}}, 1) elseif v+0 == 0 then for j=61,69 do for i=6,14 do @@ -4363,6 +5127,37 @@ function Quarry(v,player) minetest.set_node({x=-14, y=9, z=7}, {name="default:desert_stone"}) minetest.set_node({x=-12, y=9, z=1}, {name="default:desert_stone"}) minetest.set_node({x=-11, y=9, z=6}, {name="default:desert_stone"}) + elseif v+0 == 3 then + minetest.set_node({x=-19, y=10, z=1}, {name="default:desert_stone"}) + minetest.set_node({x=-18, y=10, z=5}, {name="default:desert_stone"}) + minetest.set_node({x=-15, y=10, z=4}, {name="default:desert_stone"}) + minetest.set_node({x=-15, y=10, z=0}, {name="default:desert_stone"}) + minetest.set_node({x=-14, y=10, z=7}, {name="default:desert_stone"}) + minetest.set_node({x=-12, y=10, z=1}, {name="default:desert_stone"}) + minetest.set_node({x=-11, y=10, z=6}, {name="default:desert_stone"}) + minetest.set_node({x=-11, y=9, z=7}, {name="default:desert_stone"}) + minetest.set_node({x=-11, y=9, z=5}, {name="default:desert_stone"}) + minetest.set_node({x=-12, y=9, z=6}, {name="default:desert_stone"}) + minetest.set_node({x=-13, y=9, z=7}, {name="default:desert_stone"}) + minetest.set_node({x=-15, y=9, z=7}, {name="default:desert_stone"}) + minetest.set_node({x=-14, y=9, z=6}, {name="default:desert_stone"}) + minetest.set_node({x=-13, y=9, z=1}, {name="default:desert_stone"}) + minetest.set_node({x=-11, y=9, z=1}, {name="default:desert_stone"}) + minetest.set_node({x=-12, y=9, z=2}, {name="default:desert_stone"}) + minetest.set_node({x=-12, y=9, z=0}, {name="default:desert_stone"}) + minetest.set_node({x=-14, y=9, z=4}, {name="default:desert_stone"}) + minetest.set_node({x=-16, y=9, z=4}, {name="default:desert_stone"}) + minetest.set_node({x=-15, y=9, z=3}, {name="default:desert_stone"}) + minetest.set_node({x=-15, y=9, z=5}, {name="default:desert_stone"}) + minetest.set_node({x=-14, y=9, z=0}, {name="default:desert_stone"}) + minetest.set_node({x=-15, y=9, z=1}, {name="default:desert_stone"}) + minetest.set_node({x=-15, y=9, z=-1}, {name="default:desert_stone"}) + minetest.set_node({x=-17, y=9, z=5}, {name="default:desert_stone"}) + minetest.set_node({x=-19, y=9, z=5}, {name="default:desert_stone"}) + minetest.set_node({x=-18, y=9, z=6}, {name="default:desert_stone"}) + minetest.set_node({x=-18, y=9, z=1}, {name="default:desert_stone"}) + minetest.set_node({x=-19, y=9, z=2}, {name="default:desert_stone"}) + minetest.set_node({x=-19, y=9, z=0}, {name="default:desert_stone"}) elseif v+0 == 0 then for j=11,19 do for i=0,7 do @@ -4444,6 +5239,24 @@ function Tree(v,player) minetest.set_node({x=-13, y=9, z=19}, {name="default:jungleleaves"}) minetest.set_node({x=-12, y=9, z=18}, {name="default:jungleleaves"}) minetest.set_node({x=-12, y=9, z=20}, {name="default:jungleleaves"}) + elseif v+0 == 4 then + minetest.set_node({x=-12, y=10, z=19}, {name="default:jungletree"}) + minetest.set_node({x=-12, y=11, z=19}, {name="default:jungletree"}) + + minetest.set_node({x=-11, y=11, z=18}, {name="default:jungleleaves"}) + minetest.set_node({x=-12, y=11, z=18}, {name="default:jungleleaves"}) + minetest.set_node({x=-13, y=11, z=18}, {name="default:jungleleaves"}) + minetest.set_node({x=-11, y=11, z=19}, {name="default:jungleleaves"}) + minetest.set_node({x=-12, y=11, z=19}, {name="default:jungletree"}) + minetest.set_node({x=-13, y=11, z=19}, {name="default:jungleleaves"}) + minetest.set_node({x=-11, y=11, z=20}, {name="default:jungleleaves"}) + minetest.set_node({x=-12, y=11, z=20}, {name="default:jungleleaves"}) + minetest.set_node({x=-13, y=11, z=20}, {name="default:jungleleaves"}) + minetest.set_node({x=-12, y=12, z=19}, {name="default:jungleleaves"}) + minetest.set_node({x=-11, y=9, z=19}, {name="air"}) + minetest.set_node({x=-13, y=9, z=19}, {name="air"}) + minetest.set_node({x=-12, y=9, z=18}, {name="air"}) + minetest.set_node({x=-12, y=9, z=20}, {name="air"}) elseif v+0 == 0 then for j=11,19 do for i=12,20 do @@ -4609,6 +5422,31 @@ function Ship1(v,player) minetest.set_node({x=j*(-1), y=13, z=-60}, {name="wool:white"}) minetest.set_node({x=j*(-1), y=12, z=-59}, {name="wool:white"}) end + elseif v+0 == 6 then + for j=10,16 do + for i=53,65 do + for k=7,15 do + if minetest.get_node({x=j*(-1), y=k, z=i*(-1)}).name == "default:wood" then + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="default:junglewood"}) + end + if minetest.get_node({x=j*(-1), y=k, z=i*(-1)}).name == "default:fence_wood" then + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="default:fence_junglewood"}) + end + end + end + end + for j=127,133 do + for i=29,51 do + for k=7,15 do + if minetest.get_node({x=j, y=k, z=i}).name == "default:wood" then + minetest.set_node({x=j, y=k, z=i}, {name="default:junglewood"}) + end + if minetest.get_node({x=j, y=k, z=i}).name == "default:fence_wood" then + minetest.set_node({x=j, y=k, z=i}, {name="default:fence_junglewood"}) + end + end + end + end elseif v+0 == 0 then for j=10,16 do for i=53,65 do @@ -4618,6 +5456,18 @@ function Ship1(v,player) minetest.set_node({x=j*(-1), y=7, z=i*(-1)}, {name="default:water_source"}) end end + for j=127,133 do + for i=29,51 do + for k=7,15 do + if minetest.get_node({x=j, y=k, z=i}).name == "default:junglewood" then + minetest.set_node({x=j, y=k, z=i}, {name="default:wood"}) + end + if minetest.get_node({x=j, y=k, z=i}).name == "default:fence_junglewood" then + minetest.set_node({x=j, y=k, z=i}, {name="default:fence_wood"}) + end + end + end + end end end function Lake(v,player) @@ -4639,17 +5489,48 @@ function Lake(v,player) minetest.set_node({x=-29, y=8, z=-55}, {name="default:water_source"}) minetest.set_node({x=-30, y=8, z=-54}, {name="default:water_source"}) minetest.set_node({x=-31, y=8, z=-53}, {name="default:water_source"}) + elseif v+0 == 4 then + minetest.set_node({x=-30, y=8, z=-53}, {name="default:water_source"}) + minetest.set_node({x=-29, y=8, z=-54}, {name="default:water_source"}) + minetest.set_node({x=-29, y=8, z=-56}, {name="default:water_source"}) + minetest.set_node({x=-30, y=8, z=-57}, {name="default:water_source"}) + + minetest.set_node({x=-32, y=8, z=-57}, {name="default:water_source"}) + minetest.set_node({x=-33, y=8, z=-56}, {name="default:water_source"}) + minetest.set_node({x=-33, y=8, z=-54}, {name="default:water_source"}) + minetest.set_node({x=-32, y=8, z=-53}, {name="default:water_source"}) elseif v+0 == 0 then for j=29,33 do for i=53,57 do for k=8,8 do - minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="default:dirt_with_grass"}) + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="castrum:dirt_with_grass"}) end end end minetest.set_node({x=-34, y=9, z=-58}, {name="air"}) end end +function Lake2(v,player) + if v+0 == 1 then + minetest.set_node({x=-31, y=8, z=-64}, {name="default:river_water_source"}) + minetest.set_node({x=-34, y=9, z=-67}, {name="default:chest"}) + screwdriver_handler(player, {type="node", under={x=-34, y=9, z=-67}, above={x=-34, y=9, z=-67}}, 1) + elseif v+0 == 2 then + minetest.set_node({x=-30, y=8, z=-64}, {name="default:river_water_source"}) + minetest.set_node({x=-32, y=8, z=-64}, {name="default:river_water_source"}) + minetest.set_node({x=-31, y=8, z=-65}, {name="default:river_water_source"}) + minetest.set_node({x=-31, y=8, z=-63}, {name="default:river_water_source"}) + elseif v+0 == 0 then + for j=29,33 do + for i=62,66 do + for k=8,8 do + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="castrum:dirt_with_grass"}) + end + end + end + minetest.set_node({x=-34, y=9, z=-67}, {name="air"}) + end +end function Barracks(v,player) if v+0 == 1 then for j=37,43 do @@ -4696,6 +5577,16 @@ function Barracks(v,player) screwdriver_handler(player, {type="node", under={x=-42, y=10, z=28}, above={x=-42, y=10, z=28}}, 1) screwdriver_handler(player, {type="node", under={x=-42, y=10, z=28}, above={x=-42, y=10, z=28}}, 1) screwdriver_handler(player, {type="node", under={x=-42, y=10, z=28}, above={x=-42, y=10, z=28}}, 1) + elseif v+0 == 7 then + for j=37,43 do + for i=25,31 do + for k=9,13 do + if minetest.get_node({x=j*(-1), y=k, z=i}).name == "default:cobble" then + minetest.set_node({x=j*(-1), y=k, z=i}, {name="default:stone_block"}) + end + end + end + end elseif v+0 == 0 then for j=37,43 do for i=25,31 do @@ -4719,6 +5610,19 @@ function Camp1(v,player) end end end +function Camp2(v,player) + if v+0 == 1 then + minetest.set_node({x=-63, y=9, z=-70}, {name="castrum:fire"}) + elseif v+0 == 0 then + for j=59,67 do + for i=66,74 do + for k=9,9 do + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="air"}) + end + end + end + end +end function Island_Walle(v,player) if v+0 == 1 then for i=0,33 do @@ -5126,6 +6030,16 @@ function Battleground(v,player) minetest.set_node({x=-72, y=10, z=-83}, {name="default:stone_block"}) minetest.set_node({x=-73, y=10, z=-84}, {name="default:stone_block"}) minetest.set_node({x=-75, y=10, z=-84}, {name="default:stone_block"}) + elseif v+0 == 6 then + for j=72,76 do + for i=80,84 do + for k=9,12 do + if minetest.get_node({x=j*(-1), y=k, z=i*(-1)}).name == "default:cobble" then + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="default:stone_block"}) + end + end + end + end elseif v+0 == 0 then for j=72,76 do for i=80,84 do @@ -5136,6 +6050,229 @@ function Battleground(v,player) end end end +function Island_Smithy(v,player) + if v+0 == 1 then + for j=166,173 do + for i=20,28 do + minetest.set_node({x=j, y=9, z=i}, {name="default:sandstone"}) + end + end + minetest.set_node({x=165, y=9, z=23}, {name="stairs:stair_sandstone"}) + minetest.set_node({x=165, y=9, z=22}, {name="stairs:stair_sandstone"}) + screwdriver_handler(player, {type="node", under={x=165, y=9, z=23}, above={x=165, y=9, z=23}}, 1) + screwdriver_handler(player, {type="node", under={x=165, y=9, z=22}, above={x=165, y=9, z=22}}, 1) + elseif v+0 == 2 then + for j=166,173 do + minetest.set_node({x=j, y=10, z=20}, {name="default:sandstone"}) + minetest.set_node({x=j, y=10, z=25}, {name="default:sandstone"}) + end + for i=20,28 do + minetest.set_node({x=173, y=10, z=i}, {name="default:sandstone"}) + end + for j=167,173 do + minetest.set_node({x=j, y=10, z=28}, {name="default:sandstone"}) + end + minetest.set_node({x=166, y=10, z=21}, {name="default:sandstone"}) + minetest.set_node({x=166, y=10, z=24}, {name="default:sandstone"}) + minetest.set_node({x=171, y=10, z=27}, {name="default:sandstone"}) + minetest.set_node({x=171, y=10, z=26}, {name="default:sandstone"}) + elseif v+0 == 3 then + for j=166,173 do + minetest.set_node({x=j, y=11, z=20}, {name="default:sandstone"}) + minetest.set_node({x=j, y=11, z=25}, {name="default:sandstone"}) + end + for i=20,28 do + minetest.set_node({x=173, y=11, z=i}, {name="default:sandstone"}) + end + for j=168,173 do + minetest.set_node({x=j, y=11, z=28}, {name="default:sandstone"}) + end + minetest.set_node({x=166, y=11, z=21}, {name="default:sandstone"}) + minetest.set_node({x=166, y=11, z=24}, {name="default:sandstone"}) + minetest.set_node({x=166, y=10, z=22}, {name="doors:door_wood_b"}) + minetest.set_node({x=166, y=10, z=23}, {name="doors:door_wood_a"}) + screwdriver_handler(player, {type="node", under={x=166, y=10, z=22}, above={x=166, y=10, z=22}}, 1) + screwdriver_handler(player, {type="node", under={x=166, y=10, z=23}, above={x=166, y=10, z=23}}, 1) + elseif v+0 == 4 then + for j=166,173 do + minetest.set_node({x=j, y=12, z=20}, {name="default:sandstone"}) + minetest.set_node({x=j, y=12, z=25}, {name="default:sandstone"}) + end + for i=20,28 do + minetest.set_node({x=173, y=12, z=i}, {name="default:sandstone"}) + end + for i=20,25 do + minetest.set_node({x=166, y=12, z=i}, {name="default:sandstone"}) + end + for j=169,173 do + minetest.set_node({x=j, y=12, z=28}, {name="default:sandstone"}) + end + elseif v+0 == 5 then + for j=167,172 do + minetest.set_node({x=j, y=13, z=21}, {name="default:sandstone"}) + minetest.set_node({x=j, y=13, z=24}, {name="default:sandstone"}) + end + for i=21,24 do + minetest.set_node({x=167, y=13, z=i}, {name="default:sandstone"}) + minetest.set_node({x=172, y=13, z=i}, {name="default:sandstone"}) + end + elseif v+0 == 6 then + for j=168,171 do + minetest.set_node({x=j, y=14, z=22}, {name="default:sandstone"}) + minetest.set_node({x=j, y=14, z=23}, {name="default:sandstone"}) + end + minetest.set_node({x=172, y=10, z=27}, {name="default:lava_source"}) + minetest.set_node({x=172, y=10, z=26}, {name="default:lava_source"}) + elseif v+0 == 0 then + for j=165,173 do + for i=20,28 do + for k=9,14 do + minetest.set_node({x=j, y=k, z=i}, {name="air"}) + end + end + end + end +end +function Cactusfarm(v,player) + if v+0 == 1 then + minetest.set_node({x=130, y=9, z=-7}, {name="castrum:cactus"}) + minetest.set_node({x=130, y=9, z=-1}, {name="castrum:cactus"}) + minetest.set_node({x=124, y=9, z=-1}, {name="castrum:cactus"}) + minetest.set_node({x=124, y=9, z=-7}, {name="castrum:cactus"}) + minetest.set_node({x=127, y=9, z=-4}, {name="castrum:cactus"}) + minetest.set_node({x=127, y=10, z=-4}, {name="castrum:cactus"}) + minetest.set_node({x=132, y=9, z=1}, {name="default:chest"}) + screwdriver_handler(player, {type="node", under={x=132, y=9, z=1}, above={x=132, y=9, z=1}}, 1) + screwdriver_handler(player, {type="node", under={x=132, y=9, z=1}, above={x=132, y=9, z=1}}, 1) + screwdriver_handler(player, {type="node", under={x=132, y=9, z=1}, above={x=132, y=9, z=1}}, 1) + elseif v+0 == 2 then + minetest.set_node({x=130, y=10, z=-7}, {name="castrum:cactus"}) + minetest.set_node({x=130, y=10, z=-1}, {name="castrum:cactus"}) + minetest.set_node({x=124, y=10, z=-1}, {name="castrum:cactus"}) + minetest.set_node({x=124, y=10, z=-7}, {name="castrum:cactus"}) + minetest.set_node({x=127, y=11, z=-4}, {name="castrum:cactus"}) + elseif v+0 == 0 then + for j=123,131 do + for i=0,8 do + for k=9,13 do + minetest.set_node({x=j, y=k, z=i*(-1)}, {name="air"}) + end + end + end + minetest.set_node({x=132, y=9, z=1}, {name="air"}) + end +end +function Mountain_Fountain(v,player) + if v+0 == 1 then + for i=334,338 do + for j=3,5 do + minetest.set_node({x=i, y=40, z=j*(-1)}, {name="default:mossycobble"}) + end + end + for i=335,337 do + minetest.set_node({x=i, y=40, z=-2}, {name="default:mossycobble"}) + minetest.set_node({x=i, y=40, z=-6}, {name="default:mossycobble"}) + end + elseif v+0 == 2 then + minetest.set_node({x=334, y=41, z=-3}, {name="default:mossycobble"}) + minetest.set_node({x=334, y=41, z=-4}, {name="default:mossycobble"}) + minetest.set_node({x=334, y=41, z=-5}, {name="default:mossycobble"}) + minetest.set_node({x=338, y=41, z=-3}, {name="default:mossycobble"}) + minetest.set_node({x=338, y=41, z=-4}, {name="default:mossycobble"}) + minetest.set_node({x=338, y=41, z=-5}, {name="default:mossycobble"}) + minetest.set_node({x=335, y=41, z=-2}, {name="default:mossycobble"}) + minetest.set_node({x=336, y=41, z=-2}, {name="default:mossycobble"}) + minetest.set_node({x=337, y=41, z=-2}, {name="default:mossycobble"}) + minetest.set_node({x=335, y=41, z=-6}, {name="default:mossycobble"}) + minetest.set_node({x=336, y=41, z=-6}, {name="default:mossycobble"}) + minetest.set_node({x=337, y=41, z=-6}, {name="default:mossycobble"}) + elseif v+0 == 3 then + minetest.set_node({x=336, y=41, z=-4}, {name="default:mossycobble"}) + minetest.set_node({x=336, y=42, z=-4}, {name="default:mossycobble"}) + minetest.set_node({x=336, y=43, z=-4}, {name="default:water_source"}) + elseif v+0 == 0 then + for i=334,338 do + for k=40,43 do + for j=2,6 do + minetest.set_node({x=i, y=k, z=j*(-1)}, {name="air"}) + end + end + end + end +end +function Island_Home1(v,player) + if v+0 == 1 then + minetest.set_node({x=144, y=9, z=-14}, {name="default:sandstone"}) + minetest.set_node({x=138, y=9, z=-14}, {name="default:sandstone"}) + minetest.set_node({x=138, y=9, z=-21}, {name="default:sandstone"}) + minetest.set_node({x=144, y=9, z=-21}, {name="default:sandstone"}) + for j=15,20 do + minetest.set_node({x=145, y=9, z=j*(-1)}, {name="default:sandstone"}) + minetest.set_node({x=137, y=9, z=j*(-1)}, {name="default:sandstone"}) + end + for i=139,143 do + minetest.set_node({x=i, y=9, z=-22}, {name="default:sandstone"}) + end + elseif v+0 == 2 then + minetest.set_node({x=144, y=10, z=-14}, {name="default:sandstone"}) + minetest.set_node({x=138, y=10, z=-14}, {name="default:sandstone"}) + minetest.set_node({x=138, y=10, z=-21}, {name="default:sandstone"}) + minetest.set_node({x=144, y=10, z=-21}, {name="default:sandstone"}) + for j=15,20 do + minetest.set_node({x=145, y=10, z=j*(-1)}, {name="default:sandstone"}) + minetest.set_node({x=137, y=10, z=j*(-1)}, {name="default:sandstone"}) + end + for i=139,143 do + minetest.set_node({x=i, y=10, z=-22}, {name="default:sandstone"}) + end + minetest.set_node({x=145, y=10, z=-17}, {name="default:glass"}) + minetest.set_node({x=145, y=10, z=-18}, {name="default:glass"}) + minetest.set_node({x=141, y=10, z=-22}, {name="default:glass"}) + minetest.set_node({x=137, y=10, z=-17}, {name="default:glass"}) + minetest.set_node({x=137, y=10, z=-18}, {name="default:glass"}) + elseif v+0 == 3 then + minetest.set_node({x=144, y=11, z=-14}, {name="default:sandstone"}) + minetest.set_node({x=138, y=11, z=-14}, {name="default:sandstone"}) + minetest.set_node({x=138, y=11, z=-21}, {name="default:sandstone"}) + minetest.set_node({x=144, y=11, z=-21}, {name="default:sandstone"}) + for j=15,20 do + minetest.set_node({x=145, y=11, z=j*(-1)}, {name="default:sandstone"}) + minetest.set_node({x=137, y=11, z=j*(-1)}, {name="default:sandstone"}) + end + for i=139,143 do + minetest.set_node({x=i, y=11, z=-22}, {name="default:sandstone"}) + end + elseif v+0 == 4 then + minetest.set_node({x=143, y=12, z=-14}, {name="default:sandstone"}) + minetest.set_node({x=139, y=12, z=-14}, {name="default:sandstone"}) + for j=15,20 do + minetest.set_node({x=144, y=12, z=j*(-1)}, {name="default:sandstone"}) + minetest.set_node({x=138, y=12, z=j*(-1)}, {name="default:sandstone"}) + end + for i=139,143 do + minetest.set_node({x=i, y=12, z=-21}, {name="default:sandstone"}) + end + elseif v+0 == 5 then + for j=14,20 do + for i=139,143 do + minetest.set_node({x=i, y=13, z=j*(-1)}, {name="default:sandstone"}) + end + end + minetest.set_node({x=143, y=13, z=-14}, {name="air"}) + minetest.set_node({x=139, y=13, z=-14}, {name="air"}) + minetest.set_node({x=141, y=13, z=-18}, {name="air"}) + minetest.set_node({x=141, y=9, z=-18}, {name="castrum:fire"}) + elseif v+0 == 0 then + for i=137,145 do + for k=9,13 do + for j=14,22 do + minetest.set_node({x=i, y=k, z=j*(-1)}, {name="air"}) + end + end + end + end +end + function Bridge_Status(player) file = io.open(minetest.get_worldpath().."/SAVE/Bridge.txt", "r") local level = file:read("*l") @@ -5228,29 +6365,33 @@ local knight_pos = { {3, -63, -54, 0}, {4, -62, -54, 0}, {5, -61, -54, 0}, - {6, -60, -55, 1}, {7, -60, -56, 1}, {8, -60, -57, 1}, {9, -60, -58, 1}, {10, -60, -59, 1}, - {11, -61, -60, 2}, {12, -62, -60, 2}, {13, -63, -60, 2}, {14, -64, -60, 2}, {15, -65, -60, 2}, - {16, -66, -59, 3}, {17, -66, -58, 3}, {18, -66, -57, 3}, {19, -66, -56, 3}, + {20, -66, -55, 3}, + {21, -65, -67, 0}, + {22, -64, -67, 0}, + {23, -63, -67, 0}, } function Update_knight(player) file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") local knight1 = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight2 = file:read("*l") + file:close() for j=59,67 do for i=53,61 do for k=9,9 do @@ -5259,13 +6400,64 @@ function Update_knight(player) end end minetest.set_node({x=-63, y=9, z=-57}, {name="castrum:fire"}) - for i=1,tonumber(knight1) do + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "r") + local camp2 = file:read("*l") + file:close() + if tonumber(camp2) > 0 then + for j=59,67 do + for i=66,74 do + for k=9,9 do + minetest.set_node({x=j*(-1), y=k, z=i*(-1)}, {name="air"}) + end + end + end + minetest.set_node({x=-63, y=9, z=-70}, {name="castrum:fire"}) + end + for i=1,tonumber(knight2) do + minetest.set_node({x=knight_pos[i][2], y=9, z=knight_pos[i][3]}, {name="castrum:knight_lv2_sit"}) + for j=1,tonumber(knight_pos[i][4]) do + screwdriver_handler(player, {type="node", under={x=knight_pos[i][2], y=9, z=knight_pos[i][3]}, above={x=knight_pos[i][2], y=9, z=knight_pos[i][3]}}, 1) + end + end + for i=(tonumber(knight2)+1),(tonumber(knight1)+tonumber(knight2)) do minetest.set_node({x=knight_pos[i][2], y=9, z=knight_pos[i][3]}, {name="castrum:knight_lv1_sit"}) for j=1,tonumber(knight_pos[i][4]) do screwdriver_handler(player, {type="node", under={x=knight_pos[i][2], y=9, z=knight_pos[i][3]}, above={x=knight_pos[i][2], y=9, z=knight_pos[i][3]}}, 1) end end end + + + +function Add_horse(player,lv,state) + if state == true then + file = io.open(minetest.get_worldpath().."/SAVE/Horse_"..lv..".txt", "r") + local horse = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_"..lv..".txt", "w") + file:write(tonumber(horse)+1) + file:close() + Update_horse(player) + end +end +local horse_pos = { + {1, -65, 1}, +} +function Update_horse(player) + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "r") + local horse1 = file:read("*l") + file:close() + for j=62,65 do + for i=0,6 do + minetest.set_node({x=j*(-1), y=9, z=i}, {name="air"}) + end + end + for i=1,tonumber(horse1) do + minetest.set_node({x=horse_pos[i][2], y=9, z=horse_pos[i][3]}, {name="castrum:horse1"}) + screwdriver_handler(player, {type="node", under={x=horse_pos[i][2], y=9, z=horse_pos[i][3]}, above={x=horse_pos[i][2], y=9, z=horse_pos[i][3]}}, 1) + screwdriver_handler(player, {type="node", under={x=horse_pos[i][2], y=9, z=horse_pos[i][3]}, above={x=horse_pos[i][2], y=9, z=horse_pos[i][3]}}, 1) + end +end function nextrange(x, max) x = x + 1 if x > max then @@ -5333,7 +6525,7 @@ home1.get_formspec = function(player, pos) label2 = "Upgrade" need1 = "64 Cobblestone" need2 = "80 Jungle Wood Planks" - need3 = "Fountain lv.3" + need3 = "Fountain lv.2" else label = (level-5).."/2" label2 = "Upgrade (comming soon)" @@ -5373,8 +6565,14 @@ home2.get_formspec = function(player, pos) need1 = "8 Cobblestone" need2 = "10 Wooden Planks" need3 = "Fountain lv.3" + elseif tonumber(level) == 6 then + label = (level-5).."/2" + label2 = "Upgrade" + need1 = "64 Cobblestone" + need2 = "80 Jungle Wood Planks" + need3 = "Fountain lv.4" else - label = (level-5).."/1" + label = (level-5).."/2" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5410,10 +6608,12 @@ bridge.get_formspec = function(player, pos) label = "not build yet ("..math.floor((level/9)*100).."%)" label2 = "Build" need1 = "3 Wooden Planks" + need2 = "Fountain lv.1" elseif tonumber(level) == 9 then label = (level-8).."/2" label2 = "Upgrade" need1 = "27 Jungle Wood Planks" + need2 = "Fountain lv.3" else label = (level-8).."/2" label2 = "Upgrade (comming soon)" @@ -5455,8 +6655,9 @@ moats.get_formspec = function(player, pos) elseif tonumber(level) == 9 then label = (level-8).."/2" label2 = "Upgrade" - need1 = "30 Water Buckets" - need2 = "Bridge lv.2" + need1 = "27 Steel Shovel" + need2 = "30 Water Buckets" + need3 = "Bridge lv.2" else label = (level-8).."/2" label2 = "Upgrade (comming soon)" @@ -5494,11 +6695,13 @@ moate.get_formspec = function(player, pos) label = "not build yet ("..math.floor((level/9)*100).."%)" label2 = "Build" need1 = "3 Stone Shovel" + need2 = "Bridge lv.1" elseif tonumber(level) == 9 then label = (level-8).."/2" label2 = "Upgrade" - need1 = "30 Water Buckets" - need2 = "Bridge lv.2" + need1 = "27 Steel Shovel" + need2 = "30 Water Buckets" + need3 = "Bridge lv.2" else label = (level-8).."/2" label2 = "Upgrade (comming soon)" @@ -5536,11 +6739,13 @@ moatw.get_formspec = function(player, pos) label = "not build yet ("..math.floor((level/9)*100).."%)" label2 = "Build" need1 = "3 Stone Shovel" + need2 = "Bridge lv.1" elseif tonumber(level) == 9 then label = (level-8).."/2" label2 = "Upgrade" - need1 = "30 Water Buckets" - need2 = "Bridge lv.2" + need1 = "27 Steel Shovel" + need2 = "30 Water Buckets" + need3 = "Bridge lv.2" else label = (level-8).."/2" label2 = "Upgrade (comming soon)" @@ -5578,11 +6783,13 @@ moatn.get_formspec = function(player, pos) label = "not build yet ("..math.floor((level/9)*100).."%)" label2 = "Build" need1 = "3 Stone Shovel" + need2 = "Bridge lv.1" elseif tonumber(level) == 9 then label = (level-8).."/2" label2 = "Upgrade" - need1 = "30 Water Buckets" - need2 = "Bridge lv.2" + need1 = "27 Steel Shovel" + need2 = "30 Water Buckets" + need3 = "Bridge lv.2" else label = (level-8).."/2" label2 = "Upgrade (comming soon)" @@ -5621,19 +6828,25 @@ walls.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 14 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 15 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" need3 = "Fountain lv.2" + elseif tonumber(level) == 16 then + label = (level-13).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" + need3 = "Fountain lv.3" else - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5670,19 +6883,25 @@ wallw.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 14 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 15 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" need3 = "Fountain lv.2" + elseif tonumber(level) == 16 then + label = (level-13).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" + need3 = "Fountain lv.3" else - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5719,19 +6938,25 @@ walln.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 14 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 15 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" need3 = "Fountain lv.2" + elseif tonumber(level) == 16 then + label = (level-13).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" + need3 = "Fountain lv.3" else - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5768,19 +6993,25 @@ walle.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 14 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 15 then - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" need3 = "Fountain lv.3" + elseif tonumber(level) == 16 then + label = (level-13).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" + need3 = "Fountain lv.3" else - label = (level-13).."/3" + label = (level-13).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5816,20 +7047,29 @@ fountain.get_formspec = function(player, pos) label = "not build yet ("..math.floor((level/4)*100).."%)" label2 = "Build" need1 = "10 Cobblestone" + need2 = "Walls and Towers lv.1" elseif tonumber(level) == 4 then - label = (level-3).."/3" + label = (level-3).."/4" label2 = "Upgrade" need1 = "25 Cobblestone" need2 = "8 Stone Pickaxe" need3 = "Walls and Towers lv.2" + need4 = "Moats lv.1" elseif tonumber(level) == 5 then - label = (level-3).."/3" + label = (level-3).."/4" label2 = "Upgrade" need1 = "100 Cobblestone" need2 = "32 Stone Pickaxe" need3 = "Walls and Towers lv.3" + elseif tonumber(level) == 6 then + label = (level-3).."/4" + label2 = "Upgrade" + need1 = "100 Desert Cobblestone" + need2 = "32 Steel Pickaxe" + need3 = "Walls and Towers lv.4" + need4 = "Moats lv.2" else - label = (level-3).."/3" + label = (level-3).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5866,19 +7106,25 @@ tower1.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 18 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 19 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" + need3 = "Fountain lv.2" + elseif tonumber(level) == 20 then + label = (level-17).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" need3 = "Fountain lv.3" else - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5915,19 +7161,25 @@ tower2.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 18 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 19 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" + need3 = "Fountain lv.2" + elseif tonumber(level) == 20 then + label = (level-17).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" need3 = "Fountain lv.3" else - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -5964,19 +7216,25 @@ tower3.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 18 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 19 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" + need3 = "Fountain lv.2" + elseif tonumber(level) == 20 then + label = (level-17).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" need3 = "Fountain lv.3" else - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6013,19 +7271,25 @@ tower4.get_formspec = function(player, pos) label2 = "Build" need1 = "3 Cobblestone" elseif tonumber(level) == 18 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "10 Cobblestone" need2 = "3 Stone Sword" need3 = "Fountain lv.1" elseif tonumber(level) == 19 then - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade" need1 = "40 Cobblestone" need2 = "12 Stone Sword" + need3 = "Fountain lv.2" + elseif tonumber(level) == 20 then + label = (level-17).."/4" + label2 = "Upgrade" + need1 = "40 Desert Cobblestone" + need2 = "12 Steel Sword" need3 = "Fountain lv.3" else - label = (level-17).."/3" + label = (level-17).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6062,8 +7326,15 @@ smithy.get_formspec = function(player, pos) label2 = "Build" need1 = "8 Cobblestone" need2 = "6 Wooden Planks" + need3 = "Fountain lv.1" + elseif tonumber(level) == 6 then + label = (level-5).."/2" + label2 = "Upgrade" + need1 = "80 Cobblestone" + need2 = "60 Wooden Planks" + need3 = "Fountain lv.3" else - label = (level-5).."/1" + label = (level-5).."/2" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6080,7 +7351,7 @@ smithy.get_formspec = function(player, pos) if tonumber(level) > 5 then formspec = formspec.."button[0,3;5,1;;Crafting]" end - formspec = formspec.."button[0,4;5,1;;del]" + formspec = formspec--.."button[0,4;5,1;;del]" .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" return formspec end @@ -6093,19 +7364,78 @@ stable.get_formspec = function(player, pos) local level = file:read("*l") file:close() local label = "" + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" if tonumber(level) < 7 then label = "not build yet ("..math.floor((level/7)*100).."%)" + label2 = "Build" + need1 = "100 Wooden Planks" + need2 = "25 River Water Buckets" + need3 = "Fountain lv.4" else label = (level-6).."/1" + label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" .."background[5,6.5;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" .."bgcolor[#080808BB;true]" .."label[0,0;Level: "..label.."]" - .."button[0,1;5,1;;Upgrade]" - --.."button[0,5;5,1;;del]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,4;5,1;;del]" .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + if tonumber(level) > 6 then + formspec = formspec.."button[0,3;5,1;;Get Horse]" + end + return formspec +end +local horse = {} +horse.get_formspec = function(player, pos) + if player == nil then + return + end + item = "" + need1 = "" + need2 = "" + max = 0 + max1 = 0 + max2 = 0 + file = io.open(minetest.get_worldpath().."/SAVE/Stable.txt", "r") + local stable = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "r") + local horse_1 = file:read("*l") + file:close() + if player:get_attribute("4item") ~= nil then + item = player:get_attribute("4item") + end + if player:get_attribute("4need1") ~= nil then + need1 = player:get_attribute("4need1") + end + if player:get_attribute("4need2") ~= nil then + need2 = player:get_attribute("4need2") + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;For: "..item.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[3.9,0.5;You have:"..horse_1.."/"..(stable-6).."]" + .."button[0,2;5,1;;Get Horse]" + .."button[0,3;1,1;;Horse\nlv.1]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + .."image_button[3.9,-0.3;0.8,0.8;;back;<]" return formspec end local mine = {} @@ -6129,11 +7459,11 @@ mine.get_formspec = function(player, pos) elseif tonumber(level) == 1 then label = (level).."/3" label2 = "Upgrade" - need1 = "Completed chapter 1" + need1 = "Completed chapter 2" elseif tonumber(level) == 2 then label = (level).."/3" label2 = "Upgrade" - need1 = "Completed chapter 2" + need1 = "Completed chapter 3" else label = (level).."/3" label2 = "Upgrade (comming soon)" @@ -6167,16 +7497,19 @@ quarry.get_formspec = function(player, pos) local need3 = "" local need4 = "" if tonumber(level) == 0 then - label = (level+1).."/3" + label = (level+1).."/4" label2 = "Upgrade" need1 = "Completed chapter 1" elseif tonumber(level) == 1 then - label = (level+1).."/3" + label = (level+1).."/4" label2 = "Upgrade" need1 = "Completed chapter 2" - need2 = "Fountain lv.1" + elseif tonumber(level) == 2 then + label = (level+1).."/4" + label2 = "Upgrade" + need1 = "Completed chapter 3" else - label = (level+1).."/3" + label = (level+1).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6213,16 +7546,19 @@ tree.get_formspec = function(player, pos) label2 = "Build" need1 = "Fountain lv.1" elseif tonumber(level) == 1 then - label = (level).."/3" + label = (level).."/4" label2 = "Upgrade" need1 = "Completed chapter 1" elseif tonumber(level) == 2 then - label = (level).."/3" + label = (level).."/4" label2 = "Upgrade" need1 = "Completed chapter 2" - need2 = "Fountain lv.2" + elseif tonumber(level) == 3 then + label = (level).."/4" + label2 = "Upgrade" + need1 = "Completed chapter 3" else - label = (level).."/3" + label = (level).."/4" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6300,8 +7636,13 @@ ship1.get_formspec = function(player, pos) label2 = "Build" need1 = "10 Wooden Planks" need2 = "Fountain lv.2" + elseif tonumber(level) == 5 then + label = (level-4).."/2" + label2 = "Upgrade" + need1 = "50 Jungle Wood Planks" + need2 = "Fountain lv.4" else - label = (level-4).."/1" + label = (level-4).."/2" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6315,8 +7656,12 @@ ship1.get_formspec = function(player, pos) .."label[0,1.4;"..need3.."]" .."label[0,1.7;"..need4.."]" .."button[0,2;5,1;;"..label2.."]" - if tonumber(level) > 4 then + if tonumber(level) > 5 then + formspec = formspec.."button[0,3;2.5,1;;Go to Island]" + formspec = formspec.."button[2.5,3;2.5,1;;Go to Mountain]" + elseif tonumber(level) > 4 then formspec = formspec.."button[0,3;5,1;;Go to Island]" + end formspec = formspec--.."button[0,4;5,1;;del]" .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" @@ -6339,6 +7684,9 @@ craft.get_formspec = function(player, pos) if player:get_attribute("need2") ~= nil then need2 = player:get_attribute("need2") end + file = io.open(minetest.get_worldpath().."/SAVE/Smithy.txt", "r") + local level = file:read("*l") + file:close() formspec = "size[5,6.5]" .."background[5,6.5;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" @@ -6355,6 +7703,11 @@ craft.get_formspec = function(player, pos) .."button[2,4;1,1;;Stone\nSword]" .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" .."image_button[3.9,-0.3;0.8,0.8;;back;<]" + if tonumber(level) == 7 then + formspec = formspec .."button[0,5;1,1;;Steel\nShovel]" + .."button[1,5;1,1;;Steel\nPickaxe]" + .."button[2,5;1,1;;Steel\nSword]" + end return formspec end local lake = {} @@ -6376,16 +7729,60 @@ lake.get_formspec = function(player, pos) label2 = "Build" need1 = "Fountain lv.2" elseif tonumber(level) == 1 then - label = (level).."/3" + label = (level).."/4" label2 = "Upgrade" need1 = "Completed chapter 1" elseif tonumber(level) == 2 then - label = (level).."/3" + label = (level).."/4" label2 = "Upgrade" need1 = "Completed chapter 2" - need2 = "Fountain lv.3" + elseif tonumber(level) == 3 then + label = (level).."/4" + label2 = "Upgrade" + need1 = "Completed chapter 3" else - label = (level).."/3" + label = (level).."/4" + label2 = "Upgrade (comming soon)" + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;Level: "..label.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,3;5,1;;del]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end +local lake2 = {} +lake2.get_formspec = function(player, pos) + if player == nil then + return + end + file = io.open(minetest.get_worldpath().."/SAVE/Lake2.txt", "r") + local level = file:read("*l") + file:close() + local label = "" + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" + if tonumber(level) < 1 then + label = "not build yet ("..math.floor((level/1)*100).."%)" + label2 = "Build" + need1 = "Fountain lv.4" + elseif tonumber(level) == 1 then + label = (level).."/2" + label2 = "Upgrade" + need1 = "Completed chapter 3" + else + label = (level).."/2" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6420,11 +7817,18 @@ barracks.get_formspec = function(player, pos) if tonumber(level) < 6 then label = "not build yet ("..math.floor((level/6)*100).."%)" label2 = "Build" - need1 = "5 Water Buckets" - need2 = "20 Cobblestone" - need3 = "20 Wooden Planks" + need1 = "20 Cobblestone" + need2 = "20 Wooden Planks" + need3 = "Fountain lv.1" + elseif tonumber(level) == 6 then + label = (level-5).."/2" + label2 = "Upgrade" + need1 = "50 Water Buckets" + need2 = "200 Cobblestone" + need3 = "200 Wooden Planks" + need4 = "Fountain lv.3" else - label = (level-5).."/1" + label = (level-5).."/2" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6482,6 +7886,44 @@ camp1.get_formspec = function(player, pos) .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" return formspec end +local camp2 = {} +camp2.get_formspec = function(player, pos) + if player == nil then + return + end + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "r") + local level = file:read("*l") + file:close() + local label = "" + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" + if tonumber(level) < 1 then + label = "not build yet ("..math.floor((level/1)*100).."%)" + label2 = "Build" + need1 = "Home 2 lv.1" + need2 = "Camp 1 lv.1" + else + label = (level).."/1" + label2 = "Upgrade (comming soon)" + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;Level: "..label.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,3;5,1;;del]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end local knight = {} knight.get_formspec = function(player, pos) if player == nil then @@ -6499,6 +7941,9 @@ knight.get_formspec = function(player, pos) file = io.open(minetest.get_worldpath().."/SAVE/Home2.txt", "r") local home2 = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Barracks.txt", "r") + local barracks = file:read("*l") + file:close() if tonumber(home1) == 6 then max1 = max1+8 elseif tonumber(home1) == 7 then @@ -6506,13 +7951,21 @@ knight.get_formspec = function(player, pos) end if tonumber(home2) == 6 then max1 = max1+8 + elseif tonumber(home2) == 7 then + max1 = max1+11 end file = io.open(minetest.get_worldpath().."/SAVE/Camp1.txt", "r") local camp1 = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "r") + local camp2 = file:read("*l") + file:close() if tonumber(camp1) == 1 then max2 = max2+20 end + if tonumber(camp2) == 1 then + max2 = max2+20 + end if max1 > max2 then max = max2 elseif max2 > max1 then @@ -6523,7 +7976,9 @@ knight.get_formspec = function(player, pos) file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") local knight_1 = file:read("*l") file:close() - + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() if player:get_attribute("2item") ~= nil then item = player:get_attribute("2item") end @@ -6541,11 +7996,14 @@ knight.get_formspec = function(player, pos) .."label[0,0.5;You need:]" .."label[0,0.8;"..need1.."]" .."label[0,1.1;"..need2.."]" - .."label[3.9,0.5;You have:"..knight_1.."/"..max.."]" + .."label[3.9,0.5;You have:"..(knight_1+knight_2).."/"..max.."]" .."button[0,2;5,1;;Get Knight]" .."button[0,3;1,1;;Knight\nlv.1]" .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" .."image_button[3.9,-0.3;0.8,0.8;;back;<]" + if tonumber(barracks) > 6 then + formspec = formspec.."button[1,3;1,1;;Knight\nlv.2]" + end return formspec end local battleground = {} @@ -6568,16 +8026,22 @@ battleground.get_formspec = function(player, pos) if tonumber(level) < 4 then label = "not build yet ("..math.floor((level/4)*100).."%)" label2 = "Build" - need1 = "Fountain lv.1" - need2 = "4 Cobblestone" + need1 = "4 Cobblestone" + need2 = "Fountain lv.1" elseif tonumber(level) == 4 then - label = (level-3).."/2" + label = (level-3).."/3" label2 = "Upgrade" need1 = "Completed chapter 1" - need2 = "Fountain lv.2" - need3 = "40 Cobblestone" + need2 = "40 Cobblestone" + need3 = "Fountain lv.2" + elseif tonumber(level) == 5 then + label = (level-3).."/3" + label2 = "Upgrade" + need1 = "Completed chapter 2" + need2 = "400 Cobblestone" + need3 = "Fountain lv.3" else - label = (level-3).."/2" + label = (level-3).."/3" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -6595,10 +8059,12 @@ battleground.get_formspec = function(player, pos) formspec = formspec.."button[0,3;5,1;;Start Chapter 1]" elseif tonumber(chapter) == 2 and tonumber(level) > 4 then formspec = formspec.."button[0,3;5,1;;Start Chapter 2]" - elseif tonumber(chapter) == 2 and tonumber(level) > 3 then + elseif tonumber(chapter) == 2 then formspec = formspec.."button[0,3;5,1;;Start Chapter 2 (battleground lv.2 needed)]" - elseif tonumber(chapter) == 3 and tonumber(level) > 4 then - formspec = formspec.."button[0,3;5,1;;Start Chapter 3 (comming soon)]" + elseif tonumber(chapter) == 3 and tonumber(level) > 5 then + formspec = formspec.."button[0,3;5,1;;Start Chapter 3]" + elseif tonumber(chapter) == 3 then + formspec = formspec.."button[0,3;5,1;;Start Chapter 3 (battleground lv.3 needed)]" end formspec = formspec--.."button[0,4;5,1;;del]" .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" @@ -6766,8 +8232,15 @@ island_ship1.get_formspec = function(player, pos) local need2 = "" local need3 = "" local need4 = "" - label = (level-4).."/1" - label2 = "Upgrade (comming soon)" + if tonumber(level) == 5 then + label = (level-4).."/2" + label2 = "Upgrade" + need1 = "50 Jungle Wood Planks" + need2 = "Fountain lv.4" + else + label = (level-4).."/2" + label2 = "Upgrade (comming soon)" + end formspec = "size[5,6.5]" .."background[5,6.5;1,1;gui_formbg.png;true]" .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" @@ -6780,6 +8253,7 @@ island_ship1.get_formspec = function(player, pos) .."label[0,1.7;"..need4.."]" .."button[0,2;5,1;;"..label2.."]" .."button[0,3;5,1;;Go Back]" + --.."button[0,4;5,1;;del]" .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" return formspec end @@ -6820,6 +8294,87 @@ island_fountain.get_formspec = function(player, pos) .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" return formspec end +local island_smithy = {} +island_smithy.get_formspec = function(player, pos) + if player == nil then + return + end + file = io.open(minetest.get_worldpath().."/SAVE/Island_Smithy.txt", "r") + local level = file:read("*l") + file:close() + local label = "" + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" + if tonumber(level) < 6 then + label = "not build yet ("..math.floor((level/6)*100).."%)" + label2 = "Build" + need1 = "80 Sand" + need2 = "60 Wood" + need3 = "Island Fountain lv.1" + else + label = (level-5).."/1" + label2 = "Upgrade (comming soon)" + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;Level: "..label.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,4;5,1;;del]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + if tonumber(level) > 5 then + formspec = formspec.."button[0,3;5,1;;Crafting]" + end + return formspec +end +local craft2 = {} +craft2.get_formspec = function(player, pos) + if player == nil then + return + end + item = "" + need1 = "" + need2 = "" + need3 = "" + if player:get_attribute("3item") ~= nil then + item = player:get_attribute("3item") + end + if player:get_attribute("3need1") ~= nil then + need1 = player:get_attribute("3need1") + end + if player:get_attribute("3need2") ~= nil then + need2 = player:get_attribute("3need2") + end + if player:get_attribute("3need3") ~= nil then + need3 = player:get_attribute("3need3") + end + file = io.open(minetest.get_worldpath().."/SAVE/Smithy.txt", "r") + local level = file:read("*l") + file:close() + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;For: "..item.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."button[0,2;5,1;;Craft]" + .."button[0,3;1,1;;Glass]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + .."image_button[3.9,-0.3;0.8,0.8;;back;<]" + return formspec +end local sandmine = {} sandmine.get_formspec = function(player, pos) if player == nil then @@ -6834,16 +8389,163 @@ sandmine.get_formspec = function(player, pos) local need3 = "" local need4 = "" if tonumber(level) == 0 then - label = (level+1).."/3" + label = (level+1).."/2" label2 = "Upgrade" - need1 = "Completed chapter 1" - elseif tonumber(level) == 1 then - label = (level+1).."/3" - label2 = "Upgrade" - need1 = "Completed chapter 2" - need2 = "Island Fountain lv.1" + need1 = "Completed chapter 3" + --elseif tonumber(level) == 1 then + -- label = (level+1).."/3" + -- label2 = "Upgrade" + -- need1 = "Completed chapter 2" + -- need2 = "Island Fountain lv.1" else - label = (level+1).."/3" + label = (level+1).."/2" + label2 = "Upgrade (comming soon)" + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;Level: "..label.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,3;5,1;;del]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end +local cactusfarm = {} +cactusfarm.get_formspec = function(player, pos) + if player == nil then + return + end + file = io.open(minetest.get_worldpath().."/SAVE/Cactusfarm.txt", "r") + local level = file:read("*l") + file:close() + local label = "" + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" + if tonumber(level) < 1 then + label = "not build yet ("..math.floor((level/1)*100).."%)" + label2 = "Build" + need1 = "Island Fountain lv.1" + elseif tonumber(level) == 1 then + label = (level).."/2" + label2 = "Upgrade" + need1 = "Completed chapter 3" + else + label = (level).."/2" + label2 = "Upgrade (comming soon)" + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;Level: "..label.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,3;5,1;;del]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end +local mountain_quarry = {} +mountain_quarry.get_formspec = function(player, pos) + if player == nil then + return + end + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Quarry.txt", "r") + local level = file:read("*l") + file:close() + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" + label = (level+1).."/1" + label2 = "Upgrade (comming soon)" + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;Level: "..label.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,3;5,1;;del]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end +local mountain_fountain = {} +mountain_fountain.get_formspec = function(player, pos) + if player == nil then + return + end + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Fountain.txt", "r") + local level = file:read("*l") + file:close() + local label = "" + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" + if tonumber(level) < 3 then + label = "not build yet ("..math.floor((level/3)*100).."%)" + label2 = "Build" + need1 = "50 Moosy Cobblestone" + else + label = (level-2).."/1" + label2 = "Upgrade (comming soon)" + end + formspec = "size[5,6.5]" + .."background[5,6.5;1,1;gui_formbg.png;true]" + .."listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" + .."bgcolor[#080808BB;true]" + .."label[0,0;Level: "..label.."]" + .."label[0,0.5;You need:]" + .."label[0,0.8;"..need1.."]" + .."label[0,1.1;"..need2.."]" + .."label[0,1.4;"..need3.."]" + .."label[0,1.7;"..need4.."]" + .."button[0,2;5,1;;"..label2.."]" + --.."button[0,3;5,1;;del]" + .."image_button[4.5,-0.3;0.8,0.8;;esc;X]" + return formspec +end +local island_home1 = {} +island_home1.get_formspec = function(player, pos) + if player == nil then + return + end + file = io.open(minetest.get_worldpath().."/SAVE/Island_Home1.txt", "r") + local level = file:read("*l") + file:close() + local label = "" + local label2 = "" + local need1 = "" + local need2 = "" + local need3 = "" + local need4 = "" + if tonumber(level) < 5 then + label = "not build yet ("..math.floor((level/5)*100).."%)" + label2 = "Build" + need1 = "80 Sand" + need2 = "10 Glass" + need3 = "Island Fountain lv.1" + else + label = (level-4).."/1" label2 = "Upgrade (comming soon)" end formspec = "size[5,6.5]" @@ -7012,7 +8714,7 @@ minetest.register_node("castrum:smithy",{ minetest.register_node("castrum:stable",{ tiles = {"default_diamond_block.png"}, description = "Configurate Stable", - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, on_punch = function(pos, node, player, pointed_thing) minetest.show_formspec(player:get_player_name(), "stable" , stable.get_formspec(player)) end, @@ -7065,6 +8767,14 @@ minetest.register_node("castrum:lake",{ minetest.show_formspec(player:get_player_name(), "lake" , lake.get_formspec(player)) end, }) +minetest.register_node("castrum:lake2",{ + tiles = {"default_diamond_block.png"}, + description = "Configurate Lake 2", + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + on_punch = function(pos, node, player, pointed_thing) + minetest.show_formspec(player:get_player_name(), "lake2" , lake2.get_formspec(player)) + end, +}) minetest.register_node("castrum:barracks",{ tiles = {"default_diamond_block.png"}, description = "Configurate Barracks", @@ -7081,6 +8791,14 @@ minetest.register_node("castrum:camp1",{ minetest.show_formspec(player:get_player_name(), "camp1" , camp1.get_formspec(player)) end, }) +minetest.register_node("castrum:camp2",{ + tiles = {"default_diamond_block.png"}, + description = "Configurate Camp 2", + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + on_punch = function(pos, node, player, pointed_thing) + minetest.show_formspec(player:get_player_name(), "camp2" , camp2.get_formspec(player)) + end, +}) minetest.register_node("castrum:island_walle",{ tiles = {"default_diamond_block.png"}, description = "Configurate Island Walle", @@ -7121,6 +8839,14 @@ minetest.register_node("castrum:island_fountain",{ minetest.show_formspec(player:get_player_name(), "island_fountain" , island_fountain.get_formspec(player)) end, }) +minetest.register_node("castrum:island_smithy",{ + tiles = {"default_diamond_block.png"}, + description = "Configurate Island Smithy", + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + on_punch = function(pos, node, player, pointed_thing) + minetest.show_formspec(player:get_player_name(), "island_smithy" , island_smithy.get_formspec(player)) + end, +}) minetest.register_node("castrum:island_ship1",{ tiles = {"default_diamond_block.png"}, description = "Configurate Island Ship 1", @@ -7137,6 +8863,14 @@ minetest.register_node("castrum:sandmine",{ minetest.show_formspec(player:get_player_name(), "sandmine" , sandmine.get_formspec(player)) end, }) +minetest.register_node("castrum:cactusfarm",{ + tiles = {"default_diamond_block.png"}, + description = "Configurate Cactusfarm", + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + on_punch = function(pos, node, player, pointed_thing) + minetest.show_formspec(player:get_player_name(), "cactusfarm" , cactusfarm.get_formspec(player)) + end, +}) minetest.register_node("castrum:battleground",{ tiles = {"default_diamond_block.png"}, description = "Configurate Battleground", @@ -7153,16 +8887,41 @@ minetest.register_node("castrum:bridge_status",{ Bridge_Status(player) end, }) +minetest.register_node("castrum:mountain_quarry",{ + tiles = {"default_diamond_block.png"}, + description = "Configurate Mountain Quarry", + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + on_punch = function(pos, node, player, pointed_thing) + minetest.show_formspec(player:get_player_name(), "mountain_quarry" , mountain_quarry.get_formspec(player)) + end, +}) +minetest.register_node("castrum:mountain_fountain",{ + tiles = {"default_diamond_block.png"}, + description = "Configurate Mountain Fountain", + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + on_punch = function(pos, node, player, pointed_thing) + minetest.show_formspec(player:get_player_name(), "mountain_fountain" , mountain_fountain.get_formspec(player)) + end, +}) +minetest.register_node("castrum:island_home1",{ + tiles = {"default_diamond_block.png"}, + description = "Configurate Island Home 1", + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + on_punch = function(pos, node, player, pointed_thing) + minetest.show_formspec(player:get_player_name(), "island_home1" , island_home1.get_formspec(player)) + end, +}) minetest.register_node("castrum:fight1",{ tiles = {"castrum_fight1.png"}, description = "Fight 1", - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, }) minetest.register_node("castrum:fight2",{ tiles = {"castrum_fight2.png"}, description = "Fight 2", --groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, }) + minetest.register_craftitem("castrum:soul", { description = "Soul", inventory_image = "castrum_soul.png", @@ -7179,10 +8938,102 @@ minetest.register_craftitem("castrum:pick_stone", { description = "Stone Pickaxe", inventory_image = "default_tool_stonepick.png", }) +minetest.register_craftitem("castrum:shovel_steel", { + description = "Steel Shovel", + inventory_image = "default_tool_steelshovel.png", +}) +minetest.register_craftitem("castrum:sword_steel", { + description = "Steel Sword", + inventory_image = "default_tool_steelsword.png", +}) +minetest.register_craftitem("castrum:pick_steel", { + description = "Steel Pickaxe", + inventory_image = "default_tool_steelpick.png", +}) + minetest.register_craftitem("castrum:bucket_water", { description = "Water Bucket", inventory_image = "bucket_water.png", }) +minetest.register_craftitem("castrum:bucket_river_water", { + description = "River Water Bucket", + inventory_image = "bucket_river_water.png", +}) + +minetest.register_craftitem("castrum:horse1_item", { + description = "Horse lv.1", + inventory_image = "castrum_horse_inv.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.under + if minetest.get_node(pos).name == "castrum:knight_lv1" then + itemstack:take_item() + minetest.set_node(pos, {name="castrum:horse1"}) + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="castrum:knight_lv1_sit"}) + screwdriver_handler(placer, {type="node", under={x=pos.x,y=pos.y+1,z=pos.z}, above={x=pos.x,y=pos.y+1,z=pos.z}}, 1) + return itemstack + end + if minetest.get_node(pos).name == "castrum:knight_lv2" then + itemstack:take_item() + minetest.set_node(pos, {name="castrum:horse1"}) + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="castrum:knight_lv2_sit"}) + screwdriver_handler(placer, {type="node", under={x=pos.x,y=pos.y+1,z=pos.z}, above={x=pos.x,y=pos.y+1,z=pos.z}}, 1) + return itemstack + end + end, +}) + +minetest.register_craftitem("castrum:horse1_item_1", { + description = "Horse lv.1 with knight lv.1", + inventory_image = "castrum_horse_inv.png^castrum_num1.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.under + if minetest.get_node(pos).name == "castrum:fight1" then + itemstack:take_item() + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="castrum:horse1"}) + minetest.set_node({x=pos.x,y=pos.y+2,z=pos.z}, {name="castrum:knight_lv1_sit"}) + screwdriver_handler(placer, {type="node", under={x=pos.x,y=pos.y+2,z=pos.z}, above={x=pos.x,y=pos.y+2,z=pos.z}}, 1) + local inv = placer:get_inventory() + inv:remove_item("main", "castrum:knight_lv2") + local fight = placer:get_attribute("fight") + placer:set_attribute("fightdig", "false") + if fight == "true" then + for j=144,174 do + for i=51,81 do + minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) + end + end + fight_step2(placer) + end + return itemstack + end + end, +}) +minetest.register_craftitem("castrum:horse1_item_2", { + description = "Horse lv.1 with knight lv.2", + inventory_image = "castrum_horse_inv.png^castrum_num2.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.under + if minetest.get_node(pos).name == "castrum:fight1" then + itemstack:take_item() + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="castrum:horse1"}) + minetest.set_node({x=pos.x,y=pos.y+2,z=pos.z}, {name="castrum:knight_lv2_sit"}) + screwdriver_handler(placer, {type="node", under={x=pos.x,y=pos.y+2,z=pos.z}, above={x=pos.x,y=pos.y+2,z=pos.z}}, 1) + local inv = placer:get_inventory() + inv:remove_item("main", "castrum:knight_lv2") + local fight = placer:get_attribute("fight") + placer:set_attribute("fightdig", "false") + if fight == "true" then + for j=144,174 do + for i=51,81 do + minetest.set_node({x=j*(-1), y=8, z=i*(-1)}, {name="default:dirt_with_grass"}) + end + end + fight_step2(placer) + end + return itemstack + end + end, +}) minetest.register_node("castrum:cobble",{ tiles = {"default_cobble.png"}, description = "Cobble", @@ -7193,6 +9044,16 @@ minetest.register_node("castrum:comming_soon",{ description = "Comming soon", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, }) +minetest.register_node("castrum:cactus",{ + tiles = {"default_cactus_top.png", "default_cactus_top.png","default_cactus_side.png"}, + description = "Cactus", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, +}) +minetest.register_node("castrum:dirt_with_grass", { + description = "Dirt with Grass", + tiles = {"default_grass.png", "default_dirt.png",{name = "default_dirt.png^default_grass_side.png",tileable_vertical = false}}, + groups = {crumbly = 3}, +}) minetest.register_node("castrum:character1", { description = "character", drawtype = "mesh", @@ -7202,6 +9063,18 @@ minetest.register_node("castrum:character1", { paramtype2 = "facedir", --groups = {cracky=3, oddly_breakable_by_hand=2}, }) + +minetest.register_node("castrum:horse1", { + description = "Horse lv.1", + drawtype = "mesh", + mesh = "horse.obj", + tiles = {"castrum_horse.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=3}, + +}) + minetest.register_node("castrum:castrum_knight1", { description = "character", drawtype = "mesh", @@ -7209,7 +9082,7 @@ minetest.register_node("castrum:castrum_knight1", { tiles = {"castrum_knight.png"}, paramtype = "light", paramtype2 = "facedir", - groups = {cracky=3, oddly_breakable_by_hand=2}, + --groups = {cracky=3, oddly_breakable_by_hand=2}, }) minetest.register_node("castrum:castrum_knight2", { description = "character", @@ -7247,6 +9120,15 @@ minetest.register_node("castrum:knight_lv1", { paramtype2 = "facedir", groups = {snappy=3}, }) +minetest.register_node("castrum:knight_lv2", { + description = "character", + drawtype = "mesh", + mesh = "character.obj", + tiles = {"castrum_knight_lv2.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=3}, +}) minetest.register_node("castrum:knight_lv1_sit", { description = "character", drawtype = "mesh", @@ -7256,6 +9138,15 @@ minetest.register_node("castrum:knight_lv1_sit", { paramtype2 = "facedir", --groups = {cracky=3, oddly_breakable_by_hand=2}, }) +minetest.register_node("castrum:knight_lv2_sit", { + description = "character", + drawtype = "mesh", + mesh = "character2.obj", + tiles = {"castrum_knight_lv2.png"}, + paramtype = "light", + paramtype2 = "facedir", + --groups = {cracky=3, oddly_breakable_by_hand=2}, +}) minetest.register_node("castrum:knight_lv1_dark", { description = "character", drawtype = "mesh", @@ -7263,7 +9154,16 @@ minetest.register_node("castrum:knight_lv1_dark", { tiles = {"castrum_knight_lv1_dark.png"}, paramtype = "light", paramtype2 = "facedir", - groups = {cracky=3, oddly_breakable_by_hand=2}, + --groups = {cracky=3, oddly_breakable_by_hand=2}, +}) +minetest.register_node("castrum:knight_lv2_dark", { + description = "character", + drawtype = "mesh", + mesh = "character.obj", + tiles = {"castrum_knight_lv2_dark.png"}, + paramtype = "light", + paramtype2 = "facedir", + --groups = {cracky=3, oddly_breakable_by_hand=2}, }) minetest.register_node("castrum:fire", { description = "Fire", @@ -7356,12 +9256,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) < 6 and inv:contains_item("main", "default:cobble 8") and inv:contains_item("main", "default:wood 10") then txt = "build fountain first" - elseif tonumber(level) == 6 and inv:contains_item("main", "default:cobble 64") and inv:contains_item("main", "default:junglewood 80") and tonumber(fountain) > 5 then + elseif tonumber(level) == 6 and inv:contains_item("main", "default:cobble 64") and inv:contains_item("main", "default:junglewood 80") and tonumber(fountain) > 4 then inv:remove_item("main", "default:junglewood 80") inv:remove_item("main", "default:wood 64") upgrade = true elseif tonumber(level) == 6 and inv:contains_item("main", "default:cobble 64") and inv:contains_item("main", "default:junglewood 80") then - txt = "upgrade fountain to lv.3 first" + txt = "upgrade fountain to lv.2 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) @@ -7402,11 +9302,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) < 6 and inv:contains_item("main", "default:cobble 8") and inv:contains_item("main", "default:wood 10") then txt = "upgrade fountain to lv.3 first" + elseif tonumber(level) == 6 and inv:contains_item("main", "default:cobble 64") and inv:contains_item("main", "default:junglewood 80") and tonumber(fountain) > 6 then + inv:remove_item("main", "default:junglewood 80") + inv:remove_item("main", "default:wood 64") + upgrade = true + elseif tonumber(level) == 6 and inv:contains_item("main", "default:cobble 64") and inv:contains_item("main", "default:junglewood 80") then + txt = "upgrade fountain to lv.4 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 6 and upgrade then + if (tonumber(level)) < 7 and upgrade then Home2(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Home2.txt", "w") file:write(tonumber(level)+1) @@ -7430,17 +9336,26 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file = io.open(minetest.get_worldpath().."/SAVE/Bridge.txt", "r") local level = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "r") + local fountain = file:read("*l") + file:close() + local inv = player:get_inventory() local upgrade = false - if tonumber(level) < 9 and inv:contains_item("main", "default:wood 3") then + local txt = "not enough items" + if tonumber(level) < 9 and inv:contains_item("main", "default:wood 3") and tonumber(fountain) > 3 then inv:remove_item("main", "default:wood 3") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "default:junglewood 27") then + elseif tonumber(level) < 9 and inv:contains_item("main", "default:wood 3") then + txt = "build fountain first" + elseif tonumber(level) == 9 and inv:contains_item("main", "default:junglewood 27") and tonumber(fountain) > 5 then inv:remove_item("main", "default:junglewood 27") upgrade = true + elseif tonumber(level) == 9 and inv:contains_item("main", "default:junglewood 27") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then - minetest.chat_send_player(player:get_player_name(), "not enough items") + minetest.chat_send_player(player:get_player_name(), txt) end if (tonumber(level)) < 10 and upgrade then Bridge(tonumber(level)+1,player) @@ -7465,15 +9380,21 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif v == "Upgrade" then file = io.open(minetest.get_worldpath().."/SAVE/Bridge.txt", "r") local level = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "r") + local fountain = file:read("*l") file:close() local inv = player:get_inventory() local upgrade = false - if tonumber(level) == 9 and inv:contains_item("main", "default:junglewood 27") then + local txt = "not enough items" + if tonumber(level) == 9 and inv:contains_item("main", "default:junglewood 27") and tonumber(fountain) > 5 then inv:remove_item("main", "default:junglewood 27") upgrade = true + elseif tonumber(level) == 9 and inv:contains_item("main", "default:junglewood 27") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then - minetest.chat_send_player(player:get_player_name(), "not enough items") + minetest.chat_send_player(player:get_player_name(), txt) end if (tonumber(level)) < 10 and upgrade then Bridge2(tonumber(level)+1,player) @@ -7510,10 +9431,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") then txt = "build bridge first" - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then - inv:remove_item("main", "castrum:bucket_water 30") + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then + inv:remove_item("main", "castrum:shovel_steel 27") + inv:remove_item("main", "castrum:bucket_water 30") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") then + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") then txt = "upgrade bridge to lv.2 first" end if upgrade == false then @@ -7564,11 +9486,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 15 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 16 and upgrade then + if (tonumber(level)) < 17 and upgrade then Wall_south(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Walls.txt", "w") file:write(tonumber(level)+1) @@ -7617,29 +9545,55 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file = io.open(minetest.get_worldpath().."/SAVE/Wallw.txt", "r") local wallw = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Moate.txt", "r") + local moate = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Moats.txt", "r") + local moats = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Moatn.txt", "r") + local moatn = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Moatw.txt", "r") + local moatw = file:read("*l") + file:close() + local inv = player:get_inventory() local upgrade = false local txt = "not enough items" - if tonumber(level) < 4 and inv:contains_item("main", "default:cobble 10") then + if tonumber(level) < 4 and inv:contains_item("main", "default:cobble 10") and tonumber(tower1) > 17 and tonumber(tower2) > 17 and tonumber(tower3) > 17 and tonumber(tower4) > 17 and tonumber(walle) > 13 and tonumber(wallw) > 13 and tonumber(walln) > 13 and tonumber(walls) > 13 then inv:remove_item("main", "default:cobble 10") upgrade = true - elseif tonumber(level) == 4 and inv:contains_item("main", "default:cobble 25") and inv:contains_item("main", "castrum:pick_stone 8") and tonumber(tower1) > 18 and tonumber(tower2) > 18 and tonumber(tower3) > 18 and tonumber(tower4) > 18 and tonumber(walle) > 14 and tonumber(wallw) > 14 and tonumber(walln) > 14 and tonumber(walls) > 14 then + elseif tonumber(level) < 4 and inv:contains_item("main", "default:cobble 10") then + txt = "build walls and towers first" + elseif tonumber(level) == 4 and inv:contains_item("main", "default:cobble 25") and inv:contains_item("main", "castrum:pick_stone 8") and tonumber(tower1) > 18 and tonumber(tower2) > 18 and tonumber(tower3) > 18 and tonumber(tower4) > 18 and tonumber(walle) > 14 and tonumber(wallw) > 14 and tonumber(walln) > 14 and tonumber(walls) > 14 and tonumber(moate) > 8 and tonumber(moatw) > 8 and tonumber(moats) > 8 and tonumber(moatn) > 8 then inv:remove_item("main", "default:cobble 25") inv:remove_item("main", "castrum:pick_stone 8") upgrade = true + elseif tonumber(level) == 4 and inv:contains_item("main", "default:cobble 25") and inv:contains_item("main", "castrum:pick_stone 8") and tonumber(tower1) > 18 and tonumber(tower2) > 18 and tonumber(tower3) > 18 and tonumber(tower4) > 18 and tonumber(walle) > 14 and tonumber(wallw) > 14 and tonumber(walln) > 14 and tonumber(walls) > 14 then + txt = "upgrade moats to lv.1 first" elseif tonumber(level) == 4 and inv:contains_item("main", "default:cobble 25") and inv:contains_item("main", "castrum:pick_stone 8") then txt = "upgrade walls and towers to lv.2 first" + elseif tonumber(level) == 5 and inv:contains_item("main", "default:cobble 100") and inv:contains_item("main", "castrum:pick_stone 32") and tonumber(tower1) > 19 and tonumber(tower2) > 19 and tonumber(tower3) > 19 and tonumber(tower4) > 19 and tonumber(walle) > 15 and tonumber(wallw) > 15 and tonumber(walln) > 15 and tonumber(walls) > 15 then inv:remove_item("main", "default:cobble 100") inv:remove_item("main", "castrum:pick_stone 32") upgrade = true elseif tonumber(level) == 5 and inv:contains_item("main", "default:cobble 100") and inv:contains_item("main", "castrum:pick_stone 32") then txt = "upgrade walls and towers to lv.3 first" + elseif tonumber(level) == 6 and inv:contains_item("main", "default:desert_cobble 100") and inv:contains_item("main", "castrum:pick_steel 32") and tonumber(tower1) > 20 and tonumber(tower2) > 20 and tonumber(tower3) > 20 and tonumber(tower4) > 20 and tonumber(walle) > 16 and tonumber(wallw) > 16 and tonumber(walln) > 16 and tonumber(walls) > 16 and tonumber(moate) > 9 and tonumber(moatw) > 9 and tonumber(moats) > 9 and tonumber(moatn) > 9 then + inv:remove_item("main", "default:desert_cobble 100") + inv:remove_item("main", "castrum:pick_steel 32") + upgrade = true + elseif tonumber(level) == 6 and inv:contains_item("main", "default:desert_cobble 100") and inv:contains_item("main", "castrum:pick_steel 32") and tonumber(tower1) > 20 and tonumber(tower2) > 20 and tonumber(tower3) > 20 and tonumber(tower4) > 20 and tonumber(walle) > 16 and tonumber(wallw) > 16 and tonumber(walln) > 16 and tonumber(walls) > 16 then + txt = "upgrade moats to lv.2 first" + elseif tonumber(level) == 6 and inv:contains_item("main", "default:desert_cobble 100") and inv:contains_item("main", "castrum:pick_steel 32") then + txt = "upgrade walls and towers to lv.4 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 6 and upgrade then + if (tonumber(level)) < 7 and upgrade then Fountain(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "w") file:write(tonumber(level)+1) @@ -7684,11 +9638,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 19 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 20 and upgrade then + if (tonumber(level)) < 21 and upgrade then Tower1(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Tower1.txt", "w") file:write(tonumber(level)+1) @@ -7733,11 +9693,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 15 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 16 and upgrade then + if (tonumber(level)) < 17 and upgrade then Wall_east(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Walle.txt", "w") file:write(tonumber(level)+1) @@ -7782,11 +9748,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 19 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 20 and upgrade then + if (tonumber(level)) < 21 and upgrade then Tower2(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Tower2.txt", "w") file:write(tonumber(level)+1) @@ -7831,11 +9803,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 15 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 16 and upgrade then + if (tonumber(level)) < 17 and upgrade then Wall_west(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Wallw.txt", "w") file:write(tonumber(level)+1) @@ -7880,11 +9858,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 15 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 16 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 16 and upgrade then + if (tonumber(level)) < 17 and upgrade then Wall_north(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Walln.txt", "w") file:write(tonumber(level)+1) @@ -7913,13 +9897,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file:close() local inv = player:get_inventory() local upgrade = false - if tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") then + local txt = "not enough items" + if tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") and tonumber(bridge) > 8 then inv:remove_item("main", "castrum:shovel_stone 3") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then - inv:remove_item("main", "castrum:bucket_water 30") + elseif tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") then + txt = "build bridge first" + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then + inv:remove_item("main", "castrum:shovel_steel 27") + inv:remove_item("main", "castrum:bucket_water 30") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") then + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") then txt = "upgrade bridge to lv.2 first" end if upgrade == false then @@ -7970,11 +9958,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 19 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 20 and upgrade then + if (tonumber(level)) < 21 and upgrade then Tower3(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Tower3.txt", "w") file:write(tonumber(level)+1) @@ -8003,13 +9997,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file:close() local inv = player:get_inventory() local upgrade = false - if tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") then + local txt = "not enough items" + if tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") and tonumber(bridge) > 8 then inv:remove_item("main", "castrum:shovel_stone 3") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then - inv:remove_item("main", "castrum:bucket_water 30") + elseif tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") then + txt = "build bridge first" + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then + inv:remove_item("main", "castrum:shovel_steel 27") + inv:remove_item("main", "castrum:bucket_water 30") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") then + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") then txt = "upgrade bridge to lv.2 first" end if upgrade == false then @@ -8044,14 +10042,18 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file:close() local inv = player:get_inventory() local upgrade = false - if tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") then + local txt = "not enough items" + if tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") and tonumber(bridge) > 8 then inv:remove_item("main", "castrum:shovel_stone 3") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then - inv:remove_item("main", "castrum:bucket_water 30") + elseif tonumber(level) < 9 and inv:contains_item("main", "castrum:shovel_stone 3") then + txt = "build bridge first" + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") and tonumber(bridge) > 9 then + inv:remove_item("main", "castrum:shovel_steel 27") + inv:remove_item("main", "castrum:bucket_water 30") upgrade = true - elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:bucket_water 30") then - txt = "upgrade bridge to lv.2 first" + elseif tonumber(level) == 9 and inv:contains_item("main", "castrum:shovel_steel 27") and inv:contains_item("main", "castrum:bucket_water 30") then + txt = "upgrade bridge to lv.2 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) @@ -8101,11 +10103,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) == 19 and inv:contains_item("main", "default:cobble 40") and inv:contains_item("main", "castrum:sword_stone 12") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:desert_cobble 40") + inv:remove_item("main", "castrum:sword_steel 12") + upgrade = true + elseif tonumber(level) == 20 and inv:contains_item("main", "default:desert_cobble 40") and inv:contains_item("main", "castrum:sword_steel 12") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 20 and upgrade then + if (tonumber(level)) < 21 and upgrade then Tower4(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Tower4.txt", "w") file:write(tonumber(level)+1) @@ -8129,17 +10137,29 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file = io.open(minetest.get_worldpath().."/SAVE/Smithy.txt", "r") local level = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "r") + local fountain = file:read("*l") + file:close() local inv = player:get_inventory() local upgrade = false - if tonumber(level) < 6 and inv:contains_item("main", "default:cobble 8") and inv:contains_item("main", "default:wood 6") then + local txt = "not enough items" + if tonumber(level) < 6 and inv:contains_item("main", "default:cobble 8") and inv:contains_item("main", "default:wood 6") and tonumber(fountain) > 3 then inv:remove_item("main", "default:cobble 8") inv:remove_item("main", "default:wood 6") upgrade = true + elseif tonumber(level) == 6 and inv:contains_item("main", "default:cobble 80") and inv:contains_item("main", "default:wood 60") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:cobble 80") + inv:remove_item("main", "default:wood 60") + upgrade = true + elseif tonumber(level) < 6 and inv:contains_item("main", "default:cobble 8") and inv:contains_item("main", "default:wood 6") then + txt = "build fountain first" + elseif tonumber(level) == 6 and inv:contains_item("main", "default:cobble 80") and inv:contains_item("main", "default:wood 60") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then - minetest.chat_send_player(player:get_player_name(), "not enough items") + minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 6 and upgrade then + if (tonumber(level)) < 7 and upgrade then Smithy(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Smithy.txt", "w") file:write(tonumber(level)+1) @@ -8153,7 +10173,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end end - if formname == "stable" then + if formname == "stable" then for k, v in pairs(fields) do if v == "del" then Stable(0,player) @@ -8161,22 +10181,80 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file:write("0") file:close() minetest.show_formspec(player:get_player_name(), "stable" , stable.get_formspec(player)) - elseif v == "Upgrade" then + elseif v == "Upgrade" or v == "Build" then file = io.open(minetest.get_worldpath().."/SAVE/Stable.txt", "r") local level = file:read("*l") file:close() - if (tonumber(level)) < 7 then + file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "r") + local fountain = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + local txt = "not enough items" + if tonumber(level) < 7 and inv:contains_item("main", "default:wood 100") and inv:contains_item("main", "castrum:bucket_river_water 25") and tonumber(fountain) > 6 then + inv:remove_item("main", "default:wood 100") + inv:remove_item("main", "castrum:bucket_river_water 25") + upgrade = true + elseif tonumber(level) < 7 and inv:contains_item("main", "default:wood 100") and inv:contains_item("main", "castrum:bucket_river_water 25") then + txt = "upgrade fountain to lv.4 first" + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 7 and upgrade then Stable(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Stable.txt", "w") file:write(tonumber(level)+1) file:close() end minetest.show_formspec(player:get_player_name(), "stable" , stable.get_formspec(player)) + elseif v == "Get Horse" then + minetest.show_formspec(player:get_player_name(), "horse" , horse.get_formspec(player)) elseif v == "X" then minetest.show_formspec(player:get_player_name(), "", "") end end end + if formname == "horse" then + for k, v in pairs(fields) do + if v == "Get Horse" then + file = io.open(minetest.get_worldpath().."/SAVE/Stable.txt", "r") + local stable = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Horse_1.txt", "r") + local horse_1 = file:read("*l") + file:close() + if tonumber(horse_1) < (stable-6) then + if player:get_attribute("4need1string") then + if player:get_inventory():contains_item("main", player:get_attribute("4need1string")) and player:get_inventory():contains_item("main", player:get_attribute("4need2string")) then + player:get_inventory():remove_item("main", player:get_attribute("4need1string")) + player:get_inventory():remove_item("main", player:get_attribute("4need2string")) + Add_horse(player,player:get_attribute("horselv"),true) + else + minetest.chat_send_player(player:get_player_name(), "not enough items") + end + else + minetest.chat_send_player(player:get_player_name(), "select horse first") + end + else + minetest.chat_send_player(player:get_player_name(), "you can only have "..(stable-6).." horse") + end + minetest.show_formspec(player:get_player_name(), "horse" , horse.get_formspec(player)) + elseif v == "Horse\nlv.1" then + player:set_attribute("4item", "Horse lv.1") + player:set_attribute("4need1", "7 Souls") + player:set_attribute("4need2", "15 River Water Buckets") + player:set_attribute("4need1string", "castrum:soul 7") + player:set_attribute("4need2string", "castrum:bucket_river_water 15") + player:set_attribute("horselv", "1") + minetest.show_formspec(player:get_player_name(), "horse" , horse.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + elseif v == "<" then + minetest.show_formspec(player:get_player_name(), "stable" , stable.get_formspec(player)) + end + end + end if formname == "mine" then for k, v in pairs(fields) do if v == "del" then @@ -8202,14 +10280,14 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) < 1 then txt = "upgrade fountain to lv.3 first" - elseif tonumber(level) == 1 and tonumber(chapter) > 1 then + elseif tonumber(level) == 1 and tonumber(chapter) > 2 then upgrade = true - elseif tonumber(level) == 2 and tonumber(chapter) > 2 then + elseif tonumber(level) == 2 and tonumber(chapter) > 3 then upgrade = true elseif tonumber(level) == 1 then - txt = "complete chapter 1 first" - elseif tonumber(level) == 2 then txt = "complete chapter 2 first" + elseif tonumber(level) == 2 then + txt = "complete chapter 3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) @@ -8249,19 +10327,21 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local upgrade = false if tonumber(level) == 0 and tonumber(chapter) > 1 then upgrade = true - elseif tonumber(level) == 1 and tonumber(chapter) > 2 and tonumber(fountain) > 3 then + elseif tonumber(level) == 1 and tonumber(chapter) > 2 then + upgrade = true + elseif tonumber(level) == 2 and tonumber(chapter) > 3 then upgrade = true elseif tonumber(level) == 0 then txt = "complete chapter 1 first" - elseif tonumber(level) == 1 and tonumber(fountain) > 3 then - txt = "complete chapter 2 first" elseif tonumber(level) == 1 then - txt = "build fountain first" + txt = "complete chapter 2 first" + elseif tonumber(level) == 2 then + txt = "complete chapter 3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 2 and upgrade then + if (tonumber(level)) < 3 and upgrade then Quarry(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Quarry.txt", "w") file:write(tonumber(level)+1) @@ -8300,19 +10380,21 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) txt = "upgrade fountain to lv.1 first" elseif tonumber(level) == 1 and tonumber(chapter) > 1 then upgrade = true - elseif tonumber(level) == 2 and tonumber(chapter) > 2 and tonumber(fountain) > 4 then + elseif tonumber(level) == 2 and tonumber(chapter) > 2 then + upgrade = true + elseif tonumber(level) == 3 and tonumber(chapter) > 3 then upgrade = true elseif tonumber(level) == 1 then txt = "complete chapter 1 first" - elseif tonumber(level) == 2 and tonumber(fountain) > 4 then - txt = "complete chapter 2 first" elseif tonumber(level) == 2 then - txt = "upgrade fountain to lv.2 first" + txt = "complete chapter 2 first" + elseif tonumber(level) == 3 then + txt = "complete chapter 3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 3 and upgrade then + if (tonumber(level)) < 4 and upgrade then Tree(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Tree.txt", "w") file:write(tonumber(level)+1) @@ -8384,11 +10466,16 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) upgrade = true elseif tonumber(level) < 5 and inv:contains_item("main", "default:wood 10") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 5 and inv:contains_item("main", "default:junglewood 50") and tonumber(fountain) > 6 then + inv:remove_item("main", "default:junglewood 50") + upgrade = true + elseif tonumber(level) == 5 and inv:contains_item("main", "default:junglewood 50") then + txt = "upgrade fountain to lv.4 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 5 and upgrade then + if (tonumber(level)) < 6 and upgrade then Ship1(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "w") file:write(tonumber(level)+1) @@ -8397,6 +10484,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.show_formspec(player:get_player_name(), "ship1" , ship1.get_formspec(player)) elseif v == "Go to Island" then player:setpos({x=124, y=8.5, z=44}) + minetest.show_formspec(player:get_player_name(), "", "") + elseif v == "Go to Mountain" then + player:setpos({x=312, y=8.5, z=44}) minetest.show_formspec(player:get_player_name(), "", "") elseif v == "X" then minetest.show_formspec(player:get_player_name(), "", "") @@ -8414,14 +10504,15 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) else minetest.chat_send_player(player:get_player_name(), "not enough items") end + else minetest.chat_send_player(player:get_player_name(), "select item first") end elseif v == "Soul" then player:set_attribute("item", "Soul") player:set_attribute("need1", "25 Cobblestone") - player:set_attribute("need2", "5 Water Buckets") + player:set_attribute("need2", "15 Wooden Planks") player:set_attribute("need1string", "default:cobble 25") - player:set_attribute("need2string", "castrum:bucket_water 5") + player:set_attribute("need2string", "default:wood 15") player:set_attribute("itemstring", "castrum:soul") minetest.show_formspec(player:get_player_name(), "craft" , craft.get_formspec(player)) elseif v == "Steel\nIngot" then @@ -8456,6 +10547,30 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) player:set_attribute("need2string", "default:wood") player:set_attribute("itemstring", "castrum:sword_stone") minetest.show_formspec(player:get_player_name(), "craft" , craft.get_formspec(player)) + elseif v == "Steel\nShovel" then + player:set_attribute("item", "Steel Shovel") + player:set_attribute("need1", "1 Steel Ingot") + player:set_attribute("need2", "2 Jungle Wooden Planks") + player:set_attribute("need1string", "default:steel_ingot") + player:set_attribute("need2string", "default:junglewood 2") + player:set_attribute("itemstring", "castrum:shovel_steel") + minetest.show_formspec(player:get_player_name(), "craft" , craft.get_formspec(player)) + elseif v == "Steel\nPickaxe" then + player:set_attribute("item", "Steel Pickaxe") + player:set_attribute("need1", "3 Steel Ingot") + player:set_attribute("need2", "2 Jungle Wooden Planks") + player:set_attribute("need1string", "default:steel_ingot 3") + player:set_attribute("need2string", "default:junglewood 2") + player:set_attribute("itemstring", "castrum:pick_steel") + minetest.show_formspec(player:get_player_name(), "craft" , craft.get_formspec(player)) + elseif v == "Steel\nSword" then + player:set_attribute("item", "Steel Sword") + player:set_attribute("need1", "2 Steel Ingot") + player:set_attribute("need2", "1 Jungle Wooden Planks") + player:set_attribute("need1string", "default:steel_ingot 2") + player:set_attribute("need2string", "default:junglewood") + player:set_attribute("itemstring", "castrum:sword_steel") + minetest.show_formspec(player:get_player_name(), "craft" , craft.get_formspec(player)) elseif v == "X" then minetest.show_formspec(player:get_player_name(), "", "") elseif v == "<" then @@ -8493,20 +10608,22 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) txt = "upgrade fountain to lv.2 first" elseif tonumber(level) == 1 and tonumber(chapter) > 1 then upgrade = true - elseif tonumber(level) == 2 and tonumber(chapter) > 2 and tonumber(fountain) > 5 then + elseif tonumber(level) == 2 and tonumber(chapter) > 2 then + upgrade = true + elseif tonumber(level) == 3 and tonumber(chapter) > 3 then upgrade = true elseif tonumber(level) == 1 then txt = "complete chapter 1 first" - elseif tonumber(level) == 2 and tonumber(fountain) > 5 then - txt = "complete chapter 2 first" elseif tonumber(level) == 2 then - txt = "upgrade fountain to lv.3 first" + txt = "complete chapter 2 first" + elseif tonumber(level) == 3 then + txt = "complete chapter 3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 3 and upgrade then + if (tonumber(level)) < 4 and upgrade then Lake(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Lake.txt", "w") file:write(tonumber(level)+1) @@ -8530,19 +10647,30 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file = io.open(minetest.get_worldpath().."/SAVE/Barracks.txt", "r") local level = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "r") + local fountain = file:read("*l") + file:close() local inv = player:get_inventory() local upgrade = false local txt = "not enough items" - if tonumber(level) < 6 and inv:contains_item("main", "default:wood 20") and inv:contains_item("main", "default:cobble 20") and inv:contains_item("main", "castrum:bucket_water 5") then + if tonumber(level) < 6 and inv:contains_item("main", "default:wood 20") and inv:contains_item("main", "default:cobble 20") and tonumber(fountain) > 3 then inv:remove_item("main", "default:wood 20") inv:remove_item("main", "default:cobble 20") - inv:remove_item("main", "castrum:bucket_water 5") upgrade = true + elseif tonumber(level) == 6 and inv:contains_item("main", "default:wood 200") and inv:contains_item("main", "default:cobble 200") and inv:contains_item("main", "castrum:bucket_water 50") and tonumber(fountain) > 5 then + inv:remove_item("main", "default:wood 200") + inv:remove_item("main", "default:cobble 200") + inv:remove_item("main", "castrum:bucket_water 50") + upgrade = true + elseif tonumber(level) < 6 and inv:contains_item("main", "default:wood 20") and inv:contains_item("main", "default:cobble 20") then + txt = "build fountain first" + elseif tonumber(level) == 6 and inv:contains_item("main", "default:wood 200") and inv:contains_item("main", "default:cobble 200") and inv:contains_item("main", "castrum:bucket_water 50") then + txt = "upgrade fountain to lv.3 first" end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 6 and upgrade then + if (tonumber(level)) < 7 and upgrade then Barracks(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Barracks.txt", "w") file:write(tonumber(level)+1) @@ -8594,6 +10722,49 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end end + if formname == "camp2" then + for k, v in pairs(fields) do + if v == "del" then + Camp2(0,player) + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "w") + file:write("0") + file:close() + minetest.show_formspec(player:get_player_name(), "camp2" , camp2.get_formspec(player)) + elseif v == "Upgrade" or v == "Build" then + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "r") + local level = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + file = io.open(minetest.get_worldpath().."/SAVE/Home2.txt", "r") + local home2 = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Camp1.txt", "r") + local camp1 = file:read("*l") + file:close() + local txt = "not enough items" + if tonumber(level) < 1 and tonumber(home2) > 5 and tonumber(camp1) > 0 then + upgrade = true + elseif tonumber(level) < 1 and tonumber(home2) > 5 then + txt = "build camp 1 first" + elseif tonumber(level) < 1 then + txt = "build home 2 first" + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 1 and upgrade then + Camp2(tonumber(level)+1,player) + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "w") + file:write(tonumber(level)+1) + file:close() + end + minetest.show_formspec(player:get_player_name(), "camp2" , camp2.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end if formname == "knight" then for k, v in pairs(fields) do if v == "Get Knight" then @@ -8613,13 +10784,21 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end if tonumber(home2) == 6 then max1 = max1+8 + elseif tonumber(home2) == 7 then + max1 = max1+11 end file = io.open(minetest.get_worldpath().."/SAVE/Camp1.txt", "r") local camp1 = file:read("*l") file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "r") + local camp2 = file:read("*l") + file:close() if tonumber(camp1) == 1 then max2 = max2+20 end + if tonumber(camp2) == 1 then + max2 = max2+20 + end if max1 > max2 then max = max2 elseif max2 > max1 then @@ -8630,7 +10809,10 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file = io.open(minetest.get_worldpath().."/SAVE/Knight_1.txt", "r") local knight_1 = file:read("*l") file:close() - if tonumber(knight_1) < max then + file = io.open(minetest.get_worldpath().."/SAVE/Knight_2.txt", "r") + local knight_2 = file:read("*l") + file:close() + if (tonumber(knight_1)+tonumber(knight_2)) < max then if player:get_attribute("2need1string") then if player:get_inventory():contains_item("main", player:get_attribute("2need1string")) and player:get_inventory():contains_item("main", player:get_attribute("2need2string")) then player:get_inventory():remove_item("main", player:get_attribute("2need1string")) @@ -8649,11 +10831,19 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif v == "Knight\nlv.1" then player:set_attribute("2item", "Knight lv.1") player:set_attribute("2need1", "1 Soul") - player:set_attribute("2need2", "3 Water Bucket") + player:set_attribute("2need2", "") player:set_attribute("2need1string", "castrum:soul") - player:set_attribute("2need2string", "castrum:bucket_water 3") + player:set_attribute("2need2string", "") player:set_attribute("knightlv", "1") minetest.show_formspec(player:get_player_name(), "knight" , knight.get_formspec(player)) + elseif v == "Knight\nlv.2" then + player:set_attribute("2item", "Knight lv.2") + player:set_attribute("2need1", "8 Soul") + player:set_attribute("2need2", "") + player:set_attribute("2need1string", "castrum:soul 8") + player:set_attribute("2need2string", "") + player:set_attribute("knightlv", "2") + minetest.show_formspec(player:get_player_name(), "knight" , knight.get_formspec(player)) elseif v == "X" then minetest.show_formspec(player:get_player_name(), "", "") elseif v == "<" then @@ -8681,7 +10871,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) file = io.open(minetest.get_worldpath().."/SAVE/Chapter.txt", "r") local chapter = file:read("*l") file:close() - local txt = "not enough items" if tonumber(level) < 4 and tonumber(fountain) > 3 and inv:contains_item("main", "default:cobble 4") then upgrade = true @@ -8695,12 +10884,18 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) txt = "complete chapter 1 first" elseif tonumber(level) == 4 and inv:contains_item("main", "default:cobble 40") then txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 5 and tonumber(fountain) > 5 and inv:contains_item("main", "default:cobble 400") and tonumber(chapter) > 2 then + upgrade = true + inv:remove_item("main", "default:cobble 400") + elseif tonumber(level) == 5 and inv:contains_item("main", "default:cobble 400") and tonumber(fountain) > 5 then + txt = "complete chapter 2 first" + elseif tonumber(level) == 5 and inv:contains_item("main", "default:cobble 400") then + txt = "upgrade fountain to lv.3 first" end - if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 5 and upgrade then + if (tonumber(level)) < 6 and upgrade then Battleground(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Battleground.txt", "w") file:write(tonumber(level)+1) @@ -8708,11 +10903,15 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end minetest.show_formspec(player:get_player_name(), "battleground" , battleground.get_formspec(player)) elseif v == "Start Chapter 1" then + get_fight(1,player) minetest.show_formspec(player:get_player_name(), "", "") elseif v == "Start Chapter 2" then get_fight(2,player) minetest.show_formspec(player:get_player_name(), "", "") + elseif v == "Start Chapter 3" then + get_fight(3,player) + minetest.show_formspec(player:get_player_name(), "", "") elseif v == "X" then minetest.show_formspec(player:get_player_name(), "", "") end @@ -8911,21 +11110,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local txt = "not enough items" local inv = player:get_inventory() local upgrade = false - if tonumber(level) == 0 and tonumber(chapter) > 1 then + if tonumber(level) == 0 and tonumber(chapter) > 3 then upgrade = true elseif tonumber(level) == 0 then - txt = "complete chapter 1 first" - elseif tonumber(level) == 1 and tonumber(chapter) > 2 and tonumber(fountain) > 3 then + txt = "complete chapter 3 first" + elseif tonumber(level) == 1 and tonumber(chapter) > 2 then upgrade = true - elseif tonumber(level) == 1 and tonumber(fountain) > 3 then - txt = "complete chapter 2 first" elseif tonumber(level) == 1 then - txt = "build island fountain first" + --txt = "complete chapter 2 first" + end if upgrade == false then minetest.chat_send_player(player:get_player_name(), txt) end - if (tonumber(level)) < 2 and upgrade then + if (tonumber(level)) < 1 and upgrade then Sandmine(tonumber(level)+1,player) file = io.open(minetest.get_worldpath().."/SAVE/Sandmine.txt", "w") file:write(tonumber(level)+1) @@ -8939,7 +11137,44 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end if formname == "island_ship1" then for k, v in pairs(fields) do - if v == "X" then + if v == "del" then + Ship1(0,player) + file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "w") + file:write("0") + file:close() + minetest.show_formspec(player:get_player_name(), "island_ship1" , island_ship1.get_formspec(player)) + elseif v == "Upgrade" or v == "Build" then + file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "r") + local level = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "r") + local fountain = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + local txt = "not enough items" + if tonumber(level) < 5 and inv:contains_item("main", "default:wood 10") and tonumber(fountain) > 4 then + inv:remove_item("main", "default:wood 10") + upgrade = true + elseif tonumber(level) < 5 and inv:contains_item("main", "default:wood 10") then + txt = "upgrade fountain to lv.2 first" + elseif tonumber(level) == 5 and inv:contains_item("main", "default:junglewood 50") and tonumber(fountain) > 6 then + inv:remove_item("main", "default:junglewood 50") + upgrade = true + elseif tonumber(level) == 5 and inv:contains_item("main", "default:junglewood 50") then + txt = "upgrade fountain to lv.4 first" + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 6 and upgrade then + Ship1(tonumber(level)+1,player) + file = io.open(minetest.get_worldpath().."/SAVE/Ship1.txt", "w") + file:write(tonumber(level)+1) + file:close() + end + minetest.show_formspec(player:get_player_name(), "island_ship1" , island_ship1.get_formspec(player)) + elseif v == "X" then minetest.show_formspec(player:get_player_name(), "", "") elseif v == "Go Back" then player:setpos({x=-7, y=8.5, z=-58}) @@ -8947,4 +11182,249 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end end + if formname == "lake2" then + for k, v in pairs(fields) do + if v == "del" then + Lake2(0,player) + file = io.open(minetest.get_worldpath().."/SAVE/Lake2.txt", "w") + file:write("0") + file:close() + minetest.show_formspec(player:get_player_name(), "lake2" , lake2.get_formspec(player)) + elseif v == "Upgrade" or v == "Build" then + file = io.open(minetest.get_worldpath().."/SAVE/Lake2.txt", "r") + local level = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + file = io.open(minetest.get_worldpath().."/SAVE/Fountain.txt", "r") + local fountain = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Chapter.txt", "r") + local chapter = file:read("*l") + file:close() + local txt = "not enough items" + if tonumber(level) < 1 and tonumber(fountain) > 6 then + upgrade = true + elseif tonumber(level) < 1 then + txt = "upgrade fountain to lv.4 first" + elseif tonumber(level) == 1 and tonumber(chapter) > 3 then + upgrade = true + elseif tonumber(level) == 1 then + txt = "complete chapter 3 first" + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 3 and upgrade then + Lake2(tonumber(level)+1,player) + file = io.open(minetest.get_worldpath().."/SAVE/Lake2.txt", "w") + file:write(tonumber(level)+1) + file:close() + end + minetest.show_formspec(player:get_player_name(), "lake2" , lake2.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end + if formname == "island_smithy" then + for k, v in pairs(fields) do + if v == "del" then + Island_Smithy(0,player) + file = io.open(minetest.get_worldpath().."/SAVE/Island_Smithy.txt", "w") + file:write("0") + file:close() + minetest.show_formspec(player:get_player_name(), "island_smithy" , island_smithy.get_formspec(player)) + elseif v == "Upgrade" or v == "Build" then + file = io.open(minetest.get_worldpath().."/SAVE/Island_Smithy.txt", "r") + local level = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Island_Fountain.txt", "r") + local fountain = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + local txt = "not enough items" + if tonumber(level) < 6 and inv:contains_item("main", "default:sand 80") and inv:contains_item("main", "default:wood 60") and tonumber(fountain) > 3 then + inv:remove_item("main", "default:sand 80") + inv:remove_item("main", "default:wood 60") + upgrade = true + elseif tonumber(level) < 6 and inv:contains_item("main", "default:sand 80") and inv:contains_item("main", "default:wood 60") then + txt = "build island fountain first" + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 6 and upgrade then + Island_Smithy(tonumber(level)+1,player) + file = io.open(minetest.get_worldpath().."/SAVE/Island_Smithy.txt", "w") + file:write(tonumber(level)+1) + file:close() + end + minetest.show_formspec(player:get_player_name(), "island_smithy" , island_smithy.get_formspec(player)) + elseif v == "Crafting" then + minetest.show_formspec(player:get_player_name(), "craft2" , craft2.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end + if formname == "cactusfarm" then + for k, v in pairs(fields) do + if v == "del" then + Cactusfarm(0,player) + file = io.open(minetest.get_worldpath().."/SAVE/Cactusfarm.txt", "w") + file:write("0") + file:close() + minetest.show_formspec(player:get_player_name(), "cactusfarm" , cactusfarm.get_formspec(player)) + elseif v == "Upgrade" or v == "Build" then + file = io.open(minetest.get_worldpath().."/SAVE/Cactusfarm.txt", "r") + local level = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + file = io.open(minetest.get_worldpath().."/SAVE/Island_Fountain.txt", "r") + local fountain = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Chapter.txt", "r") + local chapter = file:read("*l") + file:close() + local txt = "not enough items" + if tonumber(level) < 1 and tonumber(fountain) > 3 then + upgrade = true + elseif tonumber(level) < 1 then + txt = "build island fountain first" + elseif tonumber(level) == 1 and tonumber(chapter) > 3 then + upgrade = true + elseif tonumber(level) == 1 then + txt = "complete chapter 3 first" + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 2 and upgrade then + Cactusfarm(tonumber(level)+1,player) + file = io.open(minetest.get_worldpath().."/SAVE/Cactusfarm.txt", "w") + file:write(tonumber(level)+1) + file:close() + end + minetest.show_formspec(player:get_player_name(), "cactusfarm" , cactusfarm.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end + if formname == "craft2" then + for k, v in pairs(fields) do + if v == "Craft" then + if player:get_attribute("3need1string") then + if player:get_inventory():contains_item("main", player:get_attribute("3need1string")) and player:get_inventory():contains_item("main", player:get_attribute("3need2string")) and player:get_inventory():contains_item("main", player:get_attribute("3need3string")) then + player:get_inventory():remove_item("main", player:get_attribute("3need1string")) + player:get_inventory():remove_item("main", player:get_attribute("3need2string")) + player:get_inventory():remove_item("main", player:get_attribute("3need3string")) + player:get_inventory():add_item("main", player:get_attribute("3itemstring")) + else + minetest.chat_send_player(player:get_player_name(), "not enough items") + end + else + minetest.chat_send_player(player:get_player_name(), "select item first") + end + elseif v == "Glass" then + player:set_attribute("3item", "Glass") + player:set_attribute("3need1", "25 Sand") + player:set_attribute("3need2", "10 River Water Bucket") + player:set_attribute("3need3", "5 Coal Lump") + player:set_attribute("3need1string", "default:sand 25") + player:set_attribute("3need2string", "castrum:bucket_river_water 10") + player:set_attribute("3need3string", "default:coal_lump 5") + player:set_attribute("3itemstring", "default:glass") + minetest.show_formspec(player:get_player_name(), "craft2" , craft2.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + elseif v == "<" then + minetest.show_formspec(player:get_player_name(), "island_smithy" , island_smithy.get_formspec(player)) + end + end + end + if formname == "mountain_quarry" then + for k, v in pairs(fields) do + if v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end + if formname == "mountain_fountain" then + for k, v in pairs(fields) do + if v == "del" then + Mountain_Fountain(0,player) + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Fountain.txt", "w") + file:write("0") + file:close() + minetest.show_formspec(player:get_player_name(), "mountain_fountain" , mountain_fountain.get_formspec(player)) + elseif v == "Upgrade" or v == "Build" then + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Fountain.txt", "r") + local level = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + local txt = "not enough items" + if tonumber(level) < 3 and inv:contains_item("main", "default:mossycobble 50") then + inv:remove_item("main", "default:mossycobble 50") + upgrade = true + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 3 and upgrade then + Mountain_Fountain(tonumber(level)+1,player) + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Fountain.txt", "w") + file:write(tonumber(level)+1) + file:close() + end + minetest.show_formspec(player:get_player_name(), "mountain_fountain" , mountain_fountain.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end + if formname == "island_home1" then + for k, v in pairs(fields) do + if v == "del" then + Island_Home1(0,player) + file = io.open(minetest.get_worldpath().."/SAVE/Island_Home1.txt", "w") + file:write("0") + file:close() + minetest.show_formspec(player:get_player_name(), "island_home1" , island_home1.get_formspec(player)) + elseif v == "Upgrade" or v == "Build" then + file = io.open(minetest.get_worldpath().."/SAVE/Island_Home1.txt", "r") + local level = file:read("*l") + file:close() + file = io.open(minetest.get_worldpath().."/SAVE/Island_Fountain.txt", "r") + local fountain = file:read("*l") + file:close() + local inv = player:get_inventory() + local upgrade = false + local txt = "not enough items" + if tonumber(level) < 5 and inv:contains_item("main", "default:sand 80") and inv:contains_item("main", "default:glass 10") and tonumber(fountain) > 3 then + inv:remove_item("main", "default:sand 80") + inv:remove_item("main", "default:glass 10") + upgrade = true + elseif tonumber(level) < 5 and inv:contains_item("main", "default:sand 80") and inv:contains_item("main", "default:glass 10") then + txt = "build island fountain first" + end + if upgrade == false then + minetest.chat_send_player(player:get_player_name(), txt) + end + if (tonumber(level)) < 5 and upgrade then + Island_Home1(tonumber(level)+1,player) + file = io.open(minetest.get_worldpath().."/SAVE/Island_Home1.txt", "w") + file:write(tonumber(level)+1) + file:close() + end + minetest.show_formspec(player:get_player_name(), "island_home1" , island_home1.get_formspec(player)) + elseif v == "X" then + minetest.show_formspec(player:get_player_name(), "", "") + end + end + end end) \ No newline at end of file diff --git a/mods/castrum/models/castrum_horse.png b/mods/castrum/models/castrum_horse.png new file mode 100644 index 0000000..b05a73a Binary files /dev/null and b/mods/castrum/models/castrum_horse.png differ diff --git a/mods/castrum/models/castrum_knight_lv2_dark.png b/mods/castrum/models/castrum_knight_lv2_dark.png new file mode 100644 index 0000000..196b5e0 Binary files /dev/null and b/mods/castrum/models/castrum_knight_lv2_dark.png differ diff --git a/mods/castrum/models/horse.blend b/mods/castrum/models/horse.blend new file mode 100644 index 0000000..dfe2d06 Binary files /dev/null and b/mods/castrum/models/horse.blend differ diff --git a/mods/castrum/models/horse.mtl b/mods/castrum/models/horse.mtl new file mode 100644 index 0000000..823e282 --- /dev/null +++ b/mods/castrum/models/horse.mtl @@ -0,0 +1,24 @@ +# Blender MTL File: 'horse.blend' +# Material Count: 2 + +newmtl horse +Ns 96.078431 +Ka 1.000000 1.000000 1.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 +map_Kd D:\Home\Documents\LOTT\Horse\template.png + +newmtl horse_NONE +Ns 96.078431 +Ka 1.000000 1.000000 1.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 +map_Kd D:\\Home\\Documents\\LOTT\\Horse\\horse.png diff --git a/mods/castrum/models/horse.obj b/mods/castrum/models/horse.obj new file mode 100644 index 0000000..92bc33f --- /dev/null +++ b/mods/castrum/models/horse.obj @@ -0,0 +1,561 @@ +# Blender v2.79 (sub 0) OBJ File: 'horse.blend' +# www.blender.org +mtllib horse.mtl +o horse_Cube +v -0.720000 -0.000000 -0.269999 +v 0.720000 -0.000000 -0.270001 +v 0.720000 -0.000000 0.269999 +v -0.720000 -0.000000 0.270001 +v -0.720000 0.540004 -0.269999 +v 0.720000 0.540004 -0.270001 +v 0.720000 0.540004 0.269999 +v -0.720000 0.540004 0.270001 +v -0.450000 -0.360003 -0.090000 +v -0.630000 -0.360003 -0.089999 +v -0.630000 -0.360003 -0.269999 +v -0.450000 -0.360003 -0.270000 +v -0.450000 -0.000000 -0.090000 +v -0.630000 -0.000000 -0.089999 +v -0.630000 -0.000000 -0.269999 +v -0.450000 -0.000000 -0.270000 +v -0.450000 -0.000000 0.090000 +v -0.630000 -0.000000 0.090001 +v -0.630000 -0.000000 0.270001 +v -0.450000 -0.000000 0.270000 +v -0.450000 -0.360003 0.090000 +v -0.630000 -0.360003 0.090001 +v -0.630000 -0.360003 0.270001 +v -0.450000 -0.360003 0.270000 +v 0.630000 -0.360003 0.269999 +v 0.450000 -0.360003 0.270000 +v 0.450000 -0.360003 0.090000 +v 0.630000 -0.360003 0.089999 +v 0.630000 -0.000000 0.269999 +v 0.450000 -0.000000 0.270000 +v 0.450000 -0.000000 0.090000 +v 0.630000 -0.000000 0.089999 +v 0.630000 -0.000000 -0.270001 +v 0.450000 -0.000000 -0.270000 +v 0.450000 -0.000000 -0.090000 +v 0.630000 -0.000000 -0.090001 +v 0.630000 -0.360003 -0.270001 +v 0.450000 -0.360003 -0.270000 +v 0.450000 -0.360003 -0.090000 +v 0.630000 -0.360003 -0.090001 +v 1.281838 0.847285 0.161999 +v 0.772721 0.338165 0.161999 +v 0.772721 0.338165 -0.162001 +v 1.281837 0.847285 -0.162001 +v 1.027279 1.101846 0.161999 +v 0.518162 0.592725 0.161999 +v 0.518162 0.592725 -0.162001 +v 1.027279 1.101846 -0.162001 +v 1.387279 0.338165 0.179998 +v 0.878163 0.847285 0.179999 +v 0.878162 0.847285 -0.180001 +v 1.387279 0.338165 -0.180001 +v 1.641838 0.592725 0.179998 +v 1.132721 1.101846 0.179999 +v 1.132721 1.101846 -0.180001 +v 1.641837 0.592725 -0.180002 +v -0.720000 -0.270002 0.090001 +v -0.900000 -0.270002 0.090001 +v -0.900000 -0.270002 -0.089999 +v -0.720000 -0.270002 -0.089999 +v -0.720000 0.450003 0.090001 +v -0.900000 0.450003 0.090001 +v -0.900000 0.450003 -0.089999 +v -0.720000 0.450003 -0.089999 +v 1.080000 0.952728 0.134999 +v 0.952721 1.080008 0.134999 +v 0.952721 1.080008 0.044999 +v 1.080000 0.952727 0.044999 +v 1.207279 1.080008 0.134999 +v 1.080000 1.207288 0.134999 +v 1.080000 1.207288 0.044999 +v 1.207279 1.080008 0.044999 +v 1.080000 0.952728 -0.045001 +v 0.952721 1.080008 -0.045001 +v 0.952721 1.080008 -0.135001 +v 1.080000 0.952727 -0.135001 +v 1.207279 1.080008 -0.045001 +v 1.080000 1.207288 -0.045001 +v 1.080000 1.207288 -0.135001 +v 1.207279 1.080008 -0.135001 +v -0.450000 -0.720005 -0.090000 +v -0.630000 -0.720005 -0.089999 +v -0.630000 -0.720005 -0.269999 +v -0.450000 -0.720005 -0.270000 +v -0.450000 -0.360003 -0.090000 +v -0.630000 -0.360003 -0.089999 +v -0.630000 -0.360003 -0.269999 +v -0.450000 -0.360003 -0.270000 +v -0.450000 -0.360003 0.090000 +v -0.630000 -0.360003 0.090001 +v -0.630000 -0.360003 0.270001 +v -0.450000 -0.360003 0.270000 +v -0.450000 -0.720005 0.090000 +v -0.630000 -0.720005 0.090001 +v -0.630000 -0.720005 0.270001 +v -0.450000 -0.720005 0.270000 +v 0.630000 -0.720005 0.269999 +v 0.450000 -0.720005 0.270000 +v 0.450000 -0.720005 0.090000 +v 0.630000 -0.720005 0.089999 +v 0.630000 -0.360003 0.269999 +v 0.450000 -0.360003 0.270000 +v 0.450000 -0.360003 0.090000 +v 0.630000 -0.360003 0.089999 +v 0.630000 -0.360003 -0.270001 +v 0.450000 -0.360003 -0.270000 +v 0.450000 -0.360003 -0.090000 +v 0.630000 -0.360003 -0.090001 +v 0.630000 -0.720005 -0.270001 +v 0.450000 -0.720005 -0.270000 +v 0.450000 -0.720005 -0.090000 +v 0.630000 -0.720005 -0.090001 +v 0.438270 0.636914 -0.045001 +v 0.438270 0.636914 0.044999 +v 1.010090 1.208738 0.044999 +v 1.010090 1.208738 -0.045001 +v 0.501910 0.573274 -0.045001 +v 0.501910 0.573274 0.044999 +v 1.073730 1.145098 0.044999 +v 1.073730 1.145098 -0.045001 +vt -0.000001 0.750000 +vt 0.999999 0.750000 +vt 1.000001 1.000000 +vt 0.000001 1.000000 +vt 0.000000 1.000000 +vt -0.000000 0.750000 +vt 1.000000 0.750000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt -0.000000 0.750000 +vt 1.000000 0.750000 +vt 1.000000 1.000000 +vt 0.500000 0.166666 +vt 0.500000 0.500000 +vt 0.000000 0.500000 +vt -0.000000 0.166667 +vt 1.000000 0.750000 +vt 1.000000 1.000000 +vt -0.000000 1.000000 +vt 0.000000 0.750000 +vt 0.000001 0.500000 +vt -0.000001 0.166667 +vt 0.499999 0.166666 +vt 0.500001 0.499999 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.687500 0.750000 +vt 0.687500 0.666667 +vt 0.937500 0.666826 +vt 0.937500 0.750159 +vt 0.500000 0.666666 +vt 0.000000 0.666667 +vt -0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.250000 0.166667 +vt 0.000000 0.166667 +vt 0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.666667 +vt 0.000000 0.666667 +vt 0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.250000 0.166667 +vt 0.000000 0.166667 +vt 0.500000 0.666666 +vt 0.000000 0.666667 +vt -0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.666666 +vt 0.000000 0.666667 +vt -0.000000 0.500000 +vt 0.500000 0.500000 +vt 1.000000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.333334 +vt 1.000000 0.333333 +vt 0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.250000 0.166667 +vt 0.000000 0.166667 +vt 0.500000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.333333 +vt 0.500000 0.333333 +vt 0.250000 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.166667 +vt 0.250000 0.166667 +vt 0.500000 0.166667 +vt 1.000000 0.166666 +vt 1.000000 0.666666 +vt 0.500000 0.666667 +vt 0.000000 0.750000 +vt -0.000000 0.666667 +vt 0.500000 0.666666 +vt 0.500000 0.750000 +vt 0.000000 0.750000 +vt -0.000000 0.666667 +vt 0.500000 0.666666 +vt 0.500000 0.750000 +vt 0.000000 0.750000 +vt -0.000000 0.666667 +vt 0.500000 0.666666 +vt 0.500000 0.750000 +vt 0.000000 0.750000 +vt -0.000000 0.666667 +vt 0.500000 0.666666 +vt 0.500000 0.750000 +vt 0.000000 0.666667 +vt 0.125000 0.666667 +vt 0.125000 0.750000 +vt 0.000000 0.750000 +vt 0.500000 0.083333 +vt 0.625000 0.083333 +vt 0.625000 0.166667 +vt 0.500000 0.166667 +vt 0.937500 0.750000 +vt 0.937500 0.666667 +vt 1.000000 0.666667 +vt 1.000000 0.750000 +vt 0.500000 0.083333 +vt 0.625000 0.083333 +vt 0.625000 0.166667 +vt 0.500000 0.166667 +vt 0.937500 0.750000 +vt 0.937500 0.666667 +vt 1.000000 0.666667 +vt 1.000000 0.750000 +vt 0.937500 0.750000 +vt 0.937500 0.666667 +vt 1.000000 0.666667 +vt 1.000000 0.750000 +vt 0.500000 0.083333 +vt 0.625000 0.083333 +vt 0.625000 0.166667 +vt 0.500000 0.166667 +vt 0.937500 0.750000 +vt 0.937500 0.666667 +vt 1.000000 0.666667 +vt 1.000000 0.750000 +vt 0.500000 0.083333 +vt 0.625000 0.083333 +vt 0.625000 0.166667 +vt 0.500000 0.166667 +vt 0.937500 0.750000 +vt 0.937500 0.666667 +vt 1.000000 0.666667 +vt 1.000000 0.750000 +vt 0.937500 0.750000 +vt 0.937500 0.666667 +vt 1.000000 0.666667 +vt 1.000000 0.750000 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.500000 0.666667 +vt 0.500000 0.750000 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.500000 0.666667 +vt 0.625000 0.666667 +vt 0.625000 0.750000 +vt 0.500000 0.750000 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.500000 0.666667 +vt 0.500000 0.750000 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.500000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.500000 0.083333 +vt 0.500000 0.666667 +vt 0.625000 0.666667 +vt 0.625000 0.750000 +vt 0.500000 0.750000 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.875000 0.666799 +vt 0.875000 0.750132 +vt 0.625000 0.750000 +vt 0.625000 0.666667 +vt 0.625000 0.166667 +vt 0.625000 0.125000 +vt 0.906250 0.125000 +vt 0.906250 0.166667 +vt 0.937500 0.125000 +vt 1.000000 0.125000 +vt 1.000000 0.166667 +vt 0.937500 0.166667 +vt 0.625000 0.166667 +vt 0.625000 0.125000 +vt 0.906250 0.166667 +vt 0.625000 0.166667 +vt 0.906250 0.125000 +vt 0.906250 0.166667 +vt 0.625000 0.125000 +vt 0.906250 0.125000 +vt 0.937500 0.125000 +vt 1.000000 0.125000 +vt 1.000000 0.166667 +vt 0.937500 0.166667 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.125000 0.666667 +vt 0.125000 0.750000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.0000 -0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn -0.7071 0.7071 0.0000 +usemtl horse +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/2 8/6/2 7/7/2 6/8/2 +f 1/9/3 5/10/3 6/11/3 2/12/3 +f 2/13/4 6/14/4 7/15/4 3/16/4 +f 3/17/5 7/18/5 8/19/5 4/20/5 +f 5/21/6 1/22/6 4/23/6 8/24/6 +f 13/25/5 14/26/5 10/27/5 9/28/5 +f 14/29/6 15/30/6 11/31/6 10/32/6 +f 15/33/3 16/34/3 12/35/3 11/36/3 +f 16/37/4 13/38/4 9/39/4 12/40/4 +f 9/41/1 10/42/1 11/43/1 12/44/1 +f 24/45/1 23/46/1 22/47/1 21/48/1 +f 17/49/4 20/50/4 24/51/4 21/52/4 +f 18/53/3 17/54/3 21/55/3 22/56/3 +f 19/57/6 18/58/6 22/59/6 23/60/6 +f 20/61/5 19/62/5 23/63/5 24/64/5 +f 29/65/5 30/66/5 26/67/5 25/68/5 +f 30/69/6 31/70/6 27/71/6 26/72/6 +f 31/73/3 32/74/3 28/75/3 27/76/3 +f 32/77/4 29/78/4 25/79/4 28/80/4 +f 25/81/1 26/82/1 27/83/1 28/84/1 +f 40/85/1 39/86/1 38/87/1 37/88/1 +f 33/89/4 36/90/4 40/91/4 37/92/4 +f 34/93/3 33/94/3 37/95/3 38/96/3 +f 35/97/6 34/98/6 38/99/6 39/100/6 +f 36/101/5 35/102/5 39/103/5 40/104/5 +f 45/105/5 46/106/5 42/107/5 41/108/5 +f 46/109/7 47/110/7 43/111/7 42/112/7 +f 47/113/3 48/114/3 44/115/3 43/116/3 +f 48/117/8 45/118/8 41/119/8 44/120/8 +f 41/121/9 42/122/9 43/123/9 44/124/9 +f 48/125/10 47/126/10 46/127/10 45/128/10 +f 53/129/5 54/130/5 50/131/5 49/132/5 +f 54/133/10 55/134/10 51/135/10 50/136/10 +f 55/137/3 56/138/3 52/139/3 51/140/3 +f 56/141/9 53/142/9 49/143/9 52/144/9 +f 49/132/7 50/131/7 51/145/7 52/146/7 +f 56/147/8 55/148/8 54/130/8 53/129/8 +f 61/149/5 62/150/5 58/151/5 57/152/5 +f 62/153/6 63/154/6 59/155/6 58/156/6 +f 63/157/3 64/158/3 60/159/3 59/160/3 +f 64/161/4 61/162/4 57/163/4 60/164/4 +f 57/165/1 58/166/1 59/167/1 60/168/1 +f 69/169/5 70/170/5 66/171/5 65/172/5 +f 70/173/10 71/174/10 67/175/10 66/176/10 +f 71/177/3 72/178/3 68/179/3 67/180/3 +f 72/181/9 69/182/9 65/183/9 68/184/9 +f 65/185/7 66/186/7 67/175/7 68/184/7 +f 72/181/8 71/174/8 70/187/8 69/188/8 +f 77/189/5 78/190/5 74/191/5 73/192/5 +f 78/193/10 79/194/10 75/195/10 74/196/10 +f 79/197/3 80/198/3 76/199/3 75/200/3 +f 80/201/9 77/202/9 73/203/9 76/204/9 +f 73/205/7 74/206/7 75/195/7 76/204/7 +f 80/201/8 79/194/8 78/207/8 77/208/8 +f 85/209/5 86/210/5 82/211/5 81/212/5 +f 86/213/6 87/214/6 83/215/6 82/216/6 +f 87/217/3 88/218/3 84/219/3 83/220/3 +f 88/221/4 85/222/4 81/223/4 84/224/4 +f 81/225/1 82/216/1 83/215/1 84/226/1 +f 88/227/2 87/228/2 86/229/2 85/230/2 +f 89/231/2 90/232/2 91/233/2 92/234/2 +f 96/235/1 95/236/1 94/237/1 93/238/1 +f 89/239/4 92/240/4 96/241/4 93/242/4 +f 90/243/3 89/244/3 93/245/3 94/246/3 +f 91/247/6 90/248/6 94/237/6 95/236/6 +f 92/249/5 91/250/5 95/251/5 96/252/5 +f 101/253/5 102/254/5 98/255/5 97/256/5 +f 102/257/6 103/258/6 99/259/6 98/260/6 +f 103/261/3 104/262/3 100/263/3 99/264/3 +f 104/265/4 101/266/4 97/267/4 100/268/4 +f 97/269/1 98/260/1 99/259/1 100/270/1 +f 104/271/2 103/272/2 102/273/2 101/274/2 +f 105/275/2 106/276/2 107/277/2 108/278/2 +f 112/279/1 111/280/1 110/281/1 109/282/1 +f 105/283/4 108/284/4 112/285/4 109/286/4 +f 106/287/3 105/288/3 109/289/3 110/290/3 +f 107/291/6 106/292/6 110/281/6 111/280/6 +f 108/293/5 107/294/5 111/295/5 112/296/5 +f 120/297/9 119/298/9 118/299/9 117/300/9 +f 114/301/7 113/302/7 117/303/7 118/304/7 +f 115/305/5 114/306/5 118/299/5 119/307/5 +f 113/308/10 114/306/10 115/309/10 116/310/10 +f 113/308/3 116/311/3 120/312/3 117/300/3 +f 116/313/8 115/314/8 119/315/8 120/316/8 +usemtl horse_NONE +f 16/317/2 15/318/2 14/319/2 13/320/2 +f 17/321/2 18/322/2 19/323/2 20/324/2 +f 32/325/2 31/326/2 30/327/2 29/328/2 +f 33/329/2 34/330/2 35/331/2 36/332/2 +f 64/158/2 63/333/2 62/334/2 61/149/2 diff --git a/mods/castrum/models/horse2.blend b/mods/castrum/models/horse2.blend new file mode 100644 index 0000000..8bcb6aa Binary files /dev/null and b/mods/castrum/models/horse2.blend differ diff --git a/mods/castrum/textures/castrum_horse_inv.png b/mods/castrum/textures/castrum_horse_inv.png new file mode 100644 index 0000000..134048e Binary files /dev/null and b/mods/castrum/textures/castrum_horse_inv.png differ diff --git a/mods/castrum/textures/castrum_num1.png b/mods/castrum/textures/castrum_num1.png new file mode 100644 index 0000000..ae2a11e Binary files /dev/null and b/mods/castrum/textures/castrum_num1.png differ diff --git a/mods/castrum/textures/castrum_num2.png b/mods/castrum/textures/castrum_num2.png new file mode 100644 index 0000000..008ddb4 Binary files /dev/null and b/mods/castrum/textures/castrum_num2.png differ diff --git a/mods/castrum/textures/castrum_num3.png b/mods/castrum/textures/castrum_num3.png new file mode 100644 index 0000000..1cc8c84 Binary files /dev/null and b/mods/castrum/textures/castrum_num3.png differ diff --git a/mods/castrum/textures/castrum_num4.png b/mods/castrum/textures/castrum_num4.png new file mode 100644 index 0000000..60900f7 Binary files /dev/null and b/mods/castrum/textures/castrum_num4.png differ diff --git a/mods/castrum/textures/castrum_num5.png b/mods/castrum/textures/castrum_num5.png new file mode 100644 index 0000000..c6c8e3d Binary files /dev/null and b/mods/castrum/textures/castrum_num5.png differ diff --git a/mods/castrum/update.lua b/mods/castrum/update.lua index abba922..bb18644 100644 --- a/mods/castrum/update.lua +++ b/mods/castrum/update.lua @@ -32,13 +32,6 @@ minetest.register_chatcommand("update", { Battleground(i,player) end - file = io.open(minetest.get_worldpath().."/SAVE/Bridge.txt", "r") - local level = file:read("*l") - file:close() - for i=1,tonumber(level) do - Bridge(i,player) - end - file = io.open(minetest.get_worldpath().."/SAVE/Camp1.txt", "r") local level = file:read("*l") file:close() @@ -234,5 +227,60 @@ minetest.register_chatcommand("update", { if tonumber(level) > 0 then Update_knight(player) end + + file = io.open(minetest.get_worldpath().."/SAVE/Camp2.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Camp2(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Cactusfarm.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Cactusfarm(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Island_Smithy.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Island_Smithy(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Lake2.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Lake2(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Bridge.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Bridge(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Stable.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Stable(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Quarry.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Mountain_Quarry(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Mountain_Fountain.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Mountain_Fountain(i,player) + end + file = io.open(minetest.get_worldpath().."/SAVE/Island_Home1.txt", "r") + local level = file:read("*l") + file:close() + for i=1,tonumber(level) do + Island_Home1(i,player) + end end, }) \ No newline at end of file diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 51d6f79..2a590e3 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -40,16 +40,16 @@ end -- Unlimited node placement minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) - return creative.is_enabled_for(placer:get_player_name()) + if placer and placer:is_player() then + return creative.is_enabled_for(placer:get_player_name()) + end end) -- Don't pick up if the item is already in the inventory local old_handle_node_drops = minetest.handle_node_drops function minetest.handle_node_drops(pos, drops, digger) - if not digger or not digger:is_player() then - return - end - if not creative.is_enabled_for(digger:get_player_name()) then + if not digger or not digger:is_player() or + not creative.is_enabled_for(digger:get_player_name()) then return old_handle_node_drops(pos, drops, digger) end local inv = digger:get_inventory() diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 0e1d813..0aad92b 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -1,4 +1,19 @@ local player_inventory = {} +local inventory_cache = {} + +local function init_creative_cache(items) + inventory_cache[items] = {} + local i_cache = inventory_cache[items] + + for name, def in pairs(items) do + if def.groups.not_in_creative_inventory ~= 1 and + def.description and def.description ~= "" then + i_cache[name] = def + end + end + table.sort(i_cache) + return i_cache +end function creative.init_creative_inventory(player) local player_name = player:get_player_name() @@ -10,22 +25,25 @@ function creative.init_creative_inventory(player) minetest.create_detached_inventory("creative_" .. player_name, { allow_move = function(inv, from_list, from_index, to_list, to_index, count, player2) - if not to_list == "main" then - return count - else + local name = player2 and player2:get_player_name() or "" + if not creative.is_enabled_for(name) or + to_list == "main" then return 0 end + return count end, allow_put = function(inv, listname, index, stack, player2) return 0 end, allow_take = function(inv, listname, index, stack, player2) + local name = player2 and player2:get_player_name() or "" + if not creative.is_enabled_for(name) then + return 0 + end return -1 end, on_move = function(inv, from_list, from_index, to_list, to_index, count, player2) end, - on_put = function(inv, listname, index, stack, player2) - end, on_take = function(inv, listname, index, stack, player2) if stack and stack:get_count() > 0 then minetest.log("action", player_name .. " takes " .. stack:get_name().. " from creative inventory") @@ -42,11 +60,11 @@ function creative.update_creative_inventory(player_name, tab_content) creative.init_creative_inventory(minetest.get_player_by_name(player_name)) local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) - for name, def in pairs(tab_content) do - if not (def.groups.not_in_creative_inventory == 1) and - def.description and def.description ~= "" and - (def.name:find(inv.filter, 1, true) or - def.description:lower():find(inv.filter, 1, true)) then + local items = inventory_cache[tab_content] or init_creative_cache(tab_content) + + for name, def in pairs(items) do + if def.name:find(inv.filter, 1, true) or + def.description:lower():find(inv.filter, 1, true) then creative_list[#creative_list+1] = name end end @@ -100,6 +118,8 @@ function creative.register_tab(name, title, items) button[2.75,3.4;0.8,0.5;creative_clear;X] tooltip[creative_search;Search] tooltip[creative_clear;Reset] + tooltip[creative_prev;Previous page] + tooltip[creative_next;Next page] listring[current_player;main] field_close_on_enter[creative_filter;false] ]] .. @@ -158,10 +178,6 @@ function creative.register_tab(name, title, items) }) end -minetest.register_on_joinplayer(function(player) - creative.update_creative_inventory(player:get_player_name(), minetest.registered_items) -end) - creative.register_tab("all", "All", minetest.registered_items) creative.register_tab("nodes", "Nodes", minetest.registered_nodes) creative.register_tab("tools", "Tools", minetest.registered_tools) diff --git a/mods/default/README.txt b/mods/default/README.txt index 8af65a9..75f869d 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -119,6 +119,7 @@ paramat (CC BY-SA 3.0): default_silver_sandstone.png -- Derived from a texture by GreenXenith (CC-BY-SA 3.0) default_silver_sandstone_brick.png -- Derived from a texture by GreenXenith (CC-BY-SA 3.0) default_silver_sandstone_block.png -- Derived from a texture by GreenXenith (CC-BY-SA 3.0) + default_bookshelf_slot.png -- Derived from a texture by Gambit (CC-BY-SA 3.0) brunob.santos (CC BY-SA 4.0): default_desert_cobble.png @@ -131,7 +132,6 @@ BlockMen (CC BY-SA 3.0): default_gold_ingot.png default_tool_steelsword.png default_diamond.png - default_book.png default_tool_*.png default_lava_source_animated.png default_lava_flowing_animated.png @@ -145,11 +145,7 @@ BlockMen (CC BY-SA 3.0): bubble.png gui_*.png -Wuzzy (CC BY-SA 3.0): - default_bookshelf_slot.png (based on default_book.png) - sofar (CC BY-SA 3.0): - default_book_written.png, based on default_book.png default_aspen_sapling default_aspen_tree default_aspen_tree_top, derived from default_pine_tree_top (by paramat) @@ -186,6 +182,7 @@ Gambit (CC BY-SA 3.0): default_snowball.png default_key.png default_key_skeleton.png + default_book.png asl97 (CC BY-SA 3.0): default_ice.png @@ -221,6 +218,9 @@ kilbith (CC BY-SA 3.0): default_tin_ingot.png default_tin_lump.png +CloudyProton (CC BY-SA 3.0): + default_book_written.png, based on default_book.png by Gambit + Glass breaking sounds (CC BY 3.0): 1: http://www.freesound.org/people/cmusounddesign/sounds/71947/ 2: http://www.freesound.org/people/Tomlija/sounds/97669/ diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 50ffb1a..2d11d26 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -190,6 +190,9 @@ minetest.register_craft({ } }) +-- Axes +-- Recipes face left to match appearence in textures and inventory + minetest.register_craft({ output = 'default:axe_wood', recipe = { @@ -244,60 +247,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = 'default:axe_wood', - recipe = { - {'group:wood', 'group:wood'}, - {'group:stick', 'group:wood'}, - {'group:stick',''}, - } -}) - -minetest.register_craft({ - output = 'default:axe_stone', - recipe = { - {'group:stone', 'group:stone'}, - {'group:stick', 'group:stone'}, - {'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:axe_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'group:stick', 'default:steel_ingot'}, - {'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:axe_bronze', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot'}, - {'group:stick', 'default:bronze_ingot'}, - {'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:axe_mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal'}, - {'group:stick', 'default:mese_crystal'}, - {'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:axe_diamond', - recipe = { - {'default:diamond', 'default:diamond'}, - {'group:stick', 'default:diamond'}, - {'group:stick', ''}, - } -}) - minetest.register_craft({ output = 'default:sword_wood', recipe = { @@ -904,7 +853,7 @@ minetest.register_craft({ -- Fuels -- --- Support use of group:tree +-- Support use of group:tree, includes default:tree which has the same burn time minetest.register_craft({ type = "fuel", recipe = "group:tree", @@ -927,12 +876,6 @@ minetest.register_craft({ burntime = 26, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:tree", - burntime = 30, -}) - minetest.register_craft({ type = "fuel", recipe = "default:acacia_tree", @@ -946,7 +889,7 @@ minetest.register_craft({ }) --- Support use of group:wood +-- Support use of group:wood, includes default:wood which has the same burn time minetest.register_craft({ type = "fuel", recipe = "group:wood", @@ -965,12 +908,6 @@ minetest.register_craft({ burntime = 6, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:wood", - burntime = 7, -}) - minetest.register_craft({ type = "fuel", recipe = "default:acacia_wood", @@ -984,53 +921,47 @@ minetest.register_craft({ }) --- Support use of group:sapling +-- Support use of group:sapling, includes default:sapling which has the same burn time minetest.register_craft({ type = "fuel", recipe = "group:sapling", - burntime = 10, + burntime = 5, }) minetest.register_craft({ type = "fuel", recipe = "default:bush_sapling", - burntime = 6, + burntime = 3, }) minetest.register_craft({ type = "fuel", recipe = "default:acacia_bush_sapling", - burntime = 7, + burntime = 4, }) minetest.register_craft({ type = "fuel", recipe = "default:aspen_sapling", - burntime = 8, + burntime = 4, }) minetest.register_craft({ type = "fuel", recipe = "default:pine_sapling", - burntime = 9, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sapling", - burntime = 10, + burntime = 5, }) minetest.register_craft({ type = "fuel", recipe = "default:acacia_sapling", - burntime = 11, + burntime = 6, }) minetest.register_craft({ type = "fuel", recipe = "default:junglesapling", - burntime = 12, + burntime = 6, }) @@ -1080,13 +1011,13 @@ minetest.register_craft({ minetest.register_craft({ type = "fuel", recipe = "default:junglegrass", - burntime = 2, + burntime = 3, }) minetest.register_craft({ type = "fuel", recipe = "group:leaves", - burntime = 1, + burntime = 4, }) minetest.register_craft({ @@ -1098,7 +1029,7 @@ minetest.register_craft({ minetest.register_craft({ type = "fuel", recipe = "default:papyrus", - burntime = 1, + burntime = 3, }) minetest.register_craft({ @@ -1110,7 +1041,7 @@ minetest.register_craft({ minetest.register_craft({ type = "fuel", recipe = "default:ladder_wood", - burntime = 2, + burntime = 7, }) minetest.register_craft({ @@ -1143,12 +1074,6 @@ minetest.register_craft({ burntime = 30, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:apple", - burntime = 3, -}) - minetest.register_craft({ type = "fuel", recipe = "default:coal_lump", diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 33cdd5f..e1d224d 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -75,12 +75,16 @@ local function book_on_use(itemstack, user) return itemstack end +local max_text_size = 10000 +local max_title_size = 80 +local short_title_size = 35 minetest.register_on_player_receive_fields(function(player, formname, fields) if formname ~= "default:book" then return end local inv = player:get_inventory() local stack = player:get_wielded_item() - if fields.save and fields.title ~= "" and fields.text ~= "" then + if fields.save and fields.title and fields.text + and fields.title ~= "" and fields.text ~= "" then local new_stack, data if stack:get_name() ~= "default:book_written" then local count = stack:get_count() @@ -99,11 +103,16 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end if not data then data = {} end - data.title = fields.title + data.title = fields.title:sub(1, max_title_size) data.owner = player:get_player_name() - data.description = "\""..fields.title.."\" by "..data.owner - data.text = fields.text - data.text_len = #data.text + local short_title = data.title + -- Don't bother triming the title if the trailing dots would make it longer + if #short_title > short_title_size + 3 then + short_title = short_title:sub(1, short_title_size) .. "..." + end + data.description = "\""..short_title.."\" by "..data.owner + data.text = fields.text:sub(1, max_text_size) + data.text = data.text:gsub("\r\n", "\n"):gsub("\r", "\n") data.page = 1 data.page_max = math.ceil((#data.text:gsub("[^\n]", "") + 1) / lpp) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 5dc22ca..4c8d2f0 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -136,10 +136,12 @@ if minetest.settings:get_bool("enable_lavacooling") ~= false then label = "Lava cooling", nodenames = {"default:lava_source", "default:lava_flowing"}, neighbors = {"group:cools_lava", "group:water"}, - interval = 1, + interval = 2, chance = 2, catch_up = false, - action = default.cool_lava, + action = function(...) + default.cool_lava(...) + end, }) end @@ -222,7 +224,9 @@ minetest.register_abm({ neighbors = {"group:sand"}, interval = 12, chance = 83, - action = default.grow_cactus + action = function(...) + default.grow_cactus(...) + end }) minetest.register_abm({ @@ -231,7 +235,9 @@ minetest.register_abm({ neighbors = {"default:dirt", "default:dirt_with_grass"}, interval = 14, chance = 71, - action = default.grow_papyrus + action = function(...) + default.grow_papyrus(...) + end }) @@ -291,7 +297,7 @@ function default.register_fence(name, def) groups = {}, } for k, v in pairs(default_fields) do - if not def[k] then + if def[k] == nil then def[k] = v end end @@ -313,7 +319,7 @@ end -- Prevent decay of placed leaves default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) - if placer and not placer:get_player_control().sneak then + if placer and placer:is_player() and not placer:get_player_control().sneak then local node = minetest.get_node(pos) node.param2 = 1 minetest.set_node(pos, node) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 4b82205..05056e6 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -119,7 +119,7 @@ local function furnace_node_timer(pos, elapsed) local fuel local update = true - while update do + while elapsed > 0 and update do update = false srclist = inv:get_list("src") @@ -134,13 +134,18 @@ local function furnace_node_timer(pos, elapsed) cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) cookable = cooked.time ~= 0 + local el = math.min(elapsed, fuel_totaltime - fuel_time) + if cookable then -- fuel lasts long enough, adjust el to cooking duration + el = math.min(el, cooked.time - src_time) + end + -- Check if we have enough fuel to burn if fuel_time < fuel_totaltime then -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + elapsed + fuel_time = fuel_time + el -- If there is a cookable item then check if it is ready yet if cookable then - src_time = src_time + elapsed + src_time = src_time + el if src_time >= cooked.time then -- Place result in dst list if possible if inv:room_for_item("dst", cooked.item) then @@ -149,6 +154,9 @@ local function furnace_node_timer(pos, elapsed) src_time = src_time - cooked.time update = true end + else + -- Item could not be cooked: probably missing fuel + update = true end end else @@ -166,8 +174,7 @@ local function furnace_node_timer(pos, elapsed) -- Take fuel from fuel list inv:set_stack("fuel", 1, afterfuel.items[1]) update = true - fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) - src_time = src_time + elapsed + fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time) end else -- We don't need to get new fuel since there is no cookable item @@ -177,7 +184,7 @@ local function furnace_node_timer(pos, elapsed) fuel_time = 0 end - elapsed = 0 + elapsed = elapsed - el end if fuel and fuel_totaltime > fuel.time then diff --git a/mods/default/license.txt b/mods/default/license.txt index 72af728..7dcd24c 100644 --- a/mods/default/license.txt +++ b/mods/default/license.txt @@ -19,7 +19,7 @@ Licenses of media (textures, models and sounds) ----------------------------------------------- Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2010-2016: +Copyright (C) 2010-2017: celeron55, Perttu Ahola Cisoun G4JC @@ -44,6 +44,7 @@ Copyright (C) 2010-2016: GreenXenith kaeza kilbith + CloudyProton You are free to: Share — copy and redistribute the material in any medium or format. @@ -111,7 +112,6 @@ http://creativecommons.org/licenses/by-sa/4.0/ Attribution-ShareAlike 2.0 Generic (CC BY-SA 2.0) Copyright (C) 2014-2016 Neuromancer - You are free to: Share — copy and redistribute the material in any medium or format. Adapt — remix, transform, and build upon the material for any purpose, even commercially. diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index ceaa802..cea61af 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -440,7 +440,7 @@ minetest.register_node("default:dirt_with_snow", { tiles = {"default_snow.png", "default_dirt.png", {name = "default_dirt.png^default_snow_side.png", tileable_vertical = false}}, - groups = {crumbly = 3, spreading_dirt_type = 1, snowy = 1}, + groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1, snowy = 1}, drop = 'default:dirt', sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.15}, @@ -608,7 +608,7 @@ minetest.register_node("default:sapling", { sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(2400,4800)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) @@ -673,9 +673,7 @@ minetest.register_node("default:apple", { sounds = default.node_sound_leaves_defaults(), after_place_node = function(pos, placer, itemstack) - if placer:is_player() then - minetest.set_node(pos, {name = "default:apple", param2 = 1}) - end + minetest.set_node(pos, {name = "default:apple", param2 = 1}) end, }) @@ -742,7 +740,7 @@ minetest.register_node("default:junglesapling", { sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(2400,4800)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) @@ -821,7 +819,7 @@ minetest.register_node("default:pine_sapling", { sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(2400,4800)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) @@ -901,7 +899,7 @@ minetest.register_node("default:acacia_sapling", { sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(2400,4800)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) @@ -979,7 +977,7 @@ minetest.register_node("default:aspen_sapling", { sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(2400,4800)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) @@ -1362,7 +1360,7 @@ minetest.register_node("default:bush_sapling", { sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(1200, 2400)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) @@ -1433,7 +1431,7 @@ minetest.register_node("default:acacia_bush_sapling", { sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(1200, 2400)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) @@ -1783,13 +1781,14 @@ local function get_chest_formspec(pos) end local function chest_lid_obstructed(pos) - local above = { x = pos.x, y = pos.y + 1, z = pos.z } + local above = {x = pos.x, y = pos.y + 1, z = pos.z} local def = minetest.registered_nodes[minetest.get_node(above).name] -- allow ladders, signs, wallmounted things and torches to not obstruct - if def.drawtype == "airlike" or + if def and + (def.drawtype == "airlike" or def.drawtype == "signlike" or def.drawtype == "torchlike" or - (def.drawtype == "nodebox" and def.paramtype2 == "wallmounted") then + (def.drawtype == "nodebox" and def.paramtype2 == "wallmounted")) then return false end return true @@ -1797,6 +1796,24 @@ end local open_chests = {} +local function chest_lid_close(pn) + local pos = open_chests[pn].pos + local sound = open_chests[pn].sound + local swap = open_chests[pn].swap + + open_chests[pn] = nil + for k, v in pairs(open_chests) do + if v.pos.x == pos.x and v.pos.y == pos.y and v.pos.z == pos.z then + return true + end + end + + local node = minetest.get_node(pos) + minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, + param2 = node.param2 }) + minetest.sound_play(sound, {gain = 0.3, pos = pos, max_hear_distance = 10}) +end + minetest.register_on_player_receive_fields(function(player, formname, fields) if formname ~= "default:chest" then return @@ -1810,23 +1827,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return end - local pos = open_chests[pn].pos - local sound = open_chests[pn].sound - local swap = open_chests[pn].swap - local node = minetest.get_node(pos) - - open_chests[pn] = nil - for k, v in pairs(open_chests) do - if v.pos.x == pos.x and v.pos.y == pos.y and v.pos.z == pos.z then - return true - end - end - minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, - param2 = node.param2 }) - minetest.sound_play(sound, {gain = 0.3, pos = pos, max_hear_distance = 10}) + chest_lid_close(pn) return true end) +minetest.register_on_leaveplayer(function(player) + local pn = player:get_player_name() + if open_chests[pn] then + chest_lid_close(pn) + end +end) + function default.register_chest(name, d) local def = table.copy(d) def.drawtype = "mesh" @@ -1960,6 +1971,13 @@ function default.register_chest(name, d) open_chests[clicker:get_player_name()] = { pos = pos, sound = def.sound_close, swap = name } end + def.on_blast = function(pos) + local drops = {} + default.get_inventory_drops(pos, "main", drops) + drops[#drops+1] = "default:" .. name + minetest.remove_node(pos) + return drops + end end def.on_metadata_inventory_move = function(pos, from_list, from_index, @@ -1977,27 +1995,28 @@ function default.register_chest(name, d) " takes " .. stack:get_name() .. " from chest at " .. minetest.pos_to_string(pos)) end - def.on_blast = function(pos) - local drops = {} - default.get_inventory_drops(pos, "main", drops) - drops[#drops+1] = "default:chest" - minetest.remove_node(pos) - return drops - end local def_opened = table.copy(def) local def_closed = table.copy(def) def_opened.mesh = "chest_open.obj" + for i = 1, #def_opened.tiles do + if type(def_opened.tiles[i]) == "string" then + def_opened.tiles[i] = {name = def_opened.tiles[i], backface_culling = true} + elseif def_opened.tiles[i].backface_culling == nil then + def_opened.tiles[i].backface_culling = true + end + end def_opened.drop = "default:" .. name def_opened.groups.not_in_creative_inventory = 1 def_opened.selection_box = { type = "fixed", fixed = { -1/2, -1/2, -1/2, 1/2, 3/16, 1/2 }, - } + } def_opened.can_dig = function() return false end + def_opened.on_blast = function() end def_closed.mesh = nil def_closed.drawtype = nil diff --git a/mods/default/textures/default_book.png b/mods/default/textures/default_book.png index 448a7df..bcf1e6a 100644 Binary files a/mods/default/textures/default_book.png and b/mods/default/textures/default_book.png differ diff --git a/mods/default/textures/default_book_written.png b/mods/default/textures/default_book_written.png index 9196ac6..f23d122 100644 Binary files a/mods/default/textures/default_book_written.png and b/mods/default/textures/default_book_written.png differ diff --git a/mods/default/textures/default_bookshelf_slot.png b/mods/default/textures/default_bookshelf_slot.png index 715a3dc..cd2c8bc 100644 Binary files a/mods/default/textures/default_bookshelf_slot.png and b/mods/default/textures/default_bookshelf_slot.png differ diff --git a/mods/default/tools.lua b/mods/default/tools.lua index 45c779f..77ea969 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -389,7 +389,8 @@ minetest.register_tool("default:key", { local node = minetest.get_node(under) local def = minetest.registered_nodes[node.name] if def and def.on_rightclick and - not (placer and placer:get_player_control().sneak) then + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return def.on_rightclick(under, node, placer, itemstack, pointed_thing) or itemstack end diff --git a/mods/default/torch.lua b/mods/default/torch.lua index 3c3ae96..a7b83cf 100644 --- a/mods/default/torch.lua +++ b/mods/default/torch.lua @@ -63,7 +63,8 @@ minetest.register_node("default:torch", { local node = minetest.get_node(under) local def = minetest.registered_nodes[node.name] if def and def.on_rightclick and - ((not placer) or (placer and not placer:get_player_control().sneak)) then + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return def.on_rightclick(under, node, placer, itemstack, pointed_thing) or itemstack end diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 81c9831..44176d7 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -31,12 +31,12 @@ local function is_snow_nearby(pos) end --- Sapling ABM +-- Grow sapling function default.grow_sapling(pos) if not default.can_grow(pos) then - -- try a bit later again - minetest.get_node_timer(pos):start(math.random(240, 600)) + -- try again 5 min later + minetest.get_node_timer(pos):start(300) return end @@ -94,7 +94,7 @@ minetest.register_lbm({ "default:pine_sapling", "default:acacia_sapling", "default:aspen_sapling"}, action = function(pos) - minetest.get_node_timer(pos):start(math.random(1200, 2400)) + minetest.get_node_timer(pos):start(math.random(300, 1500)) end }) @@ -468,7 +468,9 @@ function default.sapling_on_place(itemstack, placer, pointed_thing, local node = minetest.get_node_or_nil(pos) local pdef = node and minetest.registered_nodes[node.name] - if pdef and pdef.on_rightclick and not placer:get_player_control().sneak then + if pdef and pdef.on_rightclick and + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return pdef.on_rightclick(pos, node, placer, itemstack, pointed_thing) end @@ -481,7 +483,7 @@ function default.sapling_on_place(itemstack, placer, pointed_thing, end end - local player_name = placer:get_player_name() + local player_name = placer and placer:get_player_name() or "" -- Check sapling position for protection if minetest.is_protected(pos, player_name) then minetest.record_protection_violation(pos, player_name) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index a07b4ae..798a6dd 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -203,12 +203,7 @@ end local function can_dig_door(pos, digger) replace_old_owner_information(pos) - if default.can_interact_with_node(digger, pos) then - return true - else - minetest.record_protection_violation(pos, digger:get_player_name()) - return false - end + return default.can_interact_with_node(digger, pos) end function doors.register(name, def) @@ -266,7 +261,8 @@ function doors.register(name, def) local node = minetest.get_node(pointed_thing.under) local pdef = minetest.registered_nodes[node.name] if pdef and pdef.on_rightclick and - not placer:get_player_control().sneak then + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return pdef.on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) end @@ -290,12 +286,12 @@ function doors.register(name, def) return itemstack end - local pn = placer:get_player_name() + local pn = placer and placer:get_player_name() or "" if minetest.is_protected(pos, pn) or minetest.is_protected(above, pn) then return itemstack end - local dir = minetest.dir_to_facedir(placer:get_look_dir()) + local dir = placer and minetest.dir_to_facedir(placer:get_look_dir()) or 0 local ref = { {x = -1, y = 0, z = 0}, @@ -712,7 +708,7 @@ function doors.register_fencegate(name, def) local fence = { description = def.description, drawtype = "mesh", - tiles = {def.texture}, + tiles = {}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, @@ -734,6 +730,16 @@ function doors.register_fencegate(name, def) }, } + + if type(def.texture) == "string" then + fence.tiles[1] = {name = def.texture, backface_culling = true} + elseif def.texture.backface_culling == nil then + fence.tiles[1] = table.copy(def.texture) + fence.tiles[1].backface_culling = true + else + fence.tiles[1] = def.texture + end + if not fence.sounds then fence.sounds = default.node_sound_wood_defaults() end diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 35a77e9..1c63ee3 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -118,15 +118,6 @@ farming.register_hoe = function(name, def) {"", "group:stick", ""} } }) - -- Reverse Recipe - minetest.register_craft({ - output = name:sub(2), - recipe = { - {"", def.material, def.material}, - {"", "group:stick", ""}, - {"", "group:stick", ""} - } - }) end end @@ -153,12 +144,14 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) local under = minetest.get_node(pt.under) local above = minetest.get_node(pt.above) - if minetest.is_protected(pt.under, placer:get_player_name()) then - minetest.record_protection_violation(pt.under, placer:get_player_name()) + local player_name = placer and placer:get_player_name() or "" + + if minetest.is_protected(pt.under, player_name) then + minetest.record_protection_violation(pt.under, player_name) return end - if minetest.is_protected(pt.above, placer:get_player_name()) then - minetest.record_protection_violation(pt.above, placer:get_player_name()) + if minetest.is_protected(pt.above, player_name) then + minetest.record_protection_violation(pt.above, player_name) return end @@ -189,7 +182,7 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) minetest.add_node(pt.above, {name = plantname, param2 = 1}) tick(pt.above) if not (creative and creative.is_enabled_for - and creative.is_enabled_for(placer:get_player_name())) then + and creative.is_enabled_for(player_name)) then itemstack:take_item() end return itemstack @@ -319,7 +312,8 @@ farming.register_plant = function(name, def) local node = minetest.get_node(under) local udef = minetest.registered_nodes[node.name] if udef and udef.on_rightclick and - not (placer and placer:get_player_control().sneak) then + not (placer and placer:is_player() and + placer:get_player_control().sneak) then return udef.on_rightclick(under, node, placer, itemstack, pointed_thing) or itemstack end diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt index 470ec30..301d971 100644 --- a/mods/farming/depends.txt +++ b/mods/farming/depends.txt @@ -1,2 +1,3 @@ default wool +stairs diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index c969d31..1e746ec 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -98,6 +98,16 @@ minetest.register_node("farming:straw", { sounds = default.node_sound_leaves_defaults(), }) +stairs.register_stair_and_slab( + "straw", + "farming:straw", + {snappy = 3, flammable = 4}, + {"farming_straw.png"}, + "Straw Stair", + "Straw Slab", + default.node_sound_leaves_defaults() +) + minetest.register_abm({ label = "Farming soil", nodenames = {"group:field"}, diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index cb5b219..1f55a3f 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -127,24 +127,29 @@ function flowers.flower_spread(pos, node) local pos0 = vector.subtract(pos, 4) local pos1 = vector.add(pos, 4) - if #minetest.find_nodes_in_area(pos0, pos1, "group:flora") > 3 then + -- Maximum flower density created by mapgen is 13 per 9x9 area. + -- The limit of 7 below was tuned by in-game testing to result in a maximum + -- flower density by ABM spread of 13 per 9x9 area. + -- Warning: Setting this limit theoretically without in-game testing + -- results in a maximum flower density by ABM spread that is far too high. + if #minetest.find_nodes_in_area(pos0, pos1, "group:flora") > 7 then return end local soils = minetest.find_nodes_in_area_under_air( pos0, pos1, "group:soil") - if #soils > 0 then - local seedling = soils[math.random(#soils)] - local seedling_above = - {x = seedling.x, y = seedling.y + 1, z = seedling.z} - light = minetest.get_node_light(seedling_above) - if not light or light < 13 or - -- Desert sand is in the soil group - minetest.get_node(seedling).name == "default:desert_sand" then - return + local num_soils = #soils + if num_soils >= 1 then + for si = 1, math.min(3, num_soils) do + local soil = soils[math.random(num_soils)] + local soil_above = {x = soil.x, y = soil.y + 1, z = soil.z} + light = minetest.get_node_light(soil_above) + if light and light >= 13 and + -- Desert sand is in the soil group + minetest.get_node(soil).name ~= "default:desert_sand" then + minetest.set_node(soil_above, {name = node.name}) + end end - - minetest.set_node(seedling_above, {name = node.name}) end end @@ -152,7 +157,7 @@ minetest.register_abm({ label = "Flower spread", nodenames = {"group:flora"}, interval = 13, - chance = 96, + chance = 300, action = function(...) flowers.flower_spread(...) end, @@ -204,38 +209,34 @@ minetest.register_node("flowers:mushroom_brown", { -- Mushroom spread and death +function flowers.mushroom_spread(pos, node) + if minetest.get_node_light(pos, nil) == 15 then + minetest.remove_node(pos) + return + end + local positions = minetest.find_nodes_in_area_under_air( + {x = pos.x - 1, y = pos.y - 2, z = pos.z - 1}, + {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, + {"group:soil", "group:tree"}) + if #positions == 0 then + return + end + local pos2 = positions[math.random(#positions)] + pos2.y = pos2.y + 1 + if minetest.get_node_light(pos, 0.5) <= 3 and + minetest.get_node_light(pos2, 0.5) <= 3 then + minetest.set_node(pos2, {name = node.name}) + end +end + minetest.register_abm({ label = "Mushroom spread", nodenames = {"flowers:mushroom_brown", "flowers:mushroom_red"}, interval = 11, - chance = 50, - action = function(pos, node) - if minetest.get_node_light(pos, nil) == 15 then - minetest.remove_node(pos) - return - end - local random = { - x = pos.x + math.random(-2, 2), - y = pos.y + math.random(-1, 1), - z = pos.z + math.random(-2, 2) - } - local random_node = minetest.get_node_or_nil(random) - if not random_node or random_node.name ~= "air" then - return - end - local node_under = minetest.get_node_or_nil({x = random.x, - y = random.y - 1, z = random.z}) - if not node_under then - return - end - - if (minetest.get_item_group(node_under.name, "soil") ~= 0 or - minetest.get_item_group(node_under.name, "tree") ~= 0) and - minetest.get_node_light(pos, 0.5) <= 3 and - minetest.get_node_light(random, 0.5) <= 3 then - minetest.set_node(random, {name = node.name}) - end - end + chance = 150, + action = function(...) + flowers.mushroom_spread(...) + end, }) @@ -280,12 +281,17 @@ minetest.register_node("flowers:waterlily", { on_place = function(itemstack, placer, pointed_thing) local pos = pointed_thing.above - local node = minetest.get_node(pointed_thing.under).name - local def = minetest.registered_nodes[node] - local player_name = placer:get_player_name() + local node = minetest.get_node(pointed_thing.under) + local def = minetest.registered_nodes[node.name] + local player_name = placer and placer:get_player_name() or "" + + if def and def.on_rightclick then + return def.on_rightclick(pointed_thing.under, node, placer, itemstack, + pointed_thing) + end if def and def.liquidtype == "source" and - minetest.get_item_group(node, "water") > 0 then + minetest.get_item_group(node.name, "water") > 0 then if not minetest.is_protected(pos, player_name) then minetest.set_node(pos, {name = "flowers:waterlily", param2 = math.random(0, 3)}) diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index e76f054..634edf8 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -85,9 +85,10 @@ screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses) end local pos = pointed_thing.under + local player_name = user and user:get_player_name() or "" - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, user:get_player_name()) + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) return end @@ -133,8 +134,8 @@ screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses) minetest.check_for_falling(pos) end - if not (creative and creative.is_enabled_for - and creative.is_enabled_for(user:get_player_name())) then + if not (creative and creative.is_enabled_for and + creative.is_enabled_for(player_name)) then itemstack:add_wear(65535 / ((uses or 200) - 1)) end diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua index bd6de1e..fdb652b 100644 --- a/mods/sfinv/api.lua +++ b/mods/sfinv/api.lua @@ -29,7 +29,8 @@ end function sfinv.get_nav_fs(player, context, nav, current_idx) -- Only show tabs if there is more than one page if #nav > 1 then - return "tabheader[0,0;tabs;" .. table.concat(nav, ",") .. ";" .. current_idx .. ";true;false]" + return "tabheader[0,0;sfinv_nav_tabs;" .. table.concat(nav, ",") .. + ";" .. current_idx .. ";true;false]" else return "" end @@ -84,9 +85,20 @@ function sfinv.get_formspec(player, context) return page:get(player, context) else local old_page = context.page - context.page = sfinv.get_homepage_name(player) + local home_page = sfinv.get_homepage_name(player) + + if old_page == home_page then + minetest.log("error", "[sfinv] Couldn't find " .. dump(old_page) .. + ", which is also the old page") + + return "" + end + + context.page = home_page assert(sfinv.pages[context.page], "[sfinv] Invalid homepage") - minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) .. " so using switching to homepage") + minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) .. + " so switching to homepage") + return sfinv.get_formspec(player, context) end end @@ -151,8 +163,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- Was a tab selected? - if fields.tabs and context.nav then - local tid = tonumber(fields.tabs) + if fields.sfinv_nav_tabs and context.nav then + local tid = tonumber(fields.sfinv_nav_tabs) if tid and tid > 0 then local id = context.nav[tid] local page = sfinv.pages[id] diff --git a/mods/stairs/depends.txt b/mods/stairs/depends.txt index d77ba25..4ad96d5 100644 --- a/mods/stairs/depends.txt +++ b/mods/stairs/depends.txt @@ -1,2 +1 @@ default -farming diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 90172ef..6e98d74 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -22,21 +22,23 @@ local function rotate_and_place(itemstack, placer, pointed_thing) local p1 = pointed_thing.above local param2 = 0 - local placer_pos = placer:getpos() - if placer_pos then - param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) - end + if placer then + local placer_pos = placer:getpos() + if placer_pos then + param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) + end - local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) - local fpos = finepos.y % 1 + local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) + local fpos = finepos.y % 1 - if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) - or (fpos < -0.5 and fpos > -0.999999999) then - param2 = param2 + 20 - if param2 == 21 then - param2 = 23 - elseif param2 == 23 then - param2 = 21 + if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) + or (fpos < -0.5 and fpos > -0.999999999) then + param2 = param2 + 20 + if param2 == 21 then + param2 = 23 + elseif param2 == 23 then + param2 = 21 + end end end return minetest.item_place(itemstack, placer, pointed_thing, param2) @@ -46,16 +48,29 @@ end -- Node will be called stairs:stair_ function stairs.register_stair(subname, recipeitem, groups, images, description, sounds) - groups.stair = 1 + local stair_images = {} + for i, image in ipairs(images) do + if type(image) == "string" then + stair_images[i] = { + name = image, + backface_culling = true, + } + elseif image.backface_culling == nil then -- override using any other value + stair_images[i] = table.copy(image) + stair_images[i].backface_culling = true + end + end + local new_groups = table.copy(groups) + new_groups.stair = 1 minetest.register_node(":stairs:stair_" .. subname, { description = description, drawtype = "mesh", mesh = "stairs_stair.obj", - tiles = images, + tiles = stair_images, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, - groups = groups, + groups = new_groups, sounds = sounds, selection_box = { type = "fixed", @@ -89,16 +104,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, end if recipeitem then - minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 8', - recipe = { - {recipeitem, "", ""}, - {recipeitem, recipeitem, ""}, - {recipeitem, recipeitem, recipeitem}, - }, - }) - - -- Flipped recipe for the silly minecrafters + -- Recipe matches appearence in inventory minetest.register_craft({ output = 'stairs:stair_' .. subname .. ' 8', recipe = { @@ -132,7 +138,8 @@ local slab_trans_dir = {[0] = 8, 0, 2, 1, 3, 4} -- Node will be called stairs:slab_ function stairs.register_slab(subname, recipeitem, groups, images, description, sounds) - groups.slab = 1 + local new_groups = table.copy(groups) + new_groups.slab = 1 minetest.register_node(":stairs:slab_" .. subname, { description = description, drawtype = "nodebox", @@ -140,7 +147,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, - groups = groups, + groups = new_groups, sounds = sounds, node_box = { type = "fixed", @@ -149,8 +156,9 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, on_place = function(itemstack, placer, pointed_thing) local under = minetest.get_node(pointed_thing.under) local wield_item = itemstack:get_name() + local player_name = placer and placer:get_player_name() or "" local creative_enabled = (creative and creative.is_enabled_for - and creative.is_enabled_for(placer:get_player_name())) + and creative.is_enabled_for(player_name)) if under and under.name:find("stairs:slab_") then -- place slab using under node orientation @@ -166,9 +174,8 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, if not recipeitem then return itemstack end - local player_name = placer:get_player_name() if minetest.is_protected(pointed_thing.under, player_name) and not - minetest.check_player_privs(placer, "protection_bypass") then + minetest.check_player_privs(player_name, "protection_bypass") then minetest.record_protection_violation(pointed_thing.under, player_name) return @@ -538,16 +545,6 @@ stairs.register_stair_and_slab( default.node_sound_stone_defaults() ) -stairs.register_stair_and_slab( - "straw", - "farming:straw", - {snappy = 3, flammable = 4}, - {"farming_straw.png"}, - "Straw Stair", - "Straw Slab", - default.node_sound_leaves_defaults() -) - stairs.register_stair_and_slab( "steelblock", "default:steelblock", diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index f54b2f1..d12e814 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -86,8 +86,8 @@ end local basic_flame_on_construct -- cached value local function destroy(drops, npos, cid, c_air, c_fire, on_blast_queue, on_construct_queue, - ignore_protection, ignore_on_blast) - if not ignore_protection and minetest.is_protected(npos, "") then + ignore_protection, ignore_on_blast, owner) + if not ignore_protection and minetest.is_protected(npos, owner) then return cid end @@ -208,6 +208,7 @@ local function add_effects(pos, radius, drops) collisiondetection = false, vertical = false, texture = "tnt_boom.png", + glow = 15, }) minetest.add_particlespawner({ amount = 64, @@ -266,13 +267,13 @@ function tnt.burn(pos, nodename) elseif def.on_ignite then def.on_ignite(pos) elseif minetest.get_item_group(name, "tnt") > 0 then + minetest.swap_node(pos, {name = name .. "_burning"}) minetest.sound_play("tnt_ignite", {pos = pos}) - minetest.set_node(pos, {name = name .. "_burning"}) minetest.get_node_timer(pos):start(1) end end -local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) +local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast, owner, explode_center) pos = vector.round(pos) -- scan for adjacent TNT nodes first, and enlarge the explosion local vm1 = VoxelManip() @@ -286,6 +287,10 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) local c_tnt_burning = minetest.get_content_id("tnt:tnt_burning") local c_tnt_boom = minetest.get_content_id("tnt:boom") local c_air = minetest.get_content_id("air") + -- make sure we still have explosion even when centre node isnt tnt related + if explode_center then + count = 1 + end for z = pos.z - 2, pos.z + 2 do for y = pos.y - 2, pos.y + 2 do @@ -333,7 +338,7 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) if cid ~= c_air then data[vi] = destroy(drops, p, cid, c_air, c_fire, on_blast_queue, on_construct_queue, - ignore_protection, ignore_on_blast) + ignore_protection, ignore_on_blast, owner) end end vi = vi + 1 @@ -375,16 +380,26 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) queued_data.fn(queued_data.pos) end + minetest.log("action", "TNT owned by " .. owner .. " detonated at " .. + minetest.pos_to_string(pos) .. " with radius " .. radius) + return drops, radius end function tnt.boom(pos, def) + def = def or {} + def.radius = def.radius or 1 + def.damage_radius = def.damage_radius or def.radius * 2 + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + if not def.explode_center then + minetest.set_node(pos, {name = "tnt:boom"}) + end minetest.sound_play("tnt_explode", {pos = pos, gain = 1.5, max_hear_distance = 2*64}) - minetest.set_node(pos, {name = "tnt:boom"}) local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, - def.ignore_on_blast) + def.ignore_on_blast, owner, def.explode_center) -- append entity drops - local damage_radius = (radius / def.radius) * def.damage_radius + local damage_radius = (radius / math.max(1, def.radius)) * def.damage_radius entity_physics(pos, damage_radius, drops) if not def.disable_drops then eject_drops(drops, pos, radius) @@ -400,12 +415,6 @@ minetest.register_node("tnt:boom", { walkable = false, drop = "", groups = {dig_immediate = 3}, - on_construct = function(pos) - minetest.get_node_timer(pos):start(0.4) - end, - on_timer = function(pos, elapsed) - minetest.remove_node(pos) - end, -- unaffected by explosions on_blast = function() end, }) @@ -508,17 +517,17 @@ minetest.register_node("tnt:gunpowder_burning", { on_timer = function(pos, elapsed) for dx = -1, 1 do for dz = -1, 1 do - for dy = -1, 1 do - if not (dx == 0 and dz == 0) then - tnt.burn({ - x = pos.x + dx, - y = pos.y + dy, - z = pos.z + dz, - }) + if math.abs(dx) + math.abs(dz) == 1 then + for dy = -1, 1 do + tnt.burn({ + x = pos.x + dx, + y = pos.y + dy, + z = pos.z + dz, + }) + end end end end - end minetest.remove_node(pos) end, -- unaffected by explosions @@ -579,9 +588,16 @@ function tnt.register_tnt(def) is_ground_content = false, groups = {dig_immediate = 2, mesecon = 2, tnt = 1, flammable = 5}, sounds = default.node_sound_wood_defaults(), + after_place_node = function(pos, placer) + if placer:is_player() then + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name()) + end + end, on_punch = function(pos, node, puncher) if puncher:get_wielded_item():get_name() == "default:torch" then - minetest.set_node(pos, {name = name .. "_burning"}) + minetest.swap_node(pos, {name = name .. "_burning"}) + minetest.registered_nodes[name .. "_burning"].on_construct(pos) minetest.log("action", puncher:get_player_name() .. " ignites " .. node.name .. " at " .. minetest.pos_to_string(pos)) @@ -600,10 +616,12 @@ function tnt.register_tnt(def) } }, on_burn = function(pos) - minetest.set_node(pos, {name = name .. "_burning"}) + minetest.swap_node(pos, {name = name .. "_burning"}) + minetest.registered_nodes[name .. "_burning"].on_construct(pos) end, on_ignite = function(pos, igniter) - minetest.set_node(pos, {name = name .. "_burning"}) + minetest.swap_node(pos, {name = name .. "_burning"}) + minetest.registered_nodes[name .. "_burning"].on_construct(pos) end, }) end