diff options
| author | NameNotQuality <none> | 2025-07-09 20:56:36 +0200 |
|---|---|---|
| committer | NameNotQuality <none> | 2025-07-09 20:56:36 +0200 |
| commit | 62e44891ffa5bb1f5b58648c174bc76bc7b13a00 (patch) | |
| tree | 95f88a83ea3548f994a9df7aa7fad00b9ed3f5c3 | |
| parent | faa24c2038f1d4c8056cea3c382111b41bdb7e7a (diff) | |
| download | nb-concrete-master.tar.gz | |
| -rw-r--r-- | concretesolution | 2 | ||||
| -rw-r--r-- | lode_stylus.lua | 396 |
2 files changed, 32 insertions, 366 deletions
diff --git a/concretesolution b/concretesolution index 349452d..6af486d 100644 --- a/concretesolution +++ b/concretesolution @@ -72,7 +72,7 @@ info - Common colors and shades for reference: * Red * Orange (done) * Yellow (default?) - * Green (done as dark greens) + * Green (done as dark green and (still kinda dark?) green) * Blue (done, light and dark) * Purple * Pink diff --git a/lode_stylus.lua b/lode_stylus.lua index 99d4c65..823e3c8 100644 --- a/lode_stylus.lua +++ b/lode_stylus.lua @@ -1,10 +1,3 @@ ---TODO: --- Anvil craft bug report? ---[[ Note: when Liberties is disabled but there's a stone stylus with crossy Liberties - patt, it always sets pattern to gifty and can't change patt anymore. However I - probably won't fix this as this is just a side effect of the crossy->gifty alias - that atleast doesn't make the game error this way, other patts, e.g. starcrossy, - when on stylus and Liberties uninstalled makes game error when etching--]] --[[ NB More Concrete - Adds more concrete types to NodeCore @@ -132,7 +125,10 @@ function nb_more_concrete.register_patterns_finish(table) end -- register_patterns_finish --- Liberties install bool to easily check if it's installed below and later +-- Liberties is a mod which defines some patts too, one of which, Crossy, suprisingly +-- turned out to be the same as the Gifty one below. +-- So I'll alias them to skip installing one uselessly by checking for this variable +-- which will show if it's enabled if (core.get_modpath("lc_liberties")) then nb_more_concrete.liberated = true end @@ -141,18 +137,14 @@ end -- Bricky, Vermy, Hashy, Bindy, Verty, Horzy, Boxy, Iceboxy -- -- Oh my goodness --- What a wall of text! <- Written when this was an actual nice wall of text btw, now it has following comment wall etc. +-- What a wall of text! <- Written when this was an actual nice wall of text btw, now it has this if etc. nb_more_concrete.register_patterns(nb_more_concrete.annealed_patterns,{description = "Blank", blank=true}) nb_more_concrete.register_patterns(nb_more_concrete.annealed_patterns,{description = "Liny", paramtype2="facedir"}) --- I realised that this 'Gifty' pattern is exactly the same as the 'Crossy' one in the Liberties mod. --- Maybe it's not that much of a problem, at most I could alias the Liberties' crosses to these gifts or something. --- However, I'm not sure if I need to give them copyright/license credit, even though I came up with this myself. --- -Later/edit: I will if (nb_more_concrete.liberated) then -- Alias gifty to crossy, this gets checked for later to not define gifty anymore nb_more_concrete.register_patterns(nb_more_concrete.annealed_patterns,{description = "Gifty", alias="crossy"}) else -- liberties could've gotten uninstalled, so let's alias its crosses back to Santa nb_more_concrete.register_patterns(nb_more_concrete.annealed_patterns,{description = "Gifty", aliased="crossy"}) -end -- Note in the crafts later there's no check for alias variable, just once for "crossy" instead +end -- Note in the crafts later there's no check for alias variable, just once for "crossy" instead manually added nb_more_concrete.register_patterns(nb_more_concrete.annealed_patterns,{description = "Tily"}) nb_more_concrete.register_patterns(nb_more_concrete.annealed_patterns,{description = "Quady"}) nb_more_concrete.register_patterns(nb_more_concrete.annealed_patterns,{description = "Checkery"}) @@ -164,7 +156,7 @@ nb_more_concrete.register_patterns_finish(nb_more_concrete.annealed_patterns) --- Tempered (for now same as annealed) --nb_more_concrete.tempered_patterns=nb_more_concrete.annealed_patterns ---- Later probably also lux annealed and lux tempered (but _probably_ not boost lux and hot lode versions) +--- Later probably also lux annealed and lux tempered (but /probably/ not boost lux and hot lode versions) @@ -192,26 +184,10 @@ local stylish_def = { }, -- Change toolcaps depending on temper bytemper = function (item,def) - -- Custom cool/hot indicator groups to avoid default lode cook/cool ABMs, - -- custom ABMs will be implemented later - -- Hopefully no other mods use the original groups for lode things, - --[[ as I can't predict them here. They would need to add support for this? - -- EDIT: Nevermind! I can just do 1 aism instead of all! - def.lode_temper_cool = nil - def.groups.lode_temper_cool=nil - def.nb_lode_temper_cool = true - def.groups.nb_lode_temper_cool=1--]] if (item.name == "tempered") then def.tool_capabilities = nc.toolcaps({scratchy=5}) elseif (item.name == "hot") then -- Hot doesn't actually melt everything and scratch=9999 def.tool_capabilities = nc.toolcaps({scratchy=3}) - --[[ Replace also cool nb groups set before the if - def.lode_temper_hot = nil - def.nb_lode_temper_cool = nil - def.groups.nb_lode_temper_cool=nil - def.groups.lode_temper_hot=nil - def.nb_lode_temper_hot = true - def.groups.nb_lode_temper_hot=1--]] end -- Create nb_scratchy groups for crafts later --[[ This tool_capabilities table looks like this: @@ -241,17 +217,7 @@ local stylish_def = { -- Get pattern local patt = stack:get_meta():get_string("pattern") if not patt --[[or patt == ""--]] then - --- Doesn't work, as stack cannot be swapped - --[[ Let's randomly pick a pattern from the right table, - -- so it isn't kept blank when changing temper (after which it turns to "") - patt = nc.pickrand(patterns).name - print(dump(patt)) - --patt = patterns[math.random(9)].name - stack:get_meta():set_string("pattern",patt) - print(dump(stack:to_table()))--]] return desc end - --print (patt) - -- Add to desc -- First, check for crossy alias, so name can be changed to crossy instead if (nb_more_concrete.liberated and patt=="gifty") then @@ -266,39 +232,6 @@ local stylish_def = { return desc end, - --[[ Set new pattern upon creation - on_construct = function(pos) - print("ON CONSTRUCTOR") - tool = core.get_node[pos] - -- Patterns: later set dependant on temper state - patterns = nb_more_concrete.annealed_patterns - tool:get_meta():set_string("pattern", nc.pickrand(patterns).name) - -- Set the node - core.swap_node(pos,tool) - end--]] - - -- Preserve meta for patterns across temper state changes (e.g. heating up the stylus) - -- - -- Later will choose a new pattern of the same index - -- if the pattern table is switched (e.g. annealed -> tempered) - --[[preserve_metadata = function(_, _, oldmeta, drops) - local patt = oldmeta:get_string("pattern") - if (patt) then - drops[1]:get_meta():set_string("pattern", patt) - return drops - end - end]] -- It doesn't work! It gets defined into the tool but doesn't work when - -- changing temper state - -- What actually Not works is nc's on_stack_change (pos,node,stack,old) - --[[on_stack_change = function (_, __, stack, ___) - print("ON STACK CHANGE!") - -- Patterns: later set dependant on temper state - patterns = nb_more_concrete.annealed_patterns - stack:get_meta():set_string("pattern", nc.pickrand(patterns).name) - -- Set the node - return stack - end--]] - } -- NC versions older than a load of gibberish: -- 5002ea97bd9ab058bb11d7f639612f5a894020c9 @@ -418,139 +351,8 @@ end ----------> Common lode crafts (create/recycle) and special patt aism ---- Specific cool/cook ABMs --- The ABMS of NodeCore don't offer a callback, so it isn't possible to --- make one so the stylus changes its pattern. This is why I need to make --- my own. --- --- Normally the after function in those ABMs had this local, --- here it is modified ---[[local function replacestack(pos, temper) - -- Get stack - local stack = nc.stack_get(pos) - --if stack:is_empty() then stack = nil end - -- Node alternative to stack/^ - --local node = core.get_node(pos) - -- Name from stack or node - local name = --[[stack and--]]--[[ stack:get_name()-- or node.name - -- Def - local def = core.registered_items[name] or {} - -- Alt lode temper - local alt = def["lode_alt_" .. temper] - if not alt then return error("no " .. alt .. " alt for " .. name) end - - --if stack then - -- repl - alt stack (repl-acement) - local repl = ItemStack(alt) - -- qty - stack count (1?) (not sure what qty means) - local qty = stack:get_count() - if qty == 0 then qty = 1 end -- min 1 - - -- Same amount of items as earlier - repl:set_count(qty * repl:get_count()) - - -- The thing I wanted to do: set a new pattern - local patterns = nb_more_concrete.annealed_patterns -- Depend later on temper - repl:get_meta():set_string("pattern", nc.pickrand(patterns).name) - - nc.stack_set(pos, repl) - - --[[else -- Omit, stylys is only as stack - core.set_node(pos, {name = alt}) - nc.fallcheck(pos) - end--]] - -- Witness murder of metallurgizing victim? (what does that even mean? gotta ask ironman...) - --[[nc.witness(pos, "metallurgize " .. alt) -end--]] - --- Here are the crafts and aism from NC, modified --- (I don't think it is worth defining a local function to define these --- all, as they have different values in every variable) ---[[nc.register_craft({ - label = "nb lode stylus heating", - action = "cook", - touchgroups = {flame = 3}, - neargroups = {coolant = 0}, - cookfx = true, - duration = 30, -- - nodes = {{match = {nb_lode_temper_cool = true, count = false}}}, - after = function(pos) return replacestack(pos, "hot") end -}) - -nc.register_craft({ - label = "nb lode stylus annealing", - action = "cook", - touchgroups = {flame = 0}, - neargroups = {coolant = 0}, - cookfx = {smoke = true, hiss = true}, - duration = 120, -- - priority = -1, -- - nodes = {{match = {nb_lode_temper_hot = true, count = false}}}, - after = function(pos) return replacestack(pos, "annealed") end -}) - -nc.register_craft({ - label = "nb lode stylus quenching", - action = "cook", - touchgroups = {flame = 0}, - neargroups = {coolant = 1}, - cookfx = true, - nodes = {{match = {nb_lode_temper_hot = true, count = false}}}, - after = function(pos) return replacestack(pos, "tempered") end -}) - --- Instead of replacestack, the AISM here uses this local -local function coolto(pos, stack, tempername) - -- Get alt from def - local def = core.registered_items[stack:get_name()] - if not def then return end - local alt = def["lode_alt_" .. tempername] - if not alt then return end - - -- Others aside from stack - nc.witness(pos, "metallurgize " .. alt) - nc.playcookfx(pos, true, "hiss", 80, 0.2) - - -- Make final stack - local repl = ItemStack(alt .. " " .. stack:get_count()) - -- Set pattern - local patterns = nb_more_concrete.annealed_patterns -- Depend later on temper - repl:get_meta():set_string("pattern", nc.pickrand(patterns).name) - --print(repl:get_meta():get_string("pattern")) - -- - return repl -end - -nc.register_aism({ - label = "nb tong-carried lode stylus cooling", - itemnames = {"nc_lode:stylus_hot"}, -- for some reason "group:nb_lode_temper_hot" didn't work - priority=2, - action = function(stack, data) - -- Don't conflict with cooking ABMs already operating on stack nodes <-NC comment - if data.node then return end - - -- Fast tempering in water - if nc.quenched(data.pos) then - return coolto(data.pos, stack, "tempered") - end - - -- Annealing - local meta = stack:get_meta() -- Help variable, also to not save meta to stack? - local exp = meta:get_float("annealtime") or 0 - - if exp > 0 and exp <= nc.gametime then -- Final anneal - return coolto(data.pos, stack, "annealed") - elseif exp <= 0 then -- - meta:set_float("annealtime", nc.gametime + 60) - end - - nc.playcookfx(data.pos, {smoke = true}, "", 2, 1) - return stack - end -})--]] - --- Or, instead of re-defining the heating/cooling and tong-carrying mechanics, --- how about just 1 aism to replace a stylus with no pattern with one set? +-- Instead of re-defining the heating/cooling and tong-carrying mechanics, +-- let's make just 1 aism to replace a stylus with no pattern with one set. -- This seems to be a very nice and simple solution, but it has a side effect: -- the stylus is visibly changing to another pattern. I don't think it's that -- bad though. @@ -570,7 +372,6 @@ nc.register_aism({ return stack end }) --- -- Craft the stylus on anvil @@ -726,7 +527,6 @@ local function regetched(basenode, etch, patt) local pattname = mn .. ":" .. etch.name .. "_" .. patt.name -- mn:othermn_concrete_etchy -- Pliant name, same as pattname but with _ply local plyname = pattname .. "_ply" -- mn:othermn_concrete_etchy_ply - -- If it isn't registered, let's make it -- Pliant block if not core.registered_nodes[plyname] then local def = {} -- Final def, to which we add @@ -738,7 +538,7 @@ local function regetched(basenode, etch, patt) def.tiles = applytile(def.tiles, patttile(etch, patt)) def.tiles = applytile(def.tiles, etch.pliant_tile) - def.name = nil -- Already done at the end of this ifknot in core.register_node + def.name = nil -- Name already done at the end of this ifnot in core.register_node def.description = patt.description .. -- Etchy Pliant Concrete " Pliant " .. basenode.description @@ -749,115 +549,18 @@ local function regetched(basenode, etch, patt) defaultgroup(def, mn .. "_pattern_" .. patt.name) --end defaultgroup(def, mn .. "_pliant") - if def.paramtype2 == "4dir" then + --[[if def.paramtype2 == "4dir" then -- unused def.on_rightclick = function(pos, node) -- Rotate upon rightclick node.param2 = (node.param2 + 1) % 4 -- Capped param2 at 3 nc.set_loud(pos, node) end - end - --- Actually, I scrap this, clockwise rotation of sides would be better? - -- Extra paramtype2 compared to original NC with also 4 rotations; with this - -- 4dir replacement, a copy of a pattern just to make it rotate vertically - -- too (like horzy and verty patterns) wouldn't be needed, useful e.g. for - -- my line pattern. It could fit in NC, even though as I said, there is - -- horzy and verty which could seem intentional anyway, as they're useful as - -- seperate textures for texturepacks such as Wintercore, which makes them - -- bit different, unlike my line texture (|/-) - -- ^\it is cool my texture is implemented in ASCII, eh? No. - --if def.paramtype2 == "4dirfacedir" then - --[[ - -- I wanted to make the texture rotate in seemingly the same way, - -- but each time it is rotated the textures face a slightly different dir. - -- - -- (I mean, e.g.: (^/v) and (v/v) (shown in format explained below)----------\ - -- look the same, as they make (|/|) with e.g. line texture) \ - -- \ - -- This way, it is maybe possible to make invisible details with the pliant \ - -- texture, but doesn't impair the game in any way. \ - -- \ - -- For this, I made the following while testing rotating facedir liny concrete... | - v - (format: (top/side in front of you), where it can show dir ^v<> or line | -) - - (sorted as (|/|) -> (-/|) -> (|/-) -> (-/-)) - - Confusing Sorted texture directions - in every param2 facedir... - - In north In east - Flip the dir thingy after the / for south? Flip the thingy before the / for west? - - 4(^/^)(like0) 13(^/^)(like1) <- unused param2s - 8(^/v)(like6,22) 19(v/v) - 20(v/v)(like10) 21(^/v)(like15) - 22(^/v)(like6,8) 23(v/v)(like19) - - -0,1,5,12 -1,0,12,4 - 0(^/^) 1(^/^) - 1(>/^) 0(</^) - 5(^/<) 12(^/>) - 12(>/>) >4<,5,6,7(</<) - -2,3,7,16 -3,2,14,8 - 2(v/^) 3(v/^) - 3(</^) 2(>/^) - 7(^/>) 14(^/<) - 16(</<) >8<,9,10,11(>,>) - -6,21,11, -15,20,16,5 - 6(^/v) 15(^/v) - 21(>/v) 20(>/v) - 11(v/<) 16(v/<) - >13<,14,15(>/>) 4,>5<,6,7(</<) - -10,23, -17,22,18,9 - 10(v/v) 17(v/^) - 23(</v) 22(</v) - 9(v/>) 18(v/>) - >17<,18,19(</<) 8,>9<,10,11(>,>) - --]]--[[ - if (core.settings:get_bool("nb_more_concrete_line_rotation",true)) then - def.on_rightclick = function(pos, node, clicker) -- Rotate upon rightclick - local cryptic_tableyNS= -- North/South. - -- It's horrible! Or is it? I just typed these values based on the previous big comment. - -- Next params for... - -- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 - { 1, 5, 3, 7, 1,12,21,16,21,17,23,13, 2,10,10,10, 6, 0, 0, 0,10,11,21, 9} - local cryptic_tableyEW= -- East/West! - -- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 - {12, 0,14, 2, 3,17, 3,17,15, 1,15, 1, 4, 0, 8,20, 5,22, 9, 0,16,20,18, 0} - -- Figure out if yaw of clicker is north/south to set node.param2 accordingly - local yow=clicker:get_look_horizontal() - -- I figured out these values by dumping clicker:get_look_horizontal() when right-clicking node in game - if (yow>5.502 or yow<0.782 or (yow>2.358 and yow<3.921)) then - node.param2 = cryptic_tableyNS[node.param2+1] -- +1 because lua doesn't start indexes with 0 - else - node.param2 = cryptic_tableyEW[node.param2+1] -- - end - nc.set_loud(pos, node) - -- It works! - end - else -- Also option for optic-like rotation - def.on_rightclick=nc.rotation_on_rightclick - def.groups.nc_api_rotate_under=1 - end -- core.settings:get_bool(... - -- Correct paramtype2 - def.paramtype2="facedir" - end --]]-- 4dirfacedir + end--]] if (def.paramtype2=="facedir") then - -- I wanted to implement clockwise rotation on a specific side of a block, - -- but I have little idea how to get a specific side. + -- I wanted to implement clockwise rotation on any side of a block, + -- but I have little idea how to get the selected side. -- For now, let's use NC's rotation_on_rightclick def.on_rightclick=nc.rotation_on_rightclick - def.groups.nc_api_rotate_under=1 - --[[def.on_rightclick = function (pos,node,clicker, a, b) - local eye_pos = clicker:get_pos() - eye_pos.y=clicker:get_properties().eye_height - local the_raycast = core.raycast(eye_pos,pos,false,true) - --print(dump(the_raycast)) - print(dump(the_raycast:next())) - --print(dump(b)) - end--]] - --[[ <...I looked on the dark web and found the param2s for clockwise rotations...> - nevermind not gonna show them numbers here yet because I didn't show the work's license - --]] + def.groups.nc_api_rotate_under=1 -- required to work end -- facedir -- Add extra nb group, used mainly for pliant cure ABM def.groups.nb_concrete_etchable = 1 @@ -869,8 +572,7 @@ local function regetched(basenode, etch, patt) core.register_node(":" .. plyname, def) end --if not patt.blank then - -- Here we use the pattname - -- This is the solid/set block + -- Set block if not core.registered_nodes[pattname] then local def = {} -- Final def like earlier nc.underride(def, etch.solid) @@ -903,19 +605,12 @@ end -- -- Etchmakers! ---[[local mudgroups = { - cracky = 0, - crumbly = 1, - snappy = 0, - choppy = 0, - stone = 0, - smoothstone = 0, - rock = 0 -}--]] +-- (here I call the functions to make the concretes) + +--local mudgroups = {... --local function buildpatterns() --- For each PATTern --- Define patt.name and patt.pattern_tile +-- Make sure patt.name and patt.pattern_tile are defined for _, patt in pairs(nb_more_concrete.annealed_patterns) do --nc.translate_inform(patt.description) patt.name = patt.name or string:gsub(string:lower(patt.description), @@ -926,21 +621,7 @@ end -- For every concrete, modify etchable correctly -- Already done by NC --[[for _, etch in pairs(nc.registered_concrete_etchables) do - -- Not sure if this check is required, as nc probably already checked for basename - -- But I keep it - if not etch.basename then return error("etchable (concrete) basename required") end - -- replace nc_ with nothing like NC does, it ignores nb and others but should be ok anyway - etch.name = etch.name or string:gsub(string:lower(string:gsub( - etch.basename, "^nc_", "")), "%W", "_") - -- pliant - etch.pliant_tile = etch.pliant_tile or "^(" ..-- ^(nc_concrete_pliant.png^[opacity:64) - "nc_concrete_pliant.png^[opacity:" .. (etch.pliant_opacity or 64) .. ")" - etch.pliant = etch.pliant or {} - etch.pliant.groups = etch.pliant.groups or mudgroups - etch.pliant.groups.concrete_etchable = 1 - - etch.solid = etch.solid or {} - etch.drop_in_place = etch.drop_in_place or etch.basenode + ... end--]] for _, etch in pairs(nc.registered_concrete_etchables) do local basenode = core.registered_nodes[etch.basename] @@ -959,14 +640,10 @@ end local function getdefs(node) local def = core.registered_items[node.name] or {} -- If the pattern_def is blank, it will return nc's pattern list, which breaks the recipe - -- Returned can only be the nb list in general; should I add a universal check for it? - -- This is probably sufficient though (and universal - works same in stone (stylus) craft) + -- (Returned can only be the nb list in general; should I add a universal check for it? + -- This is probably sufficient though (and universal - works same in stone (stylus) craft)) if (def.pattern_def.blank) then return nb_more_concrete.annealed_patterns[1], def.etch_def - --[[elseif (nb_more_concrete.liberated and -- Now there's check for this in lode craft, - so there doesn't need to be another one in stone craft - def.pattern_def.name == "crossy") then -- Same with alias gifty to crossy - return nb_more_concrete.annealed_patterns[3], def.etch_def--]] end return def.pattern_def, def.etch_def end @@ -974,7 +651,6 @@ end -- Make pliant node make noise and rotate if paramtype2 is set local function setply(pos, nodename, player) local node = {name = nodename} - --print(node.name) if core.registered_nodes[node.name].paramtype2 == "4dir" and player then node.param2 = core.dir_to_fourdir( @@ -1007,7 +683,6 @@ nc.register_craft({ } }, after = function(pos, data) - --print("LODELY FUNCTIONB!") -- Get pattdef, etchdef local pattdef, etchdef = getdefs(core.get_node(pos)) if not (pattdef and etchdef) then return end @@ -1027,12 +702,9 @@ nc.register_craft({ if (wieldpatt == "blank") then setpref = "nc_concrete:" .. etchdef.name .. "_" end - --print (wieldpatt) - --print (pattdef.name) -- If wielded pattern isn't equal to block's pattern if wieldpatt and wieldpatt ~= "" and wieldpatt ~= pattdef.name then -- Set the pliant block and return - --print(setpref..wieldpatt.."_ply") -- primitive debugging methods setply(pos, setpref .. wieldpatt .. "_ply", data.crafter) -- mn:chromete_etchy_ply return end @@ -1040,7 +712,6 @@ nc.register_craft({ -- Now we know that next pattern will be set for stylus and block instead -- Get next pattern local nxpatt = pattdef.next.name - --print(nxpatt) -- Check for blank like earlier if (nxpatt == "blank") then setpref = "nc_concrete:" .. etchdef.name .. "_" @@ -1048,7 +719,6 @@ nc.register_craft({ setpref = mn .. ":" .. etchdef.name .. "_" end -- So it can be set on pliant - --print("next: " .. setpref..nxpatt.."_ply") setply(pos, setpref .. nxpatt .. "_ply", data.crafter) -- And set as next pattern for stylus wield:get_meta():set_string("pattern", nxpatt) @@ -1088,8 +758,6 @@ nc.register_craft({ after = function(pos, data) local pattdef, etchdef = getdefs(core.get_node(pos)) if not (pattdef and etchdef) then return end - --[[ Here we cannot have nb patterns (useless, blank's already not nb_concrete_etchable) - if (pattdef.name == "blank") then pattdef = nc.concrete_patterns[1] end]] local setpref = "nc_concrete:" .. etchdef.name .. "_" @@ -1114,12 +782,8 @@ nc.register_craft({ end }) --- Pliant concrete cure ABM --- -- The NC pliant cure ABM doesn't work for our pliants, -- since it only works with "nc_concrete:" concretes. --- Should I report that so NC just removes the "_ply" off of the block name, --- working with this mod and others? Maybe not? --- -- Here's an ABM that works (from NC) nc.register_soaking_abm({ label = "pliable nb concrete cure", @@ -1132,15 +796,16 @@ nc.register_soaking_abm({ 1, {"group:concrete_flow", "group:water"}) then return false end -- Fire speeding up cure - local found = nc.find_nodes_around(pos, "group:igniter", 1) - return #found + 1 - end, + local found = nc.find_nodes_around(pos, "group:igniter", 1) + return #found + 1 + end, - soakcheck = function(data, pos, node) - if data.total < 100 then + soakcheck = function(data, pos, node) + if data.total < 100 then -- Create smoke during curing nc.smokefx(pos, 1, data.rate) return end + -- Get the final cured node local pattdef, etchdef = getdefs(core.get_node(pos)) -- Fixed | if not (pattdef and etchdef) then return end -- bit V local curename = mn .. ":" .. etchdef.name .. "_" .. pattdef.name -- nb_more_concrete:mn_concrete_etchy @@ -1148,8 +813,9 @@ nc.register_soaking_abm({ nc.smokeburst(pos) nc.dynamic_shade_add(pos, 1) + -- nc.set_loud(pos, {name = curename, param2 = node.param2}) nc.witness(pos, "cure pliant concrete") return false end -}) -- END! +}) -- END |
