Branch Commit 1, fixed naming, mod.conf

This branch tracks the changes to Rhynia that will be made under the strategy of code simplification. Much of the main Rhynia files are a haphazard mess of repetitive, poorly communicating, and at times spaghettified code that was made during a time of significant constraint on developer time. Reading over it with an aim to improve, several key areas spanning both current and planned architecture could benefit from significant simplification. This would likely increase both the efficiency, readability, cohesiveness and cleanliness of the existing code; while also making future development and deadline-satisfaction more easily achievable.
master
Avicennia_g 2020-10-14 00:53:13 -07:00 committed by GitHub
parent 84b06d79fb
commit c824950cd2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 119 additions and 117 deletions

186
comp.lua
View File

@ -1,4 +1,4 @@
-- luacheck: globals minetest rhyn shout
-- luacheck: globals minetest rhynia shout
local thismod = minetest.get_current_modname()
local tm = thismod
@ -7,7 +7,7 @@ local tm = thismod
-- -- -- -- -- -- -- -- General
rhyn.f.selectify = function(...)
rhynia.f.selectify = function(...)
local val = {}
for n = 1, select("#",...) do
val[n] = select(n,...)
@ -15,16 +15,16 @@ rhyn.f.selectify = function(...)
return val
end
rhyn.gn = function(pos)return minetest.get_node(pos)end
rhyn.sn = function(pos,nam,p2)return minetest.set_node(pos, {name = nam, param2 = p2})end
rhyn.rn = function(pos) return minetest.remove_node(pos) or true end
rhynia.gn = function(pos)return minetest.get_node(pos)end
rhynia.sn = function(pos,nam,p2)return minetest.set_node(pos, {name = nam, param2 = p2})end
rhynia.rn = function(pos) return minetest.remove_node(pos) or true end
local acts = {"sprout","tick","grow","stagnate","die","health_change","fruit","propagate"}
for n = 1, #acts do -- Register act wrappers.
local a = "on_"..acts[n]
rhyn.f[a] = function(pos, genus)
return rhyn.genera[genus].acts[a] and rhyn.genera[genus].acts[a](pos,genus)
rhynia.f[a] = function(pos, genus)
return rhynia.genera[genus].acts[a] and rhynia.genera[genus].acts[a](pos,genus)
end
end
-- -- -- -- -- -- -- ---- -- -- -- -- -- -- --
@ -32,69 +32,69 @@ end
-- -- -- -- -- -- -- -- Wind
rhyn.f.ghibli = function()
local mag = rhyn.wind[2]
rhynia.f.ghibli = function()
local mag = rhynia.wind[2]
return {x = math.random(-mag,mag), y = 0+math.random(), z = math.random(-mag,mag)}
end
rhyn.f.poppyh = function()
rhynia.f.poppyh = function()
shout("POPPY")
rhyn.wind[1],rhyn.wind[2] = rhyn.f.ghibli(),math.random(1,3)
rhynia.wind[1],rhynia.wind[2] = rhynia.f.ghibli(),math.random(1,3)
end
-- -- -- -- -- -- -- ---- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- Substrate
rhyn.f.is_substrate = function(pos)
return minetest.get_item_group(rhyn.gn(pos).name, "rhyn_subs_soil")
rhynia.f.is_substrate = function(pos)
return minetest.get_item_group(rhynia.gn(pos).name, "rhynia_subs_soil")
end
rhyn.f.is_substrate_alt = function(pos, genus)
return minetest.get_item_group(rhyn.gn(pos).name, "rhyn_subs_soil_"..genus)
rhynia.f.is_substrate_alt = function(pos, genus)
return minetest.get_item_group(rhynia.gn(pos).name, "rhynia_subs_soil_"..genus)
end
rhyn.f.is_rooted = function(pos,genus)
rhynia.f.is_rooted = function(pos,genus)
local pos = {x = pos.x, y = pos.y - 1, z = pos.z}
return rhyn.f.is_substrate(pos) > 0 or genus and rhyn.f.is_substrate_alt(pos,genus) > 0
return rhynia.f.is_substrate(pos) > 0 or genus and rhynia.f.is_substrate_alt(pos,genus) > 0
end
rhyn.f.assign_soils_alt = function(genus)
local subs = rhyn.genera[genus].substrates
rhynia.f.assign_soils_alt = function(genus)
local subs = rhynia.genera[genus].substrates
if(subs)then
for k,v in pairs(subs) do
local groups = minetest.registered_nodes[k].groups
groups["rhyn_subs_soil_"..genus] = 1
groups["rhynia_subs_soil_"..genus] = 1
minetest.override_item(k, {groups = groups})
rhyn.subs.values[k] = v or 1
--minetest.after(3, function() shout(rhyn.subs.values)end)
rhynia.subs.values[k] = v or 1
--minetest.after(3, function() shout(rhynia.subs.values)end)
end
end
end
rhyn.geo_area = function(p,r,t) -- uses vector p and radius r to determine assimilation area for pos p, based on type
rhynia.geo_area = function(p,r,t) -- uses vector p and radius r to determine assimilation area for pos p, based on type
local t,a = t or false, {}
a[1] = t and {x = p.x + r, y = p.y + r, z = p.z + r} or {x = p.x + r, y = p.y, z = p.z + r}
a[2] = t and {x = p.x - r, y = p.y - r, z = p.z - r} or {x = p.x - r, y = p.y, z = p.z - r}
return a
end
rhyn.f.ass_check = function(pos, r, t, genus) -- Grabs soil data underneath pos, to a max radius of r, depending on the shape specifier t(bool)
rhynia.f.ass_check = function(pos, r, t, genus) -- Grabs soil data underneath pos, to a max radius of r, depending on the shape specifier t(bool)
local upos = {x = pos.x, y = pos.y - (t and (r+1) or 1), z = pos.z}
local cals = rhyn.geo_area(upos,r,t)
local cals = rhynia.geo_area(upos,r,t)
local function soilchk()
local alt_soil_group = genus and "group:rhyn_subs_soil_"..genus
local area = minetest.find_nodes_in_area(cals[1],cals[2], alt_soil_group or "group:rhyn_subs_soil")
local alt_soil_group = genus and "group:rhynia_subs_soil_"..genus
local area = minetest.find_nodes_in_area(cals[1],cals[2], alt_soil_group or "group:rhynia_subs_soil")
local v = 0
for n = 1, #area do
local name = minetest.get_node(area[n]).name
v = v + rhyn.subs.values[name]
v = v + rhynia.subs.values[name]
end
return v
end
local function waterchk()
local area = minetest.find_nodes_in_area(cals[1],cals[2], "group:rhyn_subs_water")
local area = minetest.find_nodes_in_area(cals[1],cals[2], "group:rhynia_subs_water")
area = area and area[1] and #area+1 or 1
area = area <= 5 and area or 5 -- Original value was 4, but bumped up to 5 to accomodate upward shift in base [area] value.
area = 1+(math.log10(area))
@ -105,21 +105,21 @@ rhyn.f.ass_check = function(pos, r, t, genus) -- Grabs soil data underneath pos,
return soilchk()*waterchk()
end
rhyn.f.condition_tick = function(pos, genus, tf)
local genus = genus or rhyn.f.nominate(minetest.get_node(pos).name).genus
local m,root_dim = minetest.get_meta(pos), rhyn.genera[genus].root_dim
local mci = m:get_int("rhyn_ci")
local catch = m:get_int("rhyn_gl")
local matl = rhyn.genera[genus].structure and #rhyn.genera[genus].structure
rhynia.f.condition_tick = function(pos, genus, tf)
local genus = genus or rhynia.f.nominate(minetest.get_node(pos).name).genus
local m,root_dim = minetest.get_meta(pos), rhynia.genera[genus].root_dim
local mci = m:get_int("rhynia_ci")
local catch = m:get_int("rhynia_gl")
local matl = rhynia.genera[genus].structure and #rhynia.genera[genus].structure
catch = catch and catch <= math.ceil(matl/root_dim) and "base" or "ext"
local v = rhyn.f.ass_check(pos, rhyn.genera[genus].catchments[catch],_, tf and genus)
local v = rhynia.f.ass_check(pos, rhynia.genera[genus].catchments[catch],_, tf and genus)
v = v + mci
m:set_int("rhyn_ci", v)
m:set_int("rhynia_ci", v)
return v
end
rhyn.f.calc_condition = function(r) -- returns condition value given flat radius r
--local switch = genus and rhyn.genera[genus].traits["pt2condition"]
rhynia.f.calc_condition = function(r) -- returns condition value given flat radius r
--local switch = genus and rhynia.genera[genus].traits["pt2condition"]
local maxim = {}
maxim.lowest = ((r*2)+1)^2
maxim.highest = ((4*((r*2)+1)^2))*(1+math.log10(3))
@ -131,7 +131,7 @@ rhyn.f.calc_condition = function(r) -- returns condition value given flat radius
return maxim
end
rhyn.f.average_light_spot = function(pos)
rhynia.f.average_light_spot = function(pos)
local area = {a = {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, b = {x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}}
area = minetest.find_nodes_in_area(area.a,area.b,"air")
local function lux_iterate()
@ -145,7 +145,7 @@ rhyn.f.average_light_spot = function(pos)
return area and area[1] and lux_iterate()
end
rhyn.f.spot_check = function(pos, name, tf) -- Searches for node [name] 1 node around pos, returns integer of # found. If BOOL "tf" is true, returns table of all values of group "name". (some kind of "verbose" search)
rhynia.f.spot_check = function(pos, name, tf) -- Searches for node [name] 1 node around pos, returns integer of # found. If BOOL "tf" is true, returns table of all values of group "name". (some kind of "verbose" search)
local area = {a = {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, b = {x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}}
area = minetest.find_nodes_in_area(area.a,area.b,name)
local function tags_on_erryting()
@ -164,7 +164,7 @@ end
-- -- -- -- -- -- -- -- Plant
rhyn.f.nominate = function(name) -- Returns a table containing genus, stage and stage-step if given the name of a node.
rhynia.f.nominate = function(name) -- Returns a table containing genus, stage and stage-step if given the name of a node.
local data = {}
if(string.find(name,":"))then else error("Name "..name.." missing search pattern ':'!") end
local name = string.sub(name,string.find(name,":"),string.len(name))
@ -174,17 +174,17 @@ rhyn.f.nominate = function(name) -- Returns a table containing genus, stage and
return data
end
rhyn.f.select = function(pos) -- Performs the above nomination query on a position.
return rhyn.f.nominate(rhyn.gn(pos).name)
rhynia.f.select = function(pos) -- Performs the above nomination query on a position.
return rhynia.f.nominate(rhynia.gn(pos).name)
end
rhyn.f.rnode = function(def) -- Registers a node for use in future plant defs. Still WIP. Currently only "plantlike" and "plantlike-rooted" definitions.
rhynia.f.rnode = function(def) -- Registers a node for use in future plant defs. Still WIP. Currently only "plantlike" and "plantlike-rooted" definitions.
local nme = def.name
local gps = def.groups or {planty = 1, rhyn = 1, [def.genus] = 1}
local gps = def.groups or {planty = 1, rhynia = 1, [def.genus] = 1}
local function inject_traits()
local trait = rhyn.genera[def.genus].traits
local trait = rhynia.genera[def.genus].traits
for k,v in pairs(trait) do
gps["rhyn_trait_"..k] = 1
gps["rhynia_trait_"..k] = 1
end
end
inject_traits()
@ -207,11 +207,11 @@ rhyn.f.rnode = function(def) -- Registers a node for use in future plant defs. S
on_construct = def.on_construct,
on_punch = def.on_punch
})
table.insert(rhyn.nodes, nme)
table.insert(rhynia.nodes, nme)
end
rhyn.f.register_emulsion = function(def) -- Registers a plant genus template with given parameters
rhynia.f.register_emulsion = function(def) -- Registers a plant genus template with given parameters
local ndef = {
visual = def.visual or def.drawtype, -- String: "Plantlike" or "Plantlike rooted".
genus = def.genus, -- String: Name for looking up definition variables.
@ -233,42 +233,42 @@ rhyn.f.register_emulsion = function(def) -- Registers a plant genus template wit
on_stagnate = def.acts.on_stagnate, on_wither = def.acts.on_wither, on_punch = def.acts.on_punch, on_propagate = def.acts.on_propagate
} -- Functions defining plant behaviour.
}
rhyn.genera[def.genus] = ndef
rhynia.genera[def.genus] = ndef
end
-- Plant-Behaviour
rhyn.f.grow_chk = function(pos) -- returns true if growth interval in node meta is >= genus standard for current growth level
local data = rhyn.f.nominate(rhyn.gn(pos).name)
data.gl = minetest.get_meta(pos):get_int("rhyn_gl") -- gl = growth_level
data.gi = minetest.get_meta(pos):get_int("rhyn_gi")
rhynia.f.grow_chk = function(pos) -- returns true if growth interval in node meta is >= genus standard for current growth level
local data = rhynia.f.nominate(rhynia.gn(pos).name)
data.gl = minetest.get_meta(pos):get_int("rhynia_gl") -- gl = growth_level
data.gi = minetest.get_meta(pos):get_int("rhynia_gi")
data.nd = minetest.get_node(pos)
data.nx = type(rhyn.genera[data.genus].growth_interval) == "number" and rhyn.genera[data.genus].growth_interval --or rhyn.genera[data.genus].growth_interval[data.gl]
data.nx = type(rhynia.genera[data.genus].growth_interval) == "number" and rhynia.genera[data.genus].growth_interval --or rhynia.genera[data.genus].growth_interval[data.gl]
return data.gi and data.gl and data.gi >= data.nx
end
rhyn.f.growth_tick = function(pos, genus)
local genus = genus or rhyn.f.nominate(minetest.get_node(pos).name).genus
local mixed_growth = rhyn.genera[genus].traits["growth_opt"]
local cond = rhyn.f.condition_tick(pos,genus)
rhynia.f.growth_tick = function(pos, genus)
local genus = genus or rhynia.f.nominate(minetest.get_node(pos).name).genus
local mixed_growth = rhynia.genera[genus].traits["growth_opt"]
local cond = rhynia.f.condition_tick(pos,genus)
local gv = 1 + (mixed_growth and math.ceil(math.log10(cond)) or 0) -- Not a good way to attempt mixing growth and condition
local function uptick(pos)
local m = minetest.get_meta(pos)
local mgi = m:get_int("rhyn_gi")
m:set_int("rhyn_gi", mgi+gv)
local mgi = m:get_int("rhynia_gi")
m:set_int("rhynia_gi", mgi+gv)
end
return rhyn.f.grow_chk(pos) and rhyn.f.grow(pos) or uptick(pos)
return rhynia.f.grow_chk(pos) and rhynia.f.grow(pos) or uptick(pos)
end
rhyn.f.grow = function(pos) -- Rebuilds plant using next genus structure table
rhynia.f.grow = function(pos) -- Rebuilds plant using next genus structure table
local data = rhyn.f.nominate(rhyn.gn(pos).name)
data.gl = minetest.get_meta(pos):get_int("rhyn_gl") -- gl = growth_level
local data = rhynia.f.nominate(rhynia.gn(pos).name)
data.gl = minetest.get_meta(pos):get_int("rhynia_gl") -- gl = growth_level
data.nd = minetest.get_node(pos)
local function despues(val) -- val must always be an integer to reference a value in genus[structure] either directly or proximally via growth_order
local s,v,g = rhyn.genera[data.genus] ~= nil, val, data.genus
local tab = rhyn.genera[g].growth_order or rhyn.genera[g].structure
local s,v,g = rhynia.genera[data.genus] ~= nil, val, data.genus
local tab = rhynia.genera[g].growth_order or rhynia.genera[g].structure
tab = #tab
v = s and v and v + 1 <= tab and v + 1 or 1
return v
@ -276,27 +276,27 @@ rhyn.f.grow = function(pos) -- Rebuilds plant using next genus structure table
local function plantstruct(pos,v) -- Constructs plant layer-by-layer
local function airchk(pos)
return rhyn.gn(pos).name == "air" or minetest.get_item_group(data.nd.name,"rhyn_plant") > 0
return rhynia.gn(pos).name == "air" or minetest.get_item_group(data.nd.name,"rhynia_plant") > 0
end
local function build(pos)
local p2 = math.random(4)--data.nd.param2 -- ToDo: Add support for multiple param2s
local p, s = pos and {x = pos.x, y = pos.y, z = pos.z},rhyn.genera[data.genus].structure[v]
local p, s = pos and {x = pos.x, y = pos.y, z = pos.z},rhynia.genera[data.genus].structure[v]
for n = 1, #s do
if(p and s[n] and airchk(p)) then local m = minetest.get_meta(p); local mm = m:get_int("rhyn_gi") ; rhyn.sn(p,s[n],p2) ; m:set_int("rhyn_gi",(mm-rhyn.genera[data.genus].growth_interval)) else end
if(p and s[n] and airchk(p)) then local m = minetest.get_meta(p); local mm = m:get_int("rhynia_gi") ; rhynia.sn(p,s[n],p2) ; m:set_int("rhynia_gi",(mm-rhynia.genera[data.genus].growth_interval)) else end
p.y = p.y + 1
end
end
build(pos)
rhyn.f.on_grow(pos,data.genus) -- HOOK:on_grow
rhynia.f.on_grow(pos,data.genus) -- HOOK:on_grow
end
plantstruct(pos, despues(data.gl))
end
rhyn.f.propagate = function(pos, dir, mag)
local pos, genus = {x = pos.x, y = pos.y, z = pos.z}, rhyn.f.nominate(rhyn.gn(pos).name).genus
local sdr,dir,mag = rhyn.genera[genus].spore_dis_rad, dir or rhyn.wind[1], mag or rhyn.wind[2]
rhynia.f.propagate = function(pos, dir, mag)
local pos, genus = {x = pos.x, y = pos.y, z = pos.z}, rhynia.f.nominate(rhynia.gn(pos).name).genus
local sdr,dir,mag = rhynia.genera[genus].spore_dis_rad, dir or rhynia.wind[1], mag or rhynia.wind[2]
local function proj(pos)
local dir,mag,pos = {x = dir.x, y = 0, z = dir.z}, mag*math.random(1,8),{x = pos.x, y = pos.y, z = pos.z}
pos = vector.add(pos,dir)
@ -319,42 +319,42 @@ rhyn.f.propagate = function(pos, dir, mag)
local pos = {x = pos.x, y = pos.y, z = pos.z}
local pos2 = vector.add(pos,{x = math.random(-sdr,sdr), y = -1, z = math.random(-sdr,sdr)})
local function ifair(pos)
return rhyn.gn(pos).name == "air"
return rhynia.gn(pos).name == "air"
end
return pos and ifair({x = pos2.x, y = pos2.y + 1, z = pos2.z}) and rhyn.f.is_substrate(pos2) > 0 and minetest.set_node({x = pos2.x, y = pos2.y + 1, z = pos2.z}, {name = rhyn.genera[genus].structure[1][1] or rhyn.genera[genus].structure[1]})
return pos and ifair({x = pos2.x, y = pos2.y + 1, z = pos2.z}) and rhynia.f.is_substrate(pos2) > 0 and minetest.set_node({x = pos2.x, y = pos2.y + 1, z = pos2.z}, {name = rhynia.genera[genus].structure[1][1] or rhynia.genera[genus].structure[1]})
end
sow(toground(proj(pos)))
rhyn.f.on_propagate(pos,genus)
rhynia.f.on_propagate(pos,genus)
end
rhyn.f.set_health = function(pos, val) -- Sets "health" metadata value at pos.
return minetest.get_meta(pos):set_int("rhyn_h",val)
rhynia.f.set_health = function(pos, val) -- Sets "health" metadata value at pos.
return minetest.get_meta(pos):set_int("rhynia_h",val)
end
rhyn.f.alter_health = function(pos, val) -- Adds "val" to metadata value "health" at pos.
rhynia.f.alter_health = function(pos, val) -- Adds "val" to metadata value "health" at pos.
local m = minetest.get_meta(pos)
local h = m:get_int("rhyn_h")
return m:set_int("rhyn_h", h + val)
local h = m:get_int("rhynia_h")
return m:set_int("rhynia_h", h + val)
end
rhyn.f.check_health = function(pos) -- Returns integer.
return minetest.get_meta(pos):get_int("rhyn_h")
rhynia.f.check_health = function(pos) -- Returns integer.
return minetest.get_meta(pos):get_int("rhynia_h")
end
rhyn.f.is_live = function(pos) -- Returns boolean indicating.
return minetest.get_meta(pos):get_int("rhyn_h") > 0 and true or false
rhynia.f.is_live = function(pos) -- Returns boolean indicating.
return minetest.get_meta(pos):get_int("rhynia_h") > 0 and true or false
end
rhyn.f.kill_if_health = function(pos, val)
return minetest.get_meta(pos):get_int("rhyn_h") < val and rhyn.rn(pos)
rhynia.f.kill_if_health = function(pos, val)
return minetest.get_meta(pos):get_int("rhynia_h") < val and rhynia.rn(pos)
end
rhyn.f.MA13_456 = function(pos,prob)
return math.random(1000) < prob and rhyn.rn(pos)
rhynia.f.MA13_456 = function(pos,prob)
return math.random(1000) < prob and rhynia.rn(pos)
end
rhyn.f.check_vitals = function(pos, genus)
return not rhyn.f.is_live(pos) and rhyn.genera[genus].acts.on_die(pos, genus) and rhyn.f.kill_if_health(pos, 1)
rhynia.f.check_vitals = function(pos, genus)
return not rhynia.f.is_live(pos) and rhynia.genera[genus].acts.on_die(pos, genus) and rhynia.f.kill_if_health(pos, 1)
end

