Differences From
Artifact [52848574bf]:
- File
metallurgy-hot.lua
— part of check-in
[3f6a913e4e]
at
2020-09-29 12:40:28
on branch trunk
— * remove former hacky registration system, replace with consistent and flexible API; rewrite metal/gem generation to take advantage of this new API; tweaks to init system to enable world-local tweaks to lore and sorcery behavior
* initial documentation commit
* initial steps towards calendar - add default date format, astrolabe; prepare infra for division/melding/transmutation spells, various tweaks and fixes
 (user:
lexi,
size: 14066)
[annotate]
[blame]
[check-ins using]
 
- File
metallurgy-hot.lua
— part of check-in
[ea6e475e44]
at
2020-10-19 09:52:11
on branch trunk
— continue dev on celestial mechanics, add melding+division spells (resonance), refine itemclasses, add keypunch and punchcards, add paper pulp, add a shitload of visuals, add convenience scripts for working with the wiki, make the flamebolt spell actually useful instead of just a pretty lightshow, add essences, inferno crystal, and other goodies; iterate on wands, lots of shit i can't remember, various bugfixes
 (user:
lexi,
size: 14078)
[annotate]
[blame]
[check-ins using]
 
   130    130   	local count = 0
   131    131   	for i=1,inv:get_size('input') do
   132    132   		local m = inv:get_stack('input',i)
   133    133   		if m:is_empty() then goto skip end
   134    134   		local l = sorcery.data.metallookup[m:get_name()]
   135    135   		if not l then
   136    136   			local p = sorcery.lib.tbl.walk(m:get_definition()._sorcery,{'material'})
   137         -			if p.metal then l = p end
          137  +			if p and p.metal then l = p end
   138    138   		end
   139    139   		if not l then return false end
   140    140   		mix[l.id] = (mix[l.id] or 0) + l.value
   141    141   		count = count + l.value
   142    142   	::skip::end
   143    143   	count = math.floor(count)
   144    144   	-- everything is metal, we've finished summing it up.
................................................................................
   323    323   			drawtype = "mesh";
   324    324   			after_dig_node = sorcery.lib.node.purge_container;
   325    325   			mesh = 'sorcery-kiln-' .. state .. '.obj';
   326    326   			drop = id;
   327    327   			groups = {
   328    328   				cracky = (state == 'open' and 2) or nil;
   329    329   				sorcery_metallurgy = 1;
   330         -				not_in_creative_inventory = (state == open) and nil or 1;
          330  +				not_in_creative_inventory = (state == 'open') and nil or 1;
   331    331   			};
   332    332   			sunlight_propagates = true;
   333    333   			paramtype1 = 'light';
   334    334   			paramtype2 = 'facedir';
   335    335   			selection_box = box[state];
   336    336   			collision_box = box[state];
   337    337   			tiles = tex[state];
................................................................................
   404    404   	for _, active in pairs {false, true} do
   405    405   		minetest.register_node((active and id .. '_active') or id, {
   406    406   			_proto = kind;
   407    407   			description = desc;
   408    408   			drop = id;
   409    409   			after_dig_node = sorcery.lib.node.purge_container;
   410    410   			groups = {
   411         -				cracky = (active and 2) or nil;
          411  +				cracky = (not active and 2) or nil;
   412    412   				sorcery_metallurgy = 1;
   413    413   				not_in_creative_inventory = active and 1 or nil;
   414    414   			};
   415    415   			paramtype2 = 'facedir';
   416    416   			light_source = (active and 9) or 0;
   417    417   			on_construct = function(pos)
   418    418   				local meta = minetest.get_meta(pos)