Comment: | fix bugs, finish grinder, add conduits and condensers to extract and transmit energy from leylines |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
9278734b41a35b8a889f08daf57da556 |
User & Date: | lexi on 2020-08-17 13:35:12 |
Other Links: | manifest | tags |
2020-08-21
| ||
11:52 | add force field emitters, generators, rework leyline distribution algorithm, add utility function for automatically dumping out inventories when an item is dug, add draconium and tyrannium alloys (tentatively), various fixes check-in: f7f6898cbd user: lexi tags: trunk | |
2020-08-17
| ||
13:35 | fix bugs, finish grinder, add conduits and condensers to extract and transmit energy from leylines check-in: 9278734b41 user: lexi tags: trunk | |
2020-08-16
| ||
02:05 | changes, merges, additions galore check-in: 82178e0a16 user: lexi tags: trunk | |
Added data/compat.lua version [04ce335701].
1 +local grain = { 2 + hardness = 1; 3 + value = 1; 4 + powder = 'farming:flour'; 5 + grindcost = 4; 6 +} 7 +return { 8 + grindables = { 9 + ['farming:wheat'] = grain; 10 + ['farming:rye'] = grain; 11 + ['farming:oats'] = grain; 12 + ['farming:barley'] = grain; 13 + ['farming:rice'] = { 14 + powder = 'farming:rice_flour'; 15 + hardness = 1; 16 + value = 1; 17 + grindcost = 4; 18 + } 19 + }; 20 + ley = { 21 + ['default:mese'] = { 22 + power = 0.25; 23 + mode = 'produce'; 24 + }; 25 + }; 26 +}
Modified data/enchants.lua from [b3a388d8b4] to [9a3424a733].
1 1 -- an optional 'enchant' function can be defined, and will 2 2 -- be called when the enchantment is placed on the object 3 3 local allgroups = { 4 4 'sword'; 'pick'; 'pickaxe'; 5 - 'sickle'; 'scythe'; 'shovel'; 6 - 'hoe'; 'helmet'; 'leggings'; 7 - 'chestplate'; 'boots'; 5 + 'sickle'; 'axe'; 'scythe'; 6 + 'shovel'; 'hoe'; 'helmet'; 7 + 'leggings'; 'chestplate'; 'boots'; 8 8 } 9 +local digtools = { 10 + 'pick'; 'pickaxe'; 'sickle'; 11 + 'shovel'; 'axe'; 12 +} 9 13 return { 10 14 endure = { -- withstand more blows 11 15 name = 'Endure'; 12 16 cost = 1; 13 17 tone = {232,102,255}; 14 18 desc = 'durability magnified'; 15 19 affinity = 'counterpraxic'; ................................................................................ 29 33 return stack 30 34 end; 31 35 }; 32 36 drain = { 33 37 groups = {'sword'}; 34 38 cost = 4; 35 39 }; -- health vampirism 40 + glitter = { -- created prolonged light on digging 41 + name = 'Glitter'; 42 + groups = digtools; 43 + affinity = 'cognic'; 44 + cost = 1; 45 + tone = {255,235,195}; 46 + desc = 'Leave a trail of light hanging in the air as you dig'; 47 + }; 36 48 harvest = { -- kills or digging ore replenish durability 37 49 name = 'Harvest'; 38 50 cost = 0; -- energy is only depleted when repair takes place 39 51 tone = {255,84,187}; 40 52 affinity = 'syncretic'; 41 53 groups = { 42 54 'pick'; 'pickaxe'; 'sword'; ................................................................................ 120 132 end 121 133 end; 122 134 }; 123 135 pierce = { -- faster mining speed 124 136 name = 'Pierce'; 125 137 cost = 3; 126 138 tone = {113,240,251}; 127 - groups = { 139 + groups = digtools; 140 + { 128 141 'pick';'pickaxe';'axe';'shovel';'sickle'; 129 142 }; 130 143 desc = 'rip through solid stone or wood like a hot knife through butter'; 131 144 recipe = { 132 145 {lens = 'amplifier', gem = 'diamond', dmg = 4}; 133 146 {lens = 'amplifier', gem = 'ruby', dmg = 4}; 134 147 {lens = 'rectifier', gem = 'diamond', dmg = 2};
Modified data/greases.lua from [471779a266] to [018bd8935a].
50 50 thunder = { 51 51 color = {255,245,84}; 52 52 core = { 'sorcery:oil_flame', 'sorcery:oil_wind' }; 53 53 mix = { 54 54 'sorcery:extract_onion'; 55 55 'tnt:gunpowder'; 56 56 }; 57 + }; 58 + enchanting = { 59 + color = {222,57,239}; 60 + core = { 'sorcery:oil_mystic', 'sorcery:oil_dawn', 'sorcery:oil_mushroom' }; 61 + mix = { 62 + 'sorcery:powder_cobalt'; 63 + 'sorcery:powder_cobalt'; 64 + 'sorcery:extract_grape'; 65 + }; 57 66 }; 58 67 }
Modified data/metals.lua from [f4099f1a65] to [f9ae7215e3].
18 18 19 19 return { 20 20 tin = { 21 21 ingot = 'default:tin_ingot'; 22 22 block = 'default:tinblock'; 23 23 tone = {172,172,172}; 24 24 no_tools = true; no_armor = true; 25 + hardness = 2; 25 26 }; 26 27 copper = { 28 + dye = 'orange'; 27 29 ingot = 'default:copper_ingot'; 28 30 block = 'default:copperblock'; 29 31 tone = {255,176,61}; 30 32 no_tools = true; no_armor = true; 33 + hardness = 2; 31 34 }; 32 35 brass = { 33 36 tone = {255,226,87}; 37 + dye = 'bright_orange'; 34 38 artificial = true; 35 39 no_tools = true; no_armor = true; 40 + hardness = 3; 36 41 mix = { 37 42 metals = { 38 43 silver = 1; 39 44 copper = 4; 40 45 }; 41 46 }; 42 47 }; 43 48 bronze = { 44 49 ingot = 'default:bronze_ingot'; 45 50 block = 'default:bronzeblock'; 51 + dye = 'dark_orange'; 46 52 artificial = true; 47 53 tone = {229,115,52}; 48 54 items = default_items('bronze'); 55 + hardness = 4; 49 56 maxenergy = 150; 50 57 slots = { 51 58 {affinity = {'counterpraxic'}; confluence = 0.7}; 52 59 }; 53 60 mix = { 54 61 metals = { 55 62 copper = 4; ................................................................................ 59 66 }; 60 67 steel = { 61 68 ingot = 'default:steel_ingot'; 62 69 block = 'default:steelblock'; 63 70 tone = {240,240,240}; 64 71 items = default_items('steel'); 65 72 maxenergy = 200; 73 + hardness = 5; 66 74 slots = { 67 75 {affinity = {'praxic'}; confluence = 0.5}; 68 76 }; 69 77 }; 70 78 aluminum = { 71 79 tone = {196,64,32}, alpha = 128; 80 + dye = 'red'; 72 81 meltpoint = 1; 73 82 rarity = 12; depth = 158; 74 83 power = 3; speed = 2.4; 75 84 durability = 700; cooktime = 25; 85 + hardness = 6; 76 86 armor_weight = 0.3; 77 87 maxenergy = 400; 78 88 slots = { 79 89 {affinity = {'syncretic'}; confluence = 0.7}; 80 90 {affinity = {'praxic'}; confluence = 0.4}; 81 91 }; 82 92 }; 83 93 levitanium = { 84 94 tone = {17,255,191}, alpha = 40; 95 + dye = 'bright_blue'; 85 96 meltpoint = 4; 97 + hardness = 3; 86 98 rarity = 17; depth = 870; 87 99 power = 1; durability = 50; cooktime = 70; 88 100 armor_weight = -2.2; armor_protection = 1; 89 101 maxenergy = 5000; 90 102 no_tools = true; 91 103 }; 92 104 platinum = { 93 105 tone = {255,233,118}, alpha = 50; 94 106 meltpoint = 1; 95 107 rarity = 15; depth = 580; 96 108 power = 4; speed = 3; 109 + hardness = 6; 97 110 durability = 1400; cooktime = 40; 98 111 armor_weight = 0.7; 99 112 maxenergy = 1000; 100 113 slots = { 101 114 {affinity = {'praxic','counterpraxic'}; confluence = 0.3}; 102 115 {affinity = {'counterpraxic'}; confluence = 0.8}; 103 116 } 104 117 }; 105 118 gold = { 119 + dye = 'yellow'; 106 120 ingot = 'default:gold_ingot'; 107 121 block = 'default:goldblock'; 108 122 tone = {255,225,47}; 123 + hardness = 1; 109 124 maxenergy = 3000; 110 125 slots = { 111 126 {affinity = {'praxic','counterpraxic'}; confluence = 1.4}; 112 127 {affinity = {'praxic','counterpraxic'}; confluence = 1.2}; 113 128 } 114 129 }; 115 130 silver = { 116 131 tone = {218,255,246}; 117 - 132 + dye = 'white'; 118 133 maxenergy = 2000; 134 + hardness = 1; 119 135 depth = 380; rarity = 13.5; 120 136 no_armor = true; no_tools = true; 121 137 power = 1; cooktime = 8; hardness = 1; 122 138 }; 123 139 electrum = { 124 140 tone = {212, 255, 0}, alpha = 80; 125 141 artificial = true; 142 + hardness = 1; 143 + dye = 'bright_green'; 126 144 mix = { 127 145 metals = { 128 146 silver = 1; 129 147 gold = 1; 130 148 }; 131 149 }; 150 + sinter = { 'silver', 'gold' }; 132 151 no_tools = true; 133 152 }; 134 153 tungsten = { 135 154 tone = {0,255,163}, alpha = 70; 136 155 rarity = 14; 137 156 speed = 2.8; 138 157 power = 4; 158 + hardness = 8; 139 159 meltpoint = 4; 140 160 cooktime = 100; 141 161 durability = 2700; 142 162 maxenergy = 1500; 143 163 slots = { 144 164 {affinity = {'counterpraxic'}, confluence = 0.6}; 145 165 {affinity = {'praxic','counterpraxic'}, confluence = 1}; 146 166 {affinity = {'praxic'}, confluence = 0.5}; 147 167 }; 148 168 }; 149 169 cobalt = { 170 + dye = 'blue'; 150 171 tone = {48,101,255}, alpha = 90; 151 172 rarity = 17; 152 173 durabilty = 900; 174 + hardness = 6; 153 175 power = 3; 154 176 speed = 3.5; 155 177 cooktime = 30; 156 178 maxenergy = 3500; 157 179 slots = { 158 180 { 159 181 affinity = {'counterpraxic'}; ................................................................................ 160 182 confluence = 0.65; 161 183 interference = {speed = 1}; 162 184 }; 163 185 } 164 186 }; 165 187 lithium = { 166 188 tone = {255,252,93}, alpha = 80; 189 + dye = 'yellow'; 167 190 rarity = 13; 191 + hardness = 2; 192 + fuel = 80; 168 193 no_tools = true; 169 194 no_armor = true; 170 195 }; 171 196 iridium = { 172 197 tone = {209,88,241}, alpha = 80; 198 + dye = 'purple'; 173 199 rarity = 18; 174 200 meltpoint = 3; 175 201 cooktime = 340; 202 + hardness = 7; 176 203 maxenergy = 1800; 177 204 durability = 1900; 178 205 speed = 3.2; 179 206 img = { 180 207 -- ingot = 'sorcery_iridium_ingot.png'; 181 208 -- block = 'sorcery_iridium_block.png'; 182 209 }; ................................................................................ 187 214 }; 188 215 duridium = { 189 216 tone = {255,64,175}, alpha = 70; 190 217 cooktime = 120; 191 218 artificial = true; 192 219 durability = 3400; 193 220 speed = 3.1; 221 + hardness = 9; 194 222 power = 5; 195 223 mix = { 196 224 metals = { 197 225 platinum = 4; 198 226 aluminum = 4; 199 227 tin = 1; 200 228 }; ................................................................................ 210 238 }; 211 239 impervium = { 212 240 tone = {226,255,107}, alpha = 90; 213 241 cooktime = 260; 214 242 meltpoint = 5; 215 243 artificial = true; 216 244 speed = 2.1; 245 + hardness = 20; 217 246 durability = 5300; 218 247 maxenergy = 2300; 219 248 watercool = true; 220 249 mix = { 221 250 metals = { 222 251 duranium = 4; 223 252 iridium = 2; ................................................................................ 232 261 }; 233 262 eternium = { 234 263 tone = {156,82,222}, alpha = 100; 235 264 cooktime = 500; 236 265 meltpoint = 6; 237 266 artificial = true; 238 267 speed = 2; 268 + hardness = 9; 239 269 maxenergy = 1200; 240 270 durability = 8100; 241 271 watercool = true; 242 272 mix = { 243 273 metals = { 244 274 iridium = 2; 245 275 tungsten = 2; ................................................................................ 253 283 }; 254 284 unobtanium = { 255 285 tone = {114,255,214}, alpha = 120; 256 286 meltpoint = 3; 257 287 cooktime = 330; 258 288 artificial = true; 259 289 maxenergy = 4000; 290 + hardness = 7; 260 291 durability = 3300; 261 292 speed = 3.4; 262 293 slots = { 263 294 {affinity={'praxic'}, confluence = 0.7}; 264 295 {affinity={'counterpraxic'}, confluence = 1.2}; 265 296 {affinity={'cognic'}, confluence = 1.1}; 266 297 };
Modified data/spells.lua from [3dd4d17be3] to [47b0c7f3e9].
289 289 desc = 'Pour life-energy into the soil, causing flowers and trees to spring up at your command'; 290 290 affinity = {'jungle','verdant'}; 291 291 }; 292 292 praxic = anchorwand('praxic', 16, {'pine','shimmering','blazing'}); 293 293 counterpraxic = anchorwand('counterpraxic',23, {'pine','shimmering','silent'}); 294 294 entropic = anchorwand('entropic', 8, {'jungle','dark'}); 295 295 syncretic = anchorwand('syncretic', 12, {'aspen','verdant','shimmering','blazing'}); 296 - cognic = anchorwand('cognic', 36, {'acacia','verdant','dark'}); 296 + cognic = anchorwand('cognic', 32, {'acacia','verdant','dark'}); 297 + occlutic = anchorwand('occlutic', 15, {'apple','silent','dark'}); 298 + imperic = anchorwand('imperic', 8, {'apple','verdant','blazing'}); 299 + mandatic = anchorwand('mandatic', 18, {'jungle','verdant','silent'}); 297 300 shape = { 298 301 name = 'shaping'; 299 302 uses = 24; 300 303 color = {255,114,65}; 301 304 leytype = 'praxic'; 302 305 affinity = {'apple','blazing'}; 303 306 desc = 'With an enchanter, physically alter the mundane qualities of an object';
Modified enchanter.lua from [2062a1f6be] to [41724791de].
167 167 -- determine the power of a particular enchantment on 168 168 -- an enchanted item. 169 169 local e = sorcery.enchant.get(stack) 170 170 local p = 0.0 171 171 local slots = sorcery.matreg.lookup[stack:get_name()].data.slots 172 172 -- TODO handle strength-boosting spells! 173 173 for _,s in pairs(e.spells) do 174 - print(dump(s)) 175 174 if s.id == id then p = p + ((s.boost * slots[s.slot].confluence)/10) end 176 175 end 177 176 return p 178 177 end 179 178 sorcery.enchant.stackup = function(stack) 180 179 -- stack update function. this should be called whenever 181 180 -- the enchantment status of a stack changes; it will ................................................................................ 263 262 minetest.register_craftitem('sorcery:enchanter_pedestal',{ 264 263 inventory_image = 'sorcery_enchanter_pedestal.png'; 265 264 description = 'Pedestal'; 266 265 }) 267 266 minetest.register_craft { 268 267 output = 'sorcery:enchanter_channeler'; 269 268 recipe = { 270 - {'','default:bronze_ingot',''}; 269 + {'sorcery:grease_enchanting','sorcery:platinum_ingot','sorcery:grease_enchanting'}; 271 270 {'basic_materials:gold_wire','basic_materials:steel_strip','basic_materials:gold_wire'}; 272 271 {'','sorcery:electrum_ingot',''}; 273 272 }; 274 273 replacements = { 274 + {'sorcery:grease_enchanting','xdecor:bowl'}; 275 + {'sorcery:grease_enchanting','xdecor:bowl'}; 275 276 {'basic_materials:gold_wire','basic_materials:empty_spool'}; 276 277 {'basic_materials:gold_wire','basic_materials:empty_spool'}; 277 278 }; 278 279 } 279 280 minetest.register_craft { 280 281 output = 'sorcery:enchanter_pedestal'; 281 282 recipe = { 282 283 {'basic_materials:copper_strip','group:wood','basic_materials:copper_strip'}; 283 - {'','default:bronze_ingot',''}; 284 + {'','sorcery:iridium_ingot',''}; 284 285 {'','group:wood',''}; 285 286 }; 286 287 } 287 288 minetest.register_craft { 288 289 output = 'sorcery:enchanter'; 289 290 recipe = { 290 - {'','sorcery:enchanter_channeler',''}; 291 + {'sorcery:grease_sealant','sorcery:enchanter_channeler','sorcery:grease_sealant'}; 291 292 {'sorcery:enchanter_channeler','sorcery:enchanter_pedestal','sorcery:enchanter_channeler'}; 292 293 {'group:wood','group:wood','group:wood'}; 293 294 }; 295 + replacements = { 296 + {'sorcery:grease_sealant','xdecor:bowl'}; 297 + {'sorcery:grease_sealant','xdecor:bowl'}; 298 + }; 294 299 } 295 300 for i=1,10 do 296 301 minetest.register_node('sorcery:air_flash_' .. i, { 297 302 drawtype = 'airlike'; 298 303 pointable = false; walkable = false; 299 304 buildable_to = true; 300 305 sunlight_propagates = true; ................................................................................ 319 324 -- replace the air with a "glow-air" that removes 320 325 -- itself after a short period of time, to create 321 326 -- a flash of light when an enchanted tool's used 322 327 -- to dig out a node 323 328 local tool = puncher:get_wielded_item() 324 329 local ench = sorcery.enchant.get(tool) 325 330 if #ench.spells == 0 then return end 326 - print('enchanted!') 327 331 local sparks = {} 328 332 -- local spark = function(name,color) 329 333 local material = sorcery.enchant.getsubj(tool) 330 334 local totalcost = 0 331 335 do local done = {} for _,sp in pairs(ench.spells) do 332 336 if done[sp.id] then goto skip end 333 337 done[sp.id] = true
Modified gems.lua from [461d75b6c5] to [67735ebab8].
1 1 --- gemstones 2 +local shards_per_gem = 9 2 3 3 4 sorcery.register_gem = function(name,gem) 4 5 local itemname = gem.foreign or 'sorcery:gem_' .. name 5 6 local shardname = gem.foreign_shard or 'sorcery:gem_' .. name .. '_shard' 6 7 local amuletname = gem.foreign_amulet or 'sorcery:gem_' .. name .. '_amulet' 7 8 8 9 local tools, armors = sorcery.matreg.tools, sorcery.matreg.armors 9 - if gem.tools then for _,t in pairs(tools) do 10 + if gem.tools then for t,c in pairs(tools) do 10 11 sorcery.matreg.lookup[(gem.items and gem.items[t]) or ('sorcery:' .. t .. '_' .. name)] = { 11 12 gem = true; 12 13 id = name; data = gem; 14 + value = c.cost*shards_per_gem; 13 15 } 14 16 end end 15 - if gem.armor then for _,a in pairs(armors) do 17 + if gem.armor then for a,c in pairs(armors) do 16 18 sorcery.matreg.lookup[(gem.items and gem.items[a]) or ('sorcery:' .. a .. '_' .. name)] = { 17 19 gem = true; 18 20 id = name; data = gem; 21 + value = c.cost*shards_per_gem; 19 22 } 20 23 end end 21 24 22 25 if gem.foreign_shard then 23 26 minetest.clear_craft {output=shardname} 24 27 else 25 28 minetest.register_craftitem(shardname, {
Modified init.lua from [5c9fa3f240] to [8277bf1fce].
36 36 'tbl', 'class'; 37 37 -- wrappers 38 38 'color', 'image', 'ui'; 39 39 } 40 40 41 41 sorcery.unit() { 'compat', 'matreg' } 42 42 sorcery.unit('data') { 43 + 'compat'; 43 44 'affinities'; 'gods'; 44 45 'enchants', 'spells'; 45 46 'gems', 'metals'; 46 47 'potions', 'oils', 'greases', 47 48 'draughts', 'elixirs', 48 49 'philters', 'extracts'; 49 50 'register'; 50 51 } 51 52 52 53 for _,u in pairs { 53 54 'leylines'; 'ores'; 'gems'; 54 55 'potions'; 'infuser'; 'altar'; 'wands'; 55 56 'tools'; 'enchanter'; 'harvester'; 56 - 'metallurgy-hot'; 'entities'; 'recipes'; 57 - 'coins'; 'interop'; 'tnodes'; 57 + 'metallurgy-hot', 'metallurgy-cold'; 58 + 'entities'; 'recipes'; 'coins'; 59 + 'interop'; 'tnodes'; 58 60 } do sorcery.load(u) end
Modified leylines.lua from [aa52733fca] to [112e3b2a50].
1 1 -- contains functions for determining information about 2 2 -- the nearest leyline and its currents 3 3 4 4 sorcery.ley = {} 5 5 6 --- leylines are invisible force-currents that rise up from the core of the earth, carrying magical energy upwards. they weaken as they get closer to the surface. each leyline also has between one and three 'affinities', which control how easily they can be wielded to perform particular sorts of magic. for instance, telestratic-affine leylines will charge wands enchanted with telestratic spells more quickly than leylines lacking this affinity. 6 +-- leylines are invisible force-currents that rise up from the core of the earth, carrying magical energy upwards. they weaken as they get closer to the surface. each leyline also has between one and three 'affinities', which control how easily they can be wielded to perform particular sorts of magic. for instance, praxic-affine leylines will charge wands enchanted with praxic spells more quickly than leylines lacking this affinity. 7 +-- leylines are one of two mystic energy forms; the other is aetheric energy, which is beamed down from Heaven by the sun during the day and is the power wielded by the gods. mortals can make limited use of aetheric force by collecting it and beaming it from place to place -- see aether.lua (aether is stored and manipulated by use of diamond) 8 +-- leylines are always available, unlike aetheric force, which can only be collected during the day. but aetheric force is accessible wherever one can see the sky, and the higher up you are, the more you can collect, whereas leylines vary randomly in strength and affinity by position. 7 9 8 10 sorcery.ley.estimate = function(pos) 9 11 local affs = { 10 12 'praxic'; 'counterpraxic'; 'cognic'; 11 13 'mandatic'; 'occlutic'; 'imperic'; 12 14 'syncretic'; 'entropic'; 13 15 }; ................................................................................ 42 44 privs = { server = true }; 43 45 func = function(caller,params) 44 46 local pos = minetest.get_player_by_name(caller):get_pos() 45 47 local ley = sorcery.ley.estimate(pos) 46 48 minetest.chat_send_player(caller, 'Leyline force ' .. tostring(ley.force) .. ' with affinities ' .. table.concat(ley.aff, ',')) 47 49 end; 48 50 }) 51 + 52 +-- leyline energy can be transmitted via a conduit from a leysink. however, it cannot be stored like aetheric energy can be; leyline energy must be drawn when needed unless it is bound up in an enchantment (which simply delays its expression). leysinks provide a constant source of ley-force. 53 +-- there are two nodes for transmitting leyline energy, wires and conduits. wires transmit a limited amount of energy, but are cheap and small. conduits transmit much more, but are expensive and take up full blocks. both are composed of electrum, the carrier, and copper, which prevents the ley-force from leaking out as dangerous radiance. 54 + 55 +minetest.register_node('sorcery:conduit', { 56 + description = 'Conduit'; 57 + tiles = { 58 + 'sorcery_conduit_copper_top.png'; 59 + 'sorcery_conduit_copper_top.png'; 60 + 'sorcery_conduit_copper_side.png'; 61 + }; 62 + groups = { 63 + sorcery_ley_device = 1; 64 + cracky = 3; 65 + }; 66 + _sorcery = { 67 + ley = { mode = 'signal'; power = 10 }; 68 + }; 69 +}) 70 +minetest.register_craft { 71 + output = 'sorcery:conduit 4'; 72 + recipe = { 73 + {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}; 74 + {'default:copper_ingot', 'sorcery:electrumblock', 'default:copper_ingot'}; 75 + {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}; 76 + }; 77 +}; 78 +minetest.register_craft { 79 + output = 'sorcery:wire 4'; 80 + recipe = { 81 + {'', 'basic_materials:copper_wire',''}; 82 + {'', 'sorcery:fragment_electrum', ''}; 83 + {'', 'basic_materials:copper_wire',''}; 84 + } 85 +}; 86 + 87 +sorcery.ley.field_to_current = function(strength,time) 88 + local ley_factor = 0.25 89 + -- a ley harvester will produce this much current with 90 + -- access to a full-strength leyline 91 + 92 + return strength * ley_factor * time; 93 +end 94 + 95 +do -- register condenser 96 + local gem = sorcery.lib.image('default_diamond_block.png') 97 + local amethyst = gem:multiply(sorcery.lib.color(sorcery.data.gems.amethyst.tone)) 98 + local emerald = gem:multiply(sorcery.lib.color(sorcery.data.gems.emerald.tone)) 99 + local box = { 100 + type = 'fixed'; 101 + fixed = { 102 + -0.5, -0.5, -0.5; 103 + 0.5, 1.2, 0.5; 104 + }; 105 + }; 106 + minetest.register_node('sorcery:condenser', { 107 + description = 'Condenser'; 108 + drawtype = 'mesh'; 109 + mesh = 'sorcery-condenser.obj'; 110 + selection_box = box; 111 + collision_box = box; 112 + tiles = { 113 + amethyst:render(); 114 + 'sorcery_condenser.png'; 115 + 'default_tin_block.png'; 116 + 'default_stone.png'; 117 + 'default_copper_block.png'; 118 + emerald:render(); 119 + }; 120 + groups = { 121 + cracky = 2; 122 + sorcery_ley_device = 1; 123 + }; 124 + on_construct = function(pos) 125 + local meta = minetest.get_meta(pos) 126 + meta:set_string('infotext','Condenser') 127 + end; 128 + _sorcery = { 129 + ley = { mode = 'produce' }; 130 + on_leycalc = function(pos,time) 131 + local l = sorcery.ley.estimate(pos) 132 + return { 133 + power = sorcery.ley.field_to_current(l.force, time); 134 + affinity = l.aff; 135 + } 136 + end; 137 + }; 138 + }) 139 +end 140 + 141 +minetest.register_craft { 142 + output = 'sorcery:condenser'; 143 + recipe = { 144 + {'sorcery:accumulator'}; 145 + {'sorcery:conduit'}; 146 + }; 147 +} 148 +sorcery.ley.mapnet = function(startpos,power) 149 + -- this function returns a list of all the nodes accessible from 150 + -- a ley network and their associated positions 151 + local net = {} 152 + power = power or 0 153 + 154 + local devices = { 155 + consume = {}; 156 + produce = {}; 157 + signal = {}; 158 + } 159 + local numfound = 0 160 + local maxconduct = 0 161 + local minconduct 162 + local foundp = function(p) 163 + for k in pairs(net) do 164 + if vector.equals(p,k) then return true end 165 + end 166 + return false 167 + end 168 + -- we're implementing this with a recursive function to start with 169 + -- but this could rapidly lead to stack overflows so we should 170 + -- replace it with a linear one at some point 171 + local function find(positions) 172 + local searchnext = {} 173 + for _,pos in pairs(positions) do 174 + for _,p in pairs { 175 + {x = 0, z = 0, y = 0}; 176 + {x = -1, z = 0, y = 0}; 177 + {x = 1, z = 0, y = 0}; 178 + {x = 0, z = -1, y = 0}; 179 + {x = 0, z = 1, y = 0}; 180 + {x = 0, z = 0, y = -1}; 181 + {x = 0, z = 0, y = 1}; 182 + } do local sum = vector.add(pos,p) 183 + if not foundp(sum) then 184 + local nodename = minetest.get_node(sum).name 185 + if minetest.get_item_group(nodename,'sorcery_ley_device') ~= 0 186 + or sorcery.data.compat.ley[nodename] then 187 + local d = sorcery.ley.sample(pos,1,nodename) 188 + assert(d.mode == 'signal' 189 + or d.mode == 'consume' 190 + or d.mode == 'produce') 191 + devices[d.mode][#(devices[d.mode]) + 1] = { 192 + id = nodename; pos = sum; 193 + } 194 + if d.mode == 'signal' then 195 + if d.power > power then 196 + if minconduct then 197 + if d.power < minconduct then 198 + minconduct = d.power 199 + end 200 + else minconduct = d.power end 201 + if d.power > maxconduct then 202 + maxconduct = d.power 203 + end 204 + end 205 + end 206 + numfound = numfound + 1; 207 + net[sum] = nodename; 208 + searchnext[#searchnext + 1] = sum; 209 + end 210 + end 211 + end 212 + end 213 + if #searchnext > 0 then find(searchnext) end 214 + end 215 + 216 + find{startpos} 217 + 218 + if numfound > 0 then 219 + return { 220 + count = numfound; 221 + map = net; 222 + devices = devices; 223 + conduct = { 224 + min = minconduct; 225 + max = maxconduct; 226 + }; 227 + } 228 + else return nil end 229 +end 230 + 231 +do local afftbl = { 232 + [1] = 'praxic'; [2] = 'counterpraxic'; 233 + [3] = 'cognic'; [4] = 'syncretic'; 234 + [5] = 'mandatic'; [6] = 'occlutic'; 235 + [7] = 'imperic'; [8] = 'entropic'; 236 + } 237 + local modetbl = { 238 + [0] = 'none'; 239 + [1] = 'consume'; 240 + [2] = 'produce'; 241 + [3] = 'signal'; 242 + } 243 + for i=1,#afftbl do afftbl [afftbl [i]] = i end 244 + for i=1,#modetbl do modetbl[modetbl[i]] = i end 245 + local m = sorcery.lib.marshal 246 + local enc, dec = m.transcoder { 247 + mode = m.t.u8; 248 + power = m.t.u32; -- power generated/consumed * 10,000 249 + affinity = m.g.array(m.t.u8); -- indexes into afftbl 250 + } 251 + sorcery.ley.encode = function(l) 252 + local idxs = {} 253 + for _,k in pairs(l.affinity) do 254 + idxs[#idxs+1] = afftbl[k] 255 + end 256 + return meta_armor(enc { 257 + mode = modetbl[l.mode]; 258 + power = l.power * 10000; 259 + affinity = idxs; 260 + }, true) 261 + end 262 + sorcery.ley.decode = function(str) 263 + local obj = dec(meta_dearmor(str,true)) 264 + local affs = {} 265 + for _,k in pairs(obj.affinity) do 266 + affs[#affs+1] = afftbl[k] 267 + end 268 + return { 269 + mode = modetbl[obj.mode]; 270 + power = obj.power / 10000.0; 271 + affinity = affs; 272 + } 273 + end 274 +end 275 +sorcery.ley.setnode = function(pos,l) 276 + local meta = minetest.get_node(pos) 277 + meta:set_string('sorcery:ley',sorcery.ley.encode(l)) 278 +end 279 + 280 +sorcery.ley.sample = function(pos,timespan,name) 281 + -- returns how much ley-force can be transmitted by a 282 + -- device over timespan 283 + name = name or minetest.get_node(pos).name 284 + local props = minetest.registered_nodes[name]._sorcery 285 + local callback = props and props.on_leycalc or nil 286 + local p,a,m 287 + if callback then 288 + local gen = callback(pos,timespan) 289 + p = gen.power 290 + a = gen.affinity 291 + m = gen.mode 292 + end 293 + 294 + if not (p and a and m) then 295 + local nm = minetest.get_meta(pos) 296 + if nm:contains('sorcery:ley') then 297 + local l = sorcery.ley.decode(nm:get_string('sorcery:ley')) 298 + p = p or sorcery.ley.field_to_current(l.power,timespan) 299 + a = a or l.affinity 300 + m = m or l.mode 301 + end 302 + end 303 + 304 + if (not (p and a and m)) and props and props.ley then 305 + p = p or sorcery.ley.field_to_current(props.ley.power,timespan) 306 + a = a or props.ley.affinity 307 + m = m or props.ley.mode 308 + end 309 + 310 + if (not (p and a and m)) then 311 + local compat = sorcery.data.compat.ley[name] 312 + if compat then 313 + p = p or sorcery.ley.field_to_current(compat.power,timespan) 314 + a = a or compat.affinity 315 + m = m or compat.mode 316 + end 317 + end 318 + 319 + return { 320 + power = p or 0; 321 + mode = m or 'none'; 322 + affinity = a or {}; 323 + } 324 +end 325 + 326 +sorcery.ley.netcaps = function(pos,timespan,exclude) 327 + local net = sorcery.ley.mapnet(pos) 328 + local maxpower = 0 329 + local freepower = 0 330 + local affs,usedaffs = {},{} 331 + for _,n in pairs(net.devices.produce) do 332 + if not exclude or not vector.equals(n.pos,exclude) then 333 + local ln = sorcery.ley.sample(n.pos,timespan,n.id) 334 + maxpower = maxpower + ln.power 335 + for _,a in pairs(ln.affinity) do 336 + affs[a] = (affs[a] or 0) + 1 337 + end 338 + end 339 + end 340 + freepower = maxpower; 341 + for _,n in pairs(net.devices.consume) do 342 + if not exclude or not vector.equals(n.pos,exclude) then 343 + local ln = sorcery.ley.sample(n.pos,timespan,n.id) 344 + freepower = freepower - ln.power 345 + for _,a in pairs(ln.affinity) do 346 + usedaffs[a] = (usedaffs[a] or 0) + 1 347 + end 348 + end 349 + end 350 + 351 + return { 352 + net = net; 353 + freepower = freepower; 354 + maxpower = maxpower; 355 + affinity = affs; 356 + affinity_balance = usedaffs; 357 + } 358 +end
Modified lib/marshal.lua from [9fd6c4419a] to [30a22c2236].
1 --- minetest provides its own built-in serializer mechanisms. 2 --- however, these leave much to be desired: the first works 3 --- by converting values to *lua source code* and 'deserializes' 4 --- these values by executing it in a mildly sandboxed env. 5 --- it's LSON basically. the other serializer is JSON. clearly 6 --- we need something better. if this was lua 5.3, we'd just 7 --- use string.pack, but alas, they had to use luajit, which 8 --- is stuck on an ancient version because it no longer exists. 9 --- if we built against moonjit, we could use pack, but then 10 --- that would raise compat issues for other users who might 11 --- want to use these mods. so we need to write our own. 1 +-- minetest provides its own built-in serializer mechanisms. however, 2 +-- these leave much to be desired: the first works by converting 3 +-- values to *lua source code* and 'deserializes' these values by 4 +-- executing it in a mildly sandboxed env. it's LSON basically. the 5 +-- other serializer is JSON. clearly we need something better. if this 6 +-- was lua 5.3, we'd just use string.pack, but alas, they had to use 7 +-- luajit, which is stuck on an ancient version because it no longer 8 +-- exists. if we built against moonjit, we could use pack, but then 9 +-- that would raise compat issues for other users who might want to 10 +-- use these mods. so we need to write our own. 11 +-- 12 +-- good news is, it's very easy to do better than both the minetest 13 +-- people and the clowns at PUC-Rio. (if only we had general purpose 14 +-- bitops, it would be even easier) 12 15 -- 13 --- good news is, it's very easy to do better than both the 14 --- minetest people and the clowns at PUC-Rio. (if only we had 15 --- general purpose bitops, it would be even easier) 16 +-- WARNING: when storing binary data in minetest metadata stores, the 17 +-- bytes 0x01-0x03 MUST be avoided or they will break the kvstore 18 +-- format and the item/node's metadata will become corrupt. use the 19 +-- lib.str.meta_{,de}armor functions on the output of pack/unpack to 20 +-- safely store and retrieve data structures from meta storage. 16 21 17 22 local m = { 18 23 err = { 19 24 unmarshalled = { 20 25 exp = 'the bytes passed are not a marshalled data structure'; 21 26 }; 22 27 corrupt = {
Added lib/objstore.lua version [368570196c].
1 +-- marshal provides low-level data marshalling capabilities, but 2 +-- for various reasons it's handy to have a higher-level interface 3 +-- that allows us to register and retrieve data structures from 4 +-- node or item metadata. this library provides that interface. 5 + 6 +-- objstore consists of a single function that returns a structure 7 +-- store. this structure-store should be saved to a variable, and 8 +-- called upon to register or modify attributes. every node or item 9 +-- that contains metadata contains a list of attached structures, 10 +-- which themselves contain a list of attached records. this allows 11 +-- structures to be extended at will without disrupting existing 12 +-- metadata storage. 13 + 14 +-- WARNING: this is likely incompatible with the StorageRef backend, 15 +-- which uses json -- need to figure out how to make the marshalling 16 +-- format compatible 17 + 18 +local lib = sorcery.lib 19 +local m = lib.marshal 20 + 21 +local recpack, recunpack = m.transcoder { 22 + recs = m.g.array(m.g.struct { 23 + id = m.t.str; 24 + data = m.t.blob; 25 + }); 26 +} 27 +return function() { 28 + return { 29 + structs = {}; 30 + register = function(self,id) 31 + local struc = { 32 + id = id; 33 + records = {}; 34 + register_record = function(self,def) 35 + if not records[def.id] then 36 + records[def.id] = def 37 + return true 38 + else 39 + return false 40 + end 41 + end; 42 + _encode = function(self,data) 43 + local obj = {} 44 + for k,v in pairs(records) do 45 + local t = m.transcoder(v.fields) 46 + obj[#obj + 1] = { 47 + id = k; 48 + data = t(data[k]); 49 + } 50 + end 51 + return recpack(obj) 52 + end; 53 + _decode = function(self,str) 54 + end; 55 + _meta = function(self,store) 56 + return { 57 + store = store; 58 + _getall = function(iself) 59 + return self:_decode(lib.str.meta_dearmor(iself.store:get_string('objstore:'..id),true)) 60 + end; 61 + _save = function(iself,obj) 62 + iself.store:set_string('objstore:'..id, lib.str.meta_armor(self:_encode(obj))) 63 + end; 64 + get = function(self,rec) 65 + local recs = recunpack(lib.str.meta_dearmor(self.store:get_string('objstore:'..id),true)) 66 + for _,r in pairs(recs) do 67 + if r.id == rec then 68 + return r 69 + end 70 + end 71 + return nil 72 + end; 73 + merge = function(self,obj) 74 + -- obj should be a table of structure { 75 + -- record_id = { record_field = value; } 76 + -- }, e.g.: 77 + -- sorcery.store.enchantment.merge { 78 + -- spells = { 79 + -- [4] = { id = 'dowse, boost = 15 } 80 + -- } 81 + -- } 82 + local recs = self:_getall() 83 + for rec,flds in pairs(obj) do 84 + for k,v in pairs(flds) do 85 + if not recs[rec] then recs[rec] = {} end 86 + recs[rec][k] = v 87 + end 88 + end 89 + self:_save(recs) 90 + end; 91 + } 92 + end; 93 + item = function(self,stack) 94 + return self:_meta(stack:get_meta()) 95 + end; 96 + node = function(self,pos) 97 + return self:_meta(minetest.get_meta(pos)) 98 + end; 99 + user = function(self,u) 100 + if type(u) == 'string' then 101 + u = minetest.get_player_by_name(u) 102 + end 103 + return self:_meta(u:get_meta()) 104 + end; 105 + } 106 + self.structs[id] = struc; 107 + return struc; 108 + end; 109 + } 110 +}
Modified matreg.lua from [550cf0df14] to [4e7450eef0].
1 1 return { 2 2 lookup = {}; 3 3 tools = { 4 - 'pick'; 'axe'; 'shovel'; 5 - 'sword'; 'hoe'; 4 + pick = { cost = 3; }; 5 + axe = { cost = 3; }; 6 + shovel = { cost = 1; }; 7 + sword = { cost = 2; }; 8 + hoe = { cost = 2; }; 6 9 }; 7 10 armors = { 8 - 'helmet'; 'boots'; 'shield'; 9 - 'chestplate'; 'leggings'; 11 + helmet = { cost = 5 }; 12 + boots = { cost = 4 }; 13 + leggings = { cost = 6 }; 14 + chestplate = { cost = 8 }; 15 + shield = { cost = 7 }; 10 16 }; 11 17 }
Added metallurgy-cold.lua version [c21bb1a7ca].
1 +-- eventually this will need to be a powered node, 2 +-- but for now i'm just overlooking the need for 3 +-- power and making it work for free 4 +local constants = { 5 + mill_refresh = 1; 6 + -- interval at which the mill progress is checked 7 + -- the formspec is updated 8 + 9 + grind_range = 20; 10 + -- maximum difference between the hardness of 11 + -- any two metals in the database 12 + 13 + grind_grace_range = 2; 14 + -- how many levels of hardness a grind head 15 + -- can grind above its own (while taking massive 16 + -- levels of damage) 17 + 18 + grind_grace_penalty = 3; 19 + -- factor by which wear is increased when grinding 20 + -- above your paygrade 21 + 22 + grind_factor = 10; 23 + -- adjusts the amount of time it takes to grind 24 + -- metal into powder 25 + 26 + grind_wear = 2000; 27 + -- amount of damage done to a grind head grinding 28 + -- metal of equal hardness. increased or decreased 29 + -- depending on differential 30 + 31 + grind_torque_factor = 0.1; 32 + -- how many points of hardness translate into how 33 + -- much ley-current needed (per second) 34 + 35 + metal_grindvalue = 4; 36 + -- how many powders an ingot is worth 37 + 38 + default_grindvalue = 1; 39 + -- number of items produced when not otherwise 40 + -- specified 41 + 42 + default_hardness = 1; 43 + -- difficulty to grind an item when not otherwise 44 + -- specified 45 + 46 + metal_grindcost = 1; 47 + -- number of metal items needed to perform a grind 48 +} 49 +local mill_formspec_update = function(pos,pct,stat1,stat2) 50 + -- eventually we'll want to display available 51 + -- energy here, but for now we're just assuming 52 + -- max energy available 53 + 54 + -- local meta = minetest.get_meta(pos) 55 + -- local inv = meta:get_inventory() 56 + -- local torque = 20 57 + stat1 = stat1 or 'off' 58 + minetest.get_meta(pos):set_string('formspec', string.format([[ 59 + size[8,7.2] 60 + list[context;grinder;2.5,1;1,1;0] 61 + list[context;grinder;4.5,1;1,1;1] 62 + list[context;input;3.5,0.2;1,1] 63 + list[context;output;2,2.2;4,1] 64 + image[3.5,1.2;1,1;gui_furnace_arrow_bg.png^[lowpart:%u%%:gui_furnace_arrow_fg.png^[transformR180] 65 + 66 + image[1.6,1.0;1,1;sorcery_statlamp_%s.png] 67 + image[5.4,1.0;1,1;sorcery_statlamp_%s.png] 68 + 69 + image[2.5,1;1,1;sorcery_mill_grindhead_shade.png] 70 + image[4.5,1;1,1;sorcery_mill_grindhead_shade.png] 71 + 72 + list[current_player;main;0,3.5;8,4] 73 + ]], 100*pct, stat1, stat2 or stat1)) 74 +end 75 +local mill_update = function(pos) 76 + minetest.get_node_timer(pos):start(constants.mill_refresh) 77 +end 78 +local mill_fits_in_slot = function(slot,item) 79 + if slot == 'grinder' then 80 + if minetest.get_item_group(item:get_name(), 'sorcery_mill_grindhead')~=0 81 + then return 1 end 82 + elseif slot == 'input' then 83 + local metal = sorcery.data.metallookup[item:get_name()] 84 + local mat = sorcery.matreg.lookup[item:get_name()] 85 + local comp = sorcery.data.compat.grindables[item:get_name()] 86 + if metal or mat.metal or comp then 87 + return item:get_count() 88 + else 89 + local mat = item:get_definition()._matprop 90 + if mat and mat.grindvalue then 91 + return item:get_count() 92 + end 93 + end 94 + end 95 + return 0 96 +end 97 +local matprops = function(item) 98 + local metal = sorcery.data.metallookup[item:get_name()] 99 + if not metal then 100 + -- allow grinding of armor and tools back to their 101 + -- original components 102 + local mat = sorcery.matreg.lookup[item:get_name()] 103 + if mat.metal then 104 + metal = mat 105 + else 106 + return nil 107 + end 108 + end 109 + local mp = item:get_definition()._matprop 110 + or sorcery.data.compat.grindables[item:get_name()] 111 + or {} 112 + 113 + again = true 114 + if metal then mp = { 115 + hardness = metal.data.hardness or mp.hardness or constants.default_hardness; 116 + grindvalue = metal.value or mp.grindvalue or (metal and constants.metal_grindvalue) or constants.default_grindvalue; 117 + powder = metal.data.parts.powder or mp.powder; 118 + grindcost = constants.metal_grindcost or mp.grindcost; -- invariant for metal 119 + } end 120 + 121 + mp.torque = constants.grind_torque_factor * mp.hardness 122 + 123 + if item:get_wear() ~= 0 then 124 + -- prevent cheating by recovering metal from items before they 125 + -- are destroyed 126 + local wearfac = (item:get_wear() / 65535) 127 + mp.grindvalue = math.max(1,math.ceil(mp.grindvalue * wearfac)) 128 + mp.hardness = math.max(1,math.ceil(mp.grindcost * wearfac)) 129 + mp.torque = math.max(1,math.ceil(mp.torque * wearfac)) 130 + end 131 + 132 + return mp 133 +end 134 +minetest.register_node('sorcery:mill',{ 135 + description = 'Mill'; 136 + groups = { 137 + cracky = 2; 138 + sorcery_ley_device = 1; 139 + }; 140 + paramtype2 = 'facedir'; 141 + on_construct = function(pos) 142 + local meta = minetest.get_meta(pos) 143 + local inv = meta:get_inventory() 144 + inv:set_size('input',1) 145 + inv:set_size('output',4) 146 + inv:set_size('grinder',2) 147 + meta:set_float('grindtime',0) 148 + meta:set_int('active',0) 149 + mill_formspec_update(pos, 0) 150 + end; 151 + on_metadata_inventory_put = function(pos,listname) 152 + if listname == 'input' then 153 + minetest.get_meta(pos):set_float('grindtime',0) 154 + end 155 + mill_update(pos) 156 + end; 157 + on_metadata_inventory_take = function(pos,listname) 158 + if listname == 'input' then 159 + minetest.get_meta(pos):set_float('grindtime',0) 160 + end 161 + mill_update(pos) 162 + end; 163 + on_metadata_inventory_move = function(pos,fl,fi,tl,ti) 164 + if fl == 'input' or tl == 'input' then 165 + minetest.get_meta(pos):set_float('grindtime',0) 166 + end 167 + mill_update(pos) 168 + end; 169 + _sorcery = { 170 + ley = { mode = 'consume'; affinity = {'praxic'}}; 171 + on_leyconnect = mill_update; 172 + on_leycalc = function(pos,time) 173 + local meta = minetest.get_meta(pos) 174 + local active = meta:get_int('active') == 1 175 + if not active then return { power = 0; } end 176 + local inv = meta:get_inventory() 177 + local item = inv:get_stack('input',1) 178 + if item:is_empty() then 179 + meta:set_int('active', 0) 180 + return { power = 0; } 181 + end 182 + return { 183 + power = matprops(item).torque * time; 184 + } 185 + end; 186 + }; 187 + on_timer = function(pos,delta) 188 + local meta = minetest.get_meta(pos) 189 + local inv = meta:get_inventory() 190 + local elapsed = meta:get_float('grindtime') + delta 191 + local ley = sorcery.ley.netcaps(pos,delta,pos) 192 + local again = false 193 + local active = false 194 + local reqtime -- sigh 195 + local statcolor = 'off' 196 + local grinders_on 197 + if inv:is_empty('input') or inv:is_empty('grinder') then 198 + print('empty') 199 + elapsed = 0 200 + mill_formspec_update(pos, 0) 201 + else 202 + local item = inv:get_stack('input',1) 203 + local mp = matprops(item) 204 + if mp.grindcost > item:get_count() then 205 + elapsed = 0 206 + mill_formspec_update(pos, 0) 207 + print('bad grindcost') 208 + goto stop 209 + end 210 + 211 + -- print('power supply',ley.maxpower) 212 + -- print('power available',ley.freepower) 213 + -- print('power needed',mp.torque*delta) 214 + if ley.maxpower < (mp.torque * delta) then 215 + -- not enough potential energy in the system to grind 216 + -- so don't bother 217 + print('not enough power') 218 + statcolor = 'red' 219 + elapsed = 0 goto stop 220 + elseif ley.freepower < (mp.torque * delta) then 221 + -- the net has enough potential energy to supply us, 222 + -- but too much of it is in use right now. give up 223 + -- on this round, but try again in a bit to see if 224 + -- more energy is available 225 + print('currently not enough power') 226 + statcolor = 'yellow' 227 + elapsed = 0 again = true goto stop 228 + end 229 + 230 + local grinders = 0 231 + local grindpower = 0 232 + local grind_wear = {} 233 + local grinders_present = false 234 + grinders_on = {false,false} 235 + for i=1,inv:get_size('grinder') do 236 + local gh = inv:get_stack('grinder',i) 237 + if not gh:is_empty() then 238 + grinders_present = true 239 + local hh = sorcery.data.metals[gh:get_definition()._proto.metal].hardness 240 + local dif = mp.hardness - hh 241 + local wear 242 + if dif == 0 then 243 + wear = constants.grind_wear 244 + elseif dif < 0 then 245 + wear = constants.grind_wear * ((dif * -1)/constants.grind_range) 246 + elseif dif > 0 then 247 + if dif > constants.grind_grace_range then 248 + wear = 0 249 + print('grinder reject') 250 + goto reject 251 + else 252 + wear = constants.grind_wear * (1 + (dif/constants.grind_range)) * constants.grind_grace_penalty 253 + end 254 + end 255 + ::accept:: grinders = grinders + 1 256 + grindpower = grindpower + hh 257 + grinders_on[i] = true 258 + ::reject:: grind_wear[i] = wear 259 + end 260 + end 261 + if grinders == 0 then 262 + if grinders_present then 263 + statcolor = 'purple' 264 + end 265 + elapsed = 0 266 + mill_formspec_update(pos, 0) 267 + else 268 + active = true again = true 269 + if grindpower < mp.hardness then 270 + statcolor = 'yellow' 271 + else statcolor='green' end 272 + grindpower = grindpower / grinders 273 + -- if there is more power available than needed, 274 + -- and/or if the blades are stronger than needed, 275 + -- speed up the grind 276 + local speedboost = math.max(0.05,((grindpower - mp.hardness)/constants.grind_range) * grinders) * ((mp.torque * delta) / ley.freepower) 277 + reqtime = mp.grindvalue * mp.hardness * constants.grind_factor * (1-speedboost) 278 + if elapsed >= reqtime then 279 + item:take_item(mp.grindcost) 280 + inv:set_stack('input',1,item) 281 + local pw = ItemStack{ 282 + name=mp.powder; 283 + count=mp.grindvalue; 284 + } 285 + if inv:room_for_item('output',pw) then 286 + inv:add_item('output',pw) 287 + else 288 + minetest.add_item(pos,pw) 289 + end 290 + elapsed = 0 291 + for i,d in pairs(grind_wear) do 292 + local item = inv:get_stack('grinder',i) 293 + item:add_wear(grind_wear[i]) 294 + inv:set_stack('grinder',i,item) 295 + end 296 + end 297 + end 298 + end 299 + 300 + ::stop:: meta:set_float('grindtime',elapsed) 301 + local sc1, sc2 = 'off','off' 302 + if grinders_on then 303 + sc1 = grinders_on[1] and statcolor or sc1 304 + sc2 = grinders_on[2] and statcolor or sc2 305 + else 306 + sc1 = statcolor sc2=sc1 307 + end 308 + mill_formspec_update(pos, active and (elapsed/reqtime) or 0, sc1,sc2) 309 + meta:set_int('active',active and 1 or 0) 310 + return again 311 + end; 312 + allow_metadata_inventory_put = function(pos,list,idx,stack,user) 313 + return mill_fits_in_slot(list,stack) end; 314 + allow_metadata_inventory_move = function(pos,fromlist,fromidx,tolist,toidx,count,user) 315 + local meta = minetest.get_meta(pos) 316 + local inv = meta:get_inventory() 317 + local stack = inv:get_stack(fromlist,fromidx) 318 + return mill_fits_in_slot(tolist,stack) 319 + end; 320 + tiles = { 321 + 'sorcery_mill_top.png^[transformR90'; 322 + 'sorcery_mill_bottom.png'; 323 + 'sorcery_mill_side.png'; 324 + 'sorcery_mill_side.png'; 325 + 'sorcery_mill_back.png'; 326 + 'sorcery_mill_front.png'; 327 + }; 328 +}) 329 +minetest.register_craft { 330 + output = 'sorcery:mill'; 331 + recipe = { 332 + {'basic_materials:chain_steel','basic_materials:gear_steel','basic_materials:chain_steel'}; 333 + {'basic_materials:gear_steel', 'basic_materials:steel_bar', 'basic_materials:gear_steel'}; 334 + {'default:tin_ingot','default:steelblock','default:tin_ingot'}; 335 + }; 336 +} 337 +for name,metal in pairs(sorcery.data.metals) do 338 + local i,f = metal.parts.ingot, metal.parts.fragment 339 + local id = 'sorcery:mill_grindhead_' .. name 340 + minetest.register_tool(id,{ 341 + description = sorcery.lib.str.capitalize(name) .. ' Grinding Head'; 342 + inventory_image = sorcery.lib.image('sorcery_mill_grindhead.png'):multiply(sorcery.lib.color(metal.tone)):render(); 343 + groups = { sorcery_mill_grindhead = 1 }; 344 + _proto = { 345 + metal = name; 346 + }; 347 + }); 348 + minetest.register_craft { 349 + output = id; 350 + recipe = { 351 + {f,i,f}; 352 + {i,i,i}; 353 + {f,i,f}; 354 + }; 355 + } 356 +end
Added models/sorcery-condenser.obj version [f7a7a6bd75].
1 +# Blender v2.82 (sub 7) OBJ File: 'condenser.blend' 2 +# www.blender.org 3 +mtllib sorcery-condenser.mtl 4 +o Cube.011_Cube.013 5 +v 0.418477 0.868714 -0.028534 6 +v 0.418477 0.976405 -0.028534 7 +v 0.418477 0.976405 0.091016 8 +v 0.418477 0.868714 0.091016 9 +v 0.298928 0.868714 0.091016 10 +v 0.298928 0.976405 0.091016 11 +v 0.298928 0.976405 -0.028534 12 +v 0.298928 0.868714 -0.028534 13 +v -0.312736 0.868714 -0.028534 14 +v -0.312736 0.976405 -0.028534 15 +v -0.312736 0.976405 0.091016 16 +v -0.312736 0.868714 0.091016 17 +v -0.432286 0.868714 0.091016 18 +v -0.432286 0.976405 0.091016 19 +v -0.432286 0.976405 -0.028534 20 +v -0.432286 0.868714 -0.028534 21 +vt 0.000000 1.000000 22 +vt 0.000000 0.000000 23 +vt 1.000000 0.000000 24 +vt 1.000000 1.000000 25 +vt 0.000000 1.000000 26 +vt 1.000000 1.000000 27 +vt 1.000000 0.000000 28 +vt 0.000000 0.000000 29 +vt 1.000000 0.049599 30 +vt 0.000000 0.049599 31 +vt 0.000000 0.950401 32 +vt 1.000000 0.950401 33 +vt 0.000000 0.049599 34 +vt 1.000000 0.049599 35 +vt 1.000000 0.950401 36 +vt 0.000000 0.950401 37 +vt 1.000000 0.049599 38 +vt 1.000000 0.950401 39 +vt 0.000000 0.049599 40 +vt 0.000000 0.950401 41 +vt 1.000000 0.049599 42 +vt 0.000000 0.049599 43 +vt 0.000000 0.950401 44 +vt 1.000000 0.950401 45 +vt 0.000000 0.049599 46 +vt 1.000000 0.049599 47 +vt 1.000000 0.950401 48 +vt 0.000000 0.950401 49 +vt 1.000000 0.049599 50 +vt 1.000000 0.950401 51 +vt 0.000000 0.049599 52 +vt 0.000000 0.950401 53 +vt 0.000000 1.000000 54 +vt 1.000000 1.000000 55 +vt 1.000000 0.000000 56 +vt 0.000000 0.000000 57 +vt 0.000000 1.000000 58 +vt 0.000000 0.000000 59 +vt 1.000000 0.000000 60 +vt 1.000000 1.000000 61 +vn 0.0000 1.0000 0.0000 62 +vn 0.0000 -1.0000 0.0000 63 +vn 0.0000 0.0000 -1.0000 64 +vn 0.0000 0.0000 1.0000 65 +vn -1.0000 0.0000 0.0000 66 +vn 1.0000 0.0000 0.0000 67 +g Cube.011_Cube.013_gem.002 68 +usemtl gem.002 69 +s off 70 +f 7/1/1 6/2/1 3/3/1 2/4/1 71 +f 8/5/2 1/6/2 4/7/2 5/8/2 72 +f 1/9/3 8/10/3 7/11/3 2/12/3 73 +f 5/13/4 4/14/4 3/15/4 6/16/4 74 +f 8/17/5 5/13/5 6/16/5 7/18/5 75 +f 4/19/6 1/9/6 2/12/6 3/20/6 76 +f 9/21/3 16/22/3 15/23/3 10/24/3 77 +f 13/25/4 12/26/4 11/27/4 14/28/4 78 +f 16/29/5 13/25/5 14/28/5 15/30/5 79 +f 12/31/6 9/21/6 10/24/6 11/32/6 80 +f 16/33/2 9/34/2 12/35/2 13/36/2 81 +f 15/37/1 14/38/1 11/39/1 10/40/1 82 +o Cube.006_Cube.014 83 +v -0.355575 -0.374496 0.375744 84 +v -0.355575 0.366792 0.375744 85 +v -0.355575 -0.374496 -0.365544 86 +v -0.355575 0.366792 -0.365544 87 +v 0.385712 -0.374496 0.375744 88 +v 0.385712 0.366792 0.375744 89 +v 0.385712 -0.374496 -0.365544 90 +v 0.385712 0.366792 -0.365544 91 +v -0.355575 -0.172402 0.375744 92 +v -0.355575 -0.060035 0.375744 93 +v -0.355575 0.052332 0.375744 94 +v -0.355575 0.164699 0.375744 95 +v -0.355575 0.164699 -0.365544 96 +v -0.355575 0.052332 -0.365544 97 +v -0.355575 -0.060035 -0.365544 98 +v -0.355575 -0.172402 -0.365544 99 +v 0.385712 0.164699 -0.365544 100 +v 0.385712 0.052332 -0.365544 101 +v 0.385712 -0.060035 -0.365544 102 +v 0.385712 -0.172402 -0.365544 103 +v 0.385712 0.164699 0.375744 104 +v 0.385712 0.052332 0.375744 105 +v 0.385712 -0.060035 0.375744 106 +v 0.385712 -0.172402 0.375744 107 +v -0.191901 0.366792 0.212070 108 +v -0.191901 0.366792 -0.201870 109 +v 0.222039 0.366792 -0.201870 110 +v 0.222039 0.366792 0.212070 111 +v -0.191901 0.455314 0.212070 112 +v -0.191901 0.455314 -0.201870 113 +v 0.222039 0.455314 -0.201870 114 +v 0.222039 0.455314 0.212070 115 +v -0.143424 0.455314 0.136294 116 +v -0.143424 0.455314 -0.126094 117 +v 0.173561 0.455314 -0.126094 118 +v 0.173561 0.455314 0.136294 119 +v -0.143424 0.433864 0.136294 120 +v -0.143424 0.433864 -0.126094 121 +v 0.173561 0.433864 -0.126094 122 +v 0.173561 0.433864 0.136294 123 +vt 0.000000 0.863964 124 +vt 0.000000 1.000000 125 +vt 1.000000 1.000000 126 +vt 1.000000 0.863964 127 +vt 0.000000 0.863964 128 +vt 0.000000 1.000000 129 +vt 1.000000 1.000000 130 +vt 1.000000 0.863964 131 +vt 0.000000 1.000000 132 +vt 0.000000 0.863964 133 +vt 1.000000 0.863964 134 +vt 1.000000 1.000000 135 +vt 0.000000 0.500000 136 +vt 1.000000 0.500000 137 +vt 1.000000 0.000000 138 +vt 0.000000 0.000000 139 +vt 1.000000 0.500000 140 +vt -0.000000 0.500000 141 +vt 0.220797 0.389602 142 +vt 0.779203 0.389602 143 +vt 1.000000 0.501014 144 +vt 1.000000 0.637049 145 +vt 0.000000 0.637049 146 +vt 0.000000 0.501014 147 +vt 1.000000 0.712688 148 +vt 1.000000 0.788326 149 +vt 0.000000 0.788326 150 +vt 0.000000 0.712688 151 +vt 1.000000 0.501014 152 +vt 1.000000 0.637049 153 +vt 0.000000 0.637049 154 +vt 0.000000 0.501014 155 +vt 1.000000 0.712688 156 +vt 1.000000 0.788326 157 +vt 0.000000 0.788326 158 +vt 0.000000 0.712688 159 +vt 0.000000 0.501014 160 +vt 0.000000 0.637049 161 +vt 0.000000 0.712688 162 +vt 0.000000 0.788326 163 +vt 1.000000 0.637049 164 +vt 1.000000 0.501014 165 +vt 1.000000 0.788326 166 +vt 1.000000 0.712688 167 +vt 0.625000 0.750000 168 +vt 0.625000 0.500000 169 +vt 0.625000 0.500000 170 +vt 0.625000 0.750000 171 +vt 1.000000 0.000000 172 +vt 0.779203 0.110398 173 +vt -0.000000 0.000000 174 +vt 0.220797 0.110398 175 +vt 0.625000 1.000000 176 +vt 0.625000 0.750000 177 +vt 0.625000 1.000000 178 +vt 0.625000 0.250000 179 +vt 0.625000 0.000000 180 +vt 0.625000 0.000000 181 +vt 0.625000 0.250000 182 +vt 0.625000 1.000000 183 +vt 0.625000 0.500000 184 +vt 0.625000 0.250000 185 +vt 0.625000 0.250000 186 +vt 0.625000 0.500000 187 +vt 0.625000 0.000000 188 +vt 0.875000 0.500000 189 +vt 0.875000 0.750000 190 +vt 0.625000 0.750000 191 +vt 0.625000 0.000000 192 +vt 0.625000 1.000000 193 +vn -1.0000 0.0000 0.0000 194 +vn 0.0000 0.0000 -1.0000 195 +vn 1.0000 0.0000 0.0000 196 +vn 0.0000 0.0000 1.0000 197 +vn 0.0000 -1.0000 0.0000 198 +vn 0.0000 1.0000 -0.0000 199 +g Cube.006_Cube.014_conduit.001 200 +usemtl conduit.001 201 +s off 202 +f 28/41/7 18/42/7 20/43/7 29/44/7 203 +f 29/45/8 20/46/8 24/47/8 33/48/8 204 +f 33/48/9 24/47/9 22/49/9 37/50/9 205 +f 37/51/10 22/52/10 18/42/10 28/41/10 206 +f 19/53/11 23/54/11 21/55/11 17/56/11 207 +f 24/57/12 20/58/12 42/59/12 43/60/12 208 +f 21/61/10 40/62/10 25/63/10 17/64/10 209 +f 39/65/10 38/66/10 27/67/10 26/68/10 210 +f 23/69/9 36/70/9 40/71/9 21/72/9 211 +f 35/73/9 34/74/9 38/75/9 39/76/9 212 +f 19/77/8 32/78/8 36/70/8 23/69/8 213 +f 31/79/8 30/80/8 34/74/8 35/73/8 214 +f 17/64/7 25/63/7 32/81/7 19/82/7 215 +f 26/68/7 27/67/7 30/83/7 31/84/7 216 +f 44/85/9 43/86/9 47/87/9 48/88/9 217 +f 22/89/12 24/57/12 43/60/12 44/90/12 218 +f 20/58/12 18/91/12 41/92/12 42/59/12 219 +f 18/91/12 22/89/12 44/90/12 41/92/12 220 +f 45/93/12 48/88/12 52/94/12 49/95/12 221 +f 42/96/7 41/97/7 45/98/7 46/99/7 222 +f 41/100/10 44/85/10 48/88/10 45/93/10 223 +f 43/86/8 42/96/8 46/99/8 47/87/8 224 +f 51/101/10 50/102/10 54/103/10 55/104/10 225 +f 47/87/12 46/99/12 50/102/12 51/101/12 226 +f 48/88/12 47/87/12 51/101/12 52/94/12 227 +f 46/99/12 45/98/12 49/105/12 50/102/12 228 +f 55/104/12 54/106/12 53/107/12 56/108/12 229 +f 52/94/7 51/101/7 55/104/7 56/108/7 230 +f 50/102/9 49/105/9 53/109/9 54/103/9 231 +f 49/95/8 52/94/8 56/108/8 53/110/8 232 +f 37/50/11 28/41/11 29/45/11 33/48/11 233 +f 39/76/11 26/68/11 31/79/11 35/73/11 234 +f 38/75/12 34/74/12 30/80/12 27/67/12 235 +f 40/71/12 36/70/12 32/78/12 25/63/12 236 +o Cube.007_Cube.015 237 +v -0.355575 -0.172402 0.375744 238 +v -0.355575 -0.060035 0.375744 239 +v -0.355575 0.052332 0.375744 240 +v -0.355575 0.164699 0.375744 241 +v -0.355575 0.164699 -0.365544 242 +v -0.355575 0.052332 -0.365544 243 +v -0.355575 -0.060035 -0.365544 244 +v -0.355575 -0.172402 -0.365544 245 +v 0.385712 0.164699 -0.365544 246 +v 0.385712 0.052332 -0.365544 247 +v 0.385712 -0.060035 -0.365544 248 +v 0.385712 -0.172402 -0.365544 249 +v 0.385712 0.164699 0.375744 250 +v 0.385712 0.052332 0.375744 251 +v 0.385712 -0.060035 0.375744 252 +v 0.385712 -0.172402 0.375744 253 +v -0.443295 -0.172402 0.425633 254 +v -0.443295 -0.060035 0.425633 255 +v -0.443295 0.052332 0.425633 256 +v -0.443295 0.164699 0.425633 257 +v -0.443295 0.164699 -0.415433 258 +v -0.443295 0.052332 -0.415433 259 +v -0.443295 -0.060035 -0.415433 260 +v -0.443295 -0.172402 -0.415433 261 +v 0.473433 0.164699 -0.415433 262 +v 0.473433 0.052332 -0.415433 263 +v 0.473433 -0.060035 -0.415433 264 +v 0.473433 -0.172402 -0.415433 265 +v 0.473433 0.164699 0.425633 266 +v 0.473433 0.052332 0.425633 267 +v 0.473433 -0.060035 0.425633 268 +v 0.473433 -0.172402 0.425633 269 +v -0.116462 0.499773 -0.053556 270 +v 0.116462 0.499773 0.116196 271 +v 0.116462 0.499773 -0.053556 272 +v -0.116462 0.499773 0.116196 273 +v -0.116462 0.433792 -0.053556 274 +v 0.116462 0.433792 0.116196 275 +v 0.116462 0.433792 -0.053556 276 +v -0.116462 0.433792 0.116196 277 +v -0.071082 0.677987 0.102438 278 +v -0.071082 0.677987 -0.039956 279 +v 0.071311 0.677987 0.102438 280 +v 0.071311 0.677987 -0.039956 281 +v -0.032865 0.714147 0.064220 282 +v -0.032865 0.714147 -0.001739 283 +v 0.033094 0.714147 -0.001739 284 +v 0.033094 0.714147 0.064220 285 +v -0.032865 1.130972 0.064220 286 +v -0.032865 1.130972 -0.001739 287 +v 0.033094 1.130972 -0.001739 288 +v 0.033094 1.130972 0.064220 289 +v 0.033094 0.868714 -0.001739 290 +v 0.033094 0.976405 -0.001739 291 +v 0.033094 0.976405 0.064220 292 +v 0.033094 0.868714 0.064220 293 +v -0.032865 0.868714 0.064220 294 +v -0.032865 0.976405 0.064220 295 +v -0.032865 0.976405 -0.001739 296 +v -0.032865 0.868714 -0.001739 297 +v 0.287505 0.677987 0.102438 298 +v 0.287505 0.677987 -0.039956 299 +v 0.429899 0.677987 0.102438 300 +v 0.429899 0.677987 -0.039956 301 +v 0.325723 0.714147 0.064220 302 +v 0.325723 0.714147 -0.001739 303 +v 0.391682 0.714147 -0.001739 304 +v 0.391682 0.714147 0.064220 305 +v 0.325723 1.130972 0.064220 306 +v 0.325723 1.130972 -0.001739 307 +v 0.391682 1.130972 -0.001739 308 +v 0.391682 1.130972 0.064220 309 +v 0.391682 0.868714 -0.001739 310 +v 0.391682 0.976405 -0.001739 311 +v 0.391682 0.976405 0.064220 312 +v 0.391682 0.868714 0.064220 313 +v 0.325723 0.868714 0.064220 314 +v 0.325723 0.976405 0.064220 315 +v 0.325723 0.976405 -0.001739 316 +v 0.325723 0.868714 -0.001739 317 +v -0.443708 0.677987 0.102438 318 +v -0.443708 0.677987 -0.039956 319 +v -0.301314 0.677987 0.102438 320 +v -0.301314 0.677987 -0.039956 321 +v -0.405491 0.714147 0.064220 322 +v -0.405491 0.714147 -0.001739 323 +v -0.339532 0.714147 -0.001739 324 +v -0.339532 0.714147 0.064220 325 +v -0.405491 1.130972 0.064220 326 +v -0.405491 1.130972 -0.001739 327 +v -0.339532 1.130972 -0.001739 328 +v -0.339532 1.130972 0.064220 329 +v -0.339532 0.868714 -0.001739 330 +v -0.339532 0.976405 -0.001739 331 +v -0.339532 0.976405 0.064220 332 +v -0.339532 0.868714 0.064220 333 +v -0.405491 0.868714 0.064220 334 +v -0.405491 0.976405 0.064220 335 +v -0.405491 0.976405 -0.001739 336 +v -0.405491 0.868714 -0.001739 337 +vt 0.095689 0.904311 338 +vt 0.095689 0.095689 339 +vt 0.000000 0.041267 340 +vt 0.000000 0.958733 341 +vt 0.904311 0.095689 342 +vt 0.904311 0.904311 343 +vt 1.000000 0.958733 344 +vt 1.000000 0.041267 345 +vt 0.095689 0.095689 346 +vt 0.095689 0.904311 347 +vt 0.000000 0.958733 348 +vt 0.000000 0.041267 349 +vt 0.904311 0.904311 350 +vt 0.904311 0.095689 351 +vt 1.000000 0.041267 352 +vt 1.000000 0.958733 353 +vt 0.095689 0.904311 354 +vt 0.095689 0.095689 355 +vt 0.000000 0.041267 356 +vt 0.000000 0.958733 357 +vt 0.904311 0.095689 358 +vt 0.904311 0.904311 359 +vt 1.000000 0.958733 360 +vt 1.000000 0.041267 361 +vt 0.095689 0.904311 362 +vt 0.904311 0.904311 363 +vt 1.000000 0.958733 364 +vt 0.000000 0.958733 365 +vt 0.904311 0.095689 366 +vt 0.095689 0.095689 367 +vt 0.000000 0.041267 368 +vt 1.000000 0.041267 369 +vt 1.000000 0.316139 370 +vt 1.000000 0.438713 371 +vt 0.000000 0.438713 372 +vt 0.000000 0.316139 373 +vt 1.000000 0.561287 374 +vt 1.000000 0.683861 375 +vt 0.000000 0.683861 376 +vt 0.000000 0.561287 377 +vt 0.958733 0.316139 378 +vt 0.958733 0.438713 379 +vt 0.041267 0.438713 380 +vt 0.041267 0.316139 381 +vt 0.958733 0.561287 382 +vt 0.958733 0.683861 383 +vt 0.041267 0.683861 384 +vt 0.041267 0.561287 385 +vt 0.000000 0.316139 386 +vt 0.000000 0.438713 387 +vt 1.000000 0.438713 388 +vt 1.000000 0.316139 389 +vt 0.000000 0.561287 390 +vt 0.000000 0.683861 391 +vt 1.000000 0.683861 392 +vt 1.000000 0.561287 393 +vt 0.041267 0.316139 394 +vt 0.041267 0.438713 395 +vt 0.958733 0.438713 396 +vt 0.958733 0.316139 397 +vt 0.041267 0.561287 398 +vt 0.041267 0.683861 399 +vt 0.958733 0.683861 400 +vt 0.958733 0.561287 401 +vt 0.273833 0.216173 402 +vt 0.273833 0.783827 403 +vt 0.726167 0.783827 404 +vt 0.726167 0.216173 405 +vt 0.189666 0.216173 406 +vt 0.189666 0.783827 407 +vt 0.810334 0.783827 408 +vt 0.810334 0.216173 409 +vt 0.810334 0.216174 410 +vt 0.810334 0.783827 411 +vt 0.189666 0.783827 412 +vt 0.189666 0.216173 413 +vt 0.726167 0.216173 414 +vt 0.726167 0.783827 415 +vt 0.273833 0.783827 416 +vt 0.273833 0.216174 417 +vt 0.125000 0.500000 418 +vt 0.375000 0.500000 419 +vt 0.375000 0.750000 420 +vt 0.125000 0.750000 421 +vt 0.420879 0.573624 422 +vt 0.579121 0.573624 423 +vt 0.579121 0.944444 424 +vt 0.420879 0.944444 425 +vt 0.579121 0.579121 426 +vt 0.420879 0.579121 427 +vt 0.420879 0.420879 428 +vt 0.579121 0.420879 429 +vt 0.579121 0.573624 430 +vt 0.420879 0.573624 431 +vt 0.420879 0.944444 432 +vt 0.579121 0.944444 433 +vt 0.579121 0.573624 434 +vt 0.579121 0.944444 435 +vt 0.420879 0.573624 436 +vt 0.420879 0.944444 437 +vt 0.579121 -0.055555 438 +vt 0.420879 -0.055555 439 +vt 0.420879 0.315265 440 +vt 0.579121 0.315265 441 +vt 0.420879 -0.055555 442 +vt 0.579121 -0.055555 443 +vt 0.579121 0.315265 444 +vt 0.420879 0.315265 445 +vt 0.579121 -0.055555 446 +vt 0.579121 0.315265 447 +vt 0.420879 -0.055555 448 +vt 0.420879 0.315265 449 +vt 0.125000 0.500000 450 +vt 0.375000 0.500000 451 +vt 0.375000 0.750000 452 +vt 0.125000 0.750000 453 +vt 0.420879 0.573624 454 +vt 0.579121 0.573624 455 +vt 0.579121 0.944444 456 +vt 0.420879 0.944444 457 +vt 0.579121 0.579121 458 +vt 0.420879 0.579121 459 +vt 0.420879 0.420879 460 +vt 0.579121 0.420879 461 +vt 0.579121 0.573624 462 +vt 0.420879 0.573624 463 +vt 0.420879 0.944444 464 +vt 0.579121 0.944444 465 +vt 0.579121 0.573624 466 +vt 0.579121 0.944444 467 +vt 0.420879 0.573624 468 +vt 0.420879 0.944444 469 +vt 0.579121 -0.055555 470 +vt 0.420879 -0.055555 471 +vt 0.420879 0.315265 472 +vt 0.579121 0.315265 473 +vt 0.420879 -0.055555 474 +vt 0.579121 -0.055555 475 +vt 0.579121 0.315265 476 +vt 0.420879 0.315265 477 +vt 0.579121 -0.055555 478 +vt 0.579121 0.315265 479 +vt 0.420879 -0.055555 480 +vt 0.420879 0.315265 481 +vt 0.125000 0.500000 482 +vt 0.375000 0.500000 483 +vt 0.375000 0.750000 484 +vt 0.125000 0.750000 485 +vt 0.420879 0.573624 486 +vt 0.579121 0.573624 487 +vt 0.579121 0.944444 488 +vt 0.420879 0.944444 489 +vt 0.579121 0.579121 490 +vt 0.420879 0.579121 491 +vt 0.420879 0.420879 492 +vt 0.579121 0.420879 493 +vt 0.579121 0.573624 494 +vt 0.420879 0.573624 495 +vt 0.420879 0.944444 496 +vt 0.579121 0.944444 497 +vt 0.579121 0.573624 498 +vt 0.579121 0.944444 499 +vt 0.420879 0.573624 500 +vt 0.420879 0.944444 501 +vt 0.579121 -0.055555 502 +vt 0.420879 -0.055555 503 +vt 0.420879 0.315265 504 +vt 0.579121 0.315265 505 +vt 0.420879 -0.055555 506 +vt 0.579121 -0.055555 507 +vt 0.579121 0.315265 508 +vt 0.420879 0.315265 509 +vt 0.579121 -0.055555 510 +vt 0.579121 0.315265 511 +vt 0.420879 -0.055555 512 +vt 0.420879 0.315265 513 +vn 0.0000 -1.0000 0.0000 514 +vn 0.0000 1.0000 -0.0000 515 +vn 0.0000 0.0000 1.0000 516 +vn 1.0000 0.0000 0.0000 517 +vn 0.0000 0.0000 -1.0000 518 +vn -1.0000 0.0000 0.0000 519 +vn 0.0000 -0.4058 -0.9140 520 +g Cube.007_Cube.015_tin.001 521 +usemtl tin.001 522 +s off 523 +f 62/111/13 59/112/13 75/113/13 78/114/13 524 +f 70/115/13 66/116/13 82/117/13 86/118/13 525 +f 58/119/14 63/120/14 79/121/14 74/122/14 526 +f 67/123/14 71/124/14 87/125/14 83/126/14 527 +f 64/127/13 57/128/13 73/129/13 80/130/13 528 +f 72/131/13 68/132/13 84/133/13 88/134/13 529 +f 61/135/14 65/136/14 81/137/14 77/138/14 530 +f 69/139/14 60/140/14 76/141/14 85/142/14 531 +f 88/143/15 87/144/15 74/145/15 73/146/15 532 +f 86/147/15 85/148/15 76/149/15 75/150/15 533 +f 84/151/16 83/152/16 87/153/16 88/154/16 534 +f 82/155/16 81/156/16 85/157/16 86/158/16 535 +f 80/159/17 79/160/17 83/161/17 84/162/17 536 +f 78/163/17 77/164/17 81/165/17 82/166/17 537 +f 73/167/18 74/168/18 79/169/18 80/170/18 538 +f 75/171/18 76/172/18 77/173/18 78/174/18 539 +f 65/136/14 69/139/14 85/142/14 81/137/14 540 +f 57/128/13 72/131/13 88/134/13 73/129/13 541 +f 60/140/14 61/135/14 77/138/14 76/141/14 542 +f 68/132/13 64/127/13 80/130/13 84/133/13 543 +f 71/124/14 58/119/14 74/122/14 87/125/14 544 +f 63/120/14 67/123/14 83/126/14 79/121/14 545 +f 59/112/13 70/115/13 86/118/13 75/113/13 546 +f 66/116/13 62/111/13 78/114/13 82/117/13 547 +f 96/175/18 92/176/18 89/177/18 93/178/18 548 +f 93/179/17 89/180/17 91/181/17 95/182/17 549 +f 94/183/15 90/184/15 92/185/15 96/186/15 550 +f 95/187/16 91/188/16 90/189/16 94/190/16 551 +f 95/182/13 94/183/13 96/175/13 93/179/13 552 +f 98/191/13 100/192/13 99/193/13 97/194/13 553 +f 111/195/16 110/196/16 107/197/16 108/198/16 554 +f 107/199/14 106/200/14 105/201/14 108/202/14 555 +f 115/203/18 114/204/18 105/205/18 106/206/18 556 +f 114/204/15 111/207/15 108/208/15 105/205/15 557 +f 110/196/17 115/209/17 106/210/17 107/197/17 558 +f 103/211/17 102/212/17 116/213/17 109/214/17 559 +f 101/215/15 104/216/15 112/217/15 113/218/15 560 +f 102/219/18 101/215/18 113/218/18 116/220/18 561 +f 104/221/16 103/211/16 109/214/16 112/222/16 562 +f 118/223/13 120/224/13 119/225/13 117/226/13 563 +f 131/227/16 130/228/16 127/229/16 128/230/16 564 +f 127/231/14 126/232/14 125/233/14 128/234/14 565 +f 135/235/18 134/236/18 125/237/18 126/238/18 566 +f 134/236/15 131/239/15 128/240/15 125/237/15 567 +f 130/228/17 135/241/17 126/242/17 127/229/17 568 +f 123/243/17 122/244/17 136/245/17 129/246/17 569 +f 121/247/15 124/248/15 132/249/15 133/250/15 570 +f 122/251/18 121/247/18 133/250/18 136/252/18 571 +f 124/253/16 123/243/16 129/246/16 132/254/16 572 +f 138/255/13 140/256/13 139/257/13 137/258/13 573 +f 151/259/16 150/260/16 147/261/16 148/262/16 574 +f 147/263/14 146/264/14 145/265/14 148/266/14 575 +f 155/267/18 154/268/18 145/269/18 146/270/18 576 +f 154/268/15 151/271/15 148/272/15 145/269/15 577 +f 150/260/17 155/273/17 146/274/17 147/261/17 578 +f 143/275/17 142/276/17 156/277/17 149/278/17 579 +f 141/279/15 144/280/15 152/281/15 153/282/15 580 +f 142/283/18 141/279/18 153/282/18 156/284/18 581 +f 144/285/16 143/275/16 149/278/16 152/286/16 582 +f 70/115/18 69/139/18 65/136/18 66/116/18 583 +f 66/116/15 65/136/15 61/135/15 62/111/15 584 +f 62/111/16 61/135/16 60/140/16 59/112/16 585 +f 64/127/16 63/120/16 58/119/16 57/128/16 586 +f 68/132/15 67/123/15 63/120/15 64/127/15 587 +f 72/131/18 71/124/18 67/123/18 68/132/18 588 +f 88/143/19 73/146/19 58/119/19 71/124/19 589 +f 57/128/17 58/119/17 71/124/17 72/131/17 590 +f 59/112/17 60/140/17 69/139/17 70/115/17 591 +f 101/215/13 102/212/13 103/211/13 104/216/13 592 +f 121/247/13 122/244/13 123/243/13 124/248/13 593 +f 141/279/13 142/276/13 143/275/13 144/280/13 594 +f 136/252/14 133/250/14 132/249/14 129/246/14 595 +f 116/220/14 113/218/14 112/217/14 109/214/14 596 +f 156/284/14 153/282/14 152/281/14 149/278/14 597 +f 155/267/13 150/260/13 151/271/13 154/268/13 598 +f 115/203/13 110/196/13 111/207/13 114/204/13 599 +f 135/235/13 130/228/13 131/239/13 134/236/13 600 +f 92/185/14 90/184/14 91/188/14 89/180/14 601 +o Cube.008_Cube.016 602 +v -0.501270 0.679368 -0.120365 603 +v 0.501270 0.679368 -0.120365 604 +v -0.501270 0.679368 0.183006 605 +v 0.501270 0.679368 0.183006 606 +v -0.501270 0.499773 -0.120365 607 +v 0.501270 0.499773 0.183006 608 +v 0.501270 0.499773 -0.120365 609 +v -0.501270 0.499773 0.183006 610 +vt 0.000000 0.728785 611 +vt 0.000000 0.271215 612 +vt 1.000000 0.271215 613 +vt 1.000000 0.728785 614 +vt 0.728785 0.425711 615 +vt 0.728785 0.648579 616 +vt 0.271215 0.648579 617 +vt 0.271215 0.425711 618 +vt 1.000000 0.425711 619 +vt 1.000000 0.648579 620 +vt 0.000000 0.648579 621 +vt 0.000000 0.425711 622 +vt 0.000000 0.425711 623 +vt 0.000000 0.648579 624 +vt 1.000000 0.648579 625 +vt 1.000000 0.425711 626 +vt 0.271215 0.425711 627 +vt 0.271215 0.648579 628 +vt 0.728785 0.648579 629 +vt 0.728785 0.425711 630 +vt -0.015031 0.322545 631 +vt -0.015031 0.625147 632 +vt 0.984969 0.625147 633 +vt 0.984969 0.322545 634 +vn 0.0000 1.0000 -0.0000 635 +vn 1.0000 0.0000 0.0000 636 +vn 0.0000 0.0000 1.0000 637 +vn 0.0000 0.0000 -1.0000 638 +vn -1.0000 0.0000 0.0000 639 +vn 0.0000 -1.0000 0.0000 640 +g Cube.008_Cube.016_stone.001 641 +usemtl stone.001 642 +s off 643 +f 157/287/20 159/288/20 160/289/20 158/290/20 644 +f 163/291/21 158/292/21 160/293/21 162/294/21 645 +f 162/295/22 160/296/22 159/297/22 164/298/22 646 +f 161/299/23 157/300/23 158/301/23 163/302/23 647 +f 164/303/24 159/304/24 157/305/24 161/306/24 648 +f 164/307/25 161/308/25 163/309/25 162/310/25 649 +o Cube.009_Cube.017 650 +v -0.071082 0.677987 0.102438 651 +v -0.071082 0.714147 0.102438 652 +v -0.071082 0.677987 -0.039956 653 +v -0.071082 0.714147 -0.039956 654 +v 0.071311 0.677987 0.102438 655 +v 0.071311 0.714147 0.102438 656 +v 0.071311 0.677987 -0.039956 657 +v 0.071311 0.714147 -0.039956 658 +v -0.032865 0.714147 0.064220 659 +v -0.032865 0.714147 -0.001739 660 +v 0.033094 0.714147 -0.001739 661 +v 0.033094 0.714147 0.064220 662 +v 0.287505 0.677987 0.102438 663 +v 0.287505 0.714147 0.102438 664 +v 0.287505 0.677987 -0.039956 665 +v 0.287505 0.714147 -0.039956 666 +v 0.429899 0.677987 0.102438 667 +v 0.429899 0.714147 0.102438 668 +v 0.429899 0.677987 -0.039956 669 +v 0.429899 0.714147 -0.039956 670 +v 0.325723 0.714147 0.064220 671 +v 0.325723 0.714147 -0.001739 672 +v 0.391682 0.714147 -0.001739 673 +v 0.391682 0.714147 0.064220 674 +v -0.443708 0.677987 0.102438 675 +v -0.443708 0.714147 0.102438 676 +v -0.443708 0.677987 -0.039956 677 +v -0.443708 0.714147 -0.039956 678 +v -0.301314 0.677987 0.102438 679 +v -0.301314 0.714147 0.102438 680 +v -0.301314 0.677987 -0.039956 681 +v -0.301314 0.714147 -0.039956 682 +v -0.405491 0.714147 0.064220 683 +v -0.405491 0.714147 -0.001739 684 +v -0.339532 0.714147 -0.001739 685 +v -0.339532 0.714147 0.064220 686 +v -0.500000 0.500000 -0.500000 687 +v -0.500000 -0.500000 -0.500000 688 +v 0.500000 -0.500000 0.500000 689 +v 0.500000 0.500000 0.500000 690 +v 0.500000 0.500000 -0.500000 691 +v 0.500000 -0.500000 -0.500000 692 +v -0.500000 0.500000 0.500000 693 +v -0.500000 -0.500000 0.500000 694 +v 0.353656 -0.500000 -0.353656 695 +v 0.353656 -0.500000 0.353656 696 +v -0.353656 -0.500000 0.353656 697 +v -0.353656 -0.500000 -0.353656 698 +v 0.353656 0.500000 -0.353656 699 +v -0.353656 0.500000 -0.353656 700 +v -0.353656 0.500000 0.353656 701 +v 0.353656 0.500000 0.353656 702 +v 0.500000 -0.353656 -0.353656 703 +v 0.500000 0.353656 -0.353656 704 +v 0.500000 0.353656 0.353656 705 +v 0.500000 -0.353656 0.353656 706 +v 0.353656 -0.353656 0.500000 707 +v 0.353656 0.353656 0.500000 708 +v -0.353656 0.353656 0.500000 709 +v -0.353656 -0.353656 0.500000 710 +v -0.353656 -0.353656 -0.500000 711 +v -0.353656 0.353656 -0.500000 712 +v 0.353656 0.353656 -0.500000 713 +v 0.353656 -0.353656 -0.500000 714 +v -0.500000 -0.353656 0.353656 715 +v -0.500000 0.353656 0.353656 716 +v -0.500000 0.353656 -0.353656 717 +v -0.500000 -0.353656 -0.353656 718 +v 0.353656 -0.390500 0.353656 719 +v 0.353656 -0.390500 -0.353656 720 +v -0.353656 -0.390500 0.353656 721 +v -0.353656 -0.390500 -0.353656 722 +v -0.353656 0.390500 -0.353656 723 +v 0.353656 0.390500 -0.353656 724 +v -0.353656 0.390500 0.353656 725 +v 0.353656 0.390500 0.353656 726 +v 0.390500 0.353656 -0.353656 727 +v 0.390500 -0.353656 -0.353656 728 +v 0.390500 0.353656 0.353656 729 +v 0.390500 -0.353656 0.353656 730 +v 0.353656 0.353656 0.390500 731 +v 0.353656 -0.353656 0.390500 732 +v -0.353656 0.353656 0.390500 733 +v -0.353656 -0.353656 0.390500 734 +v -0.353656 0.353656 -0.390500 735 +v -0.353656 -0.353656 -0.390500 736 +v 0.353656 0.353656 -0.390500 737 +v 0.353656 -0.353656 -0.390500 738 +v -0.390500 0.353656 0.353656 739 +v -0.390500 -0.353656 0.353656 740 +v -0.390500 0.353656 -0.353656 741 +v -0.390500 -0.353656 -0.353656 742 +v 0.500000 0.170486 0.500000 743 +v -0.500000 0.170486 0.500000 744 +v -0.353656 0.170486 0.500000 745 +v -0.500000 0.170486 -0.500000 746 +v -0.500000 0.170486 -0.353656 747 +v 0.353656 0.170486 0.390500 748 +v 0.353656 0.170486 0.500000 749 +v -0.353656 0.170486 0.390500 750 +v -0.390500 0.170486 -0.353656 751 +v -0.390500 0.170486 0.353656 752 +v -0.500000 0.170486 0.353656 753 +v 0.500000 0.170486 0.353656 754 +v 0.500000 0.170486 -0.500000 755 +v 0.353656 0.170486 -0.500000 756 +v -0.353656 0.170486 -0.500000 757 +v 0.500000 0.170486 -0.353656 758 +v 0.390500 0.170486 0.353656 759 +v -0.353656 0.170486 -0.390500 760 +v 0.353656 0.170486 -0.390500 761 +v 0.390500 0.170486 -0.353656 762 +v 0.500000 -0.170486 0.500000 763 +v 0.500000 -0.170486 0.353656 764 +v -0.500000 -0.170486 0.500000 765 +v -0.353656 -0.170486 0.500000 766 +v 0.500000 -0.170486 -0.500000 767 +v 0.500000 -0.170486 -0.353656 768 +v 0.353656 -0.170486 0.390500 769 +v 0.390500 -0.170486 0.353656 770 +v 0.353656 -0.170486 0.500000 771 +v -0.353656 -0.170486 0.390500 772 +v 0.390500 -0.170486 -0.353656 773 +v 0.353656 -0.170486 -0.500000 774 +v -0.500000 -0.170486 -0.500000 775 +v -0.500000 -0.170486 -0.353656 776 +v -0.353656 -0.170486 -0.500000 777 +v -0.353656 -0.170486 -0.390500 778 +v 0.353656 -0.170486 -0.390500 779 +v -0.390500 -0.170486 -0.353656 780 +v -0.390500 -0.170486 0.353656 781 +v -0.500000 -0.170486 0.353656 782 +vt 0.000000 0.309540 783 +vt 0.000000 0.563487 784 +vt 1.000000 0.563487 785 +vt 1.000000 0.309540 786 +vt 0.000000 0.309540 787 +vt 0.000000 0.563487 788 +vt 1.000000 0.563487 789 +vt 1.000000 0.309540 790 +vt 0.000000 0.563487 791 +vt 0.000000 0.309540 792 +vt 1.000000 0.309540 793 +vt 1.000000 0.563487 794 +vt 1.000000 1.000000 795 +vt 0.000000 1.000000 796 +vt 0.268392 0.731608 797 +vt 0.731608 0.731608 798 +vt 1.000000 0.000000 799 +vt 0.731608 0.268392 800 +vt 0.000000 0.000000 801 +vt 0.268392 0.268392 802 +vt 0.000000 0.309540 803 +vt 0.000000 0.563487 804 +vt 1.000000 0.563487 805 +vt 1.000000 0.309540 806 +vt 0.000000 0.309540 807 +vt 0.000000 0.563487 808 +vt 1.000000 0.563487 809 +vt 1.000000 0.309540 810 +vt 0.000000 0.563487 811 +vt 0.000000 0.309540 812 +vt 1.000000 0.309540 813 +vt 1.000000 0.563487 814 +vt 1.000000 1.000000 815 +vt 0.000000 1.000000 816 +vt 0.268392 0.731608 817 +vt 0.731608 0.731608 818 +vt 1.000000 0.000000 819 +vt 0.731608 0.268392 820 +vt 0.000000 0.000000 821 +vt 0.268392 0.268392 822 +vt 0.000000 0.309540 823 +vt 0.000000 0.563487 824 +vt 1.000000 0.563487 825 +vt 1.000000 0.309540 826 +vt 0.000000 0.309540 827 +vt 0.000000 0.563487 828 +vt 1.000000 0.563487 829 +vt 1.000000 0.309540 830 +vt 0.000000 0.563487 831 +vt 0.000000 0.309540 832 +vt 1.000000 0.309540 833 +vt 1.000000 0.563487 834 +vt 1.000000 1.000000 835 +vt 0.000000 1.000000 836 +vt 0.268392 0.731608 837 +vt 0.731608 0.731608 838 +vt 1.000000 0.000000 839 +vt 0.731608 0.268392 840 +vt 0.000000 0.000000 841 +vt 0.268392 0.268392 842 +vt 0.041250 0.853656 843 +vt 0.041250 0.670486 844 +vt 0.141716 0.670486 845 +vt 0.141716 0.853656 846 +vt 0.958750 0.041250 847 +vt 0.824480 0.175520 848 +vt 0.824480 0.824480 849 +vt 0.958750 0.958750 850 +vt 0.041250 0.041250 851 +vt 0.175520 0.175520 852 +vt 0.041250 0.958750 853 +vt 0.175520 0.824480 854 +vt 0.175520 1.000000 855 +vt 0.824480 1.000000 856 +vt 0.824480 0.890500 857 +vt 0.175520 0.890500 858 +vt 0.041250 0.958750 859 +vt 0.175520 0.824480 860 +vt 0.824480 0.824480 861 +vt 0.958750 0.958750 862 +vt 0.041250 0.041250 863 +vt 0.175520 0.175520 864 +vt 0.958750 0.041250 865 +vt 0.824480 0.175520 866 +vt 0.175520 0.958750 867 +vt 0.824480 0.958750 868 +vt 0.824480 0.858284 869 +vt 0.175520 0.858284 870 +vt 0.958750 1.000000 871 +vt 0.824480 0.853656 872 +vt 0.824480 0.670486 873 +vt 0.958750 0.670486 874 +vt 0.041250 1.000000 875 +vt 0.175520 0.853656 876 +vt 0.041250 0.000000 877 +vt 0.175520 0.146344 878 +vt 0.175520 0.329514 879 +vt 0.041250 0.329514 880 +vt 0.958750 0.000000 881 +vt 0.824480 0.146344 882 +vt 0.958750 0.853656 883 +vt 0.958750 0.670486 884 +vt 0.858284 0.670486 885 +vt 0.858284 0.853656 886 +vt 0.958750 1.000000 887 +vt 0.824480 0.853656 888 +vt 0.824480 0.670486 889 +vt 0.958750 0.670486 890 +vt 0.041250 1.000000 891 +vt 0.175520 0.853656 892 +vt 0.041250 0.000000 893 +vt 0.175520 0.146344 894 +vt 0.175520 0.329514 895 +vt 0.041250 0.329514 896 +vt 0.958750 0.000000 897 +vt 0.824480 0.146344 898 +vt 0.175520 0.000000 899 +vt 0.824480 0.000000 900 +vt 0.824480 0.109500 901 +vt 0.175520 0.109500 902 +vt 0.041250 1.000000 903 +vt 0.175520 0.853656 904 +vt 0.175520 0.670486 905 +vt 0.041250 0.670486 906 +vt 0.824480 0.853656 907 +vt 0.824480 0.146344 908 +vt 0.824480 0.329514 909 +vt 0.958750 0.329514 910 +vt 0.041250 0.000000 911 +vt 0.175520 0.146344 912 +vt 0.041250 0.146344 913 +vt 0.041250 0.329514 914 +vt 0.141716 0.329514 915 +vt 0.141716 0.146344 916 +vt 0.175520 0.853656 917 +vt 0.175520 0.670486 918 +vt 0.041250 0.670486 919 +vt 0.958750 1.000000 920 +vt 0.824480 0.853656 921 +vt 0.958750 0.000000 922 +vt 0.824480 0.146344 923 +vt 0.824480 0.329514 924 +vt 0.958750 0.329514 925 +vt 0.175520 0.146344 926 +vt 0.824480 0.109500 927 +vt 0.824480 0.146344 928 +vt 0.175520 0.146344 929 +vt 0.175520 0.109500 930 +vt 0.175520 0.146344 931 +vt 0.824480 0.890500 932 +vt 0.824480 0.853656 933 +vt 0.175520 0.853656 934 +vt 0.175520 0.890500 935 +vt 0.175520 0.853656 936 +vt 0.824480 0.853656 937 +vt 0.824480 0.890500 938 +vt 0.175520 0.329514 939 +vt 0.141716 0.853656 940 +vt 0.041250 0.175520 941 +vt 0.041250 0.824480 942 +vt 0.141716 0.824480 943 +vt 0.141716 0.175520 944 +vt 0.958750 0.175520 945 +vt 0.958750 0.824480 946 +vt 0.858284 0.824480 947 +vt 0.858284 0.175520 948 +vt 0.958750 0.853656 949 +vt 0.958750 0.670486 950 +vt 0.858284 0.670486 951 +vt 0.858284 0.853656 952 +vt 0.175520 0.041250 953 +vt 0.824480 0.041250 954 +vt 0.824480 0.141716 955 +vt 0.175520 0.141716 956 +vt 0.041250 0.853656 957 +vt 0.041250 0.670486 958 +vt 0.141716 0.670486 959 +vt 0.141716 0.853656 960 +vt 0.824480 0.958750 961 +vt 0.175520 0.958750 962 +vt 0.175520 0.858284 963 +vt 0.824480 0.858284 964 +vt 0.041250 0.824480 965 +vt 0.041250 0.175520 966 +vt 0.141716 0.175520 967 +vt 0.141716 0.824480 968 +vt 0.175520 0.000000 969 +vt 0.175520 0.109500 970 +vt 0.175520 1.000000 971 +vt 0.175520 0.890500 972 +vt 0.824480 0.000000 973 +vt 0.175520 0.000000 974 +vt 0.824480 0.109500 975 +vt 0.958750 0.146344 976 +vt 0.958750 0.329514 977 +vt 0.858284 0.329514 978 +vt 0.858284 0.146344 979 +vt 0.824480 1.000000 980 +vt 0.175520 1.000000 981 +vt 0.041250 0.146344 982 +vt 0.041250 0.329514 983 +vt 0.141716 0.329514 984 +vt 0.141716 0.146344 985 +vt 0.824480 0.000000 986 +vt 0.958750 0.824480 987 +vt 0.958750 0.175520 988 +vt 0.858284 0.175520 989 +vt 0.858284 0.824480 990 +vt 0.958750 0.146344 991 +vt 0.958750 0.329514 992 +vt 0.858284 0.329514 993 +vt 0.858284 0.146344 994 +vt 0.824480 1.000000 995 +vt 0.824480 0.041250 996 +vt 0.175520 0.041250 997 +vt 0.175520 0.141716 998 +vt 0.824480 0.141716 999 +vt 0.824480 0.146344 1000 +vt 0.175520 0.146344 1001 +vt 0.141716 0.146344 1002 +vt 0.824480 0.146344 1003 +vt 0.175520 0.853656 1004 +vt 0.175520 0.670486 1005 +vt 0.824480 0.853656 1006 +vt 0.858284 0.853656 1007 +vt 0.824480 0.853656 1008 +vt 0.175520 0.853656 1009 +vt 0.824480 0.670486 1010 +vt 0.858284 0.670486 1011 +vt 0.175520 0.146344 1012 +vt 0.824480 0.146344 1013 +vt 0.858284 0.146344 1014 +vt 0.824480 0.329514 1015 +vt 0.858284 0.329514 1016 +vt 0.141716 0.329514 1017 +vt 0.041250 0.329514 1018 +vt 0.041250 0.146344 1019 +vt 0.141716 0.146344 1020 +vt 0.826869 0.733677 1021 +vt 0.858677 0.733677 1022 +vt 0.858677 0.701869 1023 +vt 0.834877 0.701869 1024 +vt 0.826869 0.709877 1025 +vt 0.673131 0.733677 1026 +vt 0.673131 0.709877 1027 +vt 0.665123 0.701869 1028 +vt 0.641323 0.701869 1029 +vt 0.641323 0.733677 1030 +vt 0.673131 0.516323 1031 +vt 0.641323 0.516323 1032 +vt 0.641323 0.548131 1033 +vt 0.665123 0.548131 1034 +vt 0.673131 0.540123 1035 +vt 0.826869 0.516323 1036 +vt 0.826869 0.540123 1037 +vt 0.834877 0.548131 1038 +vt 0.858677 0.548131 1039 +vt 0.858677 0.516323 1040 +vt 0.824480 0.670486 1041 +vt 0.175520 0.670486 1042 +vt 0.824480 0.329514 1043 +vt 0.041250 0.329514 1044 +vt 0.175520 0.329514 1045 +vt 0.175520 0.670486 1046 +vt 0.141716 0.670486 1047 +vt 0.824480 0.670486 1048 +vt 0.824480 0.329514 1049 +vt 0.141716 0.670486 1050 +vt 0.041250 0.670486 1051 +vt 0.041250 0.853656 1052 +vt 0.141716 0.853656 1053 +vt 0.958750 0.329514 1054 +vt 0.824480 0.329514 1055 +vt 0.041250 0.670486 1056 +vt 0.175520 0.670486 1057 +vt 0.958750 0.670486 1058 +vt 0.824480 0.670486 1059 +vt 0.858284 0.670486 1060 +vt 0.958750 0.670486 1061 +vt 0.958750 0.853656 1062 +vt 0.858284 0.853656 1063 +vt 0.958750 0.329514 1064 +vt 0.958750 0.146344 1065 +vt 0.175520 0.329514 1066 +vt 0.141716 0.329514 1067 +vt 0.041250 0.329514 1068 +vt 0.041250 0.146344 1069 +vt 0.858284 0.329514 1070 +vt 0.958750 0.329514 1071 +vt 0.958750 0.146344 1072 +vt 0.858284 0.146344 1073 +vt 0.041250 0.670486 1074 +vt 0.041250 0.853656 1075 +vt 0.141323 0.516323 1076 +vt 0.141323 0.548131 1077 +vt 0.165123 0.548131 1078 +vt 0.173131 0.540123 1079 +vt 0.173131 0.516323 1080 +vt 0.358677 0.733677 1081 +vt 0.358677 0.701869 1082 +vt 0.334877 0.701869 1083 +vt 0.326869 0.709877 1084 +vt 0.326869 0.733677 1085 +vt 0.173131 0.709877 1086 +vt 0.165123 0.701869 1087 +vt 0.141323 0.701869 1088 +vt 0.141323 0.733677 1089 +vt 0.173131 0.733677 1090 +vt 0.358677 0.548131 1091 +vt 0.358677 0.516323 1092 +vt 0.326869 0.516323 1093 +vt 0.326869 0.540123 1094 +vt 0.334877 0.548131 1095 +vt 0.958750 0.670486 1096 +vt 0.958750 0.853656 1097 +vt 0.175520 0.329514 1098 +vn -1.0000 0.0000 0.0000 1099 +vn 0.0000 0.0000 -1.0000 1100 +vn 1.0000 0.0000 0.0000 1101 +vn 0.0000 0.0000 1.0000 1102 +vn 0.0000 1.0000 0.0000 1103 +vn -0.0000 -1.0000 0.0000 1104 +vn 0.7071 0.7071 0.0000 1105 +vn 0.5774 0.5774 -0.5773 1106 +vn 0.0000 -0.7071 -0.7071 1107 +vn 0.7071 -0.7071 0.0000 1108 +vn 0.7071 0.0000 -0.7071 1109 +vn -0.5774 0.5774 0.5773 1110 +vn -0.0000 0.7071 -0.7071 1111 +vn 0.5774 0.5774 0.5773 1112 +vn 0.0000 0.7071 0.7071 1113 +vn 0.7071 0.0000 0.7071 1114 +vn 0.5774 -0.5774 0.5773 1115 +vn 0.0000 -0.7071 0.7071 1116 +vn -0.5774 -0.5774 0.5773 1117 +vn -0.7071 -0.7071 0.0000 1118 +vn -0.7071 0.0000 0.7071 1119 +vn -0.7071 0.7071 -0.0000 1120 +vn -0.5774 -0.5774 -0.5773 1121 +vn -0.7071 0.0000 -0.7071 1122 +vn -0.5774 0.5774 -0.5773 1123 +vn 0.0000 -0.7264 -0.6873 1124 +vn 0.6873 -0.7264 0.0000 1125 +vn 0.0000 -0.7264 0.6873 1126 +vn -0.6873 -0.7264 0.0000 1127 +g Cube.009_Cube.017_copper.001 1128 +usemtl copper.001 1129 +s off 1130 +f 165/311/26 166/312/26 168/313/26 167/314/26 1131 +f 167/315/27 168/316/27 172/317/27 171/318/27 1132 +f 171/318/28 172/317/28 170/319/28 169/320/28 1133 +f 169/321/29 170/322/29 166/312/29 165/311/29 1134 +f 172/323/30 168/324/30 174/325/30 175/326/30 1135 +f 170/327/30 172/323/30 175/326/30 176/328/30 1136 +f 168/324/30 166/329/30 173/330/30 174/325/30 1137 +f 166/329/30 170/327/30 176/328/30 173/330/30 1138 +f 177/331/26 178/332/26 180/333/26 179/334/26 1139 +f 179/335/27 180/336/27 184/337/27 183/338/27 1140 +f 183/338/28 184/337/28 182/339/28 181/340/28 1141 +f 181/341/29 182/342/29 178/332/29 177/331/29 1142 +f 184/343/30 180/344/30 186/345/30 187/346/30 1143 +f 182/347/30 184/343/30 187/346/30 188/348/30 1144 +f 180/344/30 178/349/30 185/350/30 186/345/30 1145 +f 178/349/30 182/347/30 188/348/30 185/350/30 1146 +f 189/351/26 190/352/26 192/353/26 191/354/26 1147 +f 191/355/27 192/356/27 196/357/27 195/358/27 1148 +f 195/358/28 196/357/28 194/359/28 193/360/28 1149 +f 193/361/29 194/362/29 190/352/29 189/351/29 1150 +f 196/363/30 192/364/30 198/365/30 199/366/30 1151 +f 194/367/30 196/363/30 199/366/30 200/368/30 1152 +f 192/364/30 190/369/30 197/370/30 198/365/30 1153 +f 190/369/30 194/367/30 200/368/30 197/370/30 1154 +f 223/371/28 259/372/28 264/373/28 247/374/28 1155 +f 203/375/31 210/376/31 209/377/31 206/378/31 1156 +f 208/379/31 211/380/31 210/376/31 203/375/31 1157 +f 202/381/31 212/382/31 211/380/31 208/379/31 1158 +f 206/378/31 209/377/31 212/382/31 202/381/31 1159 +f 216/383/26 213/384/26 238/385/26 240/386/26 1160 +f 201/387/30 214/388/30 213/389/30 205/390/30 1161 +f 207/391/30 215/392/30 214/388/30 201/387/30 1162 +f 204/393/30 216/394/30 215/392/30 207/391/30 1163 +f 205/390/30 213/389/30 216/394/30 204/393/30 1164 +f 226/395/31 227/396/31 251/397/31 249/398/31 1165 +f 205/399/28 218/400/28 272/401/28 269/402/28 1166 +f 204/403/28 219/404/28 218/400/28 205/399/28 1167 +f 203/405/28 220/406/28 278/407/28 277/408/28 1168 +f 206/409/28 217/410/28 220/406/28 203/405/28 1169 +f 219/411/27 268/412/27 273/413/27 243/414/27 1170 +f 204/415/29 222/416/29 263/417/29 257/418/29 1171 +f 207/419/29 223/420/29 222/416/29 204/415/29 1172 +f 208/421/29 224/422/29 280/423/29 279/424/29 1173 +f 203/425/29 221/426/29 224/422/29 208/421/29 1174 +f 212/427/29 209/428/29 234/429/29 236/430/29 1175 +f 201/431/27 226/432/27 271/433/27 260/434/27 1176 +f 205/399/27 227/435/27 226/432/27 201/431/27 1177 +f 206/409/27 228/436/27 288/437/27 281/438/27 1178 +f 202/439/27 225/440/27 228/436/27 206/409/27 1179 +f 229/441/27 296/442/27 295/443/27 254/444/27 1180 +f 207/419/26 230/445/26 267/446/26 258/447/26 1181 +f 201/448/26 231/449/26 230/445/26 207/419/26 1182 +f 202/450/26 232/451/26 290/452/26 289/453/26 1183 +f 208/421/26 229/454/26 232/451/26 202/450/26 1184 +f 236/455/32 256/456/32 254/457/32 235/458/32 1185 +f 248/459/33 235/458/33 254/444/33 1186 +f 240/460/34 245/461/34 247/462/34 239/463/34 1187 +f 239/463/35 253/464/35 255/465/35 237/466/35 1188 +f 248/459/36 254/444/36 295/443/36 286/467/36 1189 +f 247/462/37 239/463/37 253/468/37 1190 +f 230/469/31 231/470/31 255/471/31 253/472/31 1191 +f 220/473/30 217/474/30 242/475/30 244/476/30 1192 +f 227/477/26 270/478/26 275/479/26 251/480/26 1193 +f 224/481/30 221/482/30 246/483/30 248/484/30 1194 +f 231/485/29 261/486/29 265/487/29 255/488/29 1195 +f 228/489/30 225/490/30 250/491/30 252/492/30 1196 +f 232/493/30 229/494/30 254/495/30 256/496/30 1197 +f 209/428/26 210/497/26 233/498/26 234/429/26 1198 +f 213/384/29 214/499/29 237/500/29 238/385/29 1199 +f 210/501/27 211/502/27 235/458/27 233/503/27 1200 +f 217/504/29 282/505/29 287/506/29 242/507/29 1201 +f 214/508/28 215/509/28 239/463/28 237/466/28 1202 +f 221/510/26 285/511/26 283/512/26 246/513/26 1203 +f 211/502/28 212/514/28 236/455/28 235/458/28 1204 +f 218/515/31 219/516/31 243/517/31 241/518/31 1205 +f 225/519/28 291/520/28 292/521/28 250/522/28 1206 +f 215/509/27 216/523/27 240/460/27 239/463/27 1207 +f 222/524/31 223/525/31 247/526/31 245/527/31 1208 +f 235/458/38 248/459/38 246/528/38 233/503/38 1209 +f 236/430/39 250/529/39 256/530/39 1210 +f 234/429/40 252/531/40 250/529/40 236/430/40 1211 +f 249/532/41 255/488/41 265/487/41 274/533/41 1212 +f 255/488/42 249/532/42 237/500/42 1213 +f 237/500/43 249/532/43 251/534/43 238/385/43 1214 +f 241/535/44 238/385/44 251/534/44 1215 +f 238/385/45 241/536/45 243/537/45 240/386/45 1216 +f 241/535/46 251/534/46 275/538/46 276/539/46 1217 +f 252/531/37 234/429/37 242/507/37 1218 +f 233/498/47 244/540/47 242/541/47 234/429/47 1219 +f 245/461/48 240/460/48 243/414/48 1220 +f 244/542/49 246/528/49 283/543/49 284/544/49 1221 +f 246/528/50 244/542/50 233/503/50 1222 +f 286/545/28 280/546/28 224/547/28 248/548/28 1223 +f 259/549/31 258/550/31 267/551/31 266/552/31 264/553/31 1224 +f 263/554/31 262/555/31 273/556/31 268/557/31 257/558/31 1225 +f 270/559/31 269/560/31 272/561/31 276/562/31 275/563/31 1226 +f 271/564/31 274/565/31 265/566/31 261/567/31 260/568/31 1227 +f 273/413/49 262/569/49 245/461/49 243/414/49 1228 +f 258/447/29 259/570/29 223/420/29 207/419/29 1229 +f 281/438/28 282/571/28 217/410/28 206/409/28 1230 +f 289/572/27 291/573/27 225/440/27 202/439/27 1231 +f 264/574/36 266/575/36 253/468/36 247/462/36 1232 +f 269/402/27 270/576/27 227/435/27 205/399/27 1233 +f 287/506/46 293/577/46 252/531/46 242/507/46 1234 +f 262/578/26 263/579/26 222/580/26 245/581/26 1235 +f 277/582/29 285/583/29 221/426/29 203/425/29 1236 +f 257/584/28 268/585/28 219/404/28 204/403/28 1237 +f 260/586/26 261/587/26 231/449/26 201/448/26 1238 +f 274/588/28 271/589/28 226/590/28 249/591/28 1239 +f 284/544/27 278/592/27 220/593/27 244/542/27 1240 +f 279/424/26 296/594/26 229/454/26 208/421/26 1241 +f 294/595/29 290/596/29 232/597/29 256/530/29 1242 +f 293/598/26 288/599/26 228/600/26 252/601/26 1243 +f 266/575/27 267/602/27 230/603/27 253/468/27 1244 +f 289/604/30 290/605/30 294/606/30 292/607/30 291/608/30 1245 +f 277/609/30 278/610/30 284/611/30 283/612/30 285/613/30 1246 +f 286/614/30 295/615/30 296/616/30 279/617/30 280/618/30 1247 +f 282/619/30 281/620/30 288/621/30 293/622/30 287/623/30 1248 +f 276/539/29 272/624/29 218/625/29 241/535/29 1249 +f 292/626/41 294/595/41 256/530/41 250/529/41 1250 +f 177/331/51 185/350/51 188/348/51 181/341/51 1251 +f 179/334/52 186/345/52 185/350/52 177/331/52 1252 +f 183/338/53 187/346/53 186/345/53 179/334/53 1253 +f 181/341/54 188/348/54 187/346/54 183/338/54 1254 +f 171/318/53 175/326/53 174/325/53 167/315/53 1255 +f 169/320/54 176/328/54 175/326/54 171/318/54 1256 +f 165/311/51 173/330/51 176/328/51 169/320/51 1257 +f 167/315/52 174/325/52 173/330/52 165/311/52 1258 +f 189/351/51 197/370/51 200/368/51 193/361/51 1259 +f 193/361/54 200/368/54 199/366/54 195/358/54 1260 +f 195/358/53 199/366/53 198/365/53 191/355/53 1261 +f 191/355/52 198/365/52 197/370/52 189/351/52 1262 +o Cube.010_Cube.018 1263 +v 0.059889 0.868714 -0.028534 1264 +v 0.059889 0.976405 -0.028534 1265 +v 0.059889 0.976405 0.091016 1266 +v 0.059889 0.868714 0.091016 1267 +v -0.059660 0.868714 0.091016 1268 +v -0.059660 0.976405 0.091016 1269 +v -0.059660 0.976405 -0.028534 1270 +v -0.059660 0.868714 -0.028534 1271 +vt 0.000000 1.000000 1272 +vt 1.000000 1.000000 1273 +vt 1.000000 0.000000 1274 +vt 0.000000 0.000000 1275 +vt 1.000000 0.049599 1276 +vt 0.000000 0.049599 1277 +vt 0.000000 0.950401 1278 +vt 1.000000 0.950401 1279 +vt 0.000000 0.049599 1280 +vt 1.000000 0.049599 1281 +vt 1.000000 0.950401 1282 +vt 0.000000 0.950401 1283 +vt 1.000000 0.049599 1284 +vt 1.000000 0.950401 1285 +vt 0.000000 0.049599 1286 +vt 0.000000 0.950401 1287 +vt 0.000000 1.000000 1288 +vt 0.000000 0.000000 1289 +vt 1.000000 0.000000 1290 +vt 1.000000 1.000000 1291 +vn 0.0000 -1.0000 0.0000 1292 +vn 0.0000 0.0000 -1.0000 1293 +vn 0.0000 0.0000 1.0000 1294 +vn -1.0000 0.0000 0.0000 1295 +vn 1.0000 0.0000 0.0000 1296 +vn 0.0000 1.0000 0.0000 1297 +g Cube.010_Cube.018_gem.001 1298 +usemtl gem.001 1299 +s off 1300 +f 304/627/55 297/628/55 300/629/55 301/630/55 1301 +f 297/631/56 304/632/56 303/633/56 298/634/56 1302 +f 301/635/57 300/636/57 299/637/57 302/638/57 1303 +f 304/639/58 301/635/58 302/638/58 303/640/58 1304 +f 300/641/59 297/631/59 298/634/59 299/642/59 1305 +f 303/643/60 302/644/60 299/645/60 298/646/60
Modified ores.lua from [a381d20de4] to [48691b218f].
39 39 value = fragments_per_ingot * 9; 40 40 }; 41 41 } 42 42 43 43 local tools, armors = sorcery.matreg.tools, sorcery.matreg.armors 44 44 for name, metal in pairs(sorcery.data.metals) do 45 45 local ingot = metal.ingot or 'sorcery:' .. name .. '_ingot' 46 - local block = metal.block or 'sorcery:' .. name .. '_block' 46 + local block = metal.block or 'sorcery:' .. name .. 'block' 47 47 local screw = 'sorcery:screw_' .. name 48 48 local fragment = 'sorcery:fragment_' .. name 49 - if not metal.no_tools then for _,t in pairs(tools) do 49 + local powder = 'sorcery:powder_' .. name 50 + metal.parts = { 51 + ingot = ingot; 52 + block = block; 53 + screw = screw; 54 + fragment = fragment; 55 + powder = powder; 56 + } 57 + if not metal.no_tools then for t,c in pairs(tools) do 50 58 sorcery.matreg.lookup[(metal.items and metal.items[t]) or ('sorcery:' .. t .. '_' .. name)] = { 51 59 metal = true; 52 60 id = name; data = metal; 61 + value = c.cost * fragments_per_ingot; 53 62 } 54 63 end end 55 - if not metal.no_armor then for _,a in pairs(armors) do 64 + if not metal.no_armor then for a,c in pairs(armors) do 56 65 sorcery.matreg.lookup[(metal.items and metal.items[a]) or ('sorcery:' .. a .. '_' .. name)] = { 57 66 metal = true; 58 67 id = name; data = metal; 68 + value = c.cost * fragments_per_ingot; 59 69 } 60 70 end end 61 71 sorcery.data.metallookup[ingot] = { 62 72 id = name; data = metal; 63 73 value = fragments_per_ingot; 64 74 } 65 75 sorcery.data.metallookup[block] = { ................................................................................ 71 81 value = 1; 72 82 } 73 83 sorcery.data.metallookup[screw] = { 74 84 id = name; data = metal; 75 85 value = 0; -- prevent use in smelting 76 86 } 77 87 minetest.register_craftitem(screw, { 78 - description = sorcery.lib.str.capitalize(name) .. ' screw'; 88 + description = sorcery.lib.str.capitalize(name) .. ' Screw'; 79 89 inventory_image = sorcery.lib.image('sorcery_screw.png'):multiply(sorcery.lib.color(metal.tone)):render(); 80 90 }) 91 + minetest.register_craftitem(powder, { 92 + description = sorcery.lib.str.capitalize(name) .. ' Powder'; 93 + inventory_image = 'sorcery_' .. name .. '_powder.png'; 94 + }) 95 + if metal.dye then 96 + minetest.register_craft { 97 + output = 'dye:' .. metal.dye .. ' 4'; 98 + recipe = { 99 + {'', powder, ''}; 100 + {powder,'basic_materials:paraffin',powder}; 101 + {'','bucket:bucket_water',''}; 102 + }; 103 + replacements = { 104 + {'bucket:bucket_water', 'bucket:bucket_empty'}; 105 + }; 106 + }; 107 + end 81 108 -- TODO: replace crafting recipe with kiln recipe 82 109 minetest.register_craft { 83 110 output = screw.. ' 4'; 84 111 recipe = { 85 112 {fragment,fragment,fragment}; 86 113 {'', fragment,''}; 87 114 {'', fragment,''}; ................................................................................ 107 134 lump_image = (metal.image and metal.image.lump) or nil; 108 135 armor_weight = metal.armor_weight; 109 136 armor_protection = metal.armor_protection; 110 137 } 111 138 end 112 139 minetest.register_craftitem(fragment, { 113 140 inventory_image = 'sorcery_' .. name .. '_fragment.png'; 114 - description = sorcery.lib.str.capitalize(name) .. ' fragment'; 141 + description = sorcery.lib.str.capitalize(name) .. ' Fragment'; 115 142 }) 143 + minetest.register_craft { 144 + type = 'cooking'; 145 + recipe = powder; 146 + cooktime = (metal.cooktime or 4) * 1.5; 147 + output = fragment; 148 + } 116 149 minetest.register_craft { 117 150 type = 'cooking'; 118 151 recipe = ingot; 119 152 cooktime = (metal.cooktime or 4) / 2; 120 153 output = fragment .. ' ' .. tostring(fragments_per_ingot); 121 154 } 122 155 do local rec = {} ................................................................................ 124 157 rec[#rec+1]=fragment 125 158 end 126 159 minetest.register_craft { 127 160 type = 'shapeless'; 128 161 recipe = rec; 129 162 output = ingot; 130 163 } 164 + end 165 + if metal.fuel then 166 + minetest.register_craft { 167 + type = 'fuel'; 168 + recipe = powder; 169 + burntime = metal.fuel; 170 + } 131 171 end 132 172 if metal.mix then 133 173 sorcery.data.register.alloy(sorcery.lib.tbl.merge(metal.mix, { 134 174 output = name; 135 175 cooktime = metal.cooktime or 10; 136 176 })) 177 + end 178 + if metal.sinter then 179 + local powders = {} 180 + for _,m in pairs(metal.sinter) do 181 + powders[#powders+1] = 'sorcery:powder_' .. m 182 + end 183 + minetest.register_craft { 184 + type = 'shapeless'; 185 + output = powder .. ' ' .. tostring(#powders); 186 + recipe = powders; 187 + }; 137 188 end 138 189 end
Added textures/sorcery_aluminum_powder.png version [90765bbba2].
cannot compute difference between binary files
Added textures/sorcery_brass_powder.png version [72cc1a227d].
cannot compute difference between binary files
Added textures/sorcery_bronze_powder.png version [1f5965ab69].
cannot compute difference between binary files
Added textures/sorcery_cobalt_powder.png version [d40093df7d].
cannot compute difference between binary files
Added textures/sorcery_condenser.png version [4dc6d2863f].
cannot compute difference between binary files
Added textures/sorcery_conduit_copper_side.png version [f1ead52faf].
cannot compute difference between binary files
Added textures/sorcery_conduit_copper_top.png version [8c1a859f77].
cannot compute difference between binary files
Added textures/sorcery_copper_powder.png version [f251fc6c10].
cannot compute difference between binary files
Deleted textures/sorcery_crucible_duranium.png version [3b1e95eec0].
cannot compute difference between binary files
Added textures/sorcery_crucible_duridium.png version [3b1e95eec0].
cannot compute difference between binary files
Deleted textures/sorcery_duranium_fragment.png version [7d415a62db].
cannot compute difference between binary files
Added textures/sorcery_duridium_fragment.png version [7d415a62db].
cannot compute difference between binary files
Added textures/sorcery_duridium_powder.png version [1bb4df86fd].
cannot compute difference between binary files
Added textures/sorcery_electrum_powder.png version [18417a63d0].
cannot compute difference between binary files
Added textures/sorcery_eternium_powder.png version [48054b80d7].
cannot compute difference between binary files
Added textures/sorcery_gold_powder.png version [e415c0e827].
cannot compute difference between binary files
Added textures/sorcery_impervium_powder.png version [a542329e06].
cannot compute difference between binary files
Added textures/sorcery_iridium_powder.png version [aef440b9aa].
cannot compute difference between binary files
Added textures/sorcery_levitanium_powder.png version [9eacd80255].
cannot compute difference between binary files
Added textures/sorcery_lithium_powder.png version [c8272b7787].
cannot compute difference between binary files
Added textures/sorcery_mill_back.png version [7495982119].
cannot compute difference between binary files
Added textures/sorcery_mill_bottom.png version [2a6d4c6eae].
cannot compute difference between binary files
Added textures/sorcery_mill_front.png version [a435aaac6a].
cannot compute difference between binary files
Added textures/sorcery_mill_grindhead.png version [7f26b51b05].
cannot compute difference between binary files
Added textures/sorcery_mill_grindhead_shade.png version [9d6a7ea7b2].
cannot compute difference between binary files
Added textures/sorcery_mill_side.png version [6da51e5a57].
cannot compute difference between binary files
Added textures/sorcery_mill_top.png version [790b4e6ed9].
cannot compute difference between binary files
Added textures/sorcery_platinum_powder.png version [a2a2fa62a8].
cannot compute difference between binary files
Added textures/sorcery_silver_powder.png version [084c4156da].
cannot compute difference between binary files
Added textures/sorcery_statlamp_blue.png version [6a04f2cd64].
cannot compute difference between binary files
Added textures/sorcery_statlamp_green.png version [298a31bc72].
cannot compute difference between binary files
Added textures/sorcery_statlamp_off.png version [e77628e4ce].
cannot compute difference between binary files
Added textures/sorcery_statlamp_purple.png version [1d0c592359].
cannot compute difference between binary files
Added textures/sorcery_statlamp_red.png version [87e8ab6d25].
cannot compute difference between binary files
Added textures/sorcery_statlamp_yellow.png version [458f0fd969].
cannot compute difference between binary files
Added textures/sorcery_steel_powder.png version [0f9fc0ea2b].
cannot compute difference between binary files
Added textures/sorcery_tin_powder.png version [01dbc5d6c6].
cannot compute difference between binary files
Added textures/sorcery_tungsten_powder.png version [8aba8a538e].
cannot compute difference between binary files
Added textures/sorcery_unobtanium_powder.png version [9962b3a315].
cannot compute difference between binary files