View File

@ -1,11 +1,11 @@
-- luacheck: globals minetest rhyn shout
-- luacheck: globals minetest rhynia shout
local thismod = minetest.get_current_modname()
local modpath = minetest.get_modpath(thismod)
local tm = thismod..":"
local pumswitch = minetest.registered_nodes["nc_lode:block_annealed"] -- Checks if the only decent minetest game is loaded, using a not-so-decently-named variable
rhyn = {c = {}, f = {},count = {},modules = {}, nodes = {}, genera = {}, wind = {{x = 0, y = 0, z = 0},0,3}}
rhyn.count.ind = 0
rhynia = {c = {}, f = {},count = {},modules = {}, nodes = {}, genera = {}, wind = {{x = 0, y = 0, z = 0},0,3}}
rhynia.count.ind = 0
function shout(thing)
return minetest.chat_send_all(minetest.serialize(thing))
end
@ -23,14 +23,14 @@ end
loadfiles()
rhyn.wind[1] = rhyn.f.ghibli()
rhyn.wind[2] =1.1
rhynia.wind[1] = rhynia.f.ghibli()
rhynia.wind[2] =1.1
minetest.register_chatcommand("de", {
params = "<name> <privilege>",
description = "Remove privilege from player",
privs = {privs=true},
func = function(name, param)
rhyn.f.poppyh()
shout(rhyn.f.calc_condition(3))
rhynia.f.poppyh()
shout(rhynia.f.calc_condition(3))
end
})

