2022-11-21 22:55:04 +01:00
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 = { }
2022-11-22 00:20:50 +01:00
storyText [ 1 ] = " Welcome to the state-of-the-art Shitting Simulator! A very advanced, educational, and culturally significant Minetest Game! "
storyText [ 2 ] = " So the story is simple: You've eaten so many pickles and beans and drank so much milk that your rectum will burst if you don't take a shit in the next two minutes. "
storyText [ 3 ] = " You accidently use your flux capacitor and travel in time to the far future, where you find yourself in a city where you are shitting all over the place. "
storyText [ 4 ] = " You have to run from the robocops and pack 100 pieces of shit into boxes! Good luck! "
2022-11-21 22:55:04 +01:00
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;;<global halign=center color=black size=20 font=Regular> " .. 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
2022-11-21 21:42:02 +01:00
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
2022-11-21 22:18:04 +01:00
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 } ,
}
} )
2022-11-21 21:42:02 +01:00
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
2022-11-20 23:28:08 +01:00
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
2022-11-20 20:43:58 +01:00
minetest.register_node ( " poop:box " , {
description = " cardboard box " ,
2022-11-21 22:55:04 +01:00
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 " } ,
2022-11-20 20:43:58 +01:00
drop = ' poop:box ' ,
legacy_mineral = true ,
2022-11-20 22:47:32 +01:00
drawtype = " nodebox " ,
paramtype = " light " ,
node_box = {
type = " fixed " ,
fixed = {
{ - 0.3125 , - 0.5 , - 0.375 , 0.3125 , - 0.0625 , 0.375 } , -- NodeBox1
}
}
2022-11-20 20:43:58 +01:00
} )
2022-11-20 23:20:26 +01:00
2022-11-21 23:38:24 +01:00
minetest.register_node ( " poop:ladder_steel " , {
description = " Ladder " ,
drawtype = " signlike " ,
2022-11-21 23:48:09 +01:00
tiles = { " ladder.png " } ,
2022-11-21 23:38:24 +01:00
paramtype = " light " ,
paramtype2 = " wallmounted " ,
sunlight_propagates = true ,
walkable = false ,
climbable = true ,
is_ground_content = false ,
selection_box = {
type = " wallmounted " ,
--wall_top = = <default>
--wall_bottom = = <default>
--wall_side = = <default>
} ,
groups = { cracky = 2 } ,
} )
2022-11-20 23:20:26 +01:00
-- 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 } ,
} ,
} )
2022-11-20 20:43:58 +01:00
minetest.register_node ( " poop:floor " , {
description = " Floor " ,
tiles = { " floor.png " } ,
drop = ' poop:floor ' ,
2022-11-20 23:20:26 +01:00
legacy_mineral = true , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:Poop " , {
description = " Just Shit " ,
tiles = { " Poop.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:PoopItem ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:tv " , {
2022-11-20 22:38:05 +01:00
description = " CRT TV " ,
2022-11-21 23:57:06 +01:00
tiles = {
" PC2.png " ,
" PC2.png " ,
" PC2.png " ,
" PC2.png " ,
" PC2.png " ,
" PC.png "
} ,
2022-11-21 23:53:45 +01:00
paramtype2 = " facedir " ,
2022-11-20 23:20:26 +01:00
drop = ' poop:Poop ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:bricks " , {
description = " Bricks " ,
tiles = { " Bricks.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:grey_bricks ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:grey_bricks " , {
description = " Bricks 2 " ,
2022-11-20 23:20:26 +01:00
tiles = { " Bricks2.png " } , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
2022-11-20 23:20:26 +01:00
drop = ' poop:grey_bricks ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:planks " , {
description = " Planks " ,
tiles = { " Planks.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:planks ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:purpleblock " , {
description = " Purple Block " ,
tiles = { " purpleblock.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:purpleblock ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:purpleblock " , {
description = " Purple Block " ,
tiles = { " purpleblock.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:purpleblock ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:redblock " , {
description = " Red Block " ,
tiles = { " redblock.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:redblock ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:aquablock " , {
description = " Aqua Block " ,
tiles = { " aquablock.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:aquablock ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:glass " , {
description = " Glass " ,
tiles = { " glass.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:glass ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
minetest.register_node ( " poop:Poop2 " , {
description = " Poop with more density " ,
tiles = { " sraka.png " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:Poop ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
2022-11-21 23:35:57 +01:00
minetest.register_node ( " poop:glowing_block " , {
description = " Glowing Block " ,
tiles = { " glowing_block.png " } ,
drop = ' poop:glowing_block ' , groups = { cracky = 3 , stone = 1 } ,
light_source = 14
} )
2022-11-20 20:43:58 +01:00
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 " } ,
2022-11-20 23:20:26 +01:00
drop = ' poop:Poop ' , groups = { cracky = 3 , stone = 1 } ,
2022-11-20 20:43:58 +01:00
} )
2022-11-20 21:59:55 +01:00
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
2022-11-21 21:42:02 +01:00
if pooped_things >= 100 then
is_game_finished = true
return
end
2022-11-20 22:47:32 +01:00
-- 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 )
2022-11-21 21:42:02 +01:00
minetest.add_node ( pointed_thing.under , { name = " poop:box " } )
minetest.chat_send_player ( user : get_player_name ( ) , " You packed " .. pooped_things .. " shits! " )
2022-11-20 22:47:32 +01:00
pooped_things = pooped_things + 1
2022-11-21 21:42:02 +01:00
destruction_counter.nodesDestroyed = pooped_things
destruction_counter.updateCounter ( user )
2022-11-20 23:28:08 +01:00
pakuj_guwno ( )
2022-11-20 22:47:32 +01:00
return itemstack
else if node.name == " poop:Poop2 " then
minetest.remove_node ( pointed_thing.under )
minetest.add_node ( pointed_thing.under , { name = " poop:box " } )
2022-11-21 21:42:02 +01:00
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 )
2022-11-20 22:47:32 +01:00
return itemstack
end
end
end
} )
2022-11-20 21:59:55 +01:00
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
2022-11-20 22:47:32 +01:00
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
2022-11-20 21:59:55 +01:00
else
2022-11-20 22:47:32 +01:00
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
2022-11-20 21:59:55 +01:00
end
2022-11-20 23:28:08 +01:00
sraj_dzwiek ( )
2022-11-20 21:59:55 +01:00
return itemstack
end ,
} )
minetest.register_on_joinplayer ( function ( player )
2022-11-21 22:55:04 +01:00
-- 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 " ) )
2022-11-20 21:59:55 +01:00
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 " )
2022-11-21 21:42:02 +01:00
begining ( )
2022-11-20 21:59:55 +01:00
end )