Overview
| Comment: | enable kegs to store (non-drinkable) potions, add keg crafting recipe |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
e408b8d0e018c5d0fcad0cc3930dee28 |
| User & Date: | lexi on 2021-06-24 16:36:14 |
| Other Links: | manifest | tags |
Context
|
2021-06-28
| ||
| 15:38 | more work on kegs and liquid, add taps and troughs for tapping trees and obtaining sap, add tree lore, add infuser module system, various tweaks, fix up bugged itemclass logic, add scaffold for crafting extension mechanism check-in: 01f4ba8ddc user: lexi tags: trunk | |
|
2021-06-24
| ||
| 16:36 | enable kegs to store (non-drinkable) potions, add keg crafting recipe check-in: e408b8d0e0 user: lexi tags: trunk | |
| 07:15 | add basic keg impl check-in: 9b8118877e user: lexi tags: trunk | |
Changes
Modified keg.lua from [1db75c4003] to [64df297e83].
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 .. 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ... 189 190 191 192 193 194 195 |
local liq = sorcery.register.liquid.db[liqid]
if not liq then log.err('missing entry for liquid',liqid) return end
local measure = liq.measure or function(u)
return string.format('%s drams', u*63.9)
end
return {
title = string.format('Keg of %s', liq.name);
color = sorcery.lib.color(liq.color);
props = {
{title = 'Contains', desc = measure(m:get_int('charge'))};
}
};
else return { title = 'Empty Keg', props = {} } end
end
local log = sorcery.logger('keg')
minetest.register_node('sorcery:keg', {
description = 'Keg';
drawtype = 'mesh';
................................................................................
m:set_string('infotext', 'Empty Keg')
end;
on_rightclick = function(pos, node, user, stack)
local m = minetest.get_meta(pos)
local update = function()
local c = kegcaption(m)
local str = c.title
for _,p in pairs(c.props) do
str = str .. string.format('\n(%s: %s)', p.title, p.desc)
end
m:set_string('infotext', str)
end
local noise = function(amt)
minetest.sound_play('default_water_footstep', {
gain = 0.5 + amt / 9.0;
pitch = 1.3 - amt / 12.0;
pos = pos;
................................................................................
}
end
end
end
end;
})
|
| < | < > | | > > > > > > > > > > > > |
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 .. 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 ... 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
local liq = sorcery.register.liquid.db[liqid]
if not liq then log.err('missing entry for liquid',liqid) return end
local measure = liq.measure or function(u)
return string.format('%s drams', u*63.9)
end
return {
title = string.format('%s Keg', sorcery.lib.str.capitalize(liq.name));
color = sorcery.lib.color(liq.color);
desc = string.format('%s of %s', measure(m:get_int('charge')), liq.name);
};
else return { title = 'Empty Keg', props = {} } end
end
local log = sorcery.logger('keg')
minetest.register_node('sorcery:keg', {
description = 'Keg';
drawtype = 'mesh';
................................................................................
m:set_string('infotext', 'Empty Keg')
end;
on_rightclick = function(pos, node, user, stack)
local m = minetest.get_meta(pos)
local update = function()
local c = kegcaption(m)
local str = c.title
if c.desc then str = str .. '\n(' .. c.desc .. ')' end
if c.props then for _,p in pairs(c.props) do -- future-proofing
str = str .. string.format('\n(%s: %s)', p.title, p.desc)
end end
m:set_string('infotext', str)
end
local noise = function(amt)
minetest.sound_play('default_water_footstep', {
gain = 0.5 + amt / 9.0;
pitch = 1.3 - amt / 12.0;
pos = pos;
................................................................................
}
end
end
end
end;
})
minetest.register_craft {
output = "sorcery:keg";
recipe = {
{'', 'basic_materials:steel_bar', 'screwdriver:screwdriver'};
{'sorcery:screw_bronze', 'default:bronze_ingot', 'sorcery:screw_bronze'};
{'', 'xdecor:barrel', ''};
};
replacements = {
{'screwdriver:screwdriver', 'screwdriver:screwdriver'};
};
}
|
Modified liquid.lua from [951f6052a6] to [a02ac21c24].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
-- liquid.lua
-- the liquid registry is used to keep track of abstract liquids,
-- their properties, and their representation in-game.
sorcery.registry.mk('liquid', false)
-- pre-register liquids used in Sorcery and common ones sorcery depends on
sorcery.register.liquid.link('default:water', {
name = 'Water';
kind = 'default:drink';
color = {10,85,255};
proto = nil;
src = 'default:water_source';
containers = {
['vessels:glass_bottle'] = 'sorcery:potion_water';
['bucket:bucket_empty'] = 'bucket:bucket_water';
};
})
sorcery.register.liquid.link('farming:ethanol', {
name = 'Ethanol';
kind = 'default:fuel';
color = {175,185,130};
proto = nil;
measure = function(u) return string.format('%s pints', u * 5) end;
containers = {
['vessels:glass_bottle'] = 'farming:ethanol_bottle';
};
})
sorcery.register.liquid.link('sorcery:blood', {
name = 'Blood';
kind = 'sorcery:reagent';
color = {255,10,30};
proto = nil;
measure = function(u) return string.format('%s cc', u * 236.5) end;
containers = {
['vessels:glass_bottle'] = 'sorcery:blood';
};
})
|
> | | | | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
-- liquid.lua
-- the liquid registry is used to keep track of abstract liquids,
-- their properties, and their representation in-game.
sorcery.registry.mk('liquid', false)
sorcery.liquid = {}
-- pre-register basic liquids used in Sorcery and common ones sorcery depends on
sorcery.register.liquid.link('default:water', {
name = 'water';
kind = 'default:drink';
color = {10,85,255};
proto = nil;
src = 'default:water_source';
containers = {
['vessels:glass_bottle'] = 'sorcery:potion_water';
['bucket:bucket_empty'] = 'bucket:bucket_water';
};
})
sorcery.register.liquid.link('farming:ethanol', {
name = 'ethanol';
kind = 'default:fuel';
color = {175,185,130};
proto = nil;
measure = function(u) return string.format('%s pints', u * 5) end;
containers = {
['vessels:glass_bottle'] = 'farming:ethanol_bottle';
};
})
sorcery.register.liquid.link('sorcery:blood', {
name = 'blood';
kind = 'sorcery:reagent';
color = {255,10,30};
proto = nil;
measure = function(u) return string.format('%s cc', u * 236.5) end;
containers = {
['vessels:glass_bottle'] = 'sorcery:blood';
};
})
|
Modified potions.lua from [a284aef5fe] to [1d78d17f17].
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
local glow = v.glow local id = 'potion_' .. string.lower(n) local desc = 'A ' .. ((glow and 'glowing ') or '') .. 'bottle of ' .. string.lower(n) .. ((kind == 'sparkle' and ', fiercely bubbling') or '') .. ' liquid' local fullname = n .. ' Potion' sorcery.register_potion(id, fullname, desc, color, kind, glow, { _proto = v; groups = { sorcery_potion = 1; sorcery_magical = 1; }; }) create_infusion_recipe(id,v,'sorcery:potion_serene',{data=v,name=fullname}) end) -- for n,potion in pairs(sorcery.data.draughts) do sorcery.register.draughts.foreach('sorcery:mknodes',{},function(n,potion) |
| > > | > > > > > > > > > > > > > > > > > |
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
local glow = v.glow local id = 'potion_' .. string.lower(n) local desc = 'A ' .. ((glow and 'glowing ') or '') .. 'bottle of ' .. string.lower(n) .. ((kind == 'sparkle' and ', fiercely bubbling') or '') .. ' liquid' local fullname = n .. ' Potion' sorcery.register.liquid.link('sorcery:'..id, { name = 'Serene Potion'; color = v.color; proto = v; kind = 'sorcery:potion'; measure = function(amt) return string.format('%s draughts', amt / 3) end; containers = { ['vessels:glass_bottle'] = 'sorcery:' .. id; }; }) sorcery.register_potion(id, fullname, desc, color, kind, glow, { groups = { sorcery_potion = 1; sorcery_magical = 1; }; _proto = v; _sorcery = { container = { type = 'vessel'; hold = 'liquid'; has = 'sorcery:' .. id; empty = 'vessels:glass_bottle'; charge = 3; }; }; }) create_infusion_recipe(id,v,'sorcery:potion_serene',{data=v,name=fullname}) end) -- for n,potion in pairs(sorcery.data.draughts) do sorcery.register.draughts.foreach('sorcery:mknodes',{},function(n,potion) |