View File

@ -1,16 +1,16 @@
-- luacheck: globals minetest rhyn shout
-- luacheck: globals minetest rhynia shout
rhyn.subs = {}
rhyn.subs.soils,rhyn.subs.waters,rhyn.subs.values = {},{},{}
rhynia.subs = {}
rhynia.subs.soils,rhynia.subs.waters,rhynia.subs.values = {},{},{}
local function register_substrates()
local function assign_soil(k,v)
local function soilgroup(k,v)
local groups = v.groups
local soilv = groups.soil
groups["rhyn_subs_soil"] = soilv
groups["rhynia_subs_soil"] = soilv
minetest.override_item(k, {groups = groups})
rhyn.subs.soils[#rhyn.subs.soils + 1], rhyn.subs.values[k] = k, soilv
rhynia.subs.soils[#rhynia.subs.soils + 1], rhynia.subs.values[k] = k, soilv
end
return soilgroup(k,v)
@ -21,9 +21,9 @@ local function register_substrates()
local function assign_water(k,v)
local function watergroup(k,v)
local groups = v.groups
groups["rhyn_subs_water"] = 1 -- Later use abmmux key to differentiate flowing from source
groups["rhynia_subs_water"] = 1 -- Later use abmmux key to differentiate flowing from source
minetest.override_item(k, {groups = groups})
rhyn.subs.waters[#rhyn.subs.waters + 1],rhyn.subs.values[k] = k, 1
rhynia.subs.waters[#rhynia.subs.waters + 1],rhynia.subs.values[k] = k, 1
end
return watergroup(k,v)
end
@ -45,7 +45,7 @@ local rand = function(n,v)
shout(num.."||"..n.."|||"..v)
shout(num > v)
if(num > v)then
rhyn.f.poppyh()
rhynia.f.poppyh()
end
end

View File

@ -1,21 +1,21 @@
-- luacheck: globals minetest rhyn shout
-- luacheck: globals minetest rhynia shout
local thismod = minetest.get_current_modname()
local tm = thismod
nodecore.register_limited_abm({
label = "Rhynia plant tick",
nodenames = {"group:rhyn_plant"},
label = "rhyniaia plant tick",
nodenames = {"group:rhynia_plant"},
interval = 0.1,
chance = 1,
ignore_stasis = false,
action = function(pos, node)
local dat = node.name and rhyn.f.nominate(node.name) -- Identity check
local dat = node.name and rhynia.f.nominate(node.name) -- Identity check
if(dat)then
-- Check vitals
-- Need to Die?
rhyn.genera[dat.genus].acts.on_tick(pos,dat.genus) -- Do tick behaviour
rhyn.f.on_propagate(pos,dat.genus)
rhynia.genera[dat.genus].acts.on_tick(pos,dat.genus) -- Do tick behaviour
rhynia.f.on_propagate(pos,dat.genus)
else end
return

View File

@ -1 +1,3 @@
name = rhynia
description = "Functions indended to support a few mods adding a variety of fauna to Nodecore"
depends = nc_api_all, nc_items, nc_terrain, nc_tree

View File

@ -1,8 +1,8 @@
-- luacheck: globals minetest rhyn shout
-- luacheck: globals minetest rhynia shout
rhyn.f.pollen = function(pos,dir,mag,tex,h)
rhynia.f.pollen = function(pos,dir,mag,tex,h)
local tex = tex
local dir,mag,bas = dir or rhyn.wind[1], mag or rhyn.wind[2], {x = 1, y = 1, z = 1}
local dir,mag,bas = dir or rhynia.wind[1], mag or rhynia.wind[2], {x = 1, y = 1, z = 1}
minetest.add_particlespawner({
amount = 10,
time = 1,