Skip to content

Commit

Permalink
Mineclone compatibility (#36)
Browse files Browse the repository at this point in the history
* 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

#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
  • Loading branch information
FaceDeer authored Aug 29, 2022
1 parent b2ee829 commit 0a0c97b
Show file tree
Hide file tree
Showing 435 changed files with 6,098 additions and 1,365 deletions.
40 changes: 21 additions & 19 deletions big_webs/init.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname)

local default_path = minetest.get_modpath("default")
local sound
if df_dependencies.sound_leaves then
sound = df_dependencies.sound_leaves()
end

local get_node_box = function(connector_thickness)
return {
Expand All @@ -17,15 +20,17 @@ local get_node_box = function(connector_thickness)
}
end

local anchor_groups = {"group:soil", "group:stone", "group:tree", "group:wood", "group:webbing", "group:solid"}

local in_anchor_group = function(name)
return
minetest.get_item_group(name, "soil") > 0 or
minetest.get_item_group(name, "stone") > 0 or
minetest.get_item_group(name, "tree") > 0 or
minetest.get_item_group(name, "leaves") > 0 or
minetest.get_item_group(name, "sand") > 0 or
minetest.get_item_group(name, "wood") > 0 or
name == "ignore"
for _, group in pairs(anchor_groups) do
if minetest.get_item_group(name, string.sub(group, 7)) then
return true
end
end
if name == "ignore" then
return true
end
end

