starlit  Diff

Differences From Artifact [43f9137bd9]:

To Artifact [4e1556f916]:


    39     39   	};
    40     40   })
    41     41   
    42     42   
    43     43   minetest.register_node('starlit:sand', {
    44     44   	description = T 'Sand';
    45     45   	tiles = {'starlit-terrain-sand.png'};
    46         -	groups = {looseClump = 1, sand  = 1};
           46  +	groups = {looseClump = 1, sand = 1, falling_node = 1};
    47     47   	drop = '';
    48     48   	sounds = sandSounds;
    49     49   	_starlit = {
    50     50   		kind = 'block';
    51     51   		fab = starlit.type.fab { element = { silicon = 25 } };
    52     52   	};
    53     53   })
           54  +
           55  +minetest.register_node('starlit:lifesilt', {
           56  +	description = T 'Lifesilt';
           57  +	tiles = {'starlit-terrain-lifesilt.png'};
           58  +	groups = {looseClump = 1, lifesilt = 1, falling_node = 1};
           59  +	drop = '';
           60  +	sounds = sandSounds;
           61  +	_starlit = {
           62  +		kind = 'block';
           63  +		fab = starlit.type.fab { element = { carbon = 8, silicon = 4 } };
           64  +	};
           65  +})
           66  +
    54     67   minetest.register_craftitem('starlit:soil_clump', {
    55     68   	short_description = T 'Soil';
    56     69   	description = starlit.ui.tooltip {
    57     70   		title = T 'Soil';
    58     71   		desc = 'A handful of nutrient-packed soil, suitable for growing plants';
    59     72   		color = lib.color(0.3,0.2,0.1);
    60     73   	};
................................................................................
   105    118   
   106    119   
   107    120   starlit.terrain.createGrass {
   108    121   	name = 'starlit:greengraze';
   109    122   	desc = T 'Greengraze';
   110    123   	img = 'starlit-terrain-greengraze';
   111    124   	fab = starlit.type.fab {
          125  +		element = { carbon = 12; };
          126  +		time = { shred = 2.5; };
          127  +	};
          128  +}
          129  +
          130  +starlit.terrain.createGrass {
          131  +	name = 'starlit:undergloam';
          132  +	desc = T 'Undergloam';
          133  +	-- fungal carpet
          134  +	img = 'starlit-terrain-undergloam';
          135  +	fab = starlit.type.fab {
   112    136   		element = {
   113    137   			carbon = 12;
   114    138   		};
   115         -		time = {
   116         -			shred = 2.5;
   117         -		};
          139  +		time = { shred = 2.5; };
   118    140   	};
   119    141   }
   120    142   
   121    143   for _, w in pairs {false,true} do
   122    144   	minetest.register_node('starlit:liquid_water' .. (w and '_flowing' or ''), {
   123    145   		description = T 'Water';
   124    146   		drawtype = 'liquid';
................................................................................
   164    186   end
   165    187   
   166    188   
   167    189   starlit.world.mineral.foreach('starlit:mineral_generate', {}, function(name,m)
   168    190   	local node = string.format('starlit:mineral_%s', name)
   169    191   	local grp = {mineral = 1}
   170    192   	minetest.register_node(node, {
   171         -		description = m.desc;
          193  +		short_description = m.name;
          194  +		description = starlit.ui.tooltip {
          195  +			title = m.name;
          196  +			desc = m.desc;
          197  +			color = m.tone;
          198  +		};
   172    199   		tiles = m.tiles or 
   173    200   				(m.tone and {
   174         -					string.format('default_stone.png^[colorizehsl:%s:%s:%s',
   175         -						m.tone.hue, m.tone.sat, m.tone.lum)
   176         -				}) or {'default_stone.png'};
          201  +					lib.image'starlit-terrain-granite.png':shift(m.tone):render()
          202  +				}) or nil;
   177    203   		groups = grp;
   178    204   		drop = m.rocks or '';
   179    205   		sounds = hardSounds;
   180    206   		_starlit = {
   181    207   			kind = 'block';
   182    208   			elements = m.elements;
   183    209   			fab = m.fab;
   184    210   			recover = m.recover;
   185    211   			recover_vary = m.recover_vary;
   186    212   		};
   187    213   	})
   188    214   	if not m.excludeOre then
   189    215   		local seed = 0
   190         -		grp.ore = 1
          216  +-- 		grp.ore = 1
   191    217   		for i = 1, #m.name do
   192         -			seed = seed*50 + string.byte(name, i)
          218  +			seed = seed*50 + string.byte(m.name, i)
   193    219   		end
   194    220   		minetest.register_ore {
   195    221   			ore = node;
   196    222   			ore_type = m.dist.kind;
   197         -			wherein = {m.dist.among};
          223  +			wherein = m.dist.among;
   198    224   			clust_scarcity = m.dist.rare;
   199    225   			y_max = m.dist.height[1], y_min = m.dist.height[2];
          226  +			column_height_min = m.dist.sheetCols and m.dist.sheetCols[1] or nil;
          227  +			column_height_max = m.dist.sheetCols and m.dist.sheetCols[2] or nil;
   200    228   			noise_params = m.dist.noise or {
   201         -				offset = 28;
   202         -				scale = 16;
          229  +				scale = 1;
   203    230   				spread = vector.new(128,128,128);
   204    231   				seed = seed;
   205         -				octaves = 1;
          232  +				octaves = 2;
   206    233   			};
   207    234   		}
   208    235   	end
   209    236   end)
   210    237   
   211    238   starlit.world.mineral.link('feldspar', {
   212         -	desc = T 'Feldspar';
          239  +	name = T 'Feldspar';
          240  +	tiles = {'starlit-terrain-feldspar.png'};
   213    241   	excludeOre = true;
   214    242   	recover = starlit.type.fab {
   215         -		time = {
   216         -			shred = 3;
   217         -		};
   218         -		cost = {
   219         -			shredPower = 3;
          243  +		time = { shred = 3; };
          244  +		cost = { shredPower = 3; };
          245  +	};
          246  +	recover_vary = function(rng, ctx)
          247  +		-- print('vary!', rng:int(), rng:int(0,10))
          248  +		return starlit.type.fab {
          249  +			element = {
          250  +				aluminum  = rng:int(0,4);
          251  +				potassium = rng:int(0,2);
          252  +				calcium   = rng:int(0,2);
          253  +			}
   220    254   		};
          255  +	end;
          256  +})
          257  +
          258  +starlit.world.mineral.link('granite', {
          259  +	name = T 'Granite';
          260  +	tiles = {'starlit-terrain-granite.png'};
          261  +	dist = {
          262  +		kind = 'sheet';
          263  +		among = 'starlit:feldspar';
          264  +		height = {-200,30};
          265  +		sheetCols = {1, 16};
          266  +	};
          267  +	recover = starlit.type.fab {
          268  +		time = { shred = 4; };
          269  +		cost = { shredPower = 8; };
   221    270   	};
   222    271   	recover_vary = function(rng, ctx)
   223    272   		-- print('vary!', rng:int(), rng:int(0,10))
   224    273   		return starlit.type.fab {
   225    274   			element = {
   226    275   				aluminum  = rng:int(0,4);
   227    276   				potassium = rng:int(0,2);