currentPage = 1 minetest.register_item(":", { -- Hand type = "none", wield_image = "Poop.png", wield_scale = {x=1.5,y=2,z=4.5}, range = 5, tool_capabilities = { max_drop_level = 0, full_punch_interval = 0.4, groupcaps = { oddly_breakable_by_hand = {times={[1]=3.50,[2]=2.00,[3]=0.70}, uses=0}, snappy = {times={[3]=0, [2]=0, [1]=0}, uses=0, maxlevel=3}, crumbly = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3}, cracky = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3}, choppy = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3}, }, damage_groups = {fleshy = 3, snappy = 2}, } }) minetest.register_on_player_receive_fields(function(player, formname, fields) if formname ~= "story:story_formspec" then return end if formname == "story:story_formspec" then if fields.next then if currentPage >= 4 then minetest.close_formspec(player:get_player_name(), "story:story_formspec") -- teleport player to 10 9.5 18 player:setpos({x=10, y=9.5, z=18}) return end currentPage = currentPage + 1 -- Fuck Lua and its lack of arithmetic assignment operators minetest.show_formspec(player:get_player_name(), "story:story_formspec", table.concat(getStoryFormspec(currentPage), "\n")) elseif fields.back and currentPage >= 0 then currentPage = currentPage - 1 -- Fuck Lua and its lack of arithmetic assignment operators minetest.show_formspec(player:get_player_name(), "story:story_formspec", table.concat(getStoryFormspec(currentPage), "\n")) elseif fields.exit then --minetest.kick_player(player:get_player_name(), "Fuck you in particular") minetest.request_shutdown("The game has crashed due to the citizen's neglience.\n This incident will be reported.") elseif fields.quit then minetest.after(0.2, function() minetest.show_formspec(player:get_player_name(), "story:story_formspec", table.concat(getStoryFormspec(currentPage), "\n")) end) end end end) storyText = {} storyText[0] = "Click next to continue. Do NOT close the formspec by pressing the Escape key, or the game may break. To my knowledge, this is impossible to solve with the current Lua API." storyText[1] = "Welcome To ShittingSim! Very Advanced, Educational, and Cultural Minetest Game!" storyText[2] = "So the story is simple. You are eating so many pickles and beans and drinking milk then you feel heavly that you have to take a shit." storyText[3] = "You accidently use your flux capacitor and time travel to the future city where you are shitting all over the place." storyText[4] = "You have to run from future robocops and pack 100 shits into boxes! Good Luck!" function getStoryFormspec(number) storyFormspec = { "formspec_version[4]", "size[18, 16]", "bgcolor[brown]", "position[0.5, 0.5]", "style_type[button;bgcolor=yellow;textcolor=green]", "hypertext[1, 12.5; 12, 5;;" .. storyText[number] .. "]\n", "image[1, .2; 16, 12;" .. number .. ".png]", "button[13, 12.3; 4, 1;back;Back]", "button[13, 13.6; 4, 1;next;Next]", "button[13, 14.9; 4, 1;exit;Quit]" } return storyFormspec end is_game_started = false is_game_finished = false function ending() end function begining() end destruction_counter = {} destruction_counter.nodesDestroyed = 0 local nodesDestroyedByHand = 0 local idText local idMeter minetest.register_item(":", { -- Hand type = "none", wield_image = "Poop.png", wield_scale = {x=1.5,y=2,z=4.5}, range = 5, tool_capabilities = { max_drop_level = 0, full_punch_interval = 0.4, groupcaps = { oddly_breakable_by_hand = {times={[1]=3.50,[2]=2.00,[3]=0.70}, uses=0}, snappy = {times={[3]=0, [2]=0, [1]=0}, uses=0, maxlevel=3}, crumbly = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3}, cracky = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3}, choppy = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3}, }, damage_groups = {fleshy = 3, snappy = 2}, } }) minetest.register_on_joinplayer(function(player) meta = player:get_meta() idText = player:hud_add({ hud_elem_type = "text", position = {x = .5, y = .5}, offset = {x = 0, y = 0}, text = nodesDestroyed, alignment = {x = 0, y = 0}, -- center aligned scale = {x = 100, y = 100}, -- covered later }) player:hud_add({ hud_elem_type = "image", position = {x = 1, y = .5}, offset = {x = -515, y = 23}, text = "destruction_counter_meter_empty.png", scale = {x = 4, y = 4}, alignment = {x = 1, y = 0}, }) idMeter = player:hud_add({ hud_elem_type = "image", position = {x = 1, y = .5}, offset = {x = -510, y = 23}, text = "destruction_counter_meter_full.png", scale = {x = 0, y = 4}, alignment = {x = 1, y = 0}, }) end) function destruction_counter.updateCounter(player) if not player then return end local totalDestruction = destruction_counter.nodesDestroyed + math.floor(nodesDestroyedByHand / 10) local percentage = (totalDestruction / 100 * 4) if percentage > 100 then percentage = 100 end player:hud_change(idText, "text", "Shitting & Packing Meter: " .. totalDestruction) player:hud_change(idMeter, "scale", {x = percentage, y = 4}) end function sraj_dzwiek() --make random sound local sounds = { "shitting1", "shitting2", "shitting3"} local sound = sounds[math.random(1, #sounds)] minetest.sound_play(sound, {pos = pos, gain = 2.0, max_hear_distance = 10}) end function pakuj_guwno() local sounds = { "shit_packing1", "shit_packing2", "shit_packing3"} local sound = sounds[math.random(1, #sounds)] minetest.sound_play(sound, {pos = pos, gain = 2.0, max_hear_distance = 10}) end minetest.register_node("poop:box", { description = "cardboard box", tiles = {"box_top_closed.png","box_top_closed.png", "box_long_side.png", "box_long_side.png", "box_long_side.png", "box_long_side.png"}, drop = 'poop:box', legacy_mineral = true, drawtype = "nodebox", paramtype = "light", node_box = { type = "fixed", fixed = { {-0.3125, -0.5, -0.375, 0.3125, -0.0625, 0.375}, -- NodeBox1 } } }) -- make a tool called flashlight that can be used to light up the world minetest.register_tool("poop:flashlight", { description = "Flashlight", inventory_image = "flashlight.png", wield_image = "flashlight.png", wield_scale = {x=1,y=1,z=1}, tool_capabilities = { full_punch_interval = 1.0, max_drop_level=0, groupcaps={ cracky = {times={[1]=3.00, [2]=0.70, [3]=0.40}, uses=20, maxlevel=1}, }, damage_groups = {fleshy=2}, }, light_source = 14, }) minetest.register_tool("poop:tool", { description = "My Tool", inventory_image = "flux_capacitor.png", tool_capabilities = { full_punch_interval = 1.5, max_drop_level = 1, groupcaps = { crumbly = { maxlevel = 2, uses = 20, times = { [1]=1.60, [2]=1.20, [3]=0.80 } }, }, damage_groups = {fleshy=2}, }, }) minetest.register_node("poop:floor", { description = "Floor", tiles = {"floor.png"}, drop = 'poop:floor', legacy_mineral = true, groups = {cracky=3, stone=1}, }) minetest.register_node("poop:Poop", { description = "Just Shit", tiles = {"Poop.png"}, drop = 'poop:PoopItem', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:tv", { description = "CRT TV", tiles = {"PC2.png", "PC2.png","PC2.png","PC.png","PC2.png","PC2.png"}, drop = 'poop:Poop', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:bricks", { description = "Bricks", tiles = {"Bricks.png"}, drop = 'poop:grey_bricks', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:grey_bricks", { description = "Bricks 2", tiles = {"Bricks2.png"}, groups = {cracky=3, stone=1}, drop = 'poop:grey_bricks', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:planks", { description = "Planks", tiles = {"Planks.png"}, drop = 'poop:planks', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:purpleblock", { description = "Purple Block", tiles = {"purpleblock.png"}, drop = 'poop:purpleblock', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:purpleblock", { description = "Purple Block", tiles = {"purpleblock.png"}, drop = 'poop:purpleblock', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:redblock", { description = "Red Block", tiles = {"redblock.png"}, drop = 'poop:redblock', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:aquablock", { description = "Aqua Block", tiles = {"aquablock.png"}, drop = 'poop:aquablock', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:glass", { description = "Glass", tiles = {"glass.png"}, drop = 'poop:glass', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:Poop2", { description = "Poop with more density", tiles = {"sraka.png"}, drop = 'poop:Poop', groups = {cracky=3, stone=1}, }) minetest.register_node("poop:flux_capacitor", { description = "Flux Capacitor from Back to the Future", tiles = {"fluxcap2.png", "fluxcap2.png","fluxcap2.png","fluxcap.png","fluxcap2.png","fluxcap2.png"}, drop = 'poop:Poop', groups = {cracky=3, stone=1}, }) minetest.register_alias("mapgen_stone", "poop:floor") local pooped_things = 0 minetest.register_craftitem("poop:plumba", { description = "Plumba", inventory_image = "plumba.png", on_use = function(itemstack, user, pointed_thing) -- check if pointing at a node if pointed_thing.type ~= "node" then return end if pooped_things >= 100 then is_game_finished = true return end -- get node at pointed thing position local node = minetest.get_node(pointed_thing.under) -- check if node is poop if node.name == "poop:Poop" then minetest.remove_node(pointed_thing.under) minetest.add_node(pointed_thing.under, {name="poop:box"}) minetest.chat_send_player(user:get_player_name(), "You packed "..pooped_things.." shits!") pooped_things = pooped_things + 1 destruction_counter.nodesDestroyed = pooped_things destruction_counter.updateCounter(user) pakuj_guwno() return itemstack else if node.name == "poop:Poop2" then minetest.remove_node(pointed_thing.under) minetest.add_node(pointed_thing.under, {name="poop:box"}) minetest.chat_send_player(user:get_player_name(), "You packed "..pooped_things.." shits!") pakuj_guwno() pooped_things = pooped_things + 1 destruction_counter.nodesDestroyed = pooped_things destruction_counter.updateCounter(user) return itemstack end end end }) minetest.register_craftitem("poop:pooper", { description = "Pooper", inventory_image = "SHITitem.png", on_use = function(itemstack, user, pointed_thing) -- check if pointing at a node if pointed_thing.type ~= "node" then return end -- make a random number between 1 and 10 local random_number = math.random(1, 10) if random_number < 5 then local node = minetest.get_node(pointed_thing.above) if node.name == "air" then minetest.add_node(pointed_thing.above, {name="poop:Poop"}) else minetest.add_node(pointed_thing.under, {name="poop:Poop"}) end else local node = minetest.get_node(pointed_thing.above) if node.name == "air" then minetest.add_node(pointed_thing.above, {name="poop:Poop2"}) else minetest.add_node(pointed_thing.under, {name="poop:Poop2"}) end end sraj_dzwiek() return itemstack end, }) minetest.register_on_joinplayer(function(player) -- teleport to 0,0,0 player:setpos({x=0, y=0, z=0}) minetest.show_formspec(player:get_player_name(), "story:story_formspec", table.concat(getStoryFormspec(1), "\n")) player:get_inventory():set_list("main", {}) -- set time to day minetest.set_timeofday(0.5) minetest.sound_play("pooping_together", { gain = 1, pitch = 1, loop = true, }) player:get_inventory():add_item("main", "poop:plumba") player:get_inventory():add_item("main", "poop:pooper") begining() end)