1
2
3
4
5
6
7
8
9
10
11
12
..
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
...
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
...
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
|
-- TODO make some kind of disposable "filter" tool that runeforges require
-- to generate runes and that wears down over time, to make amulets more
-- expensive than they currently are? the existing system is neat but
-- i think amulets are a little overpowered for something that just
-- passively consumes ley-current
local constants = {
rune_mine_interval = 240;
-- how often a powered forge rolls for new runes
rune_cache_max = 4;
-- how many runes a runeforge can hold at a time
................................................................................
local fac = (g-1) / 5
return i - ((i*0.5) * fac), 0.5 * fac
end
sorcery.register.runes.foreach('sorcery:generate',{},function(name,rune)
local id = 'sorcery:rune_' .. name
rune.image = rune.image or string.format('sorcery_rune_%s.png',name)
rune.item = id
minetest.register_craftitem(id, {
description = sorcery.lib.color(rune.tone):readable():fmt(rune.name .. ' Rune');
short_description = rune.name .. ' Rune';
inventory_image = rune.image;
stack_max = 1;
groups = {
sorcery_rune = 1;
not_in_creative_inventory = 1;
};
................................................................................
local rp = rune:get_definition()._proto
local rg = rune:get_meta():get_int('rune_grade')
m:set_string('amulet_rune', rp.id)
m:set_int('amulet_rune_grade', rg)
local spell = sorcery.amulet.getspell(stack)
if not spell then return nil end
local name
if spell.minrune then -- indicating quality makes less sense if it's restricted
name = string.format('Amulet of %s', spell.name)
else
name = string.format('Amulet of %s %s', constants.amulet_grades[rg], spell.name)
end
m:set_string('description', sorcery.lib.ui.tooltip {
title = name;
color = spell.tone;
................................................................................
local i = m:get_inventory()
i:set_size('cache',constants.rune_cache_max)
i:set_size('wrench',1) i:set_size('phial',1) i:set_size('refuse',1)
i:set_size('amulet',1) i:set_size('active',1)
m:set_string('infotext','Rune Forge')
runeforge_update(pos)
end;
after_dig_node = sorcery.lib.node.purge_only {'amulet'};
on_timer = runeforge_update;
on_metadata_inventory_move = function(pos, fl,fi, tl,ti, count, user)
local inv = minetest.get_meta(pos):get_inventory()
local wrench if not inv:is_empty('wrench') then
wrench = inv:get_stack('wrench',1):get_definition()._proto
end
local wwear = function(cap)
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
..
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
...
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
...
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
|
-- TODO make some kind of disposable "filter" tool that runeforges require
-- to generate runes and that wears down over time, to make amulets more
-- expensive than they currently are? the existing system is neat but
-- i think amulets are a little overpowered for something that just
-- passively consumes ley-current
-- -- are phials & rune-wrenches enough for this now?
local constants = {
rune_mine_interval = 240;
-- how often a powered forge rolls for new runes
rune_cache_max = 4;
-- how many runes a runeforge can hold at a time
................................................................................
local fac = (g-1) / 5
return i - ((i*0.5) * fac), 0.5 * fac
end
sorcery.register.runes.foreach('sorcery:generate',{},function(name,rune)
local id = 'sorcery:rune_' .. name
rune.image = rune.image or string.format('sorcery_rune_%s.png',name)
rune.item = id
local c = sorcery.lib.color(rune.tone)
minetest.register_craftitem(id, {
description = c:darken(0.7):bg(c:readable():fmt(rune.name .. ' Rune'));
short_description = rune.name .. ' Rune';
inventory_image = rune.image;
stack_max = 1;
groups = {
sorcery_rune = 1;
not_in_creative_inventory = 1;
};
................................................................................
local rp = rune:get_definition()._proto
local rg = rune:get_meta():get_int('rune_grade')
m:set_string('amulet_rune', rp.id)
m:set_int('amulet_rune_grade', rg)
local spell = sorcery.amulet.getspell(stack)
if not spell then return nil end
local name
if spell.mingrade and spell.mingrade > 0 then -- indicating quality makes less sense if it's restricted
name = string.format('Amulet of %s', spell.name)
else
name = string.format('Amulet of %s %s', constants.amulet_grades[rg], spell.name)
end
m:set_string('description', sorcery.lib.ui.tooltip {
title = name;
color = spell.tone;
................................................................................
local i = m:get_inventory()
i:set_size('cache',constants.rune_cache_max)
i:set_size('wrench',1) i:set_size('phial',1) i:set_size('refuse',1)
i:set_size('amulet',1) i:set_size('active',1)
m:set_string('infotext','Rune Forge')
runeforge_update(pos)
end;
after_dig_node = sorcery.lib.node.purge_only {'amulet','wrench'};
on_timer = runeforge_update;
on_metadata_inventory_move = function(pos, fl,fi, tl,ti, count, user)
local inv = minetest.get_meta(pos):get_inventory()
local wrench if not inv:is_empty('wrench') then
wrench = inv:get_stack('wrench',1):get_definition()._proto
end
local wwear = function(cap)
|