local cardinal_directions = {
Expand Down Expand Up @@ -72,12 +77,6 @@ local get_web_nodes = function(pos, webs, anchors)
end
end

local sound
if default_path then
sound = default.node_sound_leaves_defaults()
end


local web_line = function(pos, dir, distance)
local anchored
local web_spine = {}
Expand Down Expand Up @@ -128,7 +127,7 @@ minetest.register_node("big_webs:webbing", {
{name="big_webs.png"},
},
use_texture_alpha = "blend",
connects_to = {"group:soil", "group:stone", "group:tree", "group:leaves", "group:sand", "group:wood", "group:webbing"},
connects_to = anchor_groups,
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
drawtype = "nodebox",
node_box = get_node_box(0.0625),
Expand All @@ -138,8 +137,7 @@ minetest.register_node("big_webs:webbing", {
paramtype = "light",
is_ground_content = false,
climbable = true,
floodable = true,
groups = {snappy = 2, choppy = 2, webbing = 1, flammable=1, fall_damage_add_percent=-100, bouncy=20},
groups = {snappy = 2, choppy = 2, webbing = 1, shearsy = 1, swordy=1, flammable=1, destroy_by_lava_flow=1, fall_damage_add_percent=-100, bouncy=20},
sounds = sound,
on_construct = function(pos)
minetest.get_node_timer(pos):start(30)
Expand Down Expand Up @@ -168,6 +166,8 @@ minetest.register_node("big_webs:webbing", {
minetest.get_node_timer(web_pos):stop() -- no need to recheck
end
end,
_mcl_blast_resistance = 1.0,
_mcl_hardness = 0.5,
})

minetest.register_node("big_webs:web_egg", {
Expand All @@ -176,7 +176,7 @@ minetest.register_node("big_webs:web_egg", {
{name="big_webs.png"},
},
use_texture_alpha = "blend",
connects_to = {"group:soil", "group:stone", "group:tree", "group:leaves", "group:sand", "group:wood", "group:webbing"},
connects_to = anchor_groups,
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
drawtype = "nodebox",
node_box = get_node_box(0.0625),
Expand All @@ -196,4 +196,6 @@ minetest.register_node("big_webs:web_egg", {
minetest.set_node(pos, {name="air"})
generate_web(pos)
end,
_mcl_blast_resistance = 1.0,
_mcl_hardness = 0.5,
})
2 changes: 1 addition & 1 deletion big_webs/mod.conf
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
name=big_webs
optional_depends=default
optional_depends=df_dependencies
84 changes: 71 additions & 13 deletions bones_loot/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,75 @@ local dungeon_loot_path = minetest.get_modpath("dungeon_loot")

bones_loot = {}

local bones_formspec =
"size[8,9]"
.."list[current_name;main;0,0.3;8,4;]"
.."list[current_player;main;0,4.85;8,1;]"
.."list[current_player;main;0,6.08;8,3;8]"
.."listring[current_name;main]"
.."listring[current_player;main]"
..df_dependencies.get_itemslot_bg(0,0.3,8,4)
..df_dependencies.get_itemslot_bg(0,4.85,8,1)
..df_dependencies.get_itemslot_bg(0,6.08,8,3)
if minetest.get_modpath("default") then
bones_formspec = bones_formspec .. default.get_hotbar_bg(0,4.85)
end

if minetest.get_modpath("bones") then
df_dependencies.node_name_bones = "bones:bones"
else

local function drop_item_stack(pos, stack)
if not stack or stack:is_empty() then return end
local drop_offset = vector.new(math.random() - 0.5, 0, math.random() - 0.5)
minetest.add_item(vector.add(pos, drop_offset), stack)
end

minetest.register_node("bones_loot:bones", {
description = S("Bones"),
tiles = {
"bones_top.png^[transform2",
"bones_bottom.png",
"bones_side.png",
"bones_side.png",
"bones_rear.png",
"bones_front.png"
},
paramtype2 = "facedir",
groups = {oddly_diggable_by_hand=1, handy=1, container=2},
sounds = df_dependencies.sound_gravel(),
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
can_dig = function(pos, player)
local inv = minetest.get_meta(pos):get_inventory()
return inv:is_empty("main")
end,

on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", bones_formspec)
local inv = meta:get_inventory()
inv:set_size("main", 8*4)
end,

on_blast = function(pos, intensity)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for i = 1, inv:get_size("main") do
drop_item_stack(pos, inv:get_stack("main", i))
end
meta:from_table()
minetest.remove_node(pos)
if math.random(1, math.floor((intensity or 1) * 2)) ~= 1 then return end
drop_item_stack(pos, "bones_loot:bones")
end
})

df_dependencies.node_name_bones = "bones_loot:bones"
end

local bones_node = df_dependencies.node_name_bones

local local_loot = {}
local local_loot_register = function(t)
if t.name ~= nil then
Expand Down Expand Up @@ -104,19 +173,8 @@ bones_loot.get_loot = function(pos, loot_type, max_stacks, exclusive_loot_type)
return items
end

local bones_formspec =
"size[8,9]" ..
"list[current_name;main;0,0.3;8,4;]" ..
"list[current_player;main;0,4.85;8,1;]" ..
"list[current_player;main;0,6.08;8,3;8]" ..
"listring[current_name;main]" ..
"listring[current_player;main]"
if minetest.get_modpath("default") then
bones_formspec = bones_formspec .. default.get_hotbar_bg(0,4.85)
end

bones_loot.place_bones = function(pos, loot_type, max_stacks, infotext, exclusive_loot_type)
minetest.set_node(pos, {name="bones:bones", param2 = math.random(1,4)-1})
minetest.set_node(pos, {name=bones_node, param2 = math.random(1,4)-1})
local meta = minetest.get_meta(pos)
if infotext == nil then
infotext = S("Someone's old bones")
Expand All @@ -137,7 +195,7 @@ end
minetest.register_lbm({
label = "Repair underworld bones formspec",
name = "bones_loot:repair_underworld_bones_formspec",
nodenames = {"bones:bones"},
nodenames = {bones_node},
action = function(pos, node)
local meta = minetest.get_meta(pos)
if not meta:get("formspec") then
Expand Down
12 changes: 12 additions & 0 deletions bones_loot/locale/bones_loot.de.tr
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,17 @@

### init.lua ###

# textdomain: bones
Bones=Knochen
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Someone's old bones=Jemandes alte Knochen


##### not used anymore #####

@1's old bones=Alte Knochen von @1
@1 died at @2.=@1 starb bei @2.
@1 died at @2, and dropped their inventory.=@1 starb bei @2 und ließ das Inventar fallen.
@1 died at @2, and bones were placed.=@1 starb bei @2 und Knochen wurden platziert.
@1's fresh bones=Frische Knochen von @1
@1's bones=Knochen von @1
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.eo.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=Ostoj
Someone's old bones=


##### not used anymore #####

@1's old bones=La malfreŝaj ostoj de @1
@1 died at @2.=@1 mortis ĉe @2
@1 died at @2, and dropped their inventory.=@1 mortis ĉe @2, kaj delasis sian stokon.
@1 died at @2, and bones were placed.=@1 mortis ĉe @2, kaj ostoj estas demetitaj.
@1's fresh bones=La freŝaj ostoj de @1
@1's bones=La ostoj de @1
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.es.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=Huesos
Someone's old bones=


##### not used anymore #####

@1's old bones=Huesos antiguos de @1
@1 died at @2.=@1 murió en @2.
@1 died at @2, and dropped their inventory.=@1 murió en @2, y su inventario se desprendió.
@1 died at @2, and bones were placed.=@1 murió en @2, y sus huesos fueron depositados.
@1's fresh bones=Huesos recientes de @1
@1's bones=Huesos de @1
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.fr.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=Os
Someone's old bones=


##### not used anymore #####

@1's old bones=Vieux os de @1
@1 died at @2.=@1 est mort à @2.
@1 died at @2, and dropped their inventory.=@1 est mort à @2 et a laissé tomber son inventaire.
@1 died at @2, and bones were placed.=@1 est mort à @2 et ses os ont été placés.
@1's fresh bones=Os frais de @1
@1's bones=Os de @1
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.id.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=Tulang
Someone's old bones=


##### not used anymore #####

@1's old bones=Tulang lama @1
@1 died at @2.=@1 mati di @2.
@1 died at @2, and dropped their inventory.=@1 mati di @2 dan meninggalkan barangnya.
@1 died at @2, and bones were placed.=@1 mati di @2 dan tulangnya diletakkan.
@1's fresh bones=Tulang segar @1
@1's bones=Tulang @1
12 changes: 12 additions & 0 deletions bones_loot/locale/bones_loot.it.tr
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,17 @@

### init.lua ###

# textdomain: bones
Bones=Ossa
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Someone's old bones=Le vecchie ossa di qualcuno


##### not used anymore #####

@1's old bones=Ossa vecchie di @1
@1 died at @2.=@1 è morto alla posizione @2.
@1 died at @2, and dropped their inventory.=@1 è morto alla posizione @2, e ha lasciato a terra il contenuto del suo inventario.
@1 died at @2, and bones were placed.=@1 è morto alla posizione @2, e vi sono state posizionate delle ossa.
@1's fresh bones=Ossa fresche di @1
@1's bones=Ossa di @1
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.ja.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=骨
Someone's old bones=


##### not used anymore #####

@1's old bones=@1の古い骨
@1 died at @2.=@1は@2で死亡しました。
@1 died at @2, and dropped their inventory.=@1は@2で死亡して持ち物を落としました。
@1 died at @2, and bones were placed.=@1は@2で死亡して骨が残されました。
@1's fresh bones=@1の新鮮な骨
@1's bones=@1の骨
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.jbo.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=lo bongu gunma
Someone's old bones=


##### not used anymore #####

@1's old bones=.i ti tolci'o ke bongu gunma po'a la'o zo'[email protected]'i
@1 died at @2.=.i la'o zo'[email protected]'i pu morsi di'o lo me zoi [email protected].
@1 died at @2, and dropped their inventory.=.i la'o zo'[email protected]'i goi ly. pu morsi di'o lo me zoi [email protected]. .ije ly. te farlu lo me le dacti liste po ly.
@1 died at @2, and bones were placed.=.i la'o zo'[email protected]'i goi ly. pu morsi di'o lo me zoi [email protected]. .ije lo bongu gunma pu se punji
@1's fresh bones=.i ti cnino ke bongu gunma po'a la'o zo'[email protected]'i
@1's bones=.i ti bongu gunma po'a la'o zo'[email protected]'i
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.ms.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=Tulang
Someone's old bones=


##### not used anymore #####

@1's old bones=Tulang lama @1
@1 died at @2.=@1 mati di @2.
@1 died at @2, and dropped their inventory.=@1 mati di @2, dan menjatuhkan inventorinya.
@1 died at @2, and bones were placed.=@1 mati di @2, dan tulang diletakkan.
@1's fresh bones=Tulang segar @1
@1's bones=Tulang @1
18 changes: 18 additions & 0 deletions bones_loot/locale/bones_loot.pl.tr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# textdomain: bones_loot


### init.lua ###

# textdomain: bones
Bones=Kości
Someone's old bones=


##### not used anymore #####

@1's old bones=Stare kości @1
@1 died at @2.=@1 umarł w @2.
@1 died at @2, and dropped their inventory.=@1 umarł w @2, i upuścił swój ekwipunek.
@1 died at @2, and bones were placed.=@1 umarł w @2, kości zostały położone.
@1's fresh bones=Świeże kości @1
@1's bones=Kości @1
Loading

0 comments on commit 0a0c97b

Please sign in to comment.