Mineclone compatibility (#36)
* latest versions of mapgen_helper and subterrane
* initial work
* call it "minetest_game" compatibility instead of "default" compatibility
* Getting started on moving all default dependencies to a single root mod
* distilling out more dependencies
* fix some typos
* more default dependencies
* beds
* start getting some MCL equivalents set up
* mine gas dependencies
* reorganize
* add some mapgen stuff
* getting close to actually being able to run mineclone with this
* it actually runs! Crashes with out-of-memory error when you try to go below -64, but it's a start.
* hide flowing pit plasma from creative inventory
* mineclone 5 settings
* Update subterrane
* get rid of meselamp dependency, bring in ancient lanterns from deep roads
* stair dependencies
* add mcl fences
* add mcl blast resistance and hardness to everything. Also an alternate name for Nethercap in MCL, since "nether" has another meaning there.
* buckets of oil and syrup should work in mineclone now
* 'splosions!
* make hunters avoid repaired ancient lanterns
* mapgen torchspine wasn't having its timer set
* split mapgen compatibility code into its own file
* bypass dependency indirection for df_farming.
* apply threshold alpha to food items, they look better that way
* bypass dependency indirection for df_mapitems
* bypass dependency indirection for df_primordial_items
* bypass dependency indirection for df_trees
* bypass dependency indirection for df_underworld_items
* bypass dependency indirection for df_caverns
* fixing up the puzzle seal to work in both
* fix puzzle seal formspec for mcl
* create built-in substitutes for fireflies and bones mods for when those aren't available
* set up mcl dungeon loot for underworld warriors, port over some translations from default
* overlooked a debug
* add itemslot backgrounds for mcl
* added mineclone groups to all registered nodes. TODO: craftitems.
This was extremely tedious. Completely untested, aside from simply running the game.
* minor fixes to the built-in bones node
* eatable group for edibles
* clean up some TODOs
* adjust pit plasma abm conditions
* add df_ambience
* fixing up explosions. Also make slade sand diggable in mcl, and fix a bug in web generators
* make tower cap caves less chirpy, fix bigger goblin hut schematic, allow glowing spindlestem extract bottles
* avoid an undeclared global check
* alas, cave pearls aren't set up right for attached_node_facedir.
* bunch of work on mineclone ores, moved main config into df_dependencies
* add a few more ores
* update depends in mod.conf
* add opaque group to light-sensitive dirt types
Mineclone adds the "opaque" group only to non-light nodes, and torches check for the opaque group to decide whether they can be placed there. light-sensitive nodes need the "light" paramtype to work, though. So adding the opaque group manually to these.
* add a touch of reverb to one of the whisper tracks, it didn't fit with the others without it
* bloodthorn also needs to be set opaque
* add sound to torchspines
* isolate Nethercap translation name to make it easier to swap out in Mineclone contexts
* ambience tweak
* fix dirt spreads
https://github.com/FaceDeer/dfcaverns/issues/35
* adding achievements! Almost all untested yet.
* fix a few achievements glitches
* tweak some more achievements, add delay when achievements unlock other achievements
* fix farming achievements, fix spindlestem callbacks on place
* icons for farming achievements
* more achievement icons, fix ancient lantern achievement
* two more icons, update text
* add icons for upper cavern layers
* all achievements have icons now. Also add another sound to the magma sea ambience
* hook into awards' trigger system to get "x/y" progress displayed for the multi-achievement achievements
* ironically, Mineclone has an old version of awards that is incompatible with my trigger work.
* every award should now have a description and a difficulty.
* removing leftovers
* missing callbacks for farmables
* put growth restrictions on farmables so the achievement doesn't trigger inappropriately.
* enable ores in MCL2, fix some undeclared globals, fix icecap growth in MCL (achievements are a good debugging tool)
* get *all* the copper and iron containing nodes
* fix old awards mod's handling of grouped dig items
* Add a little bonus for players who activate a slade breacher - a handheld 'splosion tool
* used the wrong drop method
* beef up explosions in MCL, make slade brick craftable from slade sand and lava
* better creative mode checks, fix crash when digging walls in MCL
* Update subterrane
* various bugfixes and tweaks
* whipping up a simple puzzle chest to give a clue about ancient numbering
The coding is done, but UI and a node mesh need to be done
* prepare for some art tomorrow
* chest node and sounds
* images for the combination dials
* add puzzle chests to the underworld buildings
* update translations
* oops, can't initialize the contents of puzzle chests every time or players get endless stuff
* add backgrounds to item slots in MCL
* wrap the existing function rather than copy and pasting it
* fix bucket dependency in cooking recipes
* add _mcl_saturation to edibles
2022-08-29 07:48:44 +02:00
|
|
|
local S = minetest.get_translator(minetest.get_current_modname())
|
|
|
|
|
|
|
|
local use_timeout = {}
|
|
|
|
|
|
|
|
local check_timeout = function(user)
|
|
|
|
if not user:is_player() then return false end
|
|
|
|
local player_name = user:get_player_name()
|
|
|
|
local curr_time = minetest.get_gametime() -- minetest.get_us_time() for microsecond precision
|
|
|
|
local last_used = use_timeout[player_name]
|
|
|
|
if not last_used or curr_time > last_used then
|
|
|
|
use_timeout[player_name] = curr_time
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local drill_particles = function(pos)
|
|
|
|
minetest.add_particlespawner({
|
|
|
|
amount = 25,
|
|
|
|
time = 0.5,
|
|
|
|
minpos = pos,
|
|
|
|
maxpos = pos,
|
|
|
|
minvel = {x=-5, y=0, z=-5},
|
|
|
|
maxvel = {x=5, y=10, z=5},
|
|
|
|
minacc = {x=0, y=-10, z=0},
|
|
|
|
maxacc = {x=0, y=-10, z=0},
|
|
|
|
minexptime = 2.5,
|
|
|
|
maxexptime = 7.5,
|
|
|
|
minsize = 1,
|
|
|
|
maxsize = 5,
|
|
|
|
texture = "dfcaverns_glowpit_particle.png",
|
|
|
|
collisiondetection = true,
|
|
|
|
collision_removal = true,
|
|
|
|
glow = 15,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
|
|
|
local slade_drill_def = {
|
|
|
|
_doc_items_longdesc = df_underworld_items.doc.slade_drill_desc,
|
|
|
|
_doc_items_usagehelp = df_underworld_items.doc.slade_drill_usage,
|
|
|
|
light_source = minetest.LIGHT_MAX,
|
|
|
|
description = S("Slade Drill"),
|
|
|
|
inventory_image = "dfcaverns_slade_drill.png",
|
2022-09-11 00:21:50 +02:00
|
|
|
groups = {cracky=3, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1,creative_breakable=1, material_stone=1},
|
Mineclone compatibility (#36)
* latest versions of mapgen_helper and subterrane
* initial work
* call it "minetest_game" compatibility instead of "default" compatibility
* Getting started on moving all default dependencies to a single root mod
* distilling out more dependencies
* fix some typos
* more default dependencies
* beds
* start getting some MCL equivalents set up
* mine gas dependencies
* reorganize
* add some mapgen stuff
* getting close to actually being able to run mineclone with this
* it actually runs! Crashes with out-of-memory error when you try to go below -64, but it's a start.
* hide flowing pit plasma from creative inventory
* mineclone 5 settings
* Update subterrane
* get rid of meselamp dependency, bring in ancient lanterns from deep roads
* stair dependencies
* add mcl fences
* add mcl blast resistance and hardness to everything. Also an alternate name for Nethercap in MCL, since "nether" has another meaning there.
* buckets of oil and syrup should work in mineclone now
* 'splosions!
* make hunters avoid repaired ancient lanterns
* mapgen torchspine wasn't having its timer set
* split mapgen compatibility code into its own file
* bypass dependency indirection for df_farming.
* apply threshold alpha to food items, they look better that way
* bypass dependency indirection for df_mapitems
* bypass dependency indirection for df_primordial_items
* bypass dependency indirection for df_trees
* bypass dependency indirection for df_underworld_items
* bypass dependency indirection for df_caverns
* fixing up the puzzle seal to work in both
* fix puzzle seal formspec for mcl
* create built-in substitutes for fireflies and bones mods for when those aren't available
* set up mcl dungeon loot for underworld warriors, port over some translations from default
* overlooked a debug
* add itemslot backgrounds for mcl
* added mineclone groups to all registered nodes. TODO: craftitems.
This was extremely tedious. Completely untested, aside from simply running the game.
* minor fixes to the built-in bones node
* eatable group for edibles
* clean up some TODOs
* adjust pit plasma abm conditions
* add df_ambience
* fixing up explosions. Also make slade sand diggable in mcl, and fix a bug in web generators
* make tower cap caves less chirpy, fix bigger goblin hut schematic, allow glowing spindlestem extract bottles
* avoid an undeclared global check
* alas, cave pearls aren't set up right for attached_node_facedir.
* bunch of work on mineclone ores, moved main config into df_dependencies
* add a few more ores
* update depends in mod.conf
* add opaque group to light-sensitive dirt types
Mineclone adds the "opaque" group only to non-light nodes, and torches check for the opaque group to decide whether they can be placed there. light-sensitive nodes need the "light" paramtype to work, though. So adding the opaque group manually to these.
* add a touch of reverb to one of the whisper tracks, it didn't fit with the others without it
* bloodthorn also needs to be set opaque
* add sound to torchspines
* isolate Nethercap translation name to make it easier to swap out in Mineclone contexts
* ambience tweak
* fix dirt spreads
https://github.com/FaceDeer/dfcaverns/issues/35
* adding achievements! Almost all untested yet.
* fix a few achievements glitches
* tweak some more achievements, add delay when achievements unlock other achievements
* fix farming achievements, fix spindlestem callbacks on place
* icons for farming achievements
* more achievement icons, fix ancient lantern achievement
* two more icons, update text
* add icons for upper cavern layers
* all achievements have icons now. Also add another sound to the magma sea ambience
* hook into awards' trigger system to get "x/y" progress displayed for the multi-achievement achievements
* ironically, Mineclone has an old version of awards that is incompatible with my trigger work.
* every award should now have a description and a difficulty.
* removing leftovers
* missing callbacks for farmables
* put growth restrictions on farmables so the achievement doesn't trigger inappropriately.
* enable ores in MCL2, fix some undeclared globals, fix icecap growth in MCL (achievements are a good debugging tool)
* get *all* the copper and iron containing nodes
* fix old awards mod's handling of grouped dig items
* Add a little bonus for players who activate a slade breacher - a handheld 'splosion tool
* used the wrong drop method
* beef up explosions in MCL, make slade brick craftable from slade sand and lava
* better creative mode checks, fix crash when digging walls in MCL
* Update subterrane
* various bugfixes and tweaks
* whipping up a simple puzzle chest to give a clue about ancient numbering
The coding is done, but UI and a node mesh need to be done
* prepare for some art tomorrow
* chest node and sounds
* images for the combination dials
* add puzzle chests to the underworld buildings
* update translations
* oops, can't initialize the contents of puzzle chests every time or players get endless stuff
* add backgrounds to item slots in MCL
* wrap the existing function rather than copy and pasting it
* fix bucket dependency in cooking recipes
* add _mcl_saturation to edibles
2022-08-29 07:48:44 +02:00
|
|
|
sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }),
|
|
|
|
_mcl_blast_resistance = 8,
|
|
|
|
_mcl_hardness = 5,
|
|
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
|
|
if pointed_thing.type == "node" then
|
|
|
|
local pos = pointed_thing.under
|
|
|
|
local node = minetest.get_node(pos)
|
|
|
|
if node.name == "df_underworld_items:slade" and check_timeout(user) then
|
|
|
|
if not minetest.is_creative_enabled(user:get_player_name()) then
|
|
|
|
itemstack:set_wear(itemstack:get_wear()+1)
|
|
|
|
end
|
|
|
|
minetest.sound_play("dfcaverns_slade_drill", {pos = user:get_pos()})
|
|
|
|
minetest.set_node(pos, {name="df_underworld_items:slade_sand"})
|
|
|
|
drill_particles(pointed_thing.above)
|
|
|
|
return itemstack
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
}
|
|
|
|
|
|
|
|
local tnt_boom = df_dependencies.tnt_boom
|
|
|
|
if tnt_boom then
|
|
|
|
slade_drill_def.on_use = function(itemstack, user, pointed_thing)
|
|
|
|
if not check_timeout(user) then return end
|
|
|
|
local pos
|
|
|
|
if pointed_thing.type == "node" then pos = pointed_thing.under
|
|
|
|
elseif pointed_thing.type == "object" then pos = pointed_thing.ref:get_pos() end
|
|
|
|
if pos then
|
|
|
|
tnt_boom(pos, {radius=1})
|
|
|
|
minetest.sound_play("dfcaverns_slade_drill", {pos = user:get_pos()})
|
|
|
|
if not minetest.is_creative_enabled(user:get_player_name()) then
|
|
|
|
itemstack:set_wear(itemstack:get_wear()+1)
|
|
|
|
end
|
|
|
|
drill_particles(pos)
|
|
|
|
minetest.check_for_falling({x=pos.x, y=pos.y+1, z=pos.z})
|
|
|
|
return itemstack
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
minetest.register_tool("df_underworld_items:slade_drill", slade_drill_def)
|