From 306b407a38b087b59c92d23c0c1f7c3e8fb7ce4e Mon Sep 17 00:00:00 2001 From: RealBadAngel <mk@realbadangel.pl> Date: Thu, 08 Nov 2012 17:37:22 +0100 Subject: [PATCH] Added missing file --- battery_box.lua | 117 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 92 insertions(+), 25 deletions(-) diff --git a/battery_box.lua b/battery_box.lua index 120ca42..f5827a4 100644 --- a/battery_box.lua +++ b/battery_box.lua @@ -10,8 +10,14 @@ end register_power_tool ("technic:mining_drill",60000) +register_power_tool ("technic:chainsaw",30000) register_power_tool ("technic:laser_mk1",40000) register_power_tool ("technic:battery",10000) +register_power_tool ("technic:sonic_screwdriver",15000) +register_power_tool ("technic:flashlight",30000) +register_power_tool ("technic:red_energy_crystal",100000) +register_power_tool ("technic:green_energy_crystal",250000) +register_power_tool ("technic:blue_energy_crystal",500000) minetest.register_alias("battery", "technic:battery") minetest.register_alias("battery_box", "technic:battery_box") @@ -38,8 +44,7 @@ minetest.register_tool("technic:battery", {description = "RE Battery", inventory_image = "technic_battery.png", -energy_charge = 0, -tool_capabilities = {max_drop_level=0, groupcaps={fleshy={times={}, uses=10000, maxlevel=0}}}}) +tool_capabilities = {load=0,max_drop_level=0, groupcaps={fleshy={times={}, uses=10000, maxlevel=0}}}}) minetest.register_craftitem("technic:battery_box", { description = "Battery box", @@ -62,11 +67,13 @@ minetest.register_node("technic:battery_box", { description = "Battery box", - tiles = {"technic_battery_box_top.png", "technic_battery_box_bottom.png", "technic_battery_box_side.png", - "technic_battery_box_side.png", "technic_battery_box_side.png", "technic_battery_box_side.png"}, + tiles = {"technic_battery_box_top.png", "technic_battery_box_bottom.png", "technic_battery_box_side0.png", + "technic_battery_box_side0.png", "technic_battery_box_side0.png", "technic_battery_box_side0.png"}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, sounds = default.node_sound_wood_defaults(), technic_power_machine=1, + last_side_shown=0, + drop="technic:battery_box", on_construct = function(pos) local meta = minetest.env:get_meta(pos) meta:set_string("infotext", "Battery box") @@ -77,6 +84,7 @@ inv:set_size("dst", 1) battery_charge = 0 max_charge = 60000 + last_side_shown=0 end, can_dig = function(pos,player) local meta = minetest.env:get_meta(pos); @@ -89,6 +97,42 @@ return true end, }) + + +for i=1,8,1 do +minetest.register_node("technic:battery_box"..i, { + description = "Battery box", + tiles = {"technic_battery_box_top.png", "technic_battery_box_bottom.png", "technic_battery_box_side0.png^technic_power_meter"..i..".png", + "technic_battery_box_side0.png^technic_power_meter"..i..".png", "technic_battery_box_side0.png^technic_power_meter"..i..".png", "technic_battery_box_side0.png^technic_power_meter"..i..".png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + technic_power_machine=1, + last_side_shown=0, + drop="technic:battery_box", + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "Battery box") + meta:set_float("technic_power_machine", 1) + meta:set_string("formspec", battery_box_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 1) + battery_charge = 0 + max_charge = 60000 + last_side_shown=0 + end, + can_dig = function(pos,player) + local meta = minetest.env:get_meta(pos); + local inv = meta:get_inventory() + if not inv:is_empty("dst") then + return false + elseif not inv:is_empty("src") then + return false + end + return true + end, +}) +end LV_nodes_visited = {} @@ -107,19 +151,39 @@ return math.floor(temp) end +function set_RE_wear (item_stack,load1,max_load) +local temp=65536-math.floor(load1/max_load*65535) +item_stack["wear"]=tostring(temp) +return item_stack +end + minetest.register_abm({ - nodenames = {"technic:battery_box"}, + nodenames = {"technic:battery_box","technic:battery_box1","technic:battery_box2","technic:battery_box3","technic:battery_box4", + "technic:battery_box5","technic:battery_box6","technic:battery_box7","technic:battery_box8" + }, interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local meta = minetest.env:get_meta(pos) - charge= meta:get_float("battery_charge") + charge= meta:get_int("battery_charge") max_charge= 60000 + local i=math.ceil((charge/max_charge)*8) + if i>8 then i=8 end + j=meta:get_float("last_side_shown") + if i~=j then + if i>0 then hacky_swap_node(pos,"technic:battery_box"..i) + elseif i==0 then hacky_swap_node(pos,"technic:battery_box") end + meta:set_float("last_side_shown",i) + end +--loading registered power tools local inv = meta:get_inventory() if inv:is_empty("src")==false then srcstack = inv:get_stack("src", 1) src_item=srcstack:to_table() + item_meta=srcstack:get_metadata() + if src_item["metadata"]=="" then src_item["metadata"]="0" end --create meta for not used before tool/item + local item_max_charge = nil local counter=registered_power_tools_count-1 for i=1, counter,1 do @@ -128,46 +192,49 @@ end end if item_max_charge then - local load1=tonumber((src_item["wear"])) - load1=get_RE_item_load(load1,item_max_charge) + load1=tonumber((src_item["metadata"])) load_step=1000 if load1<item_max_charge and charge>0 then if charge-load_step<0 then load_step=charge end if load1+load_step>item_max_charge then load_step=item_max_charge-load1 end load1=load1+load_step charge=charge-load_step - - load1=set_RE_item_load(load1,item_max_charge) - src_item["wear"]=tostring(load1) + set_RE_wear(src_item,load1,item_max_charge) + src_item["metadata"]=tostring(load1) inv:set_stack("src", 1, src_item) end - meta:set_float("battery_charge",charge) + meta:set_int("battery_charge",charge) end end +-- dischargin registered power tools if inv:is_empty("dst") == false then srcstack = inv:get_stack("dst", 1) src_item=srcstack:to_table() - if src_item["name"]== "technic:battery" then - local load1=tonumber((src_item["wear"])) - load1=get_RE_item_load(load1,10000) + local item_max_charge = nil + local counter=registered_power_tools_count-1 + for i=1, counter,1 do + if power_tools[i].tool_name==src_item["name"] then + item_max_charge=power_tools[i].max_charge + end + end + if item_max_charge then + if src_item["metadata"]=="" then src_item["metadata"]="0" end --create meta for not used before battery/crystal + local load1=tonumber((src_item["metadata"])) load_step=1000 if load1>0 and charge<max_charge then if charge+load_step>max_charge then load_step=max_charge-charge end if load1-load_step<0 then load_step=load1 end load1=load1-load_step charge=charge+load_step - - load1=set_RE_item_load(load1,10000) - src_item["wear"]=tostring(load1) + set_RE_wear(src_item,load1,item_max_charge) + src_item["metadata"]=tostring(load1) inv:set_stack("dst", 1, src_item) end end end - - meta:set_float("battery_charge",charge) - meta:set_string("infotext", "Battery box: "..charge.."/"..max_charge); + meta:set_int("battery_charge",charge) local load = math.floor(charge/60000 * 100) meta:set_string("formspec", @@ -259,10 +326,10 @@ i=i+1 until false - - meta:set_float("battery_charge",charge) - meta:set_string("infotext", "Battery box: "..charge.."/"..max_charge); - + charge=math.floor(charge) + charge_string=tostring(charge) + meta:set_string("infotext", "Battery box: "..charge_string.."/"..max_charge); + meta:set_int("battery_charge",charge) end }) -- Gitblit v1.